src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/WrkMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -74,4 +74,17 @@ WrkMast selectWorkingPakout(); /** * 堆垛机是否存在出库任务 * @param crnNo * @return */ WrkMast selectCrnWorking(@Param("crnNo")Integer crnNo); /** * 输送线是否存在入库任务 * @param crnNo * @return */ WrkMast selectDevWorking(@Param("crnNo")Integer crnNo); } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -89,6 +89,8 @@ private BasCrnErrorMapper basCrnErrorMapper; @Value("${wms.url}") private String wmsUrl; @Value("${crnBackHp.enable}") private boolean crnBackHp; /** * 组托 @@ -549,10 +551,60 @@ } // 库位移转 this.locToLoc(crn, crnProtocol); if (crnBackHp) { //堆垛机没有执行中任务,设备存在入库任务时叫回原点 this.crnRebackHp(crn, crnProtocol); } } } /** * 回原点,堆垛机没有执行中任务,设备存在入库任务时叫回原点 * @param slave * @param crnProtocol */ public void crnRebackHp(CrnSlave slave, CrnProtocol crnProtocol){ // 堆垛机控制过滤 if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0 || crnProtocol.getModeType() != CrnModeType.AUTO) { return; } // 已经存在吊车执行任务时,则过滤 if (wrkMastMapper.selectWorking(slave.getId()) != null) { return; } //堆垛机有执行中任务,过滤 if (wrkMastMapper.selectCrnWorking(slave.getId()) != null) { return; } //输送线没有入库任务,过滤 if (wrkMastMapper.selectDevWorking(slave.getId()) == null) { return; } // 命令下发区 -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 crnCommand.setTaskNo((short) 1); // 工作号 crnCommand.setAckFinish((short) 0); // 任务完成确认位 crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 任务模式: 回原点 crnCommand.setSourcePosX((short) 0); // 源库位排 crnCommand.setSourcePosY((short) 0); // 源库位列 crnCommand.setSourcePosZ((short) 0); // 源库位层 crnCommand.setDestinationPosX((short) 0); // 目标库位排 crnCommand.setDestinationPosY((short) 0); // 目标库位列 crnCommand.setDestinationPosZ((short) 0); // 目标库位层 if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { log.error("堆垛机回原点命令下发失败,堆垛机号={},任务数据={}", slave.getId(), JSON.toJSON(crnCommand)); } else { } } /** * 入库 ===>> 堆垛机站到库位 */ public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){ src/main/resources/application.yml
@@ -41,6 +41,10 @@ url: 10.10.10.238:8080/xgmwms # url: localhost:8082/xgmwms #堆垛机没有执行中任务,输送有入库任务,叫回原点 crnBackHp: enable: true # 下位机配置 wcs-slave: # 双深 @@ -170,9 +174,10 @@ inSta[0]: staNo: 176 barcode: ${wcs-slave.barcode[0].id} # inSta[1]: # staNo: 180 # barcode: ${wcs-slave.barcode[1].id} # 入库口2 inSta[1]: staNo: 180 barcode: ${wcs-slave.barcode[1].id} # 空板入库口1 emptyInSta[0]: staNo: 176 @@ -191,10 +196,10 @@ id: 1 ip: 10.10.10.52 port: 51236 # barcode[1]: # id: 2 # ip: 10.10.10.53 # port: 51236 barcode[1]: id: 2 ip: 10.10.10.53 port: 51236 # LED1 led[0]: id: 1 src/main/resources/mapper/WrkMastMapper.xml
@@ -140,5 +140,12 @@ order by io_time,wrk_no </select> <select id="selectCrnWorking" resultMap="BaseResultMap"> select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts in (3,4,11,12) and crn_no=#{crnNo} order by io_time,wrk_no </select> <select id="selectDevWorking" resultMap="BaseResultMap"> select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts=2 and crn_no=#{crnNo} order by io_time,wrk_no </select> </mapper>