Parcourir la source

手动新增入库单接口 优化

oyq28 il y a 1 an
Parent
commit
712248abef

+ 1 - 1
src/main/java/com/imcs/admin/business/dao/WStorageLocationManagementDao.java

@@ -11,7 +11,7 @@ import java.util.List;
 public interface WStorageLocationManagementDao extends BaseMapper<WStorageLocationManagement> {
     WShelfManagement getShelfManagement(@Param("endPosition") String endPosition);
 
-    List<String> getSubStorage(@Param("locationCode") String locationCode);
+    List<WStorageLocationManagement> getSubStorage(@Param("locationCode") String locationCode);
 
     void updateByLocationCode(@Param("status") int status, @Param("locationCode") String endPosition);
 

+ 15 - 14
src/main/java/com/imcs/admin/business/service/impl/BaseServiceImpl.java

@@ -62,12 +62,12 @@ public class BaseServiceImpl {
      * @param endPosition 目标库位
      * @return 需要移库
      */
-    public List<WStorageLocationManagement> checkStorageRelocation(String endPosition) {
+    public List<WInventoryManagement> checkStorageRelocation(String endPosition) {
         WShelfManagement shelfManagement = storageLocationDao.getShelfManagement(endPosition);
         Integer inOut = shelfManagement.getDistanceRoadwayNumber();
 
         //找到所有需要移库的库位
-        List<WStorageLocationManagement> ykList=new ArrayList<>();
+        List<WInventoryManagement> ykList=new ArrayList<>();
 
         //外侧可能需要移库
         if(inOut > 0){
@@ -88,25 +88,26 @@ public class BaseServiceImpl {
                 //不确定需要 移库的库位
                 String ykCode = vo.getShelfCode() + "-" + result;
 
-                //找小库位
-                List<String> subStorage = storageLocationDao.getSubStorage(ykCode);
+                //查询 大 小 库位 被占用
+                List<WStorageLocationManagement> subStorage = storageLocationDao.getSubStorage(ykCode);
 
-                subStorage.add(ykCode);
+                if(CollectionUtil.isNotEmpty(subStorage)){
 
-                LambdaQueryWrapper<WInventoryManagement> inventoryWrapper = Wrappers.lambdaQuery(WInventoryManagement.class)
-                        .in(WInventoryManagement::getStorageLocationCode,subStorage);
+                    LambdaQueryWrapper<WInventoryManagement> inventoryWrapper = Wrappers.lambdaQuery(WInventoryManagement.class)
+                                .in(WInventoryManagement::getStorageLocationCode,subStorage);
 
-                //查库存
-                //如果目标库位的内侧库位存在托盘阻挡,则需要移库
-                List<WInventoryManagement> wInventoryManagements = inventoryDao.selectList(inventoryWrapper);
+                    //查库存
+                    //如果目标库位的内侧库位存在托盘阻挡,则需要移库
+                    List<WInventoryManagement> wInventoryManagements = inventoryDao.selectList(inventoryWrapper);
 
-                if(CollectionUtil.isNotEmpty(wInventoryManagements)){
+                    /*if(CollectionUtil.isNotEmpty(wInventoryManagements)){
 
-                    List<WStorageLocationManagement> allByLocationCode = storageLocationDao.getAllByLocationCode(wInventoryManagements);
+                        List<WStorageLocationManagement> allByLocationCode = storageLocationDao.getAllByLocationCode(wInventoryManagements);
 
-                    ykList.addAll(allByLocationCode);
-                }
 
+                    }*/
+                    ykList.addAll(wInventoryManagements);
+                }
 
             });
 

+ 9 - 6
src/main/java/com/imcs/admin/business/service/impl/OrderServiceImpl.java

@@ -47,13 +47,14 @@ public class OrderServiceImpl extends BaseServiceImpl implements OrderService {
         //入库单 save
         saveOrder(orders);
 
-        //入库任务 save
-        int trTaskId = saveOrderTask(orders);
-
         //获取目标库位
         getEndPosition(orders);
 
+        //入库任务 save
+        int trTaskId = saveOrderTask(orders);
+
         List<WInventoryTransactionChildTask> subList=new ArrayList<>();
+
         //生成 移库 子任务
         createSubTask(orders.getEndPosition(),subList,trTaskId);
 
@@ -66,6 +67,7 @@ public class OrderServiceImpl extends BaseServiceImpl implements OrderService {
             subList.stream().forEach(vo->{
                 String code = generateSerial.generateSerialNumber("childTask");
                 vo.setChildTaskCode(code);
+                vo.setParentChildTaskCode(faCode);
                 saveSubTask(vo.getSuList(),code);
                 childTaskDao.insert(vo);
                 updateStorageStatus(Status.PRE_RESERVED.getCode(),vo.getEndPosition());
@@ -76,7 +78,7 @@ public class OrderServiceImpl extends BaseServiceImpl implements OrderService {
 
     private List<WInventoryTransactionChildTask> createSubTask(String endPosition,List<WInventoryTransactionChildTask> subList,int trTaskId) {
         //获取endPosition 需要移库的所有库位,获得的顺序为从内侧到外侧(先移动最外侧库位托盘)
-        List<WStorageLocationManagement> wStorageLocationManagements = checkStorageRelocation(endPosition);
+        List<WInventoryManagement> wStorageLocationManagements = checkStorageRelocation(endPosition);
         List<WInventoryTransactionChildTask> faTask=new ArrayList<>();
 
         //判断是否需要移库
@@ -86,7 +88,7 @@ public class OrderServiceImpl extends BaseServiceImpl implements OrderService {
                 task.setWInventoryTransactionTaskId(Long.valueOf(trTaskId));
                 //保存的时候塞入值
                 //task.getChildTaskCode()
-                task.setStartPosition(vo.getLocationCode());
+                task.setStartPosition(vo.getStorageLocationCode());
                 //TODO
                 //task.setEndPosition();
                 task.setVectorCode(vo.getPalletCode());
@@ -110,6 +112,8 @@ public class OrderServiceImpl extends BaseServiceImpl implements OrderService {
 
 
     private void getEndPosition(WInventoryTransactionOrders orders) {
+        //TODO 获取库位
+
 
         //设置为预占用
         updateStorageStatus(Status.PRE_RESERVED.getCode(),orders.getEndPosition());
@@ -123,7 +127,6 @@ public class OrderServiceImpl extends BaseServiceImpl implements OrderService {
 
         WInventoryTransactionTask.WInventoryTransactionTaskBuilder inTask = WInventoryTransactionTask.builder().taskCode(generateSerial.generateSerialNumber("inTask"))
                 .startPosition(orders.getStartPosition())
-                //TODO
                 .endPosition(orders.getEndPosition())
                 .vectorCode(orders.getVectorCode())
                 .status(0)

+ 4 - 1
src/main/java/com/imcs/admin/entity/WInventoryTransactionOrders.java

@@ -88,15 +88,18 @@ public class WInventoryTransactionOrders implements Serializable {
      */
     private Integer updatedBy;
 
+    @TableField(exist = false)
     List<WInventoryTransactionOrdersDetail> detailList;
 
 
     /**
      * 非数据库字段
      */
-
+    @TableField(exist = false)
     private String startPosition;//开始库位
+    @TableField(exist = false)
     private String endPosition;//目标库位
+    @TableField(exist = false)
     private String vectorCode;//载体托盘或料盒编码
 }
 

+ 2 - 2
src/main/java/com/imcs/admin/entity/WInventoryTransactionOrdersDetail.java

@@ -35,11 +35,11 @@ public class WInventoryTransactionOrdersDetail implements Serializable {
 /**
      * 计划出入库数量
      */
-    private String planAmount;
+    private Integer planAmount;
 /**
      * 已出入库数量
      */
-    private String realAmount;
+    private Integer realAmount;
 /**
      * 批次号
      */

+ 1 - 1
src/main/java/com/imcs/admin/entity/WInventoryTransactionTaskDetail.java

@@ -33,7 +33,7 @@ public class WInventoryTransactionTaskDetail implements Serializable {
 /**
      * 入库数量
      */
-    private String amount;
+    private Integer amount;
 /**
      * 批次号
      */

+ 4 - 2
src/main/resources/mapper/WStorageLocationDao.xml

@@ -9,8 +9,10 @@
         where loca.location_code = #{endPosition}
     </select>
 
-    <select id="getSubStorage" resultType="String">
-        select location_code from w_storage_location_management where parent_id=(select id from w_storage_location_management where location_code=#{locationCode})
+    <select id="getSubStorage" resultType="com.imcs.admin.entity.WStorageLocationManagement">
+        select * from w_storage_location_management where location_code=#{locationCode}
+        where (parent_id=(select id from w_storage_location_management where location_code=#{locationCode})
+        or location_code=#{locationCode}) and storage_location_status != 1
     </select>