Bladeren bron

“修改”

zx 2 jaren geleden
bovenliggende
commit
68ba73a49c

+ 10 - 1
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMapper.java

@@ -40,5 +40,14 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
     List<Map<String, Object>>  selectSaleSteelOrder(Map<String,Object> map);
 
     //根据物资id查找炉批号
-    String selectMaterialFurnaceNumber(BigDecimal materialId,BigDecimal resultId);
+    List<Map<String,Object>> selectMaterialFurnaceNumber(BigDecimal materialId,BigDecimal orderId);
+
+    //查找销售订单所有实绩id,没有下游单据的
+    List<Map<String,Object>> selectAmssaleOrderId(String saleNumber);
+
+    //判断数据是否于AMS_SALE_ORDER_MATERIAL
+    List<Map<String,Object>> selectAreadyUse(String saleNumber);
+
+
+
 }

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

@@ -19,6 +19,8 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
+import static java.util.stream.Collectors.toList;
+
 /**
  * AmsSaleOrder服务实现:
  * @author generator
@@ -483,7 +485,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         System.out.println(json);
         //获取订单状态
         String orderStatus = (String) map.get("orderStatus");
-        String materialNumber =(String) map.get("materialNumber");
         String easPrimaryId=null;
         //设置是否反审核状态
         String closeStatus =(String) map.get("closeStatus");
@@ -561,15 +562,18 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
                 amsSaleMaterial.setSaleMaterialId(saleMaterialId);
                 amsSaleMaterial.setSaleOrderId(saleOrderId);
-                //  辅助数量
+                String materialWeight =(String) materialMap.get("materialNumber");
+                // 辅助数量
                 Object auxiliaryQuantity = materialMap.get("AuxiliaryQuantity");
                 // 物资重量
                 Object meterWeight = materialMap.get("meterWeight");
-
                 Object steelMeter = materialMap.get("steelMeter");
                 if (steelMeter!=null) {
                     amsSaleMaterial.setSteelMeter(DataChange.dataToBigDecimal(steelMeter));
                 }
+                if (materialWeight != null && !"".equals(materialWeight)) {
+                    amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
+                }
                 //设置调出仓库
                 Object transferOutOfWarehouse = materialMap.get("TransferOutOfWarehouse");
                 amsSaleMaterial.setTransferOutOfWarehouse((String) transferOutOfWarehouse);
@@ -619,8 +623,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 }
                 rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
                 rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
-                // 得到物资重量
-                String materialWeight = (String) materialMap.get("materialNumber");
                 // 得到计量单位
                 amsSaleMaterial.setEasPrimaryId(easPrimaryId);
                 amsSaleMaterial.setMaterialId(materialId);
@@ -668,17 +670,29 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
 //            throw new Exception("暂不支持修改库存调拨单");
             //此处判断主要是针对销售订单已经存在
             AmsSaleOrder amsSaleOrder=new AmsSaleOrder();
+            //此处判断订单状态为反审核
+            if (closeStatus.equals("5")) {
+            //amsSaleOrder.setSaleOrderId(saleOrderNumber);
+            // amsSaleOrder.setDeleted(new BigDecimal(1));
+                //删除销售订单以及销售订单分录(没有下游单据的)
+                List<Map<String, Object>> mapList = amsSaleOrderMapper.selectAmssaleOrderId(saleNumber);
+                List<Map<String, Object>> mapList1 = amsSaleOrderMapper.selectAreadyUse(saleNumber);
+                List<Map<String, Object>> reduce1 = mapList.stream().filter(item -> !mapList1.contains(item)).collect(toList());
+                for (Map<String,Object> IdMap:reduce1){
+                    BigDecimal saleOrderId =DataChange.dataToBigDecimal( IdMap.get("saleOrderId"));
+                    BigDecimal saleOrderMaterialId =DataChange.dataToBigDecimal(IdMap.get("saleOrderMaterialId"));
+                    //删除销售订单id
+                    int i = amsSaleOrderMapper.deleteByPrimaryKey(saleOrderId);
+                    //删除销售订单
+                    i+=amsSaleMaterialMapper.deleteByPrimaryKey(saleOrderMaterialId);
+                    return i;
+                }
+            }
             if (orderStatus.equals("2")){
                 amsSaleOrder.setSaleOrderId(saleOrderNumber);
                 amsSaleOrder.setCloseStatus(new BigDecimal(1));
                 amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
             }
-            //此处判断订单状态为反审核
-            if (closeStatus.equals("5")) {
-                amsSaleOrder.setSaleOrderId(saleOrderNumber);
-                amsSaleOrder.setDeleted(new BigDecimal(1));
-                result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
-            }
             // 关闭单个分录订单
             if (closeStatus.equals("-1") && wholeOrder.equals("0")) {
                 Object closeEntryId = map.get("closeEntryId");
@@ -798,9 +812,19 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             }
             //根据物资id查找炉批号
             BigDecimal materialId =DataChange.dataToBigDecimal(map1.get("materialId"));
-            BigDecimal resultId =DataChange.dataToBigDecimal(map1.get("resultId"));
-            String materialFurnaceNumber = amsSaleOrderMapper.selectMaterialFurnaceNumber(materialId,resultId);
-            map1.put("materialFurnaceNumber",materialFurnaceNumber);
+            BigDecimal orderId =DataChange.dataToBigDecimal( map1.get("orderId"));
+            List<Map<String,Object>> materialFurnaceNumber = amsSaleOrderMapper.selectMaterialFurnaceNumber(materialId,orderId);
+            StringBuilder sb = new StringBuilder();
+            for (Map<String, Object> luHaoMap : materialFurnaceNumber) {
+                sb.append(luHaoMap.get("materialFurnaceNumber"));
+                sb.append("-");
+                sb.append(luHaoMap.get("materialNum"));
+                sb.append("/");
+            }
+            if(materialFurnaceNumber.size() > 0){
+                sb.deleteCharAt(sb.length() - 1);
+                map1.put("materialFurnaceNumber",materialFurnaceNumber);
+            }
             //接口发送日期
             map1.put("sendTime",new Date());
         }

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

@@ -244,7 +244,7 @@
       </if>
     </where>
   </sql>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
+  <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
     delete from AMS_SALE_ORDER
     where SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL}
   </delete>
@@ -1014,15 +1014,39 @@
     </select>
 
 <!-- 根据物资id查找炉批号-->
-  <select id="selectMaterialFurnaceNumber" resultType="java.lang.String" parameterType="java.util.Map">
-    SELECT distinct RMS.MATERIAL_FURNACE_NUMBER "materialFurnaceNumber"
-    FROM WMSP_OUTBOUND_RESULT WOR
-    LEFT JOIN WMSP_OUTBOUND_SCAN_RESULT WOSR ON WOSR.OUTBOUND_RESULT_ID = WOR.RESULT_ID
-    LEFT JOIN WMSP_INBOUND_RESULT WIR ON WOSR.INBOUND_RESULT_ID = WIR.INBOUND_ID
-    LEFT JOIN RMS_MATERIAL_STEEL RMS ON WIR.MATERIAL_ID = RMS.MATERIAL_STEEL_ID
-    WHERE
-      RMS.MATERIAL_ID = #{materialId}
-      AND WOR.RESULT_ID =#{resultId}
+  <select id="selectMaterialFurnaceNumber" resultType="java.util.Map" parameterType="java.util.Map">
+    SELECT
+      RMS.MATERIAL_FURNACE_NUMBER "materialFurnaceNumber",
+      COUNT( WOSR.RESULT_ID ) "materialNum"
+    FROM
+      WMSP_OUTBOUND_RESULT WOR
+        LEFT JOIN WMSP_OUTBOUND_RESULT_MATERIAL WORM ON WORM.OUTBOUND_RESULT_ID = WOR.RESULT_ID
+        LEFT JOIN WMSP_OUTBOUND_SCAN_RESULT WOSR ON WORM.RESULT_MATERIAL_ID = WOSR.RESULT_MATERIAL_ID
+        LEFT JOIN WMSP_INBOUND_RESULT WIR ON WOSR.INBOUND_RESULT_ID = WIR.INBOUND_ID
+        LEFT JOIN RMS_MATERIAL_STEEL RMS ON WIR.MATERIAL_ID = RMS.MATERIAL_STEEL_ID
+    WHERE WOR.BILL_LADING_ID = #{orderId}
+      AND WORM.MATERIAL_ID = #{materialId}
+    GROUP BY
+      RMS.MATERIAL_FURNACE_NUMBER
+  </select>
+
+<!--查找销售订单没有销售订单下游单机-->
+  <select id="selectAmssaleOrderId" resultType="java.util.Map" parameterType="java.lang.String">
+   select ASO.SALE_ORDER_ID "saleOrderId",
+          ASM.SALE_MATERIAL_ID "saleOrderMaterialId"
+   from AMS_SALE_ORDER ASO
+   LEFT JOIN AMS_SALE_MATERIAL ASM
+   on ASM.SALE_ORDER_ID =ASO.SALE_ORDER_ID
+   where ASO.SALE_NUMBER=#{saleNumber}
+  </select>
+  
+  <select id="selectAreadyUse" parameterType="java.lang.String" resultType="java.util.Map">
+    select ASO.SALE_ORDER_ID "saleOrderId"
+
+    from AMS_SALE_ORDER_MATERIAL ASOM
+    LEFT JOIN AMS_SALE_ORDER ASO
+    ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+    where ASO.SALE_NUMBER=#{saleNumber}
   </select>
 
   <update id="updateTruckOrderStatus" parameterType="DECIMAL">