Bläddra i källkod

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU/DAL-DAZHOU-AMS-API

liyg 2 år sedan
förälder
incheckning
9d03d48739

+ 8 - 0
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java

@@ -1715,4 +1715,12 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
         return success(i);
     }
 
+    @ApiOperation("执行拆分操作")
+    @PostMapping("splitOrder")
+    public RESTfulResult splitOrder(@RequestBody(required = false) Map<String,Object> map) {
+        int i = 0 ;
+        i += amsSaleOrderMaterialService.splitOrder(map);
+        return success(i);
+    }
+
 }

+ 4 - 0
src/main/java/com/steerinfo/dil/mapper/AmsDispatchSaleOrderMapper.java

@@ -55,4 +55,8 @@ public interface AmsDispatchSaleOrderMapper extends IBaseMapper<AmsDispatchSaleO
 
     List<BigDecimal> getDispatchCarriers(BigDecimal saleOrderMaterialId);
 
+    List<BigDecimal> selectDispatchIdsBySale(BigDecimal toSplitSaleOrderMaterialID);
+
+    BigDecimal selectCarrierBySaleOrderMaterialId(BigDecimal toSplitSaleOrderMaterialID);
+
 }

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.java

@@ -42,4 +42,6 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
 
     BigDecimal selectTransPortOrderId(BigDecimal closeWlEntryId);
 
+    List<BigDecimal> getSaleMaterialIds(BigDecimal saleOrderMaterialId);
+
 }

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.java

@@ -73,4 +73,6 @@ public interface AmsSaleOrderMaterialMapper extends IBaseMapper<AmsSaleOrderMate
 
     int deleteToMergeOrder(BigDecimal orderId);
 
+    BigDecimal selectEnFactory(BigDecimal orderId);
+
 }

+ 4 - 0
src/main/java/com/steerinfo/dil/mapper/OmstruckOrderMapper.java

@@ -64,4 +64,8 @@ public interface OmstruckOrderMapper extends IBaseMapper<OmstruckOrder, BigDecim
 
     int selectNetWeightCount(BigDecimal orderId);
 
+    List<BigDecimal> getOrderIdsBySale(BigDecimal toSplitSaleOrderMaterialID);
+
+    String getOrderCapacityHistory(BigDecimal orderId);
+
 }

+ 2 - 0
src/main/java/com/steerinfo/dil/service/IAmsSaleOrderMaterialService.java

@@ -73,4 +73,6 @@ public interface IAmsSaleOrderMaterialService{
     Map<String, Object> getBenPrice(Map<String, Object> map);
 
     int mergeOrder(Map<String, Object> map);
+
+    int splitOrder(Map<String, Object> map);
 }

+ 69 - 0
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderMaterialServiceImpl.java

@@ -49,6 +49,8 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
     AmsContractTransportPriceMapper amsContractTransportPriceMapper;
     @Autowired
     RmsReceivePlaceMapper rmsReceivePlaceMapper;
+    @Autowired
+    AmsSaleMaterialMapper amsSaleMaterialMapper;
 
     @Override
     public int addAmsSaleOrderMaterial(AmsSaleOrderMaterial amsSaleOrderMaterial) {
@@ -994,10 +996,12 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
 
 
     @Override
+    @Transactional
     public int mergeOrder(Map<String, Object> map) {
         int i = 0 ;
         List<Map<String,Object>> mapList = (List<Map<String,Object>>)map.get("mapList");
         BigDecimal toMergeSaleOrderMaterialID = DataChange.dataToBigDecimal(mapList.get(0).get("saleOrderMaterialId"));
+        BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapList.get(0).get("saleOrderId"));
         for (Map<String,Object> map1 : mapList) {
             //获取车序号ID
             BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map1.get("saleOrderMaterialId"));
@@ -1008,6 +1012,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
             }
             //找出该车序号的物资子表ID
             List<BigDecimal> truckNoMaterialIds = amsSaleTrucknoMaterialMapper.getTruckNoMaterialIds(saleOrderMaterialId);
+            List<BigDecimal> saleMaterialIds = amsSaleMaterialMapper.getSaleMaterialIds(saleOrderMaterialId);
             for (BigDecimal truckNoMaterialId : truckNoMaterialIds) {
                 AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
                 amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
@@ -1015,6 +1020,70 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
                 amsSaleTrucknoMaterial.setInsertUpdateRemark("执行合并操作,原车序号ID为" + saleOrderMaterialId);
                 i += amsSaleTrucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
             }
