|
@@ -540,6 +540,15 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int addSteelSaleOrder(Map<String, Object> mapValue) throws Exception {
|
|
|
List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
|
|
|
+ //如果前端传输过来的销售订单id不是空,则改变为已上传
|
|
|
+ if (mapValue.get("saleOrderId") != null) {
|
|
|
+ //先判断该销售订单有没有被上传,如果传了则不允许重复上传
|
|
|
+ int count = amsSaleOrderMaterialMapper.selectSaleOrderIdIsUpload(DataChange.dataToBigDecimal(mapValue.get("saleOrderId")));
|
|
|
+ if(count != 0) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ amsSaleOrderMapper.updateOldSaleOrderUpload(DataChange.dataToBigDecimal(mapValue.get("saleOrderId")));
|
|
|
+ }
|
|
|
// 得到发货单位
|
|
|
BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
|
|
|
// 收货单位
|
|
@@ -791,6 +800,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
|
|
|
result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
|
|
|
}
|
|
|
+
|
|
|
result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
|
|
|
return saleOrderId.intValue();
|
|
|
}
|
|
@@ -827,6 +837,11 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
|
|
|
Integer saleStatus = amsSaleOrderMapper.findStatus(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
|
|
|
String selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
|
|
|
+ //如果这个车序号下面有运单,则证明已经派了
|
|
|
+ Map<String,Object> orderMap = amsSaleOrderMapper.getSteelOrderMap(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
|
|
|
+ if (orderMap != null) {
|
|
|
+ throw new Exception("该订单已派发,无法重复派车");
|
|
|
+ }
|
|
|
if (saleStatus == 1) {
|
|
|
throw new Exception("订单未审核,无法派车!");
|
|
|
}
|
|
@@ -1007,7 +1022,11 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
// 调用websocket
|
|
|
Map<String, Object> orderIdMap = new HashMap<>();
|
|
|
orderIdMap.put("orderId", omstruckOrder.getOrderId());
|
|
|
- amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
|
|
|
+ try {
|
|
|
+ amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
// 生成运输执行总实绩
|
|
|
result += tmsTruckFeign.addTotalResult(orderIdMap);
|
|
|
}
|
|
@@ -1890,7 +1909,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
//这是修改车牌号
|
|
|
//将排队信息删掉
|
|
|
Map<String, Object> isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId")));
|
|
|
- if(isSpellingMap != null){
|
|
|
+ if(isSpellingMap != null && isSpellingMap.get("listId") != null){
|
|
|
int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
|
|
|
if(isSpelling == 1){
|
|
|
result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId"));
|
|
@@ -1992,25 +2011,39 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
|
|
|
return result;
|
|
|
}
|
|
|
+ orderStatus = omstruckOrderMapper.getOrderStatus(DataChange.dataToBigDecimal(orderId));
|
|
|
// 订单子表设为关闭状态
|
|
|
AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
|
|
|
amsSaleMaterial.setSaleMaterialId(saleMaterialId);
|
|
|
amsSaleMaterial.setDeleted(new BigDecimal(0));
|
|
|
amsSaleMaterial.setInsertUpdateRemark(reason);
|
|
|
- result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
|
|
|
// 已派车
|
|
|
- if (loadIdList == null || loadIdList.size() == 0) {
|
|
|
+ if ((loadIdList == null || loadIdList.size() == 0) && orderStatus == 5) {
|
|
|
return result;
|
|
|
}
|
|
|
- // 删除实绩表
|
|
|
- Map<String, Object> loadMap = loadIdList.get(0);
|
|
|
- Map<String, Object> weightMap = weightIdList.get(0);
|
|
|
- BigDecimal loadId = (BigDecimal) loadMap.get("loadId");
|
|
|
- BigDecimal weightId = (BigDecimal) weightMap.get("weightId");
|
|
|
+ //判断关闭分录是否为最后一拼
|
|
|
+ int asmMaterialCount = amsSaleMaterialMapper.getSaleMaterialDelete(saleOrderMaterialId);
|
|
|
+ if (asmMaterialCount > 1 && orderStatus == 5) {
|
|
|
+ // 删除实绩表
|
|
|
+ Map<String, Object> loadMap = loadIdList.get(0);
|
|
|
+ Map<String, Object> weightMap = weightIdList.get(0);
|
|
|
+ BigDecimal loadId = (BigDecimal) loadMap.get("loadId");
|
|
|
+ BigDecimal weightId = (BigDecimal) weightMap.get("weightId");
|
|
|
+ result += amsSaleMaterialMapper.deleteLoadResult(loadId);
|
|
|
+ result += amsSaleMaterialMapper.deleteWeightResult(weightId);
|
|
|
+ result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue);
|
|
|
+ }else{
|
|
|
+ //关闭运输订单
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
+ omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
|
|
|
+ //如果是单拼或者只剩一条分录没有关闭了则将状态设为7
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(7));
|
|
|
+ omstruckOrder.setUpdateTime(new Date());
|
|
|
+ omstruckOrder.setInsertUpdateRemark("关闭分录,同步关闭运输订单");
|
|
|
+ result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
|
|
|
+ }
|
|
|
+ result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
|
|
|
result += amsSaleMaterialMapper.updateOrderMaterialToClose(mapValue);
|
|
|
- result += amsSaleMaterialMapper.deleteLoadResult(loadId);
|
|
|
- result += amsSaleMaterialMapper.deleteWeightResult(weightId);
|
|
|
- result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -2045,34 +2078,36 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
Map<String,Object> saleMaterialMap = amsSaleOrderMapper.getSaleMaterialMessage(saleMaterialId);
|
|
|
BigDecimal orderId = (BigDecimal) saleMaterialMap.get("orderId");
|
|
|
BigDecimal orderStatus = (BigDecimal) saleMaterialMap.get("orderStatus");
|
|
|
- if (orderId != null && orderStatus.intValue() == 5) {
|
|
|
+ //查询订单字表条数
|
|
|
+ int orderMaterialNum = omstruckOrderMapper.getOrderMaterialNum(orderId);
|
|
|
+ //查询计量实绩条数
|
|
|
+ int weightResultNum = omstruckOrderMapper.getWeightResultNum(orderId);
|
|
|
+ if (orderId != null && orderStatus.intValue() == 5 && orderMaterialNum != weightResultNum) {
|
|
|
BigDecimal resultTotalId = (BigDecimal) saleMaterialMap.get("resultTotalId");
|
|
|
BigDecimal materialId = (BigDecimal) saleMaterialMap.get("materialId");
|
|
|
// 根据总实绩id查询订单中的最大路段顺序号
|
|
|
- int maxNum = amsSaleOrderMapper.findOrderMaxNum(resultTotalId);
|
|
|
// 得到皮重顺序号
|
|
|
- int tareNum = maxNum - 3;
|
|
|
+ int tareNum = (weightResultNum + 1) * 3 - 1;
|
|
|
// 得到装货顺序号
|
|
|
- int loadNum = maxNum - 2;
|
|
|
+ int loadNum = (weightResultNum + 1) * 3;
|
|
|
// 得到毛重顺序号
|
|
|
- int grossNum = maxNum - 1;
|
|
|
+ int grossNum = (weightResultNum + 1) * 3 + 1;
|
|
|
// 装货实绩
|
|
|
TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
|
|
|
TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
|
|
|
tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
|
|
|
tmstruckLoadResult.setResultTotalId(resultTotalId);
|
|
|
- tmstruckLoadResult.setMaterialId(materialId);
|
|
|
tmstruckLoadResult.setSegmentSqe(new BigDecimal(loadNum));
|
|
|
result += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
|
|
|
// 计量实绩
|
|
|
tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
|
|
|
tmstruckWeightResult.setResultTotalId(resultTotalId);
|
|
|
- tmstruckWeightResult.setMaterialId(materialId);
|
|
|
tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(10));
|
|
|
tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(2));
|
|
|
tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(grossNum));
|
|
|
tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(tareNum));
|
|
|
result += tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult);
|
|
|
+
|
|
|
// 出库子表
|
|
|
BigDecimal outBoundId = (BigDecimal) saleMaterialMap.get("outBoundId");
|
|
|
BigDecimal materialNumber = (BigDecimal) saleMaterialMap.get("materialNumber");
|
|
@@ -2089,6 +2124,27 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
|
|
|
result += wmspOutboundResultMaterialMapper.insertSelective(wmspOutboundResultMaterial);
|
|
|
}
|
|
|
}
|
|
|
+ //去掉取消装货
|
|
|
+ result += omstruckOrderMaterialMapper.updateOmsMaterial(saleMaterialMap);
|
|
|
+ if (orderId != null && orderStatus.intValue() == 7) {
|
|
|
+ //如果订单被关闭,那么还原
|
|
|
+ //判断下面有没有实绩
|
|
|
+ int resultCount = omstruckOrderMapper.getResultCount(orderId);
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
+ if (resultCount == 0) {
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(4));
|
|
|
+ omstruckOrder.setInsertUpdateRemark("反关闭分录,运单同步开启");
|
|
|
+ omstruckOrder.setUpdateTime(new Date());
|
|
|
+ omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
|
|
|
+ }else{
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
+ omstruckOrder.setOrderStatus(new BigDecimal(5));
|
|
|
+ omstruckOrder.setInsertUpdateRemark("反关闭分录,运单同步开启");
|
|
|
+ omstruckOrder.setUpdateTime(new Date());
|
|
|
+ omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
// 设置反关闭分录id
|
|
|
head.put("unCloseEntryId",amsSaleMaterial.getEasPrimaryId());
|
|
|
// 设置是否整单
|