From d0a5fb426796e85f7fcacc5e52b84c60509ec12b Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 11 八月 2020 11:18:43 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 101 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 4f0f320..ff24995 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/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; @@ -7,18 +8,16 @@ import com.zy.asrs.entity.*; import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.mapper.WrkMastMapper; -import com.zy.asrs.service.BasCrnpService; -import com.zy.asrs.service.LocMastService; -import com.zy.asrs.service.StaDescService; -import com.zy.asrs.service.WrkDetlService; +import com.zy.asrs.service.*; import com.zy.common.model.StartupDto; -import com.zy.core.Slave; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.CrnStatusType; import com.zy.core.enums.SlaveType; +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; @@ -58,6 +57,8 @@ private StaDescService staDescService; @Autowired private BasCrnpService basCrnpService; + @Autowired + private BasDevpService basDevpService; @Autowired private JdbcTemplate jdbcTemplate; @@ -244,7 +245,7 @@ StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo()); if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { // 鏌ヨ宸ヤ綔妗� - WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(staProtocol.getSiteId()); + WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId()); if (wrkMast == null) { continue; } @@ -294,7 +295,7 @@ * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈虹珯鍒板簱浣� 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 */ public void crnIoExecute(){ - for (Slave crn : slaveProperties.getCrn()) { + for (CrnSlave crn : slaveProperties.getCrn()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); @@ -302,25 +303,25 @@ if (basCrnp == null) { continue; } - // 鍙湁褰撳爢鍨涙満绌洪棽 鎴栬�� 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if (crnProtocol.getStatusType() == CrnStatusType.IDLE || crnProtocol.getTaskNo() == 0) { + // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0) { // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 if (crnProtocol.getLastIo().equals("I")) { if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc(); // 鍏ュ簱 + this.crnStnToLoc(crn); // 鍏ュ簱 crnProtocol.setLastIo("O"); } else if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn(); // 鍑哄簱 + this.locToCrnStn(crn); // 鍑哄簱 crnProtocol.setLastIo("I"); } } // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 else if (crnProtocol.getLastIo().equals("O")) { if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn(); // 鍑哄簱 + this.locToCrnStn(crn); // 鍑哄簱 crnProtocol.setLastIo("I"); } else if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc(); // 鍏ュ簱 + this.crnStnToLoc(crn); // 鍏ュ簱 crnProtocol.setLastIo("O"); } } @@ -334,15 +335,98 @@ /** * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� */ - private void crnStnToLoc(){ + private void crnStnToLoc(CrnSlave slave){ + for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { + boolean flag = false; + // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍏ュ簱搴� ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining().equals("Y")) { + flag = true; + } + if (!flag) { + continue; + } + // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo()); + if(null == wrkMast) { + log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + continue; + } + // 鑾峰彇搴撲綅淇℃伅 + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + if (locMast == null) { + log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo()); + continue; + } + if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) { + log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + continue; + } + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// 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)); + } + } } /** * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� */ - private void locToCrnStn(){ + private void locToCrnStn(CrnSlave slave){ + for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { + // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId()); + if (wrkMast == null) { + continue; + } + // 宸ヤ綔妗g姸鎬佸垽鏂� + if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){ + log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType()); + continue; + } + // 鑾峰彇婧愬簱浣嶄俊鎭� + LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo()); + if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) { + log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts()); + continue; + } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting().equals("Y") + && staProtocol.getWorkNo() == 0) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task<>(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } + } + } } /** @@ -356,7 +440,7 @@ * 鎵ц瀵瑰伐浣滄。鐨勫叆搴撳畬鎴� */ public void storeFinished() { - for (Slave crn : slaveProperties.getCrn()) { + for (CrnSlave crn : slaveProperties.getCrn()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); @@ -368,7 +452,7 @@ * 鏇存柊鍫嗗灈鏈虹Щ鍔ㄦ椂宸ヤ綔妗g姸鎬� */ public void updateCrnMove() { - for (Slave crn : slaveProperties.getCrn()) { + for (CrnSlave crn : slaveProperties.getCrn()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); -- Gitblit v1.9.1