src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WrkMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/WrkMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -129,4 +129,6 @@ WrkMast selectByWrkNo(Integer wrkNo); WrkMast getLastWrkMast105(); } src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -22,4 +22,6 @@ WrkMast selectByworkNo(Short workNo); WrkMast selectByworkNo(Integer workNo); WrkMast getLastWrkMast105(); } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -51,6 +51,8 @@ import java.util.*; import java.util.stream.Collectors; import static com.zy.common.utils.RandomValidateCodeUtil.code; /** * 立体仓库WCS系统主流程业务 * Created by vincent on 2020/8/6 @@ -3718,6 +3720,48 @@ } public synchronized void getNeed() { for (DevpSlave devp : slaveProperties.getDevp()) { if (devp.getId() != 2) { continue; } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); if (devpThread.isCalled == 1) { try { String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/process/loc/v1") .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { log.info("任务下发成功"); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, null)); } else { log.error("请求接口失败!!!url:{};response:{}", wmsUrl + "/mobile/comb/auth", response); } Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } } if (devpThread.isFinish == 1) { Integer weight = devpThread.weight; Integer isHalf = devpThread.isHalf; WrkMast lastWrkMast105 = wrkMastService.getLastWrkMast105(); if (Cools.isEmpty(lastWrkMast105)) continue; List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(lastWrkMast105.getWrkNo()); if (!Cools.isEmpty(wrkDetls)) { for (WrkDetl wrkDetl : wrkDetls) { wrkDetl.setWeight(weight.doubleValue()); wrkDetlService.updateById(wrkDetl); } } boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, null)); } } } public void CreateComb(String barcode,String code,Integer wrkNo,String batch,DevpSlave.Sta inSta) throws IOException { Double anfme = 0d; Double weight = 0d; src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -71,4 +71,9 @@ public WrkMast selectByworkNo(Integer workNo) { return this.baseMapper.selectByWrkNo(workNo); } @Override public WrkMast getLastWrkMast105() { return this.baseMapper.getLastWrkMast105(); } } src/main/java/com/zy/core/MainProcess.java
@@ -86,6 +86,7 @@ mainService.RGV2TaskOver(); //二期组托 mainService.generateStoreWrkFile2(); mainService.getNeed(); } catch (Exception e) { src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -42,6 +42,12 @@ private SiemensS7Net siemensS7Net; private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; public Integer isCalled = 0; public Integer isFinish = 0; public ArrayList<Integer> weights = new ArrayList<>(); public Integer weight = 0; public ArrayList<Integer> halfs = new ArrayList<>(); public Integer isHalf = 0; public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ @@ -259,6 +265,18 @@ switch (slave.getId()){ case 2: write2106((StaProtocol)task.getData());break; } break; case 4: switch (slave.getId()){ case 2: writeIsCalled();break; } case 5: switch (slave.getId()){ case 2: writeIsFinish();break; } break; @@ -511,6 +529,29 @@ staProtocol.setBatch(batch); } } // 空桶出库信号 OperateResultExOne<byte[]> readCall = siemensS7Net.Read("DB102", (short) 4); if (readCall.IsSuccess){ Integer isNeed = siemensS7Net.getByteTransform().TransInt32(result.Content, 0); // IBC要桶信号 Integer isFinish = siemensS7Net.getByteTransform().TransInt32(result.Content, 2); // IBC灌装完成信号 Integer weight = siemensS7Net.getByteTransform().TransInt32(result.Content, 4); // IBC灌装重里 Integer isAHalf = siemensS7Net.getByteTransform().TransInt32(result.Content, 6); // IBC半桶标记 isCalled = isNeed; isFinish = isFinish; } // 完成罐装信号 OperateResultExOne<byte[]> finish = siemensS7Net.Read("DB105.240", (short) 4); if (finish.IsSuccess){ short amount = siemensS7Net.getByteTransform().TransInt16(result.Content, 0); // isCalled = amount; } // if (isCalled == 1) { // writeIsCalled(); // } OperateResultExOne<byte[]> readWeight = siemensS7Net.Read("DB101.260", (short) 2); if (readWeight.IsSuccess){ @@ -837,6 +878,16 @@ log.info("输送线命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), JSON.toJSON(staProtocol)); } } private void writeIsCalled() throws InterruptedException { OperateResult write = siemensS7Net.Write("DB102.0" , 0); // 工作号 } private void writeIsFinish() throws InterruptedException { OperateResult finish = siemensS7Net.Write("DB102.2" , 0); // 工作号 OperateResult half = siemensS7Net.Write("DB102.6" , 0); // 工作号 } /** * 写入 ID+目标站 =====> 单站点写入 */ src/main/resources/mapper/WrkMastMapper.xml
@@ -210,4 +210,11 @@ <select id="selectCrn5Task2" resultMap="BaseResultMap"> select * from dbo.asr_wrk_mast where wrk_sts=1 and io_type=1 and crn_no=5 order by io_pri desc,io_time,wrk_no ASC </select> <select id="getLastWrkMast105" resultMap="BaseResultMap"> SELECT TOP 1 mast.* FROM asr_wrk_mast mast JOIN asr_wrk_detl detl ON mast.wrk_no = detl.wrk_no AND mast.io_type = 105 AND mast.wrk_sts = 14 AND detl.weight is null ORDER BY mast.modi_time </select> </mapper>