src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/CrnCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -24,6 +24,10 @@ @Select("select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC") WrkMast selectPakInStep1(@Param("sourceStaNo")Integer sourceStaNo, @Param("barcode")String barcode); // 入库第二步,当托盘物料在堆垛机入库站时时查询 @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no={crnNo} and wrk_no={workNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC") WrkMast selectPakInStep2(@Param("crnNo")Integer crnNo, @Param("workNo")Integer workNo); // 拣料再入库时,站点有物且需求时查询 @Select("select top 1 * from asr_wrk_mast where wrk_no=#{workNo} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)") WrkMast selectPickStep(@Param("workNo")Integer workNo); src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,5 +1,6 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; @@ -19,6 +20,7 @@ import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; @@ -348,9 +350,36 @@ if (!flag) { return; } WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); // 获取工作状态为2(设备上走)的入库工作档 WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo()); if(null == wrkMast) { log.error("查询无待入库数据--wrk_sts=2, 工作号={}", staProtocol.getWorkNo()); return; } // 获取库位信息 LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); if (locMast == null) { log.error("查询库存无数据--库位号{}", wrkMast.getLocNo()); return; } if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) { log.error("库位状态不符合--状态, 库位号={},库位状态={}", wrkMast.getLocNo(), locMast.getLocSts()); return; } // 命令下发区 -------------------------------------------------------------------------- // CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, slave.getId()); // CrnProtocol crnProtocol = crnThread.getCrnProtocol(); CrnCommand crnCommand = new CrnCommand(); crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号 crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 排 crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 列 crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 层 if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task<>(2, crnCommand))) { log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); throw new CoolException("更新堆垛机信息失败"); } } } src/main/java/com/zy/core/model/command/CrnCommand.java
New file @@ -0,0 +1,55 @@ package com.zy.core.model.command; import lombok.Data; /** * 堆垛机命令报文 * Created by vincent on 2020/8/11 */ @Data public class CrnCommand { // 堆垛机号 private Integer crnNo; // 任务下发确认位 private Short stb; // 任务完成确认位 private Short ackFinish; // 任务号 private Short taskNo; /** * 任务模式: * 0 = 无 * 1 = 入库 * 2 = 出库 * 3 = 库位移转 * 4 = 站位移转 * 5 = 回原点 * 6 = 去反原点 * 7 = 坐标移行 */ private Short taskMode; // 源位置排号 private Short sourcePosX; // 源位置列号 private Short sourcePosY; // 源位置层号 private Short sourcePosZ; // 目标位置排号 private Short destinationPosX; // 目标位置列号 private Short destinationPosY; // 目标位置层号 private Short destinationPosZ; }