Browse Source

增加分配库位和库存的方法
1.根据库区,绑定产品分配空闲的库位,可排序
2.根据库区,产品,批次属性分配有货的库位,可排序

k 2 years ago
parent
commit
78bd00d556

+ 61 - 0
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/BaseLocationInfoSubService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.ams.xuankuang.service;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.ams.config.domain.dto.LotattDTO;
+import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
+import com.ruoyi.base.service.IBaseLocationInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author JWK
+ * @version 1.0
+ * @date 2023/4/3 18:44
+ */
+@Service
+public class BaseLocationInfoSubService {
+
+    @Autowired
+    private IBaseLocationInfoService baseLocationInfoService;
+
+
+    /**
+     * 根据条件查询可分配库位
+     *
+     * @param zoneId
+     * @param bindSku
+     * @param orderBy
+     * @return
+     */
+    public List<BaseLocationLotattVO> selectAllocatingInventoryAccordingConditionsOrderBy(List<String> zoneId
+            , String bindSku
+            , String orderBy) {
+        return baseLocationInfoService.selectAllocatingLocationAccordingConditionsOrderBy(zoneId
+                , bindSku
+                , orderBy);
+    }
+
+    /**
+     * 根据条件查询可分配库存
+     *
+     * @param zoneId
+     * @param lotattDTO
+     * @param sku
+     * @param orderBy
+     * @return
+     */
+    public List<BaseLocationLotattVO> selectAllocatingInventoryAccordingConditionsOrderBy(List<String> zoneId
+            , LotattDTO lotattDTO
+            , String sku
+            , String orderBy) {
+        Map<String, String> map = JSON.parseObject(JSON.toJSONString(lotattDTO), HashMap.class);
+        return baseLocationInfoService.selectAllocatingInventoryAccordingConditionsOrderBy(zoneId
+                , map
+                , sku
+                , orderBy);
+    }
+}

+ 49 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -236,6 +236,55 @@ public class Constant {
         }
     }
 
