胡半仙 3 роки тому
батько
коміт
90d966b766

+ 32 - 1
src/main/java/com/steerinfo/dil/controller/WmspRestackMakeResultController.java

@@ -320,6 +320,18 @@ public class WmspRestackMakeResultController extends BaseRESTfulController {
                                                   @RequestParam("afterBeforeStackingId") BigDecimal afterBeforeStackingId,
                                                   @RequestParam("afterBeforeStackingId") BigDecimal afterBeforeStackingId,
                                                   @RequestParam("resultRemark")String resultRemark,
                                                   @RequestParam("resultRemark")String resultRemark,
                                                   @RequestBody(required = false) List<Map<String,Object>> mps){
                                                   @RequestBody(required = false) List<Map<String,Object>> mps){
+
+//        判断当前用户填写的倒垛单的物资总件数是否超过了这个垛位的物资最大件数
+        Integer quantity = (Integer)mps.get(0).get("quantity");
+        HashMap<String,Object> map = new HashMap<>();
+        map.put("afterBeforeStackingId",afterBeforeStackingId);
+        map.put("afterWarehouseId",afterWarehouseId);
+        map.put("beforeLevel",beforeLevel);
+        Integer realQuantity = wmspRestackMakeResultService.getStackingMaxNumber(map);
+        if (quantity > realQuantity){
+//            当用户填写的垛位的数量超过了库存实际数量,则直接返回fail
+            return failed("物资件数填写不正确");
+        }
         //创建倒垛单和倒垛单类型
         //创建倒垛单和倒垛单类型
         WmspRestackMakeResult wmspRestackMakeResult= wmspRestackMakeResultService.createRestackMakeResult(keeperId,beforeLevel,afterStackingId,afterWarehouseId,afterBeforeStackingId,resultRemark,mps);
         WmspRestackMakeResult wmspRestackMakeResult= wmspRestackMakeResultService.createRestackMakeResult(keeperId,beforeLevel,afterStackingId,afterWarehouseId,afterBeforeStackingId,resultRemark,mps);
         return success(wmspRestackMakeResult);
         return success(wmspRestackMakeResult);
@@ -329,7 +341,26 @@ public class WmspRestackMakeResultController extends BaseRESTfulController {
     @GetMapping("/selectRestackByWarehouseIds")
     @GetMapping("/selectRestackByWarehouseIds")
     public  RESTfulResult selectRestackByWarehouseIds(@RequestParam(name = "warehouseid") String warehouseid){
     public  RESTfulResult selectRestackByWarehouseIds(@RequestParam(name = "warehouseid") String warehouseid){
         List<Map<String,Object>> list=wmspRestackMakeResultService.selectRestackByWarehouseIds( warehouseid);
         List<Map<String,Object>> list=wmspRestackMakeResultService.selectRestackByWarehouseIds( warehouseid);
-        return  success(list);
+        List<Map<String ,Object>> newList = new ArrayList<>();
+        for (Map<String ,Object> map:list){
+            BigDecimal quantity = (BigDecimal) map.get("quantity");
+            BigDecimal totalQuantity = (BigDecimal) map.get("totalQuantity");
+            BigDecimal count = (BigDecimal) map.get("count");
+            if (totalQuantity.subtract(quantity).compareTo(count)!=0){
+//                当当前订单的总数量与剩余数量不符合的时候,将订单的状态进行改变
+//                创建倒垛实绩类
+                WmspRestackMakeResult wmspRestackMakeResult = new WmspRestackMakeResult();
+                wmspRestackMakeResult.setResultId((BigDecimal) map.get("resultId"));
+                wmspRestackMakeResult.setQuantity(new BigDecimal(0));
+                wmspRestackMakeResult.setResultStatus(new BigDecimal(1));
+                wmspRestackMakeResultService.changeRestackStatus(wmspRestackMakeResult);
+                //            清除当前map中的数据
+                map.clear();
+                continue;
+            }
+            newList.add(map);
+        }
+        return  success(newList);
     }
     }
 
 
     //    改变当前订单中已经稽核的吊牌
     //    改变当前订单中已经稽核的吊牌

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/WmspRestackMakeResultMapper.java

@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Select;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -63,4 +64,6 @@ public interface WmspRestackMakeResultMapper extends IBaseMapper<WmspRestackMake
     BigDecimal getQuantity(String restackMake);
     BigDecimal getQuantity(String restackMake);
 //    根据倒垛单查询这个倒垛下的所有已经扫描并且稽核成功的吊牌
 //    根据倒垛单查询这个倒垛下的所有已经扫描并且稽核成功的吊牌
     List<Map<String, Object>> getScanResultList(String restackMake);
     List<Map<String, Object>> getScanResultList(String restackMake);
+
+    Integer getStackingMaxNumber(HashMap<String, Object> map);
 }
 }

