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/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/LocMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -30,10 +30,14 @@ LocMast queryDemoSourceLoc(@Param("crnNo") Integer crnNo); LocMast queryDemoSourceLoc1(@Param("crnNo") Integer crnNo); LocMast queryDemoLoc(@Param("crnNo") Integer crnNo); LocMast queryDemoLoc0(@Param("crnNo") Integer crnNo, @Param("locType1") short locType1); LocMast queryDemoLoc2(@Param("crnNo") Integer crnNo, @Param("locType1") short locType1); @Select("select count(*) as count from asr_loc_mast where 1=1 and loc_sts = 'O' and loc_type1 = #{locType1} and crn_no = #{crnNo}") Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo); src/main/java/com/zy/asrs/service/LocMastService.java
@@ -31,6 +31,8 @@ */ LocMast queryDemoSourceLoc(Integer crn); LocMast queryDemoSourceLoc1(Integer crn); /** * 堆垛机演示获取目标库位 * @param crn @@ -46,6 +48,8 @@ */ LocMast queryDemoLoc0(Integer crn, short locType1); LocMast queryDemoLoc2(Integer crn, short locType1); /** * 检查当前库位所属巷道的空库位数量 * @param locMast src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -40,6 +40,11 @@ } @Override public LocMast queryDemoSourceLoc1(Integer crn) { return this.baseMapper.queryDemoSourceLoc1(crn); } @Override public LocMast queryDemoLoc(Integer crn) { return this.baseMapper.queryDemoLoc(crn); } @@ -50,6 +55,11 @@ } @Override public LocMast queryDemoLoc2(Integer crn, short locType1) { return this.baseMapper.queryDemoLoc2(crn,locType1); } @Override public Boolean checkEmptyCount(LocMast locMast) { if (locMast == null) { return false; src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1966,6 +1966,110 @@ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } /** * 堆垛机演示 ===>> 所有库位轮询 */ public synchronized void crnDemoOfLocMove2() { try { for (CrnSlave crn : slaveProperties.getCrn()) { if (!crn.getDemo()) { continue; } // 必须为演示状态 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } // 只有当堆垛机空闲 并且 无任务时才继续执行 if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { // 获取移库工作档信息 WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId()); if (null != wrkMast) { continue; } LocMast sourceLoc = locMastService.queryDemoSourceLoc1(crn.getId()); if (null == sourceLoc ) { continue; } LocMast loc = locMastService.queryDemoLoc2(crn.getId(),sourceLoc.getLocType1()); if ( null == loc) { continue; } String sourceLocNo = sourceLoc.getLocNo(); String locNo = loc.getLocNo(); // 获取工作号 int workNo = commonService.getWorkNo(0); // 保存工作档 wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(11); // 入出库状态: 11.库格移载 wrkMast.setIoPri(13D); wrkMast.setCrnNo(crn.getId()); wrkMast.setSourceLocNo(sourceLocNo); // 源库位 wrkMast.setLocNo(locNo); // 目标库位 wrkMast.setFullPlt("N"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 空板 wrkMast.setBarcode(sourceLoc.getBarcode()); // 托盘码 wrkMast.setLinkMis("N"); wrkMast.setAppeTime(new Date()); wrkMast.setModiTime(new Date()); int res = wrkMastMapper.insert(wrkMast); if (res == 0) { throw new CoolException("保存工作档失败"); } // 工作档明细保存 // List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); // for (LocDetl locDetl : locDetls) { // WrkDetl wrkDetl = new WrkDetl(); // wrkDetl.setWrkNo(workNo); // wrkDetl.setIoTime(new Date()); // wrkDetl.setAnfme(locDetl.getAnfme()); // VersionUtils.setWrkDetl(wrkDetl, locDetl); // 版本控制 // wrkDetl.setAppeTime(new Date()); // wrkDetl.setModiTime(new Date()); // if (!wrkDetlService.insert(wrkDetl)) { // throw new CoolException("保存工作档明细失败"); // } // } // 修改源库位状态 if (sourceLoc.getLocSts().equals("D")) { sourceLoc.setLocSts("R"); // R.出库预约 sourceLoc.setModiTime(new Date()); if (!locMastService.updateById(sourceLoc)) { throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败"); } // 修改目标库位状态 if (loc.getLocSts().equals("O")) { loc.setLocSts("S"); // S.入库预约 loc.setModiTime(new Date()); if (!locMastService.updateById(loc)) { throw new CoolException("更新目标库位状态失败"); } } else { throw new CoolException("移转失败"); } } } } catch (Exception e) { log.error("堆垛机演示 ===>> 库位移转失败", e); e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } /** * 堆垛机命令下发后,异步修改工作档状态 src/main/java/com/zy/core/MainProcess.java
@@ -46,6 +46,9 @@ // 演示 mainService.crnDemoOfLocMove1(); // 演示 所有库位轮询 mainService.crnDemoOfLocMove2(); // 入出库模式切换函数 // mainService.ioConvert(); src/main/resources/mapper/LocMastMapper.xml
@@ -54,13 +54,24 @@ ORDER BY NEWID() </select> <select id="queryDemoSourceLoc1" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts='D' </select> <select id="queryDemoLoc" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O' ORDER BY NEWID() </select> <select id="queryDemoLoc0" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O'and loc_type1 = #{locType1} select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O' and loc_type1 = #{locType1} ORDER BY NEWID() </select> <select id="queryDemoLoc2" resultMap="BaseResultMap"> select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O' and loc_type1 = #{locType1} and ctn_kind=0 ORDER BY bay1,row1,lev1 </select> </mapper>