+    /**
+     * 库区
+     */
+    public enum LOCATION_ZONE {
+
+        /**
+         * 立体库一层
+         */
+        INV_1("1"),
+        /**
+         * 立体库二层
+         */
+        INV_2("2"),
+        /**
+         * 立体库三层
+         */
+        INV_3("3"),
+        /**
+         * 桶装入库缓存区
+         */
+        TZ_ASN_CACHE("4");
+
+        private String value;
+
+        LOCATION_ZONE(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * 根据值获得枚举类型 switch
+         *
+         * @param value
+         * @return
+         */
+        public static LOCATION_ZONE getByValue(String value) {
+            for (LOCATION_ZONE code : values()) {
+                if (code.getValue().equals(value)) {
+                    return code;
+                }
+            }
+            return null;
+        }
+
+    }
+
     /**
      * 库存状态
      */

+ 27 - 0
warewms-base/src/main/java/com/ruoyi/base/mapper/BaseLocationInfoMapper.java

@@ -104,6 +104,33 @@ public interface BaseLocationInfoMapper {
             , @Param("lotatt") Map<String, String> lotatt,@Param("sku") String sku,@Param("orderByClause") String orderBy);
 
 
+    /**
+     * 根据条件分配库位
+     *
+     * @param zoneId
+     * @param warehouseId
+     * @param bindSku
+     * @param orderBy
+     * @return
+     */
+    List<BaseLocationLotattVO> selectAllocatingLocationAccordingConditionsOrderBy(@Param("zoneId") List<String> zoneId, @Param("warehouseId") Long warehouseId
+            ,@Param("bindSku") String bindSku,@Param("orderByClause") String orderBy);
+
+    /**
+     * 根据条件分配库存
+     *
+     * @param zoneId
+     * @param warehouseId
+     * @param lotatt
+     * @param sku
+     * @param orderBy
+     * @return
+     */
+    List<BaseLocationLotattVO> selectAllocatingInventoryAccordingConditionsOrderBy(@Param("zoneId") List<String> zoneId, @Param("warehouseId") Long warehouseId
+            , @Param("lotatt") Map<String, String> lotatt,@Param("sku") String sku,@Param("orderByClause") String orderBy);
+
+
+
     List<BaseLocationLotattVO> selectSortedLocationLotattListByLocationIdList(@Param("locationId") List<Long> locationId, @Param("warehouseId") Long warehouseId, @Param("lotatt") Map<String, String> lotatt, @Param("sku") String sku);
 
     /**

+ 36 - 8
warewms-base/src/main/java/com/ruoyi/base/service/IBaseLocationInfoService.java

@@ -1,17 +1,15 @@
 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.BaseLocationLotattVO;
 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接口
@@ -37,6 +35,33 @@ public interface IBaseLocationInfoService {
      */
     BaseLocationInfo selectBaseLocationInfoByIdOrNo(String idOrNo, Long warehouseId);
 
+
+    /**
+     * 根据条件查询可分配库位
+     *
+     * @param zoneId
+     * @param bindSku
+     * @param orderBy
+     * @return
+     */
+    List<BaseLocationLotattVO> selectAllocatingLocationAccordingConditionsOrderBy(List<String> zoneId
+            , String bindSku
+            , String orderBy);
+
+    /**
+     * 根据条件查询可分配库存
+     *
+     * @param zoneId
+     * @param lotatt
+     * @param sku
+     * @param orderBy
+     * @return
+     */
+    List<BaseLocationLotattVO> selectAllocatingInventoryAccordingConditionsOrderBy(List<String> zoneId
+            , Map<String, String> lotatt
+            , String sku
+            , String orderBy);
+
     /**
      * 查询库位信息列表
      *
@@ -47,6 +72,7 @@ public interface IBaseLocationInfoService {
 
     /**
      * 查询库位信息列表
+     *
      * @param locId 库位ID
      * @return
      */
@@ -116,7 +142,7 @@ public interface IBaseLocationInfoService {
      * @param warehouseId
      * @return
      */
-    List<BaseLocationInfo> selectSortedLocatinListByZoneId(Long zoneId, Long warehouseId,String orderBy);
+    List<BaseLocationInfo> selectSortedLocatinListByZoneId(Long zoneId, Long warehouseId, String orderBy);
 
     /**
      * 根据zoneId查询库位信息
@@ -257,6 +283,7 @@ public interface IBaseLocationInfoService {
 
     /**
      * 查询同列可用库位
+     *
      * @param colNo
      * @param colIndex
      * @return
@@ -265,10 +292,11 @@ public interface IBaseLocationInfoService {
 
     /**
      * 导入库位
+     *
      * @param list
      * @param updateSupport
      * @param opname
      * @return
      */
-    AjaxResult importLocation(List<BaseLocationInfo> list,boolean updateSupport,String opname);
+    AjaxResult importLocation(List<BaseLocationInfo> list, boolean updateSupport, String opname);
 }

+ 13 - 0
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseLocationInfoServiceImpl.java

@@ -69,6 +69,19 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
         }
     }
 