+ 5 - 0
src/main/java/com/steerinfo/dil/service/IWmspRestackMakeResultService.java

@@ -3,6 +3,7 @@ package com.steerinfo.dil.service;
 import com.steerinfo.dil.model.WmspRestackMakeResult;
 import com.steerinfo.dil.model.WmspRestackMakeResult;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -55,4 +56,8 @@ public interface IWmspRestackMakeResultService {
     List<Map<String, Object>> selectRestackByWarehouseIds(String warehouseid);
     List<Map<String, Object>> selectRestackByWarehouseIds(String warehouseid);
 
 
     int changeRestackMakeResult(String restackMake);
     int changeRestackMakeResult(String restackMake);
+
+    Integer getStackingMaxNumber(HashMap<String, Object> map);
+
+    int changeRestackStatus(WmspRestackMakeResult wmspRestackMakeResult);
 }
 }

+ 11 - 8
src/main/java/com/steerinfo/dil/service/impl/WmspGridMaterialServiceImpl.java

@@ -418,7 +418,8 @@ public class WmspGridMaterialServiceImpl  implements IWmspGridMaterialService {
         int CX=0;
         int CX=0;
         int i =0;
         int i =0;
 //        遍历物资
 //        遍历物资
-        for(Map<String, Object> map:list){
+        for(int j= 0; j<list.size();){
+            Map<String ,Object> map = list.get(j);
 //            2.计算物资在新垛位的目标层序
 //            2.计算物资在新垛位的目标层序
             BigDecimal stackingId = (BigDecimal) map.get("stackingId");
             BigDecimal stackingId = (BigDecimal) map.get("stackingId");
             //根据最新的垛位
             //根据最新的垛位
@@ -435,9 +436,10 @@ public class WmspGridMaterialServiceImpl  implements IWmspGridMaterialService {
 //            创建仓储网格实体类
 //            创建仓储网格实体类
             RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
             RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
             rmsPwarehouseGrid.setGridId((BigDecimal) map.get("gridId"));
             rmsPwarehouseGrid.setGridId((BigDecimal) map.get("gridId"));
+            rmsPwarehouseGrid.setStackingId(stackingId);
             rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(CC));
             rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(CC));
             rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(CX));
             rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(CX));
-            i+= rmsPwarehouseGridMapper.updateByPrimaryKeySelective(rmsPwarehouseGrid);
+            rmsPwarehouseGridMapper.updateByPrimaryKeySelective(rmsPwarehouseGrid);
 
 
 //            3.修改倒垛单的数量
 //            3.修改倒垛单的数量
 //            创建倒垛实绩表
 //            创建倒垛实绩表
@@ -446,12 +448,12 @@ public class WmspGridMaterialServiceImpl  implements IWmspGridMaterialService {
             BigDecimal quantity = quantitys.subtract(new BigDecimal(1));
             BigDecimal quantity = quantitys.subtract(new BigDecimal(1));
             wmspRestackMakeResult.setQuantity(quantity);
             wmspRestackMakeResult.setQuantity(quantity);
             wmspRestackMakeResult.setResultId((BigDecimal) map.get("restackId"));
             wmspRestackMakeResult.setResultId((BigDecimal) map.get("restackId"));
-            i+= wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult);
+            wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult);
 //            4.判断当前倒垛单剩余数量是否小于等于0(小于则修改所有的符合条件的倒垛单状态),并且逻辑删除当前倒垛单
 //            4.判断当前倒垛单剩余数量是否小于等于0(小于则修改所有的符合条件的倒垛单状态),并且逻辑删除当前倒垛单
 
 
