Browse Source

添加内转委托规则

txf 3 years ago
parent
commit
bc71ada7d2

+ 6 - 0
src/main/java/com/steerinfo/dil/controller/TmstruckMeasureCommissionController.java

@@ -66,6 +66,12 @@ public class TmstruckMeasureCommissionController extends BaseRESTfulController {
         int i = tmstruckMeasureCommissionService.sendMeasureCommssion(map);
         if(i == 0){
             return failed("委托发送失败!请联系管理员");
+        }else if(i == 2){
+            return failed("该物资已计量!无法撤回委托");
+        }else if(i == 3){
+            return success("委托撤回成功!");
+        }else if(i == 4){
+            return failed("还有物资未计量完成!不允许继续发送委托");
         }
         return success("委托发送成功");
     }

+ 12 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckMeasureCommissionMapper.java

@@ -94,4 +94,16 @@ public interface TmstruckMeasureCommissionMapper extends IBaseMapper<TmstruckMea
 
     //查找未计量完成的物资
     List<Map<String,Object>> getMaterialIdAndCalculateId(Map<String,Object> map);
+
+    //修改订单子表
+    int updateOmsTruckMaterial(Map<String, Object> map);
+
+    //通过订单号和物资ID查询计量实绩是否有数据
+    List<Integer> checkoutWeightCommission(Map<String, Object> map);
+
+    //查询已经发送过委托的物资Id
+    Integer getAlreadySentMaterialId(Map<String, Object> map);
+
+    //查询最后一个发委托的物资 通过这个物资查询是否含有净重 或者是没有计量实绩
+    Map<String, Object> checkoutWeightCommission2(Map<String, Object> map);
 }

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

@@ -81,8 +81,8 @@ public interface UtilsMapper {
     //通过路段顺序号和线路ID查找 线路子表的子表的ID 和门岗ID或汽车衡ID
     List<Integer> getLineSegmentGateCalcId(Map<String, Object> map);
 
-    //通过运输订单id查找运输订单类型
-    BigDecimal getOrderTypeByOrderId(BigDecimal orderId);
+    //通过运输订单id查找运输订单信息
+    Map<String, Object> getOrderMesByOrderId(BigDecimal orderId);
 
     //通过运输订单号查询运输订单类型
     Map<String, Object> getOrderTypeByOrderNumber(String orderNumber);

+ 40 - 8
src/main/java/com/steerinfo/dil/service/impl/TmstruckMeasureCommissionServiceImpl.java

@@ -89,7 +89,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
      */
     public int addMaoMeasureCommission(Map<String, Object> map){
         int i = 0;
-        addMeasureCommission(map); // 添加计毛委托
         //发送数据给计量系统 必要数据 orderTypee:订单类型  resultTotalId: 总实绩Id   orderId
         int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
         if(orderType == 10){
@@ -119,7 +118,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
      */
     public int addXSMeasureCommission(Map<String, Object> map){
         int i = 0;
-        addMeasureCommission(map); // 添加计毛委托
         //发送数据给计量系统 必要数据 orderTypee:订单类型  resultTotalId: 总实绩Id   orderId
         //获取当前订单是属于哪个厂区订单
         Integer shipperId = tmstruckMeasureCommissionMapper.getShipperIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
@@ -188,7 +186,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 i = sendDXMeasureCommissionMes(map);//如果有两条没有净重的实绩则需要给达兴发委托  否则给达钢发委托
             }
         }
-        addMeasureCommission(map); // 添加计毛委托
         return i;
     }
 
@@ -323,10 +320,12 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 measureCommission.put("isInsert",true);
                 measureCommission.put("deliveryMethod", "磅重交货");
                 measureCommission.put("packagesNum", 0);
-
         }
+        if(measureCommission != null)
+            map.put("materialId", measureCommission.get("materialId"));
+        addMeasureCommission(map); // 添加计量委托
+        System.out.println(measureCommission);
         /*访问接口发送数据*/
-        System.out.println(measureCommission == null ? "没有查询出委托" : measureCommission);
         return 1;
 //        return sendMesToMeasure(measureCommission);
 
@@ -412,6 +411,9 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 break;
             
         }
+        if(measureCommission != null)
+            map.put("materialId", measureCommission.get("item"));
+        addMeasureCommission(map); // 添加计量委托
         /*访问接口发送数据*/
         return sendMesToDXMeasure(measureCommission);
     }
