自动化立体仓库 - WMS系统
18516761980
2022-06-16 775d4714ca9e650631659d7467f5c43dc021f931
Merge branch 'master' of https://gitee.com/luxiaotao1123/zy-asrs into hylyasrs

# Conflicts:
# src/main/java/com/zy/asrs/controller/MatCodeController.java
# src/main/java/com/zy/asrs/utils/VersionUtils.java
# src/main/java/com/zy/common/utils/excel/matcode/MatCodeExcel.java
# src/main/java/com/zy/common/utils/excel/matcode/MatCodeExcelListener.java
# src/main/resources/application.yml
8个文件已修改
231 ■■■■ 已修改文件
.idea/zy-asrs.iml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocMastService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/CheckDeepScheduler.java 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/zy-asrs.iml
@@ -20,7 +20,7 @@
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.3.RELEASE" level="project" />
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -29,4 +29,12 @@
    Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("locType2") Short locType2, @Param("locType3") Short locType3, @Param("crnNo") Integer crnNo);
    List<LocMast> queryShallowLocFMast();
    List<LocMast> queryNeedMoveShallLocF();
    List<LocMast> queryNeedMoveShallLocD();
    LocMast queryEmptyDeepLoc();
    List<LocMast> queryDeepLocDMast();
}
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -49,4 +49,12 @@
    LocMast queryFreeLocMastExceptFirst(Integer row, Short locType1, Short locType2, Short locType3);
    public List<LocMast> queryShallowLocFMast();
    public List<LocMast> queryNeedMoveShallLocF();
    public List<LocMast> queryNeedMoveShallLocD();
    public LocMast queryEmptyDeepLoc();
    public List<LocMast> queryDeepLocDMast();
}
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -62,4 +62,24 @@
    public List<LocMast> queryShallowLocFMast() {
        return this.baseMapper.queryShallowLocFMast();
    }
    @Override
    public List<LocMast> queryNeedMoveShallLocF() {
        return this.baseMapper.queryNeedMoveShallLocF();
    }
    @Override
    public List<LocMast> queryNeedMoveShallLocD() {
        return this.baseMapper.queryNeedMoveShallLocD();
    }
    @Override
    public LocMast queryEmptyDeepLoc() {
        return this.baseMapper.queryEmptyDeepLoc();
    }
    @Override
    public List<LocMast> queryDeepLocDMast() {
        return this.baseMapper.queryDeepLocDMast();
    }
}
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -423,6 +423,15 @@
            // 获取工作号
            int workNo = commonService.getWorkNo(1);
            //2022-06-16 ADD, 出库库位如果是深库位1号货架,且对应浅库位也为D时,先出浅库位
            if(Utils.isDeepLoc(slaveProperties, locNo)){
                String shallow = Utils.getShallowLoc(slaveProperties,locNo);
                LocMast shallowLoc = locMastService.selectById(shallow);
                if(!Cools.isEmpty(shallowLoc) && shallowLoc.getLocSts().equals("D")){
                    locNo = shallowLoc.getLocNo();
                }
            }
            // 获取库位
            LocMast locMast = locMastService.selectById(locNo);
            if (Cools.isEmpty(locMast)) {
@@ -806,7 +815,11 @@
                locSts = "D";
            // 库位转移 ===>> D.空桶/空栈板
            } else if (wrkMast.getIoType() == 11) {
                locSts = "F";
                if(wrkMast.getEmptyMk().equals("Y")){
                    locSts = "D";
                }else {
                    locSts = "F";
                }
                // 库位转移:目标库位
                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                if (Cools.isEmpty(locMast)) {
@@ -836,7 +849,7 @@
        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
            // 保存工作明细档历史档
            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
            if (!wrkMast.getEmptyMk().equals("Y") && !wrkDetlLogService.save(wrkMast.getWrkNo())) {
                throw new CoolException("保存工作明细历史档失败, workNo = " + wrkMast.getWrkNo());
            }
            // 删除工作档明细
src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
@@ -28,10 +28,8 @@
    @Value("${wcs-slave.doubleDeep}")
    private boolean confirmDeep;
    @Value("${wcs-slave.doubleLocs}")
    private String deepLocs;
    @Value("${wcs-slave.shallowLocs}")
    private String shallowLocs;
    @Value("${scheduler.autoMove}")
    private boolean autoMove;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
@@ -49,6 +47,7 @@
    @Scheduled(cron = "0/30 * * * * ?")
    private void locMoveToDeep(){
        if (!confirmDeep) return;
        if (!autoMove) return;
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .eq("crn_no",1)
@@ -56,26 +55,90 @@
        );
        if (wrkMasts.size() > 0) return;
        //遍历库存中,浅库位状态F/D,深库位状态O的数据,生成库位移转工作档将浅库位移转到对应深库位中去
        List<LocMast> locMasts = locMastService.queryShallowLocFMast();
        if (null != locMasts) {
            for (LocMast sourceLoc : locMasts) {
                String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
                LocMast destLoc = locMastService.selectById(deep);
        if (null == locMasts) return;
        for (LocMast sourceLoc : locMasts){
            String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
            LocMast destLoc = locMastService.selectById(deep);
            if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                //查找源库位是否有转移任务,如果有,不生成库位移转
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                        .eq("source_loc_no", sourceLoc.getLocNo()));
                if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                        (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                    workService.locMove(sourceLoc.getLocNo(), deep, 1L);
                    break;
                if (!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                    //查找源库位是否有转移任务,如果有,不生成库位移转
                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                            .eq("source_loc_no", sourceLoc.getLocNo()));
                    if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                            (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                        workService.locMove(sourceLoc.getLocNo(), deep, 1L);
                        return;
                    }
                }
            }
        }
        //遍历库存中,浅库位状态F,深库位状态D的数据,生成库位移转工作档将浅库位移转到新的库位中去
        List<LocMast> locMasts1 = locMastService.queryNeedMoveShallLocF();
        if (null != locMasts1) {
            for (LocMast sourceLoc : locMasts1) {
                LocMast destLoc = locMastService.queryEmptyDeepLoc();
                if (!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                    //查找源库位是否有转移任务,如果有,不生成库位移转
                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                            .eq("source_loc_no", sourceLoc.getLocNo()));
                    if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                            (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                        workService.locMove(sourceLoc.getLocNo(), destLoc.getLocNo(), 1L);
                        return;
                    }
                }
            }
        }
        //遍历库存中,浅库位状态F,深库位状态D的数据,生成库位移转工作档将浅库位移转到新的库位中去
        List<LocMast> locMasts2 = locMastService.queryNeedMoveShallLocD();
        if (null != locMasts2) {
            for (LocMast sourceLoc : locMasts2) {
                LocMast destLoc = locMastService.queryEmptyDeepLoc();
                if (!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                    //查找源库位是否有转移任务,如果有,不生成库位移转
                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                            .eq("source_loc_no", sourceLoc.getLocNo()));
                    if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                            (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                        workService.locMove(sourceLoc.getLocNo(), destLoc.getLocNo(), 1L);
                        return;
                    }
                }
            }
        }
        //遍历库存中,深库位状态D,浅库位状态为O的深库位数据,生成库位移转工作档将两个D库位合并为深浅库位
        List<LocMast> locMasts3 = locMastService.queryDeepLocDMast();
        if (null != locMasts3) {
            for (LocMast sourceLoc : locMasts3) {
                List<LocMast> locMasts4 = locMastService.queryDeepLocDMast();
                for (LocMast deepLoc : locMasts4){
                    if(sourceLoc.getLocNo().equals(deepLoc.getLocNo())){
                        continue;
                    }
                    String shallow = Utils.getShallowLoc(slaveProperties, deepLoc.getLocNo());
                    LocMast destLoc = locMastService.selectById(shallow);
                    if (!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                        //查找源库位是否有转移任务,如果有,不生成库位移转
                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                                .eq("source_loc_no", sourceLoc.getLocNo()));
                        if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                                (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                            workService.locMove(sourceLoc.getLocNo(), destLoc.getLocNo(), 1L);
                            return;
                        }
                    }
                }
            }
        }
    }
    /**
src/main/resources/application.yml
@@ -61,4 +61,4 @@
  enabled: false
scheduler:
  autoMove: true
  autoMove: false
src/main/resources/mapper/LocMastMapper.xml
@@ -104,8 +104,79 @@
         from asr_loc_mast
         where 1=1
         and loc_sts = 'O'
         and row1 in (1,4,5,8,9,12,13,16,17,20)
         and row1 in (1)
        )
        and (loc_sts = 'F' or loc_sts = 'D')
        and (loc_sts = 'F' or loc_sts = 'D') and crn_no=1
    </select>
    <select id="queryNeedMoveShallLocF" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where 1=1
        and loc_no in (
         select
         concat(
         (
         case
         when left(loc_no, 2) = '01' then '02'
         end)
         , right(loc_no, 5)) as shallowLocNo
         from asr_loc_mast
         where 1=1
         and loc_sts = 'D'
         and row1 in (1)
        )
        and loc_sts = 'F' and crn_no=1
    </select>
    <select id="queryNeedMoveShallLocD" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where 1=1
        and loc_no in (
         select
         concat(
         (
         case
         when left(loc_no, 2) = '01' then '02'
         end)
         , right(loc_no, 5)) as shallowLocNo
         from asr_loc_mast
         where 1=1
         and loc_sts = 'F'
         and row1 in (1)
        )
        and loc_sts = 'D' and crn_no=1
    </select>
    <select id="queryEmptyDeepLoc" resultMap="BaseResultMap">
        select top 1 * from asr_loc_mast
        where 1=1
          and (loc_no in (
            select
                concat((case when left(loc_no, 2) = '02' then '01'end)
                    , right(loc_no, 5)) as deepLocNo
            from asr_loc_mast
            where 1=1 and loc_sts = 'O' and row1 in (2)
        ) or row1=3)
          and loc_sts = 'O' and crn_no = 1
        order by newid()
    </select>
    <select id="queryDeepLocDMast" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where 1=1
        and loc_no in (
         select
         concat(
         (
         case
         when left(loc_no, 2) = '02' then '01'
         end)
         , right(loc_no, 5)) as deepLocNo
         from asr_loc_mast
         where 1=1
         and loc_sts = 'O'
         and row1 in (2)
        )
        and loc_sts = 'D' and crn_no=1
    </select>
</mapper>