-            if (quantity.compareTo(new BigDecimal(0))==-1){
+            if (quantity.compareTo(new BigDecimal(0))==0){
 //                  当数量小于零的时候,将所有的入库扫描的实绩状态都变成已倒垛
 //                  当数量小于零的时候,将所有的入库扫描的实绩状态都变成已倒垛
-//                  查询该订单下的所有未倒垛的的订单
+//                  查询该订单下的所有未倒垛的的物资
                 List<Map<String,Object>> list1 = wmspRestackScanResultMapper.getResultId((BigDecimal) map.get("restackId"));
                 List<Map<String,Object>> list1 = wmspRestackScanResultMapper.getResultId((BigDecimal) map.get("restackId"));
 //                  创建入库扫描实体类
 //                  创建入库扫描实体类
                 for (Map<String,Object> map2:list1){
                 for (Map<String,Object> map2:list1){
@@ -459,16 +461,17 @@ public class WmspGridMaterialServiceImpl  implements IWmspGridMaterialService {
                     WmspRestackScanResult wmspRestackScanResult = new WmspRestackScanResult();
                     WmspRestackScanResult wmspRestackScanResult = new WmspRestackScanResult();
                     wmspRestackScanResult.setResultId(resultId);
                     wmspRestackScanResult.setResultId(resultId);
                     wmspRestackMakeResult.setResultStatus(new BigDecimal(1));
                     wmspRestackMakeResult.setResultStatus(new BigDecimal(1));
-                    i+=wmspRestackScanResultMapper.updateByPrimaryKeySelective(wmspRestackScanResult);
+                    wmspRestackScanResultMapper.updateByPrimaryKeySelective(wmspRestackScanResult);
                 }
                 }
 
 
 //                将该订单的状态变为已完成
 //                将该订单的状态变为已完成
                 WmspRestackMakeResult wmspRestackMakeResult1 = new WmspRestackMakeResult();
                 WmspRestackMakeResult wmspRestackMakeResult1 = new WmspRestackMakeResult();
                 wmspRestackMakeResult1.setResultId((BigDecimal) map.get("restackId"));
                 wmspRestackMakeResult1.setResultId((BigDecimal) map.get("restackId"));
                 wmspRestackMakeResult1.setResultStatus(new BigDecimal(1));
                 wmspRestackMakeResult1.setResultStatus(new BigDecimal(1));
-                i+= wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult1);
+                wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult1);
             }
             }
-            return i;
+            i++;
+            j++;
         }
         }
         return i;
         return i;
     }
     }

+ 11 - 5
src/main/java/com/steerinfo/dil/service/impl/WmspRestackMakeResultServiceImpl.java

@@ -285,11 +285,7 @@ public class WmspRestackMakeResultServiceImpl  implements IWmspRestackMakeResult
     public List<Map<String, Object>> selectRestackForPc2(Integer DistrubtionStatus) {
     public List<Map<String, Object>> selectRestackForPc2(Integer DistrubtionStatus) {
         List<Map<String, Object>> mapList = new ArrayList<>();
         List<Map<String, Object>> mapList = new ArrayList<>();
         Map<String, Object> map =new HashMap<>();
         Map<String, Object> map =new HashMap<>();
-//        判断当前用户想要获取的是未下发或已下发的数据
-        if (DistrubtionStatus==0){
-            map.put("DistrubtionStatus",0);
-            mapList = wmspRestackMakeResultMapper.selectRestackForPc(map);
-        }
+
         if (DistrubtionStatus==1){
         if (DistrubtionStatus==1){
             map.put("DistrubtionStatus",1);
             map.put("DistrubtionStatus",1);
             mapList = wmspRestackMakeResultMapper.selectRestackForPc2(map);
             mapList = wmspRestackMakeResultMapper.selectRestackForPc2(map);
@@ -383,4 +379,14 @@ public class WmspRestackMakeResultServiceImpl  implements IWmspRestackMakeResult
 
 
         return wmspGridMaterialService.updateWmspGridMaterials(materialScanTagMap,restackMake);
         return wmspGridMaterialService.updateWmspGridMaterials(materialScanTagMap,restackMake);
     }
     }
+//    获取当前垛位的最大物资数量
+    @Override
+    public Integer getStackingMaxNumber(HashMap<String, Object> map) {
+        return wmspRestackMakeResultMapper.getStackingMaxNumber(map);
+    }
+//    修改倒垛单状态
+    @Override
+    public int changeRestackStatus(WmspRestackMakeResult wmspRestackMakeResult) {
+        return wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult);
+    }
 }
 }

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -1,7 +1,7 @@
 api.version: api/v1/wms
 api.version: api/v1/wms
 spring:
 spring:
   profiles:
   profiles:
