Browse Source

1、物资查询过滤掉删除的;
2、内转多趟次计量修改初版;

xiaosonghong 7 tháng trước cách đây
mục cha
commit
c26ea4f2bc

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

@@ -39,6 +39,8 @@ public interface TmstruckWeightResultMapper extends IBaseMapper<TmstruckWeightRe
 
     //通过运输订单号 和物资ID 查询实绩ID
     Map<String, Object> selectResultIdByOrderNoAndMaterialId(Map<String, Object> map);
+    //多趟次计量
+    Map<String, Object> selectResultIdByOrderNoAndMaterialIdRepeatedly(Map<String, Object> map);
 
     //通过汽车衡编号查询汽车衡ID
     Integer selectTruckCalculateId(String truckCalculateNumber);

+ 94 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckWeightResultServiceImpl.java

@@ -190,6 +190,7 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
                 }catch (Exception e1) {
                     e1.printStackTrace();
                 }
+                e.printStackTrace();
                 System.out.println(map.get("carNo") + e.getMessage() + "传输失败");
                 return map.get("carNo")  + e.getMessage() + "传输失败";
             }
@@ -214,6 +215,16 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         }
         int orderType= DataChange.dataToBigDecimal(oneMap.get("orderType")).intValue();
         if(orderType == 11 || orderType == 15 || orderType == 16){
+            //计时且多趟过计量
+            String insertUpdateRemark = oneMap.get("insertUpdateRemark").toString();
+            int orderStatus = DataChange.dataToBigDecimal(oneMap.get("orderStatus")).intValue();
+            if(insertUpdateRemark.contains("计时且多趟过计量")){
+                if(orderStatus != 5){
+                    System.out.println(map.get("orderNumber") + "该订单未接收");
+                    return "该订单未接收";
+                }
+                return insertWeightResultBy11Repeatedly(map, oneMap);
+            }
             return insertWeightResultBy11(map, oneMap);
         }
         //为1的时候计量重新更新单据
@@ -743,6 +754,89 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         return map.get("orderNumber") + "成功";
     }
 
