|
@@ -1,6 +1,5 @@
|
|
|
package com.steerinfo.dil.service.impl;
|
|
|
|
|
|
-import com.steerinfo.dil.controller.AmsSaleTrucknoMaterialController;
|
|
|
import com.steerinfo.dil.feign.IMFeign;
|
|
|
import com.steerinfo.dil.feign.TmsTruckFeign;
|
|
|
import com.steerinfo.dil.mapper.*;
|
|
@@ -12,8 +11,6 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.text.ParseException;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -518,6 +515,191 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public int updateInwardConsignee(Map<String, Object> mapValue) {
|
|
|
+ if(mapValue.get("saleMaterialId") != null && mapValue.get("sendStationId") != null ){
|
|
|
+ amsSaleOrderMaterialMapper.updateSendStation(mapValue);
|
|
|
+ }
|
|
|
+ if(mapValue.get("saleOrderId") != null && mapValue.get("consigneeId") != null){
|
|
|
+ amsSaleOrderMaterialMapper.updateInwardConsignee(mapValue);
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 内转钢材派发订单
|
|
|
+ * @param mapValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public int dispatchInwardTruckOrderBySale(Map<String, Object> mapValue) {
|
|
|
+ int result = 0;
|
|
|
+ // 得到列内容
|
|
|
+ List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
|
|
|
+ // 销售订单主键
|
|
|
+ BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
|
|
|
+ // 车序号计数
|
|
|
+ int count = 1;
|
|
|
+ /*
|
|
|
+ 车序号表,只生成一次,对应多个子表(物资)
|
|
|
+ */
|
|
|
+ AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
|
|
|
+ // 主键
|
|
|
+ BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+ // 销售订单主键
|
|
|
+ amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
|
|
|
+ // 车序号
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(count));
|
|
|
+ // 下发状态
|
|
|
+ amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2));
|
|
|
+ // 新增车序号表
|
|
|
+ result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
|
|
|
+ BigDecimal orderId = omstruckOrderMapper.selectMaxId();
|
|
|
+ if(mapList.size()>=1){
|
|
|
+ //更新发站
|
|
|
+ Map<String,Object> map=mapList.get(0);
|
|
|
+ amsSaleOrderMaterialMapper.updateSendStation(map);
|
|
|
+ /*
|
|
|
+ 运输订单
|
|
|
+ */
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
+ // 运输订单主键
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
+ // 车序号主键
|
|
|
+ omstruckOrder.setOrderPlanId(saleOrderMaterialId);
|
|
|
+ //添加承运商ID 和 运价ID
|
|
|
+// Object priceId = map.get("priceId");
|
|
|
+ Object priceId = map.get("priceId");
|
|
|
+ if (priceId != null) {
|
|
|
+ omstruckOrder.setPriceId(DataChange.dataToBigDecimal(priceId));
|
|
|
+ }
|
|
|
+ // 承运商id
|
|
|
+ BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
|
|
|
+ // 运输线路id
|
|
|
+ BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
|
|
|
+ // 车牌号
|
|
|
+ String capacityNumber = (String) map.get("capacityNumber");
|
|
|
+ // 得到运力id
|
|
|
+ BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
|
|
|
+ // 运输订单号
|
|
|
+ omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
|
|
|
+ // 运力id
|
|
|
+ omstruckOrder.setCapacityId(capacityId);
|
|
|
+ // 承运商
|
|
|
+ omstruckOrder.setCarrierId(carrierId);
|
|
|
+ // 下发时间
|
|
|
+ omstruckOrder.setOrderIssueTime(new Date());
|
|
|
+ // 运单状态
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(4));
|
|
|
+ // 订单类型
|
|
|
+ omstruckOrder.setOrderType(new BigDecimal(4));
|
|
|
+ // 运输线路id
|
|
|
+ omstruckOrder.setLineId(lineId);
|
|
|
+ omstruckOrder.setInsertTime(new Date());
|
|
|
+ // 新增运输订单
|
|
|
+ result += omstruckOrderMapper.insertSelective(omstruckOrder);
|
|
|
+ }
|
|
|
+ // 遍历每一个列
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ // 销售订单-物资中间表id
|
|
|
+ BigDecimal saleMaterialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
|
|
|
+ // 物资id
|
|
|
+ BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
|
|
|
+ // 承运商id
|
|
|
+ BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
|
|
|
+ // 运输线路id
|
|
|
+ BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
|
|
|
+ // 通过线路id判断是否是钢材
|
|
|
+ BigDecimal isSteel = amsSaleOrderMaterialMapper.getIsSteel(lineId);
|
|
|
+ // 物资重量
|
|
|
+ BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialWeight"));
|
|
|
+ // 物资数量
|
|
|
+ BigDecimal materialNum = DataChange.dataToBigDecimal(map.get("materialNum"));
|
|
|
+ // 车牌号
|
|
|
+ String capacityNumber = (String) map.get("capacityNumber");
|
|
|
+ // 得到运力id
|
|
|
+ BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
|
|
|
+ // 收货方姓名
|
|
|
+ String consigneeName = String.valueOf(map.get("consigneeName"));
|
|
|
+ // 收货方电话
|
|
|
+ //String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
|
|
|
+ // 截止日期
|
|
|
+ String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
|
|
|
+ Date dateOfReceipt = null;
|
|
|
+ if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
|
|
|
+ dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ 车序号与物资子表
|
|
|
+ */
|
|
|
+ AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
|
|
|
+ // 主键
|
|
|
+ BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
|
|
|
+ amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
|
|
|
+ // 销售订单-物资中间表id
|
|
|
+ amsSaleTrucknoMaterial.setMaterialId(saleMaterialId);
|
|
|
+ // 车序号主键
|
|
|
+ amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+ // 物资重量
|
|
|
+ amsSaleTrucknoMaterial.setMaterialTheoreticalWeight(materialNumber);
|
|
|
+ amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNum);
|
|
|
+ /*
|
|
|
+ 定向派单表
|
|
|
+ */
|
|
|
+ AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
|
|
|
+ // 主键
|
|
|
+ BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
|
|
|
+ amsDispatchSaleOrder.setDispatchId(dispatchId);
|
|
|
+ // 车序号表id
|
|
|
+ amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
+ // 承运商id
|
|
|
+ amsDispatchSaleOrder.setCarrierId(carrierId);
|
|
|
+ // 派单时间和成交时间
|
|
|
+ amsDispatchSaleOrder.setDispatchTime(new Date());
|
|
|
+ amsDispatchSaleOrder.setDispatchDealTime(new Date());
|
|
|
+ // 成交类型
|
|
|
+ amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
|
|
|
+ // 车序号状态
|
|
|
+ amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
|
|
|
+
|
|
|
+ /*
|
|
|
+ 运输订单子表
|
|
|
+ */
|
|
|
+ OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
|
|
|
+ // 主键
|
|
|
+ BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
|
|
|
+ omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
|
|
|
+ // 运输订单id
|
|
|
+ omstruckOrderMaterial.setOrderId(orderId);
|
|
|
+ // 物资id
|
|
|
+ omstruckOrderMaterial.setMaterialId(materialId);
|
|
|
+ // 物资重量
|
|
|
+ omstruckOrderMaterial.setOrderMaterialWeight(materialNumber);
|
|
|
+ //物资数量
|
|
|
+ omstruckOrderMaterial.setOrderMaterialNumber(materialNum);
|
|
|
+ omstruckOrderMaterial.setInsertTime(new Date());
|
|
|
+ // 新增车序号-物资中间表
|
|
|
+ result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
|
|
|
+ // 新增定向派单表
|
|
|
+ result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
|
|
|
+
|
|
|
+ // 新增运输订单子表
|
|
|
+ result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
|
|
|
+ // 车序号累加
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ // 调用websocket
|
|
|
+ Map<String,Object> orderIdMap = new HashMap<>();
|
|
|
+ orderIdMap.put("orderId",orderId);
|
|
|
+ pushMesToWebsocket(orderIdMap);
|
|
|
+ // 生成运输执行总实绩
|
|
|
+ result += tmsTruckFeign.addTotalResult(orderIdMap);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 承运商直接派发销售订单
|
|
|
* @param mapValue
|