+            for (BigDecimal saleMaterialId : saleMaterialIds) {
+                AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+                amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+                amsSaleMaterial.setSaleOrderId(saleOrderId);
+                amsSaleMaterial.setInsertUpdateRemark("执行合并操作,原销售订单号为" + saleOrderId);
+                i += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
+            }
+        }
+        return i;
+    }
+
+
+    @Override
+    @Transactional
+    public int splitOrder(Map<String, Object> map) {
+        int i = 0;
+        List<Map<String,Object>> mapList = (List<Map<String,Object>>)map.get("mapList");
+        BigDecimal toSplitSaleOrderMaterialID = DataChange.dataToBigDecimal(mapList.get(0).get("saleOrderMaterialId"));
+        //先做异常处理.如果该车序号对应多条授权承运商实绩
+        List<BigDecimal> dispatchIds = amsDispatchSaleOrderMapper.selectDispatchIdsBySale(toSplitSaleOrderMaterialID);
+        if(dispatchIds != null && dispatchIds.size() > 1) {
+            //删除所有已授权,
+            for(int j=1;j<dispatchIds.size() ; j++) {
+                if(dispatchIds.get(i) != null) {
+                    amsDispatchSaleOrderMapper.deleteByPrimaryKey(dispatchIds.get(j));
+                }
+            }
+        }
+        //再查一下该车序号对应有几个运输订单,删除该车序号表下所有运单
+        List<BigDecimal> orderIds = omstruckOrderMapper.getOrderIdsBySale(toSplitSaleOrderMaterialID);
+        if(orderIds != null && orderIds.size() > 0) {
+            for (BigDecimal orderId :orderIds) {
+                if(orderId != null && orderId.intValue() != 0) {
+                    omstruckOrderMapper.deleteByPrimaryKey(orderId);
+                }
+            }
+        }
+        //首先根据车序号主键id查询车序号实体类
+        AmsSaleOrderMaterial amsSaleOrderMaterial = amsSaleOrderMaterialMapper.selectByPrimaryKey(toSplitSaleOrderMaterialID);
+        //查询承运商授权信息
+        AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
+        if(dispatchIds != null && dispatchIds.size() > 0 && dispatchIds.get(0) != null) {
+            amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchIds.get(0));
+        }
+        //根据主键ID查询车序号子表主键id
+        List<BigDecimal> truckNoMaterialIds = amsSaleTrucknoMaterialMapper.getTruckNoMaterialIds(toSplitSaleOrderMaterialID);
+        //如果车序号子表只有一条则不执行
+        if(truckNoMaterialIds != null && truckNoMaterialIds.size() > 1) {
+            //遍历车序号子表,第一个不变,后面的都变
+            for(int k=1;k < truckNoMaterialIds.size() ; k++) {
+                if(truckNoMaterialIds.get(k) != null){
+                    BigDecimal saleOrderMaterialID = amsSaleOrderMaterialMapper.selectMaxId();
+                    amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialID);
+                    amsSaleOrderMaterial.setInsertUpdateRemark("拆分订单,拆分前车序号为" + toSplitSaleOrderMaterialID);
+                    i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
+                    AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = amsSaleTrucknoMaterialMapper.selectByPrimaryKey(truckNoMaterialIds.get(k));
+                    amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialID);
+                    i += amsSaleTrucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
+                    BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
+                    amsDispatchSaleOrder.setDispatchId(dispatchId);
+                    amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialID);
+                    amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
+                }
+            }
         }
         return i;
     }

