自动化立体仓库 - WMS系统
#
luxiaotao1123
2022-11-10 570986d8808721deead35f7359d13487aeb61997
#
5个文件已修改
86 ■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocMastService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -14,7 +14,7 @@
public interface LocMastMapper extends BaseMapper<LocMast> {
    List<LocMast> queryFreeLocMast(@Param("rows") List<Integer> rows, @Param("rowsLen") Integer rowsLen, @Param("locType1") Short locType1);
    List<LocMast> queryFreeLocMast2(@Param("rows") List<Integer> rows, @Param("rowsLen") Integer rowsLen, @Param("locType1") Short locType1, @Param("inoutEveryday") Boolean inoutEveryday);
    List<LocMast> queryFreeLocMast0(@Param("rows") List<Integer> rows, @Param("rowsLen") Integer rowsLen, @Param("locType1") Short locType1, @Param("inoutEveryday") Boolean inoutEveryday);
    @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
    List<String> queryGroupEmptyStock(Integer crnNo);
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -12,7 +12,7 @@
     * 检索可用库位
     */
    List<LocMast> queryFreeLocMast(List<Integer> rows, Integer rowsLen, Short locType1);
    List<LocMast> queryFreeLocMast2(List<Integer> rows, Integer rowsLen, Short locType1,Boolean inoutEveryday);
    List<LocMast> queryFreeLocMast0(List<Integer> rows, Integer rowsLen, Short locType1,Boolean inoutEveryday);
    /**
     * 获取同组货架的空库位
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -31,8 +31,8 @@
        return this.baseMapper.queryFreeLocMast(rows, rowsLen, locType1);
    }
    @Override
    public List<LocMast> queryFreeLocMast2(List<Integer> rows, Integer rowsLen, Short locType1,Boolean inoutEveryday) {
        return this.baseMapper.queryFreeLocMast2(rows, rowsLen, locType1,inoutEveryday);
    public List<LocMast> queryFreeLocMast0(List<Integer> rows, Integer rowsLen, Short locType1,Boolean inoutEveryday) {
        return this.baseMapper.queryFreeLocMast0(rows, rowsLen, locType1,inoutEveryday);
    }
    @Override
src/main/java/com/zy/common/service/CommonService.java
@@ -145,6 +145,17 @@
        // 目标库位
        LocMast locMast = null;
        boolean inoutEveryday = false;
        if (!Cools.isEmpty(matNos)) {
            for (String matNo : matNos) {
                Mat mat = matService.selectByMatnr(matNo);
                if (mat.getInoutEveryday() != null && mat.getInoutEveryday()) {
                    inoutEveryday = true;
                    break;
                }
            }
        }
        // 靠近摆放规则 --- 同天同规格物料
        if (!Cools.isEmpty(matNos) && matNos.size() == 1) {
            List<String> locNos = locDetlService.getSameDetl(matNos.get(0), start, end);
@@ -275,12 +286,7 @@
        // 1.当检索库排为浅库位排时,优先寻找当前库排的深库位排
        if (locMast == null) {
            List<Integer> rows = Utils.getGroupLoc(curRow);
            Mat mat = matService.selectByMatnr(matNos.get(0));
            if (Cools.isEmpty(mat.getInoutEveryday())){
                mat.setInoutEveryday(false);
            }
            List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), locTypeDto.getLocType1());
            List<LocMast> locMasts = locMastService.queryFreeLocMast0(rows, rows.size(), locTypeDto.getLocType1(), inoutEveryday);
            if (!Cools.isEmpty(locMasts)) {
                Integer innermostRow = Utils.getInnermostRow(locMasts.get(0).getLocNo());
                for (LocMast one : locMasts) {
src/main/resources/mapper/LocMastMapper.xml
@@ -77,45 +77,47 @@
        )
    </select>
    <select id="queryFreeLocMast2" resultMap="BaseResultMap">
    <select id="queryFreeLocMast0" resultMap="BaseResultMap">
        select
        *
        from asr_loc_mast
        where 1=1
        <if test="inoutEveryday == false ">
            and bay1 > 10
        </if>
        <if test="inoutEveryday == true">
            and bay1 &lt; 11
        </if>
        and row1 in
        <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and ctn_no =
        (
        select
        top 1
        ctn_no
        from (
        select
        ctn_no,
        count(1) as count
        from asr_loc_mast
        where 1=1
        and row1 in
        <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
            #{item}
        </foreach>
        and loc_sts = 'O'
        <if test="locType1 != null">
            and loc_type1 = #{locType1}
        </if>
        and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
        group by ctn_no
        ) a
        where count = #{rowsLen}
        order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
            select
            top 1
            ctn_no
            from (
                select
                ctn_no,
                count(1) as count
                from asr_loc_mast
                where 1=1
                and row1 in
                <foreach item="item" collection="rows" index="index"  separator="," open="(" close=")">
                    #{item}
                </foreach>
                and loc_sts = 'O'
                <if test="locType1 != null">
                    and loc_type1 = #{locType1}
                </if>
                <choose>
                    <when test="inoutEveryday != null and inoutEveryday">
                        AND row1 &lt; 11
                    </when>
                    <otherwise>
                        AND row1 > 10
                    </otherwise>
                </choose>
                and loc_no not in ('0100101', '0200101', '0300101', '1200701', '1300701', '1400701', '1900401', '2000401', '2100401')
                group by ctn_no
            ) a
            where count = #{rowsLen}
            order by right(ctn_no, 2) + 0 asc, left(ctn_no, 3) + 0 asc
        )
    </select>