-    include: ${SPRING_PROFILES:dev}
+    include: ${SPRING_PROFILES:prod}
   jackson:
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8
     time-zone: GMT+8

+ 46 - 10
src/main/resources/com/steerinfo/dil/mapper/WmspRestackMakeResultMapper.xml

@@ -1412,15 +1412,30 @@
     <include refid="orderByInsertTime"></include>
     <include refid="orderByInsertTime"></include>
   </select>
   </select>
     <select id="selectRestackByWarehouseIds" resultType="java.util.Map">
     <select id="selectRestackByWarehouseIds" resultType="java.util.Map">
-         SELECT wrme.RESULT_ID "resultId", -- 倒垛编号
-          wrme.RESULT_STACK_NUMBER "resultStackNumber", -- 倒垛单创建时间
-          wrme.INSERT_TIME "insertTime", -- 倒垛单下发时间
-          wrme.RESULT_KEEPER_ISSUE_TIME "resultKeeperIssueTime", -- 总件数
-          wrme.QUANTITY "quantity", -- 原层次
-          wrme.BEFORE_LEVEL "beforeLevel", -- 新垛位
-          rs.STACKING_NO "afterStackingNo", -- 原垛位
-          rs2.STACKING_NO "beforeStackingNo", -- 仓库名称
-           rw.WAREHOUSE_NAME "warehouseName"-- 当前下发的倒垛单的完成状态
+         SELECT
+                wrme.RESULT_ID "resultId",
+                -- 倒垛编号
+          wrme.RESULT_STACK_NUMBER "resultStackNumber",
+                -- 倒垛单创建时间
+          wrme.INSERT_TIME "insertTime",
+                -- 倒垛单下发时间
+          wrme.RESULT_KEEPER_ISSUE_TIME "resultKeeperIssueTime",
+                -- 剩余件数
+          wrme.QUANTITY "quantity",
+--                 总件数
+          wrme.TOTAL_QUANTITY "totalQuantity",
+                -- 原层次
+          wrme.BEFORE_LEVEL "beforeLevel",
+                -- 新垛位
+          rs.STACKING_NO "afterStackingNo",
+                -- 原垛位
+          rs2.STACKING_NO "beforeStackingNo",
+                -- 仓库名称
+           rw.WAREHOUSE_NAME "warehouseName",
+           -- 当前下发的倒垛单的完成状态
+           wrme.RESULT_STATUS "resultStatus",
+--                 该订单下已经稽核的数量但未完成的数量
+            table1.count "count"
           
           
            FROM WMSP_RESTACK_MAKE_RESULT wrme
            FROM WMSP_RESTACK_MAKE_RESULT wrme
            LEFT JOIN WMSP_RESTACK_MAKE_MATERIAL wrmm
            LEFT JOIN WMSP_RESTACK_MAKE_MATERIAL wrmm
@@ -1431,6 +1446,16 @@
                ON rs2.STACKING_ID=wrme.AFTER_BEFORE_STACKING_ID
                ON rs2.STACKING_ID=wrme.AFTER_BEFORE_STACKING_ID
            LEFT JOIN RMS_WAREHOUSE rw
            LEFT JOIN RMS_WAREHOUSE rw
                ON rw.WAREHOUSE_ID=wrme.AFTER_WAREHOUSE_ID
                ON rw.WAREHOUSE_ID=wrme.AFTER_WAREHOUSE_ID