+ 64 - 25
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -1948,6 +1948,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     public Map<String, Object> updateCapacityNumberInFactory(Map<String, Object> mapValue) throws Exception {
         Object lineSequence = mapValue.get("lineSequence");
         int result = 0;
+        if (mapValue.get("orderId") == null) {
+            throw new Exception("还未派车,不允许修改车牌号");
+        }
         //查询输入进来的车牌号是否与原有车牌号一致,如果一致则退出
         BigDecimal oldCapacityId = omstruckOrderMapper.getOldCapacityId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
         if(oldCapacityId.compareTo(DataChange.dataToBigDecimal(mapValue.get("capacityId"))) == 0) {
@@ -1992,37 +1995,73 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             }
             mapValue.put("capacityids",capacityids);
             //这是修改车牌号
-            //将排队信息删掉
-            Map<String, Object> isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId")));
-            if(isSpellingMap != null && isSpellingMap.get("listId") != null){
-                int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
-                if(isSpelling == 1 ){
-                    result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId"));
+            //取消是新车牌号,那么不删除排队信息,不删除实绩信息,将运单状态变为7
+            if (DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
+                //根据订单id查询车牌号改动记录
+                String oldCpacityIds = omstruckOrderMapper.getOrderCapacityHistory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
+                BigDecimal oldOldCapacityId = null;
+                if(oldCpacityIds != null) {
+                    oldOldCapacityId = DataChange.dataToBigDecimal(oldCpacityIds.split(",")[0]);
+                }
+                //如果旧车号是取消,且取消的前一个车与该车相等,那么就将状态还原
+                if (oldCapacityId.compareTo(new BigDecimal(35128)) == 0 && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(oldOldCapacityId) == 0 ) {
+                    //判断该订单下有没有子实绩
+                    BigDecimal  resultId = amsSaleOrderMaterialMapper.selectEnFactory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
+                    if(resultId == null) {
+                        OmstruckOrder omstruckOrder = new OmstruckOrder();
+                        omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
+                        omstruckOrder.setOrderStatus(new BigDecimal(4));
+                        omstruckOrder.setOrderLineSequence(new BigDecimal(0));
+                        omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
+                        /*omstruckOrder.set*/
+                        result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
+                    }else{
+                        OmstruckOrder omstruckOrder = new OmstruckOrder();
+                        omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
+                        omstruckOrder.setOrderStatus(new BigDecimal(5));
+                        omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
+                        /*omstruckOrder.set*/
+                        result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
+                    }
+
                 }else{
-                    result += omstruckOrderMapper.deleteQueueList(isSpellingMap.get("listId"));
+                    //将排队信息删掉
+                    Map<String, Object> isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId")));
+                    if(isSpellingMap != null && isSpellingMap.get("listId") != null){
+                        int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
+                        if(isSpelling == 1 ){
+                            result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId"));
+                        }else{
+                            result += omstruckOrderMapper.deleteQueueList(isSpellingMap.get("listId"));
+                        }
+                    }
+                    //若是接单之后还需要删除实绩且将状态变为4
+                    //查询运输订单的状态和总实绩ID
+                    Map<String, Object> orderMesMap = amsSaleOrderMapper.getOrderMes(mapValue);
+                    BigDecimal resultTotalId = DataChange.dataToBigDecimal(orderMesMap.get("resultTotalId"));
+                    //删除排队实绩
+                    if (resultTotalId !=null && !("".equals(resultTotalId))){
+                        omstruckOrderMapper.deleteQueuingPerformance(resultTotalId);
+                    }
+                    OmstruckOrder omstruckOrder = new OmstruckOrder();
+                    omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
+                    omstruckOrder.setOrderStatus(new BigDecimal(4));
+                    omstruckOrder.setOrderLineSequence(new BigDecimal(0));
+                        /*omstruckOrder.set*/
+                    result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
+                    result += omstruckOrderMapper.deleteEnResult(resultTotalId);
+                    result += omstruckOrderMapper.deleteWeightResult(resultTotalId);
+                    result += omstruckOrderMapper.deleteLoadResult(resultTotalId);
+                    result += omstruckOrderMapper.deleteLeaveResult(resultTotalId);
                 }
-            }
-            result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue);
-            //若是接单之后还需要删除实绩且将状态变为4
-            //查询运输订单的状态和总实绩ID
-            Map<String, Object> orderMesMap = amsSaleOrderMapper.getOrderMes(mapValue);
-            BigDecimal resultTotalId = DataChange.dataToBigDecimal(orderMesMap.get("resultTotalId"));
-            //删除排队实绩
-            if (resultTotalId !=null && !("".equals(resultTotalId))){
-                omstruckOrderMapper.deleteQueuingPerformance(resultTotalId);
-            }
-            if(DataChange.dataToBigDecimal(orderMesMap.get("orderStatus")).intValue() == 5){
+            }else{
                 OmstruckOrder omstruckOrder = new OmstruckOrder();
                 omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
-                omstruckOrder.setOrderStatus(new BigDecimal(4));
-                omstruckOrder.setOrderLineSequence(new BigDecimal(0));
-                /*omstruckOrder.set*/
+                omstruckOrder.setOrderStatus(new BigDecimal(7));
+                omstruckOrder.setInsertUpdateRemark("取消车牌号,保留实绩将状态变为7");
                 result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
-                result += omstruckOrderMapper.deleteEnResult(resultTotalId);
-                result += omstruckOrderMapper.deleteWeightResult(resultTotalId);
-                result += omstruckOrderMapper.deleteLoadResult(resultTotalId);
-                result += omstruckOrderMapper.deleteLeaveResult(resultTotalId);
             }
+            result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue);
         }
         mapValue.put("result",result);
         return mapValue;

