luobang 2 years ago
parent
commit
cd9878f1f1

+ 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);
+
 }

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

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

+ 61 - 26
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -1967,7 +1967,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         }else {
             mapValue.put("capacityTel",0);
         }
-
         if (lineSequence == null || "0".equals(lineSequence.toString()) || "1".equals(lineSequence.toString()) || "2".equals(lineSequence.toString())) {
             String capacityids="";
             Integer capacityid1= (Integer) mapValue.get("capacityIds");
@@ -1977,37 +1976,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;

+ 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}

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

@@ -946,4 +946,8 @@
         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>