+            LEFT JOIN (
+             SELECT COUNT(WRSR.RESULT_ID) count,
+                    WRSR.RESULT_RESTACK_ID restackId
+             FROM WMSP_RESTACK_SCAN_RESULT WRSR
+                    LEFT JOIN WMSP_RESTACK_MAKE_RESULT WRMR2
+                              ON WRSR.RESULT_RESTACK_ID = WRMR2.RESULT_ID
+             WHERE WRSR.RESULT_LOADER_AUDIT = 1
+             GROUP BY WRSR.RESULT_RESTACK_ID
+             ) table1
+                ON wrme.RESULT_ID = table1.restackId
             WHERE wrme.DISTRIBUTIONSTATUS=1 and wrme.DELETED=0 and wrme.RESULT_STATUS=0 and wrme.QUANTITY>0 and wrme.AFTER_WAREHOUSE_ID=#{warehouseid}
             WHERE wrme.DISTRIBUTIONSTATUS=1 and wrme.DELETED=0 and wrme.RESULT_STATUS=0 and wrme.QUANTITY>0 and wrme.AFTER_WAREHOUSE_ID=#{warehouseid}
     </select>
     </select>
   <select id="getResultLoaderAudit" resultType="java.lang.Integer">
   <select id="getResultLoaderAudit" resultType="java.lang.Integer">
@@ -1470,7 +1495,18 @@
     ON WRMR.RESULT_ID = WRCR.RESULT_RESTACK_ID
     ON WRMR.RESULT_ID = WRCR.RESULT_RESTACK_ID
     WHERE WRCR.RESULT_LOADER_AUDIT =1 AND WRCR.STATUS =1 AND WRMR.RESULT_STACK_NUMBER = #{restackMake}
     WHERE WRCR.RESULT_LOADER_AUDIT =1 AND WRCR.STATUS =1 AND WRMR.RESULT_STACK_NUMBER = #{restackMake}
   </select>
   </select>
-  <!--  根据物资唯一id,逻辑删除对应的餐厨网格状态-->
+    <select id="getStackingMaxNumber" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM RMS_PWAREHOUSE_GRID RPG
+--         关联仓储网格
+        LEFT JOIN WMSP_GRID_MATERIAL WGM
+        ON RPG.GRID_ID = WGM.GRID_ID
+        WHERE WGM.UPDATE_TIME IS NULL AND WGM.DELETED = 0  AND RPG.STACKING_ID =#{afterBeforeStackingId} AND RPG.WAREHOUSE_ID =#{afterWarehouseId}
+        <if test="beforeLevel!=null">
+            AND RPG.GRID_GRADATION_NUMBER = #{beforeLevel}
+        </if>
+    </select>
+    <!--  根据物资唯一id,逻辑删除对应的餐厨网格状态-->
   <update id="changeMaterialGrid">
   <update id="changeMaterialGrid">
     UPDATE WMSP_GRID_MATERIAL WGM SET WGM.DELETED = 1
     UPDATE WMSP_GRID_MATERIAL WGM SET WGM.DELETED = 1
     WHERE WGM.GRID_ID = #{gridId}
     WHERE WGM.GRID_ID = #{gridId}

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

@@ -323,6 +323,7 @@
       rm.MATERIAL_MODEL "materialMode",
       rm.MATERIAL_MODEL "materialMode",
       rm.MATERIAL_LENGTH "materialLength",
       rm.MATERIAL_LENGTH "materialLength",
       wrmr.QUANTITY "quantity",
       wrmr.QUANTITY "quantity",
+      wrmr.TOTAL_QUANTITY "totalQuantity",
       coun.num "count"
       coun.num "count"
     from WMSP_RESTACK_MAKE_TYPE_RESULT  wrmtr
     from WMSP_RESTACK_MAKE_TYPE_RESULT  wrmtr
            left join rms_material rm
            left join rms_material rm