+ 9 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsDispatchSaleOrderMapper.xml

@@ -703,4 +703,13 @@
         SELECT ADSO.DISPATCH_ID "dispatchId" FROM AMS_DISPATCH_SALE_ORDER ADSO
         WHERE ADSO.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
     </select>
+    <select id="selectDispatchIdsBySale" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
+        SELECT ADSO.DISPATCH_ID FROM AMS_DISPATCH_SALE_ORDER ADSO
+        WHERE ADSO.SALE_ORDER_MATERIAL_ID = #{toSplitSaleOrderMaterialID}
+    </select>
+    <select id="selectCarrierBySaleOrderMaterialId" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
+        SELECT ADSO.CARRIER_ID FROM AMS_DISPATCH_SALE_ORDER ADSO
+        WHERE SALE_ORDER_MATERIAL_ID = #{toSplitSaleOrderMaterialID}
+        FETCH FIRST 1 ROW ONLY
+    </select>
 </mapper>

+ 4 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.xml

@@ -855,6 +855,10 @@
       ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
       WHERE ASM.SALE_MATERIAL_ID = #{closeWlEntryId}
     </select>
+    <select id="getSaleMaterialIds" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
+      SELECT ASTM.MATERIAL_ID FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+      WHERE ASTM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+    </select>
     <update id="updateSaleMaterialMakeDate">
     update AMS_SALE_MATERIAL ASM
     SET ASM.SALE_MAKE_DATE = #{easprimaryIdMakeDate}

+ 1 - 1
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -4708,7 +4708,7 @@
     fetch first 1 row only
   </select>
   <select id="getPriceIdByPlaceId" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
-    SELECT * FROM AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    SELECT ACTP.PRICE_ID FROM AMS_CONTRACT_TRANSPORT_PRICE ACTP
     WHERE ACTP.TYPE = 1
     and ACTP.DELETED = 0
     AND ACTP.PLACE_ID = #{placeId}

+ 8 - 1
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.xml

@@ -926,8 +926,15 @@
       SELECT RRA.INSERT_UPDATE_REMARK FROM RMS_RECEIVE_ADDRESS RRA
       WHERE RRA.ADDRESS_ID = #{saleShippingAddressId}
     </select>
+  <select id="selectEnFactory" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
+    SELECT TER.RESULT_ID FROM TMSTRUCK_ENFACTORY_RESULT TER
+    LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+    ON TTR.RESULT_TOTAL_ID = TER.RESULT_TOTAL_ID
+    WHERE TTR.ORDER_ID = #{orderId}
+    FETCH FIRST 1 ROW ONLY
+  </select>
 
-    <update id="updateSendStation">
+  <update id="updateSendStation">
     update
       TMSTRAIN_PLEASE_APPROVE_RESULT
     set SEND_STATION_ID=#{sendStationId}

+ 9 - 0
src/main/resources/com/steerinfo/dil/mapper/OmstruckOrderMapper.xml

@@ -941,4 +941,13 @@
         TWR.RESULT_NET_WEIGHT IS NOT NULL
         AND TTR.ORDER_ID = #{orderId}
     </select>
+    <select id="getOrderIdsBySale" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
+        SELECT OO.ORDER_ID FROM OMSTRUCK_ORDER OO
+        WHERE OO.ORDER_PLAN_ID = #{toSplitSaleOrderMaterialID}
+        and OO.ORDER_TYPE = 1
+    </select>
+    <select id="getOrderCapacityHistory" resultType="java.lang.String" parameterType="java.math.BigDecimal">
+        SELECT OO.CAPACITYIDS FROM OMSTRUCK_ORDER OO
+        WHERE OO.ORDER_ID = #{orderId}
+    </select>
 </mapper>