luobang 2 năm trước cách đây
mục cha
commit
43d266cbe6

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

@@ -57,4 +57,6 @@ public interface AmsDispatchSaleOrderMapper extends IBaseMapper<AmsDispatchSaleO
 
     List<BigDecimal> selectDispatchIdsBySale(BigDecimal toSplitSaleOrderMaterialID);
 
+    BigDecimal selectCarrierBySaleOrderMaterialId(BigDecimal toSplitSaleOrderMaterialID);
+
 }

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

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

+ 42 - 2
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderMaterialServiceImpl.java

@@ -996,6 +996,7 @@ 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");
@@ -1032,6 +1033,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
 
 
     @Override
+    @Transactional
     public int splitOrder(Map<String, Object> map) {
         int i = 0;
         List<Map<String,Object>> mapList = (List<Map<String,Object>>)map.get("mapList");
@@ -1040,11 +1042,49 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
         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);
-        //首先根据车序号主键id查询车序号实体类
-
+        //如果车序号子表只有一条则不执行
+        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;
     }
 }

+ 4 - 0
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -1940,6 +1940,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) {
@@ -1964,6 +1967,7 @@ 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");

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

@@ -707,4 +707,9 @@
         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>

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

@@ -941,4 +941,9 @@
         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>
 </mapper>