@@ -479,13 +481,36 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
 
     //发送计量委托
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
     public int sendMeasureCommssion(Map<String, Object> map){
+        if(map.get("deletedCommission") != null){
+            //在计量实绩中查询是否有计量数据,如果有则代表已经计量过了不允许撤回
+            List<Integer> commission = tmstruckMeasureCommissionMapper.checkoutWeightCommission(map);
+            if(commission.size() != 0){
+                return 2;
+            }
+        }else {
+            //查询最后发送委托的物资
+            Integer alreadySentMaterialId = tmstruckMeasureCommissionMapper.getAlreadySentMaterialId(map);
+            if(alreadySentMaterialId != null){
+                map.put("checkMaterialId", alreadySentMaterialId);
+                //判断当前订单是否有已经发送过委托 但是还未计量完成的物资
+                Map<String, Object> checkoutMesMap = tmstruckMeasureCommissionMapper.checkoutWeightCommission2(map);
+                if(checkoutMesMap == null){ // 为空则是这个物资还没有计量
+                    return 4;
+                }else {
+                    //如果不为空, 判断是否有净重 如果有净重则是计量完成 否则 没有
+                    if(checkoutMesMap.get("resultNetWeight") == null){
+                        return 4;
+                    }
+                }
+            }
+        }
         int i=0;
         //获取订单类型
         BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
-        BigDecimal orderType = utilsMapper.getOrderTypeByOrderId(orderId);
-        map.put("orderTypee", orderType);
+        map.putAll(utilsMapper.getOrderMesByOrderId(orderId));
+        BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
         //根据运输订单id查找运输订单号
         switch (orderType.intValue()){
             case 1: //查询未装车实绩
@@ -521,6 +546,13 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
             case 18:
                 i+=addMaoMeasureCommission(map);
         }
+        if(i == 1){
+            //发送委托成功后修改订单物资表
+            tmstruckMeasureCommissionMapper.updateOmsTruckMaterial(map);
+            if(map.get("deletedCommission") != null){
+                i = 3;
+            }
+        }
         return i;
     }
 

+ 44 - 0
src/main/resources/com/steerinfo/dil/mapper/TmstruckMeasureCommissionMapper.xml

@@ -1204,5 +1204,49 @@
 
     </select>
 
+    <select id="checkoutWeightCommission" parameterType="map" resultType="java.lang.Integer">
+        select TWR.WEIGHT_TASK_RESULT_ID
+        from TMSTRUCK_TOTAL_RESULT TTR
+            left join TMSTRUCK_WEIGHT_RESULT TWR
+                on TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+            where TTR.ORDER_ID = #{orderId} and TWR.MATERIAL_ID = #{materialId}
+    </select>
+
+    <select id="checkoutWeightCommission2" parameterType="map" resultType="java.util.Map">
+        select TWR.WEIGHT_TASK_RESULT_ID "weightTaskResultId",
+               TWR.RESULT_NET_WEIGHT    "resultNetWeight"
+        from TMSTRUCK_WEIGHT_RESULT TWR
+                 left join TMSTRUCK_TOTAL_RESULT TTR
+                           on TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+        where TTR.ORDER_ID = #{orderId}
+          and TWR.MATERIAL_ID = #{checkMaterialId}
+
+    </select>
+
+    <select id="getAlreadySentMaterialId" parameterType="map" resultType="java.lang.Integer">
+        select *
+        from (
+                 select OOM.MATERIAL_ID
+                 from OMSTRUCK_ORDER_MATERIAL OOM
+                 where OOM.MATERIAL_MEASSION = 1
+                   and OOM.ORDER_ID = #{orderId}
+                 order by OOM.UPDATE_TIME DESC
+             )
+        where rownum = 1
+    </select>
+
+    <update id="updateOmsTruckMaterial" parameterType="map">
+        update OMSTRUCK_ORDER_MATERIAL OOM
+            <set>
+                OOM.UPDATE_TIME = SYSDATE,
+                <if test="deletedCommission == null">
+                     OOM.MATERIAL_MEASSION = 1
+                </if>
+                <if test="deletedCommission != null">
+                     OOM.MATERIAL_MEASSION = null
+                </if>
+            </set>
+        where OOM.ORDER_ID = #{orderId} and OOM.MATERIAL_ID = #{materialId}
+    </update>
 
 </mapper>

+ 5 - 2
src/main/resources/com/steerinfo/dil/mapper/UtilsMapper.xml

@@ -178,9 +178,12 @@
                            on RLGC.SEGMENT_ID = RLS.SEGMENT_ID
         where RLS.LINE_ID = #{lineId} and RLS.SEGMENT_SQE = #{segmentSqe}
     </select>
-    <select id="getOrderTypeByOrderId" resultType="java.math.BigDecimal">
-        select OO.ORDER_TYPE "orderType"
+    <select id="getOrderMesByOrderId" resultType="java.util.Map">
+        select OO.ORDER_TYPE "orderTypee",
+               TTR.RESULT_TOTAL_ID  "resultTotalId"
         from OMSTRUCK_ORDER OO
+        left join TMSTRUCK_TOTAL_RESULT TTR
+            on OO.ORDER_ID = TTR.ORDER_ID
         where  OO.ORDER_ID=#{orderId}
     </select>
      <!-- 根据运输订单id查找是否有多个物资 -->