Browse Source

- 库位释放;

Gizmo 2 years ago
parent
commit
16768d486f

+ 33 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -36,9 +36,11 @@ import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.ams.order.vo.CheckOutVO;
 import com.ruoyi.ams.order.vo.PickingListVO;
 import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.form.BasLocationForm;
 import com.ruoyi.base.domain.vo.CodeSkuRelationshipSoVO;
 import com.ruoyi.base.domain.vo.CodeSkuRelationshipVO;
 import com.ruoyi.base.form.SnCheckForm;
+import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.form.SnCheckSoForm;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.common.annotation.Log;
@@ -94,6 +96,8 @@ public class PdaController {
     private IInvLotLocIdService invLotLocIdService;
     @Autowired
     private ISysConfigService iSysConfigService;
+    @Autowired
+    private IBaseLocationInfoService baseLocationInfoService;
 
 
     /*************************************************入库-START****************************************************/
@@ -458,6 +462,35 @@ public class PdaController {
 
     /*************************************************出库-END****************************************************/
 
+
+    /*************************************************基础操作-Begin****************************************************/
+
+    /**
+     * PDA扫码查询库位信息
+     *
+     * @param locationNo 库位号
+     */
+    @GetMapping("/base/locationInfo")
+    public AjaxResult locationInfo(@RequestParam String locationNo) {
+        return AjaxResult.success(baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationNo, Constant.WAREHOUSE_ID));
+    }
+
+    /**
+     * PDA库位释放
+     * 若释放库位为出库位,则移动出库位库存至LOC_SORTATION_CACHE(AGV出库完成后,人工拉走出库位货物,扫描库位码)
+     * 若释放其余库位,则清空库位
+     */
+    @PostMapping("/base/locationRelease")
+    public AjaxResult locationRelease(@RequestBody BasLocationForm basLocationForm) {
+        return invLotLocIdService.releaseLocation(basLocationForm.getLocationNo(), Constant.WAREHOUSE_ID, "PDA");
+    }
+
+
+
+    /*************************************************基础操作-End***************************************************/
+
+
+
     /**
      * 初始化托盘
      *

+ 1 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaInvLotLocIdController.java

@@ -2,14 +2,11 @@ package com.ruoyi.web.controller.warewms.pda;
 
 import com.ruoyi.ams.inv.domain.form.InvLotLocIdAdjForm;
 import com.ruoyi.ams.inv.domain.form.InvLotLocIdMoveForm;
-import com.ruoyi.ams.inv.form.InvMovePalletForm;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -57,7 +54,7 @@ public class PdaInvLotLocIdController {
                 return invLotLocIdService.moveDirect(invLotLocIdMoveForm);
             }
         } else {
-            return invLotLocIdService.movePallet(invLotLocIdMoveForm.getPalletNo(), invLotLocIdMoveForm.getLocationTo(), invLotLocIdMoveForm.getIsCallCar(), invLotLocIdMoveForm.getReason(), invLotLocIdMoveForm.getWarehouseId(), invLotLocIdMoveForm.getUpdateBy());
+            return invLotLocIdService.movePalletTo(invLotLocIdMoveForm.getPalletNo(), invLotLocIdMoveForm.getLocationTo(), invLotLocIdMoveForm.getIsCallCar(), invLotLocIdMoveForm.getReason(), invLotLocIdMoveForm.getWarehouseId(), invLotLocIdMoveForm.getUpdateBy());
         }
 
     }

+ 4 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/mapper/InvLotLocIdMapper.java

@@ -319,4 +319,8 @@ public interface InvLotLocIdMapper {
      */
     int updateAllocationBy(@Param("lotnum") String lotnum, @Param("locationId") Long locationId, @Param("qty") BigDecimal qty);
 
+    /**
+     * 根据条件更新已分配数
+     */
+    int updateLocation(@Param("fromLocationId") Long fromLocationId, @Param("toLocationId") Long toLocationId);
 }

+ 8 - 1
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java