+    @Override
+    public List<BaseLocationLotattVO> selectAllocatingLocationAccordingConditionsOrderBy(List<String> zoneId, String bindSku, String orderBy) {
+        return baseLocationInfoMapper.selectAllocatingLocationAccordingConditionsOrderBy(zoneId, Constant.WAREHOUSE_ID, bindSku
+                , orderBy);
+    }
+
+    @Override
+    public List<BaseLocationLotattVO> selectAllocatingInventoryAccordingConditionsOrderBy(List<String> zoneId, Map<String, String> lotatt, String sku
+            , String orderBy) {
+        return baseLocationInfoMapper.selectAllocatingInventoryAccordingConditionsOrderBy(zoneId, Constant.WAREHOUSE_ID, lotatt, sku
+                , orderBy);
+    }
+
     /**
      * 查询库位信息列表
      *

+ 58 - 0
warewms-base/src/main/resources/mapper/base/BaseLocationInfoMapper.xml

@@ -512,6 +512,64 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+
+    <select id="selectAllocatingLocationAccordingConditionsOrderBy" parameterType="BaseLocationInfo" resultMap="BaseLocationInfoLotattResult">
+        select b.*
+        from base_location_info b
+        where warehouse_id = #{warehouseId} and is_empty = 'Y' and stock_status = '00'
+        and zone_id in
+        <foreach item="item" collection="zoneId" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        <if test="bindSku != null and bindSku != ''"> and b.userdefine10 = #{bindSku}</if>
+        <if test="orderByClause != null and orderByClause != ''" >
+            order by  ${orderByClause}
+        </if>
+        <if test="orderByClause == null or orderByClause == ''">
+            order by row_no + 0,row_index,shift_no + 0,shift_index,col_no + 0,col_index
+        </if>
+    </select>
+
+    <select id="selectAllocatingInventoryAccordingConditionsOrderBy" parameterType="BaseLocationInfo" resultMap="BaseLocationInfoLotattResult">
+        select
+            b.*
+            , inv.sku, inv.qty
+            , att.*
+        from base_location_info b
+        left join inv_lot_loc_id inv on b.id = inv.location_id
+        left join inv_lot_att att on inv.lotnum = att.lotnum
+        where warehouse_id = #{warehouseId} and is_empty = 'N' and stock_status = '00'
+        and zone_id in
+        <foreach item="item" collection="zoneId" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        <if test="sku != null and sku != ''"> and inv.sku = #{sku}</if>
+        <if test="lotatt.lotatt01 != null and lotatt.lotatt01 != ''"> and att.lotatt01 = #{lotatt.lotatt01}</if>
+        <if test="lotatt.lotatt02 != null and lotatt.lotatt02 != ''"> and att.lotatt02 = #{lotatt.lotatt02}</if>
+        <if test="lotatt.lotatt03 != null and lotatt.lotatt03 != ''"> and att.lotatt03 = #{lotatt.lotatt03}</if>
+        <if test="lotatt.lotatt04 != null and lotatt.lotatt04 != ''"> and att.lotatt04 = #{lotatt.lotatt04}</if>
+        <if test="lotatt.lotatt05 != null and lotatt.lotatt05 != ''"> and att.lotatt05 = #{lotatt.lotatt05}</if>
+        <if test="lotatt.lotatt06 != null and lotatt.lotatt06 != ''"> and att.lotatt06 = #{lotatt.lotatt06}</if>
+        <if test="lotatt.lotatt07 != null and lotatt.lotatt07 != ''"> and att.lotatt07 = #{lotatt.lotatt07}</if>
+        <if test="lotatt.lotatt08 != null and lotatt.lotatt08 != ''"> and att.lotatt08 = #{lotatt.lotatt08}</if>
+        <if test="lotatt.lotatt09 != null and lotatt.lotatt09 != ''"> and att.lotatt09 = #{lotatt.lotatt09}</if>
+        <if test="lotatt.lotatt10 != null and lotatt.lotatt10 != ''"> and att.lotatt10 = #{lotatt.lotatt10}</if>
+        <if test="lotatt.lotatt11 != null and lotatt.lotatt11 != ''"> and att.lotatt11 = #{lotatt.lotatt11}</if>
+        <if test="lotatt.lotatt12 != null and lotatt.lotatt12 != ''"> and att.lotatt12 = #{lotatt.lotatt12}</if>
+        <if test="lotatt.lotatt13 != null and lotatt.lotatt13 != ''"> and att.lotatt13 = #{lotatt.lotatt13}</if>
+        <if test="lotatt.lotatt14 != null and lotatt.lotatt14 != ''"> and att.lotatt14 = #{lotatt.lotatt14}</if>
+        <if test="lotatt.lotatt15 != null and lotatt.lotatt15 != ''"> and att.lotatt15 = #{lotatt.lotatt15}</if>
+        <if test="lotatt.lotatt16 != null and lotatt.lotatt16 != ''"> and att.lotatt16 = #{lotatt.lotatt16}</if>
+        <if test="lotatt.lotatt17 != null and lotatt.lotatt17 != ''"> and att.lotatt17 = #{lotatt.lotatt17}</if>
+        <if test="lotatt.lotatt18 != null and lotatt.lotatt18 != ''"> and att.lotatt18 = #{lotatt.lotatt18}</if>
+        <if test="orderByClause != null and orderByClause != ''" >
+            order by  ${orderByClause}
+        </if>
+        <if test="orderByClause == null or orderByClause == ''">
+            order by row_no + 0,row_index,shift_no + 0,shift_index,col_no + 0,col_index
+        </if>
+    </select>
+
     <select id="selectSortedLocationLotattListByLocationIdList" parameterType="BaseLocationInfo" resultMap="BaseLocationInfoLotattResult">
         select b.id, b.warehouse_id, b.zone_id, b.location_no, b.location_barcode, b.row_no, b.row_index, b.col_no, b.col_index, b.shift_no,
         b.shift_index, b.stock_status, b.is_empty, b.bind_sku, b.location_type,  b.rack_id,  b.agv_station,  b.folded_tag,  b.folded_count,