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/WorkService.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/java/com/zy/asrs/task/handler/CheckDeepHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/LocMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -22,4 +22,6 @@ Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo); List<LocMast> queryShallowLocFMast(@Param("crnNo") Integer crnNo); LocMast queryNeedMoveShallLoc(Integer crnNo); } src/main/java/com/zy/asrs/service/LocMastService.java
@@ -37,4 +37,7 @@ * @return */ List<LocMast> queryShallowLocFMast(Integer crnNo); public LocMast queryNeedMoveShallLoc(Integer crnNo); } src/main/java/com/zy/asrs/service/WorkService.java
@@ -97,4 +97,5 @@ void turnMatLocDetl(EmptyPlateOutParam param, Long userId); void locMove(String sourceLocNo, Long userId); } src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -52,4 +52,9 @@ public List<LocMast> queryShallowLocFMast(Integer crnNo) { return this.baseMapper.queryShallowLocFMast(crnNo); } @Override public LocMast queryNeedMoveShallLoc(Integer crnNo) { return this.baseMapper.queryNeedMoveShallLoc(crnNo); } } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -662,6 +662,90 @@ @Override @Transactional public void locMove(String sourceLocNo, Long userId) { LocMast sourceLoc = locMastService.selectById(sourceLocNo); List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); if (Cools.isEmpty(sourceLoc)){ throw new CoolException("未找到库位"); } // LocMast loc = locMastService.selectById(locNo); // if (Cools.isEmpty(loc)){ // throw new CoolException("未找到库位"); // } // if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){ // throw new CoolException("库位状态已改变"); // } // if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { // throw new CoolException("移转库位属于不同堆垛机"); // } Date now = new Date(); // 获取工作号 int workNo = commonService.getWorkNo(WorkNoType.PICK.type); // 保存工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(111); // 入出库状态: 111.库格移载(原) wrkMast.setIoPri(10D); wrkMast.setCrnNo(sourceLoc.getCrnNo()); wrkMast.setSourceLocNo(sourceLocNo); // 源库位 wrkMast.setLocNo(sourceLocNo); // 目标库位 wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 空板 wrkMast.setBarcode(sourceLoc.getBarcode()); // 托盘码 wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 工作档明细保存 for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(now); wrkDetl.setAnfme(locDetl.getAnfme()); wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); wrkDetl.setModiTime(now); wrkDetl.setModiUser(userId); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } } // 修改源库位状态 if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { sourceLoc.setLocSts("R"); // R.出库预约 sourceLoc.setModiUser(userId); sourceLoc.setModiTime(now); if (!locMastService.updateById(sourceLoc)){ throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败,状态:"+sourceLoc.getLocSts$()); } // // 修改目标库位状态 // if (loc.getLocSts().equals("O")) { // loc.setLocSts("S"); // S.入库预约 // loc.setModiTime(now); // loc.setModiUser(userId); // if (!locMastService.updateById(loc)) { // throw new CoolException("更新目标库位状态失败"); // } // } else { // throw new CoolException("移转失败,目标库位状态:"+loc.getLocSts$()); // } } @Override @Transactional public void completeWrkMast(String workNo, Long userId) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (Cools.isEmpty(wrkMast)){ @@ -671,7 +755,7 @@ throw new CoolException("当前工作档已完成"); } // 入库 + 库位转移 if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && (wrkMast.getIoType() == 11) || wrkMast.getIoType() == 111)) { wrkMast.setWrkSts(4L); // 出库 } else if (wrkMast.getWrkSts() > 10) { src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
@@ -46,10 +46,10 @@ /** * 将两个深库位合并为深浅库位,物料号相同,源库位入库日期早于目标库位对应深库位入库日期,库位状态都为F */ @Scheduled(cron = "0/30 * * * * ?") @Scheduled(cron = "0/5 * * * * ?") private void execute() throws ParseException { // if (!confirmDeep) return; if (true) return; //if (true) return; ReturnT<String> result = checkDeepHandler.start(); if (!result.isSuccess()) { src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java
@@ -45,9 +45,9 @@ @Transactional public synchronized ReturnT<String> start() { try { for (int crnNo = 1; crnNo < 3; crnNo++){ for (int crnNo = 1; crnNo < 5; crnNo++) { List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .eq("crn_no",crnNo) .eq("crn_no", crnNo) .last(" and wrk_sts in (2,3,4,11,12)") ); if (wrkMasts.size() > 0) continue; @@ -58,30 +58,47 @@ continue; } List<LocMast> locMasts = locMastService.queryShallowLocFMast(crnNo); if (null == locMasts) continue; 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); } } LocMast locMast = locMastService.queryNeedMoveShallLoc(crnNo); // LocMast targetLoc = locMastService.queryEmptyDeepLoc(crnNo); if (!Cools.isEmpty(locMast)) { workService.locMove(locMast.getLocNo(), 1L); } } return SUCCESS; // //暂停移库 // BasCrnp crnp = basCrnpService.selectById(crnNo); // if(!Cools.isEmpty(crnp) && !Cools.isEmpty(crnp.getTankQty()) && crnp.getTankQty()==0){ // continue; // } // // List<LocMast> locMasts = locMastService.queryShallowLocFMast(crnNo); // if (null == locMasts) continue; // // 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); // // } // } // } // } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } /** src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -399,6 +399,16 @@ } } break; case 111: if (locMast.getLocSts().equals("R")) { wrkMast.setWrkSts(4L); wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("更新出库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } return SUCCESS; } default: break; } src/main/resources/mapper/LocMastMapper.xml
@@ -75,4 +75,14 @@ ) and (loc_sts = 'F' or loc_sts = 'D') and crn_no = #{crnNo} </select> <select id="queryNeedMoveShallLoc" resultMap="BaseResultMap"> SELECT TOP 1 * FROM asr_loc_mast WHERE crn_no = #{crnNo} AND (loc_sts = 'F' OR loc_sts = 'D') and inv_wh = '0' order by bay1,lev1 </select> </mapper>