@@ -110,7 +110,7 @@ public interface IInvLotLocIdService {
      * @param updateBy
      * @return
      */
-    AjaxResult movePallet(String palletNo, String locationTo, String isCallCar, String reason
+    AjaxResult movePalletTo(String palletNo, String locationTo, String isCallCar, String reason
             , Long warehouseId, String updateBy);
 
     /**
@@ -305,4 +305,11 @@ public interface IInvLotLocIdService {
      * @return
      */
     AjaxResult saveOrUpdate(InvLotLocId invLotLocId);
+
+    /**
+     * PDA库位释放
+     * 1,释放的是出库位,移动出库位库存至分拣缓存位
+     * 2,释放其余库位,直接清空库位
+     */
+    AjaxResult releaseLocation(String locationFrom, Long warehouseId, String updateBy);
 }

+ 30 - 4
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -1,13 +1,11 @@
 package com.ruoyi.ams.inv.service.impl;
 
-import com.ruoyi.ams.asn.vo.StockingListVO;
 import com.ruoyi.ams.box.domain.WmsBoxInfo;
 import com.ruoyi.ams.box.service.IWmsBoxInfoService;
 import com.ruoyi.ams.business.IBusinessService;
 import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
 import com.ruoyi.ams.config.domain.dto.AgvCallItemDTO;
 import com.ruoyi.ams.config.domain.dto.LotattDTO;
-import com.ruoyi.ams.inv.domain.ActTransactionLog;
 import com.ruoyi.ams.inv.domain.InvLotAtt;
 import com.ruoyi.ams.inv.domain.InvLotLocId;
 import com.ruoyi.ams.inv.domain.form.InvLocIdSearchFrom;
@@ -20,13 +18,13 @@ import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.ams.task.domain.WcsTask;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
+import com.ruoyi.base.domain.BaseLocationZone;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.uuid.SnowflakeIdWorker;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -285,7 +283,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     }
 
     @Override
-    public AjaxResult movePallet(String palletNo, String locationTo, String isCallCar, String reason
+    public AjaxResult movePalletTo(String palletNo, String locationTo, String isCallCar, String reason
             , Long warehouseId, String updateBy) {
         String locationFrom;
         boolean callCar = false; // 是否叫车(不传默认不叫车)
@@ -724,4 +722,32 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
             throw new ServiceException("查询不到库存信息");
         }
     }
+
+    @Override
+    public AjaxResult releaseLocation(String locationFrom, Long warehouseId, String updateBy) {
+
+        BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationFrom, Constant.WAREHOUSE_ID);
+        if (null == baseLocationInfo) return AjaxResult.error("查无库位信息");
+        InvLotLocId invLotLocIdQuery = new InvLotLocId();
+        invLotLocIdQuery.setLocationId(String.valueOf(baseLocationInfo.getId()));
+        List<InvLotLocId> invLotLocIdList = selectInvLotLocIdList(invLotLocIdQuery);
+
+        if (BaseLocationZone.ZONE_OUTBOUND == baseLocationInfo.getZoneId().intValue()) {
+
+            for (InvLotLocId invLotLocId : invLotLocIdList) {
+
+                invLotLocIdMapper.updateLocation(Long.parseLong(invLotLocId.getLocationId()), Constant.LOC_SORTATION_CACHE);
+            }
+        } else {
+
+            deleteInvLotLocIdById(baseLocationInfo.getId());
+        }
+
+        //修改托盘库位绑定关系
+        WmsBoxInfo wmsBoxInfo = iWmsBoxInfoService.selectByLocationId(String.valueOf(baseLocationInfo.getId()));
+        iWmsBoxInfoService.updateLocationBind(baseLocationInfo.getId(), Constant.LOC_SORTATION_CACHE, wmsBoxInfo.getIsFull());
+
+        //释放库位状态
+        return adjLocationIsEmpty(locationFrom, Constant.WAREHOUSE_ID, updateBy);
+    }
 }

+ 5 - 0
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -626,6 +626,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where lotnum = #{lotnum} and location_id = #{locationId}
     </update>
 
+    <update id="updateLocation">
+        update inv_lot_loc_id set location_id = #{toLocationId}, update_time = now()
+        where location_id = #{fromLocationId} and location_id not in (99997, 99998, 99999)
+    </update>
+
     <select id="querySameTypeByPalletNo" resultMap="InvLotLocIdResult">
         select inv.*
         from inv_lot_loc_id inv

+ 22 - 2
warewms-base/src/main/java/com/ruoyi/base/domain/BaseLocationZone.java

@@ -1,9 +1,9 @@
 package com.ruoyi.base.domain;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 库区对象 base_location_zone
@@ -15,6 +15,26 @@ public class BaseLocationZone extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 存储区
+     */
+    public final static int ZONE_INV = 2;
+
+    /**
+     * 入库上架区
+     */
+    public final static int ZONE_ASN = 4;
+
+    /**
+     * 出库暂存区
+     */
+    public final static int ZONE_OUTBOUND = 5;
+
+    /**
+     * 回库区
+     */
+    public final static int ZONE_RETURN = 10;
+
     /** 库区ID */
     private Long zoneId;
 

+ 3 - 6
warewms-base/src/main/java/com/ruoyi/base/service/IBaseLocationInfoService.java

@@ -1,17 +1,14 @@
 package com.ruoyi.base.service;
 
-import java.util.List;
-import java.util.Map;
-
-import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.dto.BaseLocationInfoSameColDTO;
 import com.ruoyi.base.domain.vo.BasLocationTreeSelectVO;
 import com.ruoyi.base.domain.vo.BaseLocationLotattListVO;
 import com.ruoyi.base.domain.vo.TreeSelectVO;
 import com.ruoyi.common.core.domain.AjaxResult;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 库位信息Service接口