+
+    /**
+     * 纯内转订单类型(计时多趟次计量)
+     * @param map
+     * @param oneMap
+     * @return
+     */
+    public String insertWeightResultBy11Repeatedly(Map<String, Object> map, Map<String, Object> oneMap){
+        TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
+        tmstruckWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
+        tmstruckWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
+        int sqe = DataChange.dataToBigDecimal(oneMap.get("Sqe")).intValue(); //获取订单路段顺序号
+        sqe = sqe + 1;
+        //更新路段顺序号
+        Map<String, Object> threeMap = new HashMap<>();
+        threeMap.put("orderLineSequence", sqe);
+        threeMap.put("orderNumber", map.get("orderNumber"));
+        utilsMapper.updateLineSeqByOrderIdOrNum2(threeMap);
+        //首先查询这个订单号的这个物资ID是否有计量实绩
+        Map<String, Object> twoMap = tmstruckWeightResultMapper.selectResultIdByOrderNoAndMaterialIdRepeatedly(map); //判断这个物资是否已经计量过
+        Object resultCrossWeightTime = map.get("resultCrossWeightTime");
+        if(twoMap == null
+                || (twoMap.get("netWeight") != null && DataChange.dataToBigDecimal(twoMap.get("netWeight")).doubleValue() > 0)){
+            //如果查出来为空或已存在完整实绩,则进行新增操作
+            tmstruckWeightResult.setId(tmstruckWeightResultMapper.selectMaxId()); //新增主键
+            tmstruckWeightResult.setResultTotalId(DataChange.dataToBigDecimal(oneMap.get("totalId"))); //新增总实绩ID
+            if(resultCrossWeightTime == null || "".equals(String.valueOf(resultCrossWeightTime))){//只有一条数据的情况
+                tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(sqe));
+            }
+            else {
+                tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(sqe));
+                tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(sqe));
+            }
+            try {
+                addWeightResult(tmstruckWeightResult, map);
+            } catch (Exception e) {
+                return e.getMessage();
+            }
+            tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult); //新增计量实绩
+        }else {
+            //如果不为空则证明进行过至少一次计量
+            tmstruckWeightResult.setId(DataChange.dataToBigDecimal(twoMap.get("weightTaskResultId")));
+            //取出计量数据与传进来的毛皮数据进行对比
+            BigDecimal inTareWeight = DataChange.dataToBigDecimal(twoMap.get("resultTareWeight"));
+            if(inTareWeight.compareTo(DataChange.dataToBigDecimal(map.get("resultTareWeight"))) > 0){
+                //如果取出来的皮重 大于 传进来的皮重   则需要调换路段顺序号
+                tmstruckWeightResult.setGrossSegmentSqe(DataChange.dataToBigDecimal(twoMap.get("tareSegmentSqe")));
+                tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(sqe));
+            }else{
+                tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(sqe));
+            }
+            try {
+                addWeightResult(tmstruckWeightResult, map);
+            } catch (Exception e) {
+                return e.getMessage();
+            }
+            tmstruckWeightResultMapper.updateByPrimaryKeySelective(tmstruckWeightResult);
+        }
+        //推送数据
+        utilsService.pushMesToWebsocket((String) oneMap.get("capacityNumber"), "计量");
+        //多趟次计量,净重已出则发送计量委托
+        Object resultNetWeight = map.get("resultNetWeight");
+        if(resultNetWeight != null && !"".equals(resultNetWeight)){
+            try {
+                Map<String, Object> stringObjectMap = tmstruckWeightResultMapper.selectWeightIdByOrderId(map);
+                if(stringObjectMap == null){
+                    stringObjectMap = tmstruckWeightResultMapper.selectTotalIdByOrderNo(map);
+                }
+                stringObjectMap.put("materialId", DataChange.dataToBigDecimal(map.get("materialId")).intValue());
+                stringObjectMap.put("asd", 1);
+                Map<String, Object> returnMap = tmstruckFeign.sendMeasureCommission(stringObjectMap);
+                String code = (String) returnMap.get("code");
+                if(!"200".equals(code)){
+                    System.out.println(returnMap.get("data"));
+                }
+            } catch (Exception e) {
+                System.out.println("多趟计量发送委托失败:" + e.getMessage());
+                return e.getMessage();
+            }
+        }
+        return map.get("orderNumber") + "成功";
+    }
+
     /**
      * 处理零星订单多拼方法
      * @Author TXF

+ 17 - 2
src/main/resources/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.xml

@@ -957,6 +957,21 @@
                OO.ORDER_NUMBER = #{orderNumber}
               and TWR.MATERIAL_ID = #{materialId}
     </select>
+    <select id="selectResultIdByOrderNoAndMaterialIdRepeatedly" parameterType="map" resultType="java.util.Map">
+        SELECT * FROM (
+        select TWR.WEIGHT_TASK_RESULT_ID    "weightTaskResultId",
+               TWR.RESULT_TARE_WEIGHT       "resultTareWeight",
+               TWR.TARE_SEGMENT_SQE         "tareSegmentSqe",
+               TWR.RESULT_NET_WEIGHT        "netWeight"
+        from OMSTRUCK_ORDER OO
+                 left join TMSTRUCK_TOTAL_RESULT TTR
+                           on TTR.ORDER_ID = OO.ORDER_ID
+                 left join TMSTRUCK_WEIGHT_RESULT TWR
+                           on TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        where
+            OO.ORDER_NUMBER = #{orderNumber}
+          and TWR.MATERIAL_ID = #{materialId} ORDER BY TWR.WEIGHT_TASK_RESULT_ID DESC) WHERE ROWNUM = 1
+    </select>
 
     <select id="getNoNetWeightResultId" parameterType="java.math.BigDecimal" resultType="java.util.Map">
         SELECT *
@@ -1026,7 +1041,7 @@
 
     <select id="getMaterialId" resultType="java.math.BigDecimal" parameterType="java.util.Map">
         select RM.MATERIAL_ID from RMS_MATERIAL RM
-        WHERE  RM.MATERIAL_SPECIFICATION || '(' ||  RM.MATERIAL_MODEL || ')' || RM.MATERIAL_NAME = #{good}
+        WHERE  RM.MATERIAL_SPECIFICATION || '(' ||  RM.MATERIAL_MODEL || ')' || RM.MATERIAL_NAME = #{good}  AND RM.DELETED = 0
     </select>
     <select id="getSaleOrderMaterialNum" resultType="java.util.Map" parameterType="map">
         select
@@ -1549,7 +1564,7 @@
         AND
         TWR.RESULT_TOTAL_ID = #{resultTotalId}
     </update>
-    <update id="updateMakeDate" parameterType="decimal">
+    <update id="updateAmsFluToNull" parameterType="decimal">
         UPDATE AMS_SALE_MATERIAL ASM
         SET ASM.SALE_MAKE_DATE = NULL
         WHERE

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

@@ -167,12 +167,16 @@
                Rc.CAPACITY_NUMBER   "capacityNumber",
                OO.ORDER_LINE_SEQUENCE   "Sqe",
                OO.ORDER_ID          "orderIds",
-               OO.LINE_ID           "lineId"
+               OO.LINE_ID           "lineId",
+               NVL(AIR.INSERT_UPDATE_REMARK, 'null') "insertUpdateRemark",
+               OO.ORDER_STATUS      "orderStatus"
         from OMSTRUCK_ORDER OO
                  left join TMSTRUCK_TOTAL_RESULT TTR
                            on TTR.ORDER_ID = OO.ORDER_ID
                  left join RMS_CAPACITY RC
                            on RC.CAPACITY_ID = OO.CAPACITY_ID
+                 LEFT JOIN AMSTRUCK_REQUIREMENT_PLAN ARP ON ARP.PLAN_ID = OO.ORDER_PLAN_ID
+                 LEFT JOIN AMSTRUCK_INWARD_REQUIREMENT AIR ON AIR.REQUIREMENT_ID = ARP.REQUIREMENT_ID
         where  OO.ORDER_NUMBER = #{orderNumber}
     </select>