| .idea/zy-asrs.iml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/mapper/LocMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/LocMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/CheckDeepScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/LocMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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>