luobang 2 gadi atpakaļ
vecāks
revīzija
7ef74c9935

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

@@ -174,4 +174,10 @@ public interface TmstruckWeightResultMapper extends IBaseMapper<TmstruckWeightRe
 
     Map<String, Object> getOrderMesByOrderId(BigDecimal orderIdByFLID);
 
+    Map<String, Object> getOrderMesBySaleMaterialId(BigDecimal orderIdByFLID);
+
+    Map<String, Object> getOrderMesBySaleMaterialIdHaveWeight(BigDecimal saleMaterialId);
+
+    int updateQuitSaleMaterialId(Map<String, Object> map);
+
 }

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

@@ -222,7 +222,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 }
             }
             //如果是钢材订单
-            if(amsSaleOrder.getSaleType() != null && amsSaleOrder.getSaleType().intValue() == 1){
+            if(amsSaleOrder.getSaleType() != null && (amsSaleOrder.getSaleType().intValue() == 1 || amsSaleOrder.getSaleType().intValue() == 4)){
                 try{
                     //记录日志
                     saleLogUtil.logOrderBatch(amsSaleOrderMapper.getCloseOrderNotIn(amsSaleOrder.getSaleOrderId()),"金蝶关闭整单,运单同步关闭",SaleLogUtil.CLOSE);
@@ -761,7 +761,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     }
                     result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
                 }
-                if(amsSaleOrder.getSaleType() != null && amsSaleOrder.getSaleType().intValue() == 1 && EasIds.size() < wuliuStIds.size()){
+                if(amsSaleOrder.getSaleType() != null && (amsSaleOrder.getSaleType().intValue() == 1 || amsSaleOrder.getSaleType().intValue() == 4) && EasIds.size() < wuliuStIds.size()){
                     //只有当金蝶传过来的分录小于物流这边的金蝶分录时,才进行此处判断
                     //遍历物流存在的数组,如果wuliu有的金蝶没有,那就将物流没有的给隐藏调
                     //将物流这边的金蝶分录集合变成set
@@ -783,7 +783,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                         //先做判断
                         try {
                             Map<String,Object> easWlMap = amsSaleMaterialMapper.getEasWlMap(DataChange.dataToBigDecimal(easId));
-                            if(easWlMap != null && easWlMap.get("saleNo") != null && easWlMap.get("saleNo").equals("saleNumber")) {
+                            if(easWlMap != null && easWlMap.get("saleNo") != null && easWlMap.get("saleNo").equals(easWlMap.get("saleNumber"))) {
                                 //result += amsSaleMaterialMapper.deleteSaleMaterialByEasId(easId);
                                 result += amsSaleMaterialMapper.updateSaleMaterialByEasId(easId);
                                 //result += amsSaleMaterialMapper.deleteAstmBystId(easId);

+ 51 - 20
src/main/java/com/steerinfo/dil/service/impl/TmstruckWeightResultServiceImpl.java

@@ -258,38 +258,64 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         //1.通过车号去寻找正在作业的5的运输订单号
         String carNo = (String) map.get("carNo");
         //String FLID = (String) map.get("FLID");
-        //不能影响皮重
-        Map<String,Object> orderMes = tmstruckWeightResultMapper.getOrderMes(carNo);
-        if (orderMes == null){
-            Object FLID = map.get("FLID");
-            if(FLID != null && !"".equals(FLID)) {
-                //存在分录id,说明有整条数据,且该车又没有正在运行中的信息,那么就去找该分录id对应的运单的信息
-                BigDecimal orderIdByFLID = omstruckOrderMapper.selectOrderIdByFLID(FLID);
-                if(orderIdByFLID != null) {
-                    Map<String,Object> orderMesByFLIDMap = tmstruckWeightResultMapper.getOrderMesByOrderId(orderIdByFLID);
-                    if(orderMesByFLIDMap != null) {
-                        map.putAll(orderMesByFLIDMap);
-                    }else{
-                        throw new Exception("没有可进行填充的计量实绩");
-                    }
+        Object resultNetWeight = map.get("resultNetWeight");
+        Object FLID = map.get("FLID");
+        //判断该车有没有净重
+        if (resultNetWeight  != null && !"".equals(resultNetWeight) && FLID  != null && !"".equals(FLID)) {
+            String flId = FLID.toString();
+            map.put("flId",flId);
+            BigDecimal orderIdByFLID = omstruckOrderMapper.selectOrderIdByFLID(FLID);
+            BigDecimal saleMaterialId = tmstruckWeightResultMapper.getSaleMaterialId(map);
+            //首先判断该分录有没有净重
+            Map<String,Object> orderMesBySaleMaterialId = tmstruckWeightResultMapper.getOrderMesBySaleMaterialIdHaveWeight(saleMaterialId);
+            if(orderMesBySaleMaterialId == null) {
+                //根据分录id和车号去找
+                Map<String,Object> orderMesByOrderIdByFLID = tmstruckWeightResultMapper.getOrderMesBySaleMaterialId(orderIdByFLID);
+                if(orderMesByOrderIdByFLID != null) {
+                    map.putAll(orderMesByOrderIdByFLID);
+                    map.put("saleMaterialId",saleMaterialId);
                 }else{
-                    throw new Exception("该分录没有对应的订单");
+                    throw new Exception("该分录对应的订单没有净重可供填充!");
                 }
             }else{
-                throw new Exception("没有正在运行中的订单");
+                map.putAll(orderMesBySaleMaterialId);
+            }
+        }else{
+            Map<String,Object> orderMes = tmstruckWeightResultMapper.getOrderMes(carNo);
+            if (orderMes == null) {
+                throw new Exception("该车无分录ID且无正在运行中的订单,系统无法匹配数据");
             }
+            map.putAll(orderMes);
         }
-        map.putAll(orderMes);
+        //不能影响皮重
+        //if (orderMes == null){
+        //    Object FLID = map.get("FLID");
+        //    if(FLID != null && !"".equals(FLID)) {
+        //        //存在分录id,说明有整条数据,且该车又没有正在运行中的信息,那么就去找该分录id对应的运单的信息
+        //        BigDecimal orderIdByFLID = omstruckOrderMapper.selectOrderIdByFLID(FLID);
+        //        if(orderIdByFLID != null) {
+        //            Map<String,Object> orderMesByFLIDMap = tmstruckWeightResultMapper.getOrderMesByOrderId(orderIdByFLID);
+        //            if(orderMesByFLIDMap != null) {
+        //                map.putAll(orderMesByFLIDMap);
+        //            }else{
+        //                Map<String,Object> orderMesByFLIDMapNoWeight = tmstruckWeightResultMapper.getOrderMesByOrderIdNoWeight(orderIdByFLID);
+        //                throw new Exception("没有可进行填充的计量实绩");
+        //            }
+        //        }else{
+        //            throw new Exception("该分录没有对应的订单");
+        //        }
+        //    }else{
+        //        throw new Exception("没有正在运行中的订单");
+        //    }
+        //}
         tmstruckWeightResult.setId(DataChange.dataToBigDecimal(map.get("weightTaskResultId")));
-        int orderType = DataChange.dataToBigDecimal(orderMes.get("orderTypee")).intValue();
+        int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
         //磅单号
         tmstruckWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
         String resultCrossWeightTime = (String) map.get("resultCrossWeightTime");
         if(map.get("orderNumber") != null) {
             tmstruckWeightResult.setInsertUpdateRemark((String)map.get("orderNumber"));
         }
-        //根据传输过来的物资名称和规格型号
-        Object resultNetWeight = map.get("resultNetWeight");
         if(resultNetWeight  != null && !"".equals(resultNetWeight)) {
             BigDecimal materialId = tmstruckWeightResultMapper.getMaterialId(map);
             if(materialId == null){
@@ -312,6 +338,9 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
             //}
             tmstruckWeightResult.setMaterialId(materialId);
             tmstruckWeightResult.setMaterialNum(DataChange.dataToBigDecimal(map.get("goodNum")));
+            if(map.get("saleMaterialId") != null) {
+                tmstruckWeightResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
+            }
             BigDecimal materialNum = DataChange.dataToBigDecimal(map.get("goodNum"));
             //通过订单ID和物资id,查询当单个物资的理重方便后续计算
             Map<String, Object> saleMaterialMes = tmstruckWeightResultMapper.getSaleOrderMaterialNum(map);
@@ -338,6 +367,8 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
             }
             tmstruckWeightResultMapper.updateOrderMaterial(map);
             tmstruckWeightResultMapper.updateSaleMaterialId(saleMaterialId,materialNum,newWeight);
+            //去掉该实绩下没有净重的有分录id的
+            tmstruckWeightResultMapper.updateQuitSaleMaterialId(map);
         }else{
             //根据运单id查询其中一个物资id,确保报表能有数据
             //查询没有净重的,不影响之前代码

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

@@ -937,7 +937,7 @@
       WHERE ASOM.SALE_ORDER_ID = #{saleOrderId}
         AND OO.ORDER_ID IS NOT NULL
         AND OO.ORDER_STATUS BETWEEN 4 AND 5
-        AND OO.ORDER_TYPE BETWEEN 1 AND 2
+        AND OO.ORDER_TYPE in (1,2,4)
         AND TWR.RESULT_NET_WEIGHT IS NULL
     )
   </update>
@@ -1114,7 +1114,7 @@
     ON TER.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
     WHERE
     oo.order_status = 7
-    and oo.order_type = 1
+    and oo.order_type in (1,4)
     and ASOM.SALE_ORDER_ID = #{saleOrderId}
   </select>
 
@@ -1158,7 +1158,7 @@
                                        AND NVL(OO.ORDER_TYPE,0) in (0,1)
                            LEFT JOIN RMS_CAPACITY RCA
                                      ON RCA.CAPACITY_ID = OO.CAPACITY_ID
-                    WHERE ASO.SALE_TYPE = 1
+                    WHERE ASO.SALE_TYPE in (1,4)
                       AND ASO.DELETED = 0
                       and ASM.SALE_MATERIAL_ID IS NOT NULL
                       and ASO.SALE_ORDER_ID=#{saleOrderId}
@@ -1205,7 +1205,7 @@
         AND OO.ORDER_ID IS NOT NULL
         AND OO.ORDER_STATUS BETWEEN 4 AND 5
         AND TWR.RESULT_NET_WEIGHT IS NULL
-        AND OO.ORDER_TYPE BETWEEN 1 AND 2)
+        AND OO.ORDER_TYPE in (1,2,4))
   </update>
 
 </mapper>

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

@@ -1025,7 +1025,7 @@
         LEFT JOIN OMSTRUCK_ORDER OO
         ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
         WHERE
-        OO.ORDER_TYPE = 1
+        OO.ORDER_TYPE in (1,4)
         AND
         ASM.EAS_PRIMARY_ID = #{FLID}
     </select>

+ 69 - 8
src/main/resources/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.xml

@@ -1047,14 +1047,16 @@
         where ASM.MATERIAL_ID = #{materialId}
         AND OO.ORDER_ID = #{orderId}
         AND OOM.MATERIAL_ID = #{materialId}
-        AND ASM.SALE_MATERIAL_ID NOT IN (
-        SELECT nvl(TWR.SALE_MATERIAL_ID,0) 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.RESULT_NET_WEIGHT IS not NULL)
         <if test="saleMaterialId != null">
             AND ASM.SALE_MATERIAL_ID = #{saleMaterialId}
         </if>
+        <if test="saleMaterialId == null">
+            AND ASM.SALE_MATERIAL_ID NOT IN (
+            SELECT nvl(TWR.SALE_MATERIAL_ID,0) 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.RESULT_NET_WEIGHT IS not NULL)
+        </if>
         fetch first 1 row only
     </select>
 
@@ -1114,7 +1116,7 @@
         SELECT count(OO.ORDER_ID)  FROM OMSTRUCK_ORDER OO
         WHERE OO.ORDER_NUMBER = #{orderNumber}
         and OO.ORDER_STATUS = 5
-        and oo.order_type = 1
+        and oo.order_type in ( 1,4)
     </select>
     <update id="updateOmsRedQrCode" parameterType="map">
         UPDATE OMSTRUCK_ORDER OO
@@ -1239,7 +1241,7 @@
     <select id="getJlOrderId" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
         SELECT OO.ORDER_ID FROM OMSTRUCK_ORDER OO
         WHERE OO.ORDER_PLAN_ID = #{jlSaleOrderMaterialId}
-        AND OO.ORDER_TYPE = 1
+        AND OO.ORDER_TYPE in( 1,4)
     </select>
     <select id="getWlSaleOrderMaterialId" resultType="java.math.BigDecimal" parameterType="map">
         SELECT OO.ORDER_PLAN_ID FROM OMSTRUCK_ORDER OO
@@ -1279,7 +1281,7 @@
         ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
         WHERE OO.ORDER_NUMBER = #{orderNumber}
         AND OO.ORDER_STATUS = 5
-        AND OO.ORDER_TYPE = 1
+        AND OO.ORDER_TYPE in (1,4)
         AND TWR.RESULT_NET_WEIGHT IS NULL
         ORDER BY TWR.WEIGHT_TASK_RESULT_ID
         FETCH FIRST 1 ROW ONLY
@@ -1475,4 +1477,63 @@
              )
         where rownum = 1
     </select>
+    <select id="getOrderMesBySaleMaterialId" resultType="java.util.Map">
+        select *
+        from (
+                 select OO.ORDER_ID               "orderId",
+                        OO.ORDER_TYPE             "orderTypee",
+                        OO.ORDER_NUMBER           "orderNo",
+                        TWR.WEIGHT_TASK_RESULT_ID "weightTaskResultId",
+                        TTR.RESULT_TOTAL_ID       "resultTotalId",
+                        TWR.TARE_SEGMENT_SQE      "tareSegmentSqe",
+                        TWR.GROSS_SEGMENT_SQE     "grossSegmentSqe"
+                 from TMSTRUCK_WEIGHT_RESULT TWR
+                          left join TMSTRUCK_TOTAL_RESULT TTR
+                                    on TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+                          left join OMSTRUCK_ORDER OO
+                                    on OO.ORDER_ID = TTR.ORDER_ID
+                          left join RMS_CAPACITY RC
+                                    ON RC.CAPACITY_ID = OO.CAPACITY_ID
+                 where
+                     TWR.RESULT_NET_WEIGHT is null
+                   and OO.ORDER_ID = #{orderIdByFLID}
+                   and oo.order_type in (1,4)
+                 order by "tareSegmentSqe" asc, "orderId" desc
+             )
+        where rownum = 1
+    </select>
+    <select id="getOrderMesBySaleMaterialIdHaveWeight" resultType="java.util.Map">
+        select *
+        from (
+                 select OO.ORDER_ID               "orderId",
+                        OO.ORDER_TYPE             "orderTypee",
+                        OO.ORDER_NUMBER           "orderNo",
+                        TWR.WEIGHT_TASK_RESULT_ID "weightTaskResultId",
+                        TTR.RESULT_TOTAL_ID       "resultTotalId",
+                        TWR.TARE_SEGMENT_SQE      "tareSegmentSqe",
+                        TWR.GROSS_SEGMENT_SQE     "grossSegmentSqe",
+                        TWR.SALE_MATERIAL_ID    "saleMaterialId"
+                 from TMSTRUCK_WEIGHT_RESULT TWR
+                          left join TMSTRUCK_TOTAL_RESULT TTR
+                                    on TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+                          left join OMSTRUCK_ORDER OO
+                                    on OO.ORDER_ID = TTR.ORDER_ID
+                          left join RMS_CAPACITY RC
+                                    ON RC.CAPACITY_ID = OO.CAPACITY_ID
+                 where
+                     TWR.RESULT_NET_WEIGHT is not null
+                   and TWR.SALE_MATERIAL_ID = #{saleMaterialId}
+                   and oo.order_type in (1,4)
+                 order by "tareSegmentSqe" asc, "orderId" desc
+             )
+        where rownum = 1
+    </select>
+    <update id="updateQuitSaleMaterialId">
+        UPDATE TMSTRUCK_WEIGHT_RESULT TWR
+        SET TWR.SALE_MATERIAL_ID = NULL
+        WHERE
+        TWR.RESULT_NET_WEIGHT IS NULL
+        AND
+        TWR.RESULT_TOTAL_ID = #{resultTotalId}
+    </update>
 </mapper>