|
@@ -46,6 +46,8 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
IMFeign imFeign;
|
|
IMFeign imFeign;
|
|
@Autowired
|
|
@Autowired
|
|
TmsTruckFeign tmsTruckFeign;
|
|
TmsTruckFeign tmsTruckFeign;
|
|
|
|
+ @Autowired
|
|
|
|
+ AmsSaleOrderMapper amsSaleOrderMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public int addAmsSaleOrderMaterial(AmsSaleOrderMaterial amsSaleOrderMaterial) {
|
|
public int addAmsSaleOrderMaterial(AmsSaleOrderMaterial amsSaleOrderMaterial) {
|
|
@@ -324,6 +326,8 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
|
|
BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
|
|
// 运输线路id
|
|
// 运输线路id
|
|
BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
|
|
BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
|
|
|
|
+ // 通过线路id判断是否是钢材
|
|
|
|
+ BigDecimal isSteel = amsSaleOrderMaterialMapper.getIsSteel(lineId);
|
|
// 物资重量
|
|
// 物资重量
|
|
BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
|
|
BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
|
|
// 车牌号
|
|
// 车牌号
|
|
@@ -334,7 +338,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
|
|
String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
|
|
// 收货方电话
|
|
// 收货方电话
|
|
String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
|
|
String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
|
|
- // 发货日期
|
|
|
|
|
|
+ // 截止日期
|
|
String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
|
|
String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
|
|
Date dateOfReceipt = null;
|
|
Date dateOfReceipt = null;
|
|
if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
|
|
if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
|
|
@@ -353,7 +357,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(count));
|
|
amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(count));
|
|
// 收货地址
|
|
// 收货地址
|
|
amsSaleOrderMaterial.setSaleShippingAddressId(saleShippingAddressId);
|
|
amsSaleOrderMaterial.setSaleShippingAddressId(saleShippingAddressId);
|
|
- // 收货日期
|
|
|
|
|
|
+ // 截止日期
|
|
amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
|
|
amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
|
|
// 收货方姓名
|
|
// 收货方姓名
|
|
if (!consigneeName.equals("null") && !consigneeName.equals("undefined")) {
|
|
if (!consigneeName.equals("null") && !consigneeName.equals("undefined")) {
|
|
@@ -413,8 +417,17 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
omstruckOrder.setOrderIssueTime(new Date());
|
|
omstruckOrder.setOrderIssueTime(new Date());
|
|
// 运单状态
|
|
// 运单状态
|
|
omstruckOrder.setOrderStatus(new BigDecimal(4));
|
|
omstruckOrder.setOrderStatus(new BigDecimal(4));
|
|
- // 订单类型(非钢材销售)
|
|
|
|
- omstruckOrder.setOrderType(new BigDecimal(2));
|
|
|
|
|
|
+ BigDecimal status;
|
|
|
|
+ // 非钢材(危化品和焦炭)
|
|
|
|
+ if (isSteel != null && (isSteel.intValue() == 3 || isSteel.intValue() == 4)) {
|
|
|
|
+ status = new BigDecimal(2);
|
|
|
|
+ }
|
|
|
|
+ // 钢材
|
|
|
|
+ else {
|
|
|
|
+ status = new BigDecimal(1);
|
|
|
|
+ }
|
|
|
|
+ // 订单类型
|
|
|
|
+ omstruckOrder.setOrderType(status);
|
|
// 运输线路id
|
|
// 运输线路id
|
|
omstruckOrder.setLineId(lineId);
|
|
omstruckOrder.setLineId(lineId);
|
|
/*
|
|
/*
|
|
@@ -463,6 +476,194 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 承运商直接派发销售订单
|
|
|
|
+ * @param mapValue
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public int dispatchTruckOrderByCarrier(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"));
|
|
|
|
+ // 得到最大的车序号
|
|
|
|
+ BigDecimal count = DataChange.dataToBigDecimal(mapValue.get("truckNo"));
|
|
|
|
+ // 车序号计数
|
|
|
|
+ if (count.intValue() == 0) {
|
|
|
|
+ count = new BigDecimal(1);
|
|
|
|
+ }
|
|
|
|
+ // 遍历每一个列
|
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
|
+ // 销售订单-物资中间表id
|
|
|
|
+ BigDecimal saleMaterialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
|
|
|
|
+ // 物资id
|
|
|
|
+ BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
|
|
|
|
+ // 收货地址id
|
|
|
|
+ BigDecimal saleShippingAddressId = DataChange.dataToBigDecimal(map.get("saleShippingAddressId"));
|
|
|
|
+ if (saleShippingAddressId.intValue() == 0) {
|
|
|
|
+ saleShippingAddressId = null;
|
|
|
|
+ }
|
|
|
|
+ // 承运商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("orderPlanWeight"));
|
|
|
|
+ // 车牌号
|
|
|
|
+ String capacityNumber = (String) map.get("capacityNumber");
|
|
|
|
+ // 得到运力id
|
|
|
|
+ BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
|
|
|
|
+ // 收货方姓名
|
|
|
|
+ String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
|
|
|
|
+ // 收货方电话
|
|
|
|
+ String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
|
|
|
|
+ // 截止日期
|
|
|
|
+ String dateOfReceiptStr = "4102415999000";
|
|
|
|
+ Date dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
|
|
|
|
+ /*
|
|
|
|
+ 车序号表
|
|
|
|
+ */
|
|
|
|
+ AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
|
|
|
|
+ // 主键
|
|
|
|
+ BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
|
+ // 销售订单主键
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
|
|
|
|
+ // 车序号
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(count);
|
|
|
|
+ // 收货地址
|
|
|
|
+ amsSaleOrderMaterial.setSaleShippingAddressId(saleShippingAddressId);
|
|
|
|
+ // 截止日期
|
|
|
|
+ amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
|
|
|
|
+ // 收货方姓名
|
|
|
|
+ if (!consigneeName.equals("null") && !consigneeName.equals("undefined")) {
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
|
|
|
|
+ }
|
|
|
|
+ // 收货方联系方式
|
|
|
|
+ if (!consigneeTel.equals("null") && !consigneeTel.equals("undefined")) {
|
|
|
|
+ amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
|
|
|
|
+ }
|
|
|
|
+ // 下发状态
|
|
|
|
+ amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2));
|
|
|
|
+ /*
|
|
|
|
+ 车序号与物资子表
|
|
|
|
+ */
|
|
|
|
+ AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
|
|
|
|
+ // 主键
|
|
|
|
+ BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
|
|
|
|
+ amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
|
|
|
|
+ // 销售订单-物资中间表id
|
|
|
|
+ amsSaleTrucknoMaterial.setMaterialId(saleMaterialId);
|
|
|
|
+ // 车序号主键
|
|
|
|
+ amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
|
|
|
|
+ // 物资重量
|
|
|
|
+ amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
|
|
|
|
+ /*
|
|
|
|
+ 定向派单表
|
|
|
|
+ */
|
|
|
|
+ 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));
|
|
|
|
+ /*
|
|
|
|
+ 运输订单
|
|
|
|
+ */
|
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
|
+ // 运输订单主键
|
|
|
|
+ BigDecimal orderId = omstruckOrderMapper.selectMaxId();
|
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
|
+ // 车序号主键
|
|
|
|
+ omstruckOrder.setOrderPlanId(saleOrderMaterialId);
|
|
|
|
+ // 运输订单号
|
|
|
|
+ omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
|
|
|
|
+ // 运力id
|
|
|
|
+ omstruckOrder.setCapacityId(capacityId);
|
|
|
|
+ // 下发时间
|
|
|
|
+ omstruckOrder.setOrderIssueTime(new Date());
|
|
|
|
+ // 运单状态
|
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(4));
|
|
|
|
+ BigDecimal status;
|
|
|
|
+ // 非钢材(危化品和焦炭)
|
|
|
|
+ if (isSteel != null && (isSteel.intValue() == 3 || isSteel.intValue() == 4)) {
|
|
|
|
+ status = new BigDecimal(2);
|
|
|
|
+ }
|
|
|
|
+ // 钢材
|
|
|
|
+ else {
|
|
|
|
+ status = new BigDecimal(1);
|
|
|
|
+ }
|
|
|
|
+ // 订单类型
|
|
|
|
+ omstruckOrder.setOrderType(status);
|
|
|
|
+ // 运输线路id
|
|
|
|
+ omstruckOrder.setLineId(lineId);
|
|
|
|
+ /*
|
|
|
|
+ 运输订单子表
|
|
|
|
+ */
|
|
|
|
+ OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
|
|
|
|
+ // 主键
|
|
|
|
+ BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
|
|
|
|
+ omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
|
|
|
|
+ // 运输订单id
|
|
|
|
+ omstruckOrderMaterial.setOrderId(orderId);
|
|
|
|
+ // 物资id
|
|
|
|
+ omstruckOrderMaterial.setMaterialId(materialId);
|
|
|
|
+ // 物资重量
|
|
|
|
+ omstruckOrderMaterial.setOrderMaterialWeight(materialNumber);
|
|
|
|
+ // 新增车序号表
|
|
|
|
+ result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
|
|
|
|
+ // 新增车序号-物资中间表
|
|
|
|
+ result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
|
|
|
|
+ // 新增定向派单表
|
|
|
|
+ result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
|
|
|
|
+ // 新增运输订单
|
|
|
|
+ result += omstruckOrderMapper.insertSelective(omstruckOrder);
|
|
|
|
+ // 新增运输订单子表
|
|
|
|
+ result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
|
|
|
|
+ // 调用websocket
|
|
|
|
+ Map<String,Object> orderIdMap = new HashMap<>();
|
|
|
|
+ orderIdMap.put("orderId",orderId);
|
|
|
|
+ pushMesToWebsocket(orderIdMap);
|
|
|
|
+ // 生成运输执行总实绩
|
|
|
|
+ result += tmsTruckFeign.addTotalResult(orderIdMap);
|
|
|
|
+ // 车序号累加
|
|
|
|
+ count = new BigDecimal(count.intValue() + 1);
|
|
|
|
+ }
|
|
|
|
+ // 修改状态为开启状态
|
|
|
|
+ AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
|
|
|
|
+ amsSaleOrder.setSaleOrderId(saleOrderId);
|
|
|
|
+ amsSaleOrder.setCloseStatus(new BigDecimal(0));
|
|
|
|
+ result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 关闭销售订单
|
|
|
|
+ * @param saleOrderId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public int closeSaleOrder(BigDecimal saleOrderId) {
|
|
|
|
+ AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
|
|
|
|
+ amsSaleOrder.setSaleOrderId(saleOrderId);
|
|
|
|
+ amsSaleOrder.setCloseStatus(new BigDecimal(1));
|
|
|
|
+ int result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 发送消息到 websocket 推送消息
|
|
* 发送消息到 websocket 推送消息
|
|
* orderId 订单Id
|
|
* orderId 订单Id
|