Procházet zdrojové kódy

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU2/DAL-DAZHOU-JOIN-API

luobang před 2 roky
rodič
revize
b7a5a21388

+ 3 - 0
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java

@@ -47,6 +47,9 @@ public class AmsSaleOrderController extends BaseRESTfulController {
         int input=0;
         try{
             input = amsSaleOrderService.addInwardSteelOrder(map);
+            if (input==-1){
+                return success("物流系统已经存在下游单据,不能再反审核");
+            }
         }catch (Exception e){
             return  failed(e.getMessage());
         }

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

@@ -40,5 +40,15 @@ 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
+    BigDecimal selectAreadyUse(String saleNumber);
+
+
+
 }

+ 45 - 18
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
@@ -323,7 +325,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
                     // 得到金蝶分录主键
                     String easPrimaryId = (String) materialMap.get("easPrimaryId");
-                    // 得到物资
+                    // 得到物资重
                     String materialWeight = (String) materialMap.get("materialNumber");
                     // 得到物资件数
                     String materialNumber = (String) materialMap.get("assistQty");
@@ -333,9 +335,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     amsSaleMaterial.setMaterialId(materialId);
                     amsSaleMaterial.setInsertTime(new Date());
                     amsSaleMaterial.setInsertUsername("金蝶");
+                    amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
                     amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
-                    if (meterWeight != null && !"".equals(meterWeight)) {
-                        amsSaleMaterial.setMaterialWeight(DataChange.dataToBigDecimal(meterWeight));
+                    if (materialWeight != null && !"".equals(materialWeight)) {
+                        amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
                     }
                     if (materialNumber != null && !"".equals(materialNumber)) {
                         amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
@@ -482,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");
@@ -512,6 +514,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         String businessType =(String) map.get("businessType");
         //判断销售订单是否存在
         BigDecimal saleOrderNumber = amsSaleOrderMapper.selectAmsSaleOrderNum(saleNumber);
+        if (saleOrderNumber==null&&transferInDep==null){
+            return 1;
+        }
         //如果销售订单不存在
         if (saleOrderNumber==null){
             AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
@@ -560,15 +565,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);
@@ -618,8 +626,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);
@@ -667,17 +673,28 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
 //            throw new Exception("暂不支持修改库存调拨单");
             //此处判断主要是针对销售订单已经存在
             AmsSaleOrder amsSaleOrder=new AmsSaleOrder();
+            //此处判断订单状态为反审核
+            if (closeStatus.equals("0")&&orderStatus.equals("5")) {
+                //删除销售订单以及销售订单分录(没有下游单据的)
+                int i=0;
+                List<Map<String, Object>> mapList = amsSaleOrderMapper.selectAmssaleOrderId(saleNumber);
+                BigDecimal selectAreadyUse = amsSaleOrderMapper.selectAreadyUse(saleNumber);
+                if (selectAreadyUse==null) {
+                    for (Map<String, Object> IdMap : mapList) {
+                        BigDecimal saleMaterialId = DataChange.dataToBigDecimal(IdMap.get("saleMaterialId"));
+                        i+= amsSaleMaterialMapper.deleteByPrimaryKey(saleMaterialId);
+                    }
+                   i+= amsSaleOrderMapper.deleteByPrimaryKey(saleOrderNumber);
+                   return i;
+                }else {
+                    return -1;
+                }
+            }
             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");
@@ -790,16 +807,26 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             String materialName =(String) map1.get("materialName");
             if (materialName.contains("盘螺")){
                 map1.put("materialType","盘螺");
-            }else if (materialName.contains("盘圆")){
+            }else if (materialName.contains("盘圆")||materialName.contains("盘元")){
                 map1.put("materialType","盘圆");
             }else if (materialName.contains("螺纹")){
                 map1.put("materialType","螺纹钢");
             }
             //根据物资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());
         }

+ 38 - 14
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>
@@ -958,12 +958,12 @@
   </select>
 
    <!-- 对外开发查询接口-->
-    <select id="selectSaleSteelOrder" resultType="java.util.Map" parameterType="java.lang.String">
+    <select id="selectSaleSteelOrder" resultType="java.util.Map" parameterType="java.util.Map">
       SELECT DISTINCT
         OO2.ORDER_NO "orderNumber",
         OO.ORDER_ID "orderId",
         OO.ORDER_ISSUE_TIME "orderIssueTime",
-        DECODE( RS.SHIPPER_NAME, '四川省达州钢铁集团有限责任公司', '四川省达州市通川区' ) AS "shipperAdddress",
+        DECODE( RS.SHIPPER_NAME, '四川省达州钢铁集团有限责任公司', '四川省达州市通川区' ) AS "shipperAddress",
         RS.SHIPPER_NAME "shipperName",
         RC.CONSIGNEE_COMPANY_NAME "companyName",
         CONCAT( CONCAT( CONCAT( RRA.ADDRESS_PROVINCE, ADDRESS_DISTRICT ), ADDRESS_TOWN ), RRP.ADDRESS_DELIVERY_ADDRESS ) "consigneeAddress",
@@ -978,7 +978,8 @@
         CONCAT(ASM.MATERIAL_NUMBER,'件') "materialNum",
         CONCAT(TWR.RESULT_NET_WEIGHT,'吨') "netWeight",
         ASO.SALE_REMARK "remark",
-        DECODE(ASM.IS_POUND_SALE,'0','磅重','1','理重') "isPoundSale",
+--         DECODE(ASM.IS_POUND_SALE,'0','磅重','1','理重') "isPoundSale",
+        ASM.IS_POUND_SALE "isPoundSale",
         WOR.RESULT_ID "resultId"
       FROM
         OMSTRAIN_ORDER OO2 --销售订单
@@ -1007,22 +1008,45 @@
           LEFT JOIN WMSP_OUTBOUND_RESULT WOR  ON WOR.BILL_LADING_ID = OO.ORDER_ID
           LEFT JOIN TMSTRUCK_ARRIVAL_RESULT TAR ON TAR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
           LEFT JOIN TMStRUCK_RECEIPT_RESULT TRR ON TTR.RESULT_TOTAL_ID = TRR.RESULT_TOTAL_ID
-
       WHERE
         ASO.SALE_TYPE IN (4)
        AND OO2.ORDER_WAGON_NO = #{wagonNo}
     </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 ASM.SALE_MATERIAL_ID "saleMaterialId"
+   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.math.BigDecimal">
+    select distinct ASO.SALE_ORDER_ID
+    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">