From 1b9f41e12e3ee8ac8bbc388eab7585300bdab75a Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期二, 27 五月 2025 16:57:35 +0800 Subject: [PATCH] #ZH --- src/main/java/com/zy/asrs/controller/SiteController.java | 2 src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java | 16 ++ src/main/java/com/zy/asrs/controller/RgvController.java | 18 ++ src/main/java/com/zy/asrs/controller/OpenController.java | 15 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 78 +++++++++ src/main/java/com/zy/core/cache/RgvErrCache.java | 102 ++++++++++++ src/main/java/com/zy/core/cache/CrnErrCache.java | 101 ++++++++++++ src/main/java/com/zy/asrs/controller/CrnController.java | 1 src/main/java/com/zy/core/DevpThread.java | 1 pom.xml | 12 src/main/java/com/zy/core/model/protocol/CrnProtocol.java | 1 src/main/webapp/views/deviceOperate/rgvOperate.html | 4 src/main/java/com/zy/core/model/protocol/StaProtocol.java | 1 src/main/java/com/zy/core/thread/RgvThread.java | 62 +++++++ src/main/java/com/zy/core/thread/SiemensCrnThread.java | 9 + src/main/webapp/views/deviceOperate/devpOperate.html | 8 + src/main/java/com/zy/core/model/protocol/CrnErrProtocol.java | 16 ++ src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java | 2 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 1 src/main/webapp/views/deviceOperate/crnOperate.html | 4 src/main/java/com/zy/asrs/domain/vo/CrnListVo.java | 1 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 11 + 22 files changed, 445 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index bf09a9c..2b6fe46 100644 --- a/pom.xml +++ b/pom.xml @@ -61,12 +61,12 @@ <!-- </dependency>--> <!-- 鏄惧紡鎺掗櫎slf4j-simple --> -<!-- <dependency>--> -<!-- <groupId>org.slf4j</groupId>--> -<!-- <artifactId>slf4j-simple</artifactId>--> -<!-- <version>1.7.30</version>--> -<!-- <scope>provided</scope> <!– 鎴栫洿鎺ュ垹闄よ渚濊禆 –>--> -<!-- </dependency>--> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>1.7.30</version> + <scope>provided</scope> <!-- 鎴栫洿鎺ュ垹闄よ渚濊禆 --> + </dependency> <dependency> <groupId>com.dameng</groupId> <artifactId>DmJdbcDriver8</artifactId> diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java index cd1ae7f..4a7dc85 100644 --- a/src/main/java/com/zy/asrs/controller/CrnController.java +++ b/src/main/java/com/zy/asrs/controller/CrnController.java @@ -303,6 +303,7 @@ } } vo.setLaneNo(crnProtocol.getLaneNo()); // + vo.setErrorCrn(crnProtocol.getErrCrn()); // vo.setXspeed(crnProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) vo.setYspeed(crnProtocol.getYSpeed()); // 鍗囬檷閫熷害锛坢/min) vo.setZspeed(crnProtocol.getZSpeed()); // 鍙夌墮閫熷害锛坢/min) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index ee44e22..33e41cb 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -551,13 +551,14 @@ basRgvWmsParam.setStatusType(rgvStatus.getStatusType().desc); basRgvWmsParam.setSteNo(rgvSlave.getId()); basRgvWmsParam.setSteErr(rgvStatus.getAlarm().longValue()); - try{ - BasRgvErr basRgvErr = basRgvErrService.selectById((long)rgvStatus.getAlarm$()); - - basRgvWmsParam.setSteErrM(basRgvErr.getErrName()); - } catch (Exception e){ - basRgvWmsParam.setSteErrM("鏈煡寮傚父"); - } + basRgvWmsParam.setSteErrM(rgvStatus.getAlarmM()); +// try{ +// BasRgvErr basRgvErr = basRgvErrService.selectById((long)rgvStatus.getAlarm$()); +// +// basRgvWmsParam.setSteErrM(basRgvErr.getErrName()); +// } catch (Exception e){ +// basRgvWmsParam.setSteErrM("鏈煡寮傚父"); +// } if (rgvStatus.getMode()!=1){ basRgvWmsParam.setSteErr(999L); basRgvWmsParam.setSteErrM("闈炶嚜鍔紒锛侊紒"); diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java index b76d1f2..112568f 100644 --- a/src/main/java/com/zy/asrs/controller/RgvController.java +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; +import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.entity.BasDevpPosition; import com.zy.asrs.service.BasDevpPositionService; +import com.zy.core.cache.RgvErrCache; import com.zy.core.cache.RgvStatusCache; import com.zy.core.cache.SlaveConnection; import com.zy.core.cache.TaskProtocolCache; @@ -46,6 +48,7 @@ map2.put("rgvPos", rgvProtocol.getRgvPos()); map2.put("rgvPosDestination", rgvProtocol.getRgvPosDestination()); map2.put("loaded", rgvProtocol.getLoaded().equals((short)-1)? "鏈煡":rgvProtocol.getLoaded()==1? "鏈夌墿":"鏃犵墿"); + map2.put("errorRgv", RgvErrCache.getErrorDev(rgvProtocol.getRgvNo())); res.add(map2); } return R.ok().add(res); @@ -113,6 +116,9 @@ } if (rgvPosDestination == null || rgvPosDestination == 0){ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoPut)); + if (Cools.isEmpty(basDevpPosition)){ + return R.error("鐩爣绔欑偣涓嶅瓨鍦�"); + } rgvPosDestination = basDevpPosition.getPlcPosition(); } RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo); @@ -168,6 +174,9 @@ } BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoPut)); + if (Cools.isEmpty(basDevpPosition)){ + return R.error("鐩爣绔欑偣涓嶅瓨鍦�"); + } //鎵ц issuedPut.setTaskNo(Long.valueOf(taskNo)); issuedPut.setTaskStatus(3); @@ -210,6 +219,9 @@ } BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoTake)); + if (Cools.isEmpty(basDevpPosition)){ + return R.error("鍙栬揣绔欑偣涓嶅瓨鍦�"); + } //鎵ц issuedTake.setTaskNo(Long.valueOf(taskNo)); issuedTake.setTaskStatus(2); @@ -257,6 +269,9 @@ } BasDevpPosition basDevpPositionTake = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoTake)); + if (Cools.isEmpty(basDevpPositionTake)){ + return R.error("鍙栬揣绔欑偣涓嶅瓨鍦�"); + } //鎵ц issuedTake.setTaskNo(Long.valueOf(taskNo)); issuedTake.setTaskStatus(2); @@ -268,6 +283,9 @@ issuedTake.setDirection(basDevpPositionTake.getRgvSign()==1); BasDevpPosition basDevpPositionPut = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoPut)); + if (Cools.isEmpty(basDevpPositionPut)){ + return R.error("鐩爣绔欑偣涓嶅瓨鍦�"); + } //鎵ц issuedPut.setTaskNo(Long.valueOf(taskNo)); issuedPut.setTaskStatus(3); diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java index cdb066b..076c199 100644 --- a/src/main/java/com/zy/asrs/controller/SiteController.java +++ b/src/main/java/com/zy/asrs/controller/SiteController.java @@ -113,6 +113,8 @@ vo.setStaNo(staProtocol.getStaNo()); // 鐩爣绔� // vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "浣�" : "楂�"); //楂樹綆搴撲綅 vo.setLocType1(devp.getDevNo()==102 ? "楂�" : "浣�"); + vo.setWeight(staProtocol.getGrossWt().toString()); + vo.setErrorDev(staProtocol.getErrorDev()); } return R.ok().add(list); } diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java index bff0249..fe895e9 100644 --- a/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java @@ -112,6 +112,7 @@ // 鍙嚭 private String outEnable; + private String errorCrn; public void setXspeed(Float xspeed) { this.xspeed = Utils.scale(xspeed); diff --git a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java index 4fa183e..df7b847 100644 --- a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java @@ -37,5 +37,7 @@ //楂樹綆搴撲綅 private String locType1 = "-"; + private String weight = "-"; + private String errorDev = "-"; private String car = "-"; } 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 7ab88ac..585322f 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -128,7 +128,7 @@ // 灏哄妫�娴嬪紓甯� boolean back = false; - String errMsg = ""; + String errMsg = "-"; if (staProtocol.getGrossWt()>=600){ errMsg = "瓒呴噸"; back = true; @@ -177,6 +177,7 @@ staProtocol.setWorkNo(9999); staProtocol.setStaNo(inSta.getBackSta()); devpThread.setPakMk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), errMsg); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); if (taskWrk != null) { @@ -217,6 +218,7 @@ staProtocol.setWorkNo(taskWrk1.getWrkNo()); staProtocol.setStaNo(staProtocol.getSiteId()); devpThread.setPakMkWalk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), errMsg); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } } @@ -252,6 +254,7 @@ staProtocol.setStaNo(inSta.getBackSta()); devpThread.setPakMk(staProtocol.getSiteId(), false); devpThread.setPakMkWalk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), e.getMessage()); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); continue; } @@ -270,6 +273,8 @@ if (!Cools.isEmpty(jsonObject.getInteger("code")) && jsonObject.getInteger("code").equals(200)) { try { devpThread.setPakMk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), "涓婃姤鎴愬姛绛夊緟浠诲姟"); + } catch (Exception e) { // 閫�鍥� log.error("鎵爜妫�娴嬬▼搴忓紓甯�" + inSta.getStaNo() + errMsg); @@ -278,9 +283,18 @@ staProtocol.setWorkNo(9999); staProtocol.setStaNo(inSta.getBackSta()); devpThread.setPakMk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), "涓婃姤鎴愬姛閿佸畾澶辫触"); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } + } else { + // 閫�鍥� + staProtocol.setWorkNo(9999); + staProtocol.setStaNo(inSta.getBackSta()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), jsonObject.getString("msg")); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } } else { // 閫�鍥� @@ -289,6 +303,7 @@ staProtocol.setWorkNo(9999); staProtocol.setStaNo(inSta.getBackSta()); devpThread.setPakMk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), "鎵爜鍏ュ簱鎵爜澶辫触锛侊紒锛佹壂鐮佸�硷細"+barcode); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); if (taskWrk != null) { @@ -558,6 +573,7 @@ staProtocol.setWorkNo(taskWrk1.getWrkNo()); staProtocol.setStaNo(BarcodeUtils.getStaNo(staProtocol.getSiteId())); devpThread.setPakMkWalk(staProtocol.getSiteId(), false); + devpThread.setErrorDev(staProtocol.getSiteId(), "-"); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); Date now = new Date(); @@ -721,8 +737,19 @@ crnProtocol.setLastIo("O"); } } + } else { + if (crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getStatusType() == CrnStatusType.IDLE){ + if (crnProtocol.getTaskNo() != 0){ + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "宸ヤ綔鍙蜂笉涓�0"); + } + if (crnProtocol.getLoaded() != 0){ + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杞借揣鍙版湁鐗�"); + } + if (crnProtocol.getForkPos() != 0){ + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "璐у弶浣嶇疆涓嶅湪涓綅"); + } + } } - } } @@ -765,12 +792,20 @@ } // 鍫嗗灈鏈烘帶鍒惰繃婊� - if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) { + devpThread.setErrorDev(staProtocol.getSiteId(), "鍫嗗灈鏈洪潪绌洪棽"); + continue; + } + if (crnProtocol.getTaskNo() != 0) { + devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄伐浣滃彿涓嶄负0"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "宸ヤ綔鍙蜂笉涓�0"); continue; } // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) { + devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟"); continue; } @@ -832,9 +867,15 @@ // crnCommand.setCommand((short) 1); if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触"); + throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); } else { try { + devpThread.setErrorDev(staProtocol.getSiteId(), "-"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-"); + taskWrkService.updateById(taskWrk); } catch (Exception e) { log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); @@ -923,12 +964,21 @@ // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- // 鍫嗗灈鏈烘帶鍒惰繃婊� - if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { - break; + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) { + devpThread.setErrorDev(staProtocol.getSiteId(), "鍫嗗灈鏈洪潪绌洪棽"); + continue; + } + if (crnProtocol.getTaskNo() != 0) { + devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄伐浣滃彿涓嶄负0"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "宸ヤ綔鍙蜂笉涓�0"); + + continue; } // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) { + devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟"); break; } @@ -947,6 +997,8 @@ command.setCommand((short) 1); if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) { log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command)); + devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触"); throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); } else { try { @@ -956,6 +1008,9 @@ taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id); taskWrk.setModiTime(now); taskWrk.setExecuteTime(now); + devpThread.setErrorDev(staProtocol.getSiteId(), "-"); + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-"); + if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); } @@ -994,6 +1049,19 @@ // throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); } } + } else { + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-"); + if (staProtocol.isAutoing()){ + if (staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鑳藉嚭锛氭湭鎵撳紑"); + } + if (staProtocol.getWorkNo() == 0){ + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "宸ヤ綔鍙蜂笉涓�0"); + } + if (staProtocol.isOutEnable()){ + CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "娌℃湁鍙嚭"); + } + } } } } diff --git a/src/main/java/com/zy/core/DevpThread.java b/src/main/java/com/zy/core/DevpThread.java index ecdfafc..5e9e167 100644 --- a/src/main/java/com/zy/core/DevpThread.java +++ b/src/main/java/com/zy/core/DevpThread.java @@ -11,5 +11,6 @@ void setPakMk(Integer siteId, boolean pakMk); void setPakMkWalk(Integer siteId, boolean pakMkWalk); void setGrossWt(Integer siteId, Double grossWt); + void setErrorDev(Integer siteId, String msgErr); } diff --git a/src/main/java/com/zy/core/cache/CrnErrCache.java b/src/main/java/com/zy/core/cache/CrnErrCache.java new file mode 100644 index 0000000..f1af02f --- /dev/null +++ b/src/main/java/com/zy/core/cache/CrnErrCache.java @@ -0,0 +1,101 @@ +package com.zy.core.cache; + +import com.zy.core.model.protocol.CrnErrProtocol; +import com.zy.core.model.protocol.RgvErrProtocol; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * Created by IX on 2025/02/21 + */ +public class CrnErrCache { + // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus + private static final ConcurrentHashMap<Integer, CrnErrProtocol> cache = new ConcurrentHashMap<>(); + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static void updateCrnStatus(CrnErrProtocol status) { + try { + cache.put(status.getCrnNo(), status); + } finally { + } + } + + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static void updateCrnErr(Integer crnNo,String error) { + try { + CrnErrProtocol crnErrProtocol = cache.get(crnNo); + if (crnErrProtocol == null){ + crnErrProtocol = new CrnErrProtocol(); + crnErrProtocol.setCrnNo(crnNo); + } + if (!crnErrProtocol.getError().equals(error)){ + crnErrProtocol.setError(error); + cache.put(crnErrProtocol.getCrnNo(), crnErrProtocol); + } + } finally { + } + } + + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static void updateCrnErr(Integer crnNo) { + try { + CrnErrProtocol crnErrProtocol = cache.get(crnNo); + if (crnErrProtocol == null){ + crnErrProtocol = new CrnErrProtocol(); + crnErrProtocol.setCrnNo(crnNo); + } + if (!crnErrProtocol.getError().equals("-")){ + crnErrProtocol.setError("-"); + cache.put(crnErrProtocol.getCrnNo(), crnErrProtocol); + } + } finally { + } + } + + + + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static String getErrorCrn(Integer crnNo) { + try { + CrnErrProtocol crnErrProtocol = cache.get(crnNo); + if (crnErrProtocol == null){ + crnErrProtocol = new CrnErrProtocol(); + crnErrProtocol.setCrnNo(crnNo); + } + return crnErrProtocol.getError(); + } finally { + } + } + + /** + * 鑾峰彇璁惧鐘舵�� + */ + public static CrnErrProtocol getCrnStatus(Integer crnNo) { + try { + return cache.get(crnNo); + } finally { + } + } + + /** + * 鑾峰彇鎵�鏈夎澶囩姸鎬� + */ + public static ConcurrentHashMap<Integer, CrnErrProtocol> getAllCrnStatus() { + try { + return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰 + } finally { + } + } + +} diff --git a/src/main/java/com/zy/core/cache/RgvErrCache.java b/src/main/java/com/zy/core/cache/RgvErrCache.java new file mode 100644 index 0000000..c8ce8f9 --- /dev/null +++ b/src/main/java/com/zy/core/cache/RgvErrCache.java @@ -0,0 +1,102 @@ +package com.zy.core.cache; + +import com.core.common.Cools; +import com.zy.core.model.protocol.RgvErrProtocol; +import com.zy.core.model.protocol.RgvRunProtocol; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * Created by IX on 2025/02/21 + */ +public class RgvErrCache { + // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus + private static final ConcurrentHashMap<Integer, RgvErrProtocol> cache = new ConcurrentHashMap<>(); + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static void updateRgvStatus(RgvErrProtocol status) { + try { + cache.put(status.getRgvNo(), status); + } finally { + } + } + + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static void updateRgvErr(Integer rgvNo,String error) { + try { + RgvErrProtocol rgvErrProtocol = cache.get(rgvNo); + if (rgvErrProtocol == null){ + rgvErrProtocol = new RgvErrProtocol(); + rgvErrProtocol.setRgvNo(rgvNo); + } + if (!rgvErrProtocol.getError().equals(error)){ + rgvErrProtocol.setError(error); + cache.put(rgvErrProtocol.getRgvNo(), rgvErrProtocol); + } + } finally { + } + } + + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static void updateRgvErr(Integer rgvNo) { + try { + RgvErrProtocol rgvErrProtocol = cache.get(rgvNo); + if (rgvErrProtocol == null){ + rgvErrProtocol = new RgvErrProtocol(); + rgvErrProtocol.setRgvNo(rgvNo); + } + if (!rgvErrProtocol.getError().equals("-")){ + rgvErrProtocol.setError("-"); + cache.put(rgvErrProtocol.getRgvNo(), rgvErrProtocol); + } + } finally { + } + } + + + + + /** + * 鏇存柊璁惧鐘舵�� + */ + public static String getErrorDev(Integer rgvNo) { + try { + RgvErrProtocol rgvErrProtocol = cache.get(rgvNo); + if (rgvErrProtocol == null){ + rgvErrProtocol = new RgvErrProtocol(); + rgvErrProtocol.setRgvNo(rgvNo); + } + return rgvErrProtocol.getError(); + } finally { + } + } + + /** + * 鑾峰彇璁惧鐘舵�� + */ + public static RgvErrProtocol getRgvStatus(Integer rgvNo) { + try { + return cache.get(rgvNo); + } finally { + } + } + + /** + * 鑾峰彇鎵�鏈夎澶囩姸鎬� + */ + public static ConcurrentHashMap<Integer, RgvErrProtocol> getAllRgvStatus() { + try { + return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰 + } finally { + } + } + +} diff --git a/src/main/java/com/zy/core/model/protocol/CrnErrProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnErrProtocol.java new file mode 100644 index 0000000..0b9b845 --- /dev/null +++ b/src/main/java/com/zy/core/model/protocol/CrnErrProtocol.java @@ -0,0 +1,16 @@ +package com.zy.core.model.protocol; + +import lombok.Data; + +/** + * Created by IX on 2025/02/21 + */ +@Data +public class CrnErrProtocol { + + private Integer crnNo; + + public String error = "-"; + + public CrnErrProtocol(){} +} diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java index 36cad3c..1def4c8 100644 --- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java @@ -197,6 +197,7 @@ * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣 */ public Float yDuration; + public String errCrn; public void setMode(Short mode) { this.mode = mode; diff --git a/src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java new file mode 100644 index 0000000..b72d9c0 --- /dev/null +++ b/src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java @@ -0,0 +1,16 @@ +package com.zy.core.model.protocol; + +import lombok.Data; + +/** + * Created by IX on 2025/02/21 + */ +@Data +public class RgvErrProtocol { + + private Integer rgvNo; + + public String error = "-"; + + public RgvErrProtocol(){} +} diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index 15c7135..e69ba54 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -116,6 +116,7 @@ // 鍏夌數寮傚父 private boolean err6; + private String errorRgv; public void setMode(Short mode) { this.mode = mode; diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index 9dee92a..252d523 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -86,6 +86,7 @@ //鎸囦护ID private Integer commandId; private Double grossWt = 0D; + private String errorDev = "-"; public BasDevp toSqlModel(){ BasDevp basDevp = new BasDevp(); diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 879779c..8cf35c2 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -53,6 +53,7 @@ private Long trackBenchmark = 1L; // # 閬胯璺濈 private Long avoidDistance = 5000L; + private String errorRgv = "-"; /** * 宸ヤ綅1澶嶄綅淇″彿 @@ -290,6 +291,7 @@ while (true) { RgvRunProtocol rgvRun = RgvRunCache.getRgvRun(); if (!rgvRun.getRgvNo().equals(slave.getId())){ + continue; } try { @@ -307,6 +309,7 @@ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; rgvRun.setRgvNo(slave.getOtherId()); RgvRunCache.updateRgvStatus(rgvRun); + RgvErrCache.updateRgvErr(slave.getId(),errorRgv); continue; } @@ -327,6 +330,7 @@ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; rgvRun.setRgvNo(slave.getOtherId()); RgvRunCache.updateRgvStatus(rgvRun); + RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅鎺㈢墿鐗╃姸鎬佸紓甯�"); continue; } if (rgvTaskProtocol.getAvoid() != 0) { @@ -337,6 +341,7 @@ issued.setTaskStatus(1); issued.setDirection(true); write(issued); + RgvErrCache.updateRgvErr(slave.getId()); rgvTaskProtocol.setAvoid(0); // try{Thread.sleep(50L);} catch (Exception e){} @@ -358,21 +363,25 @@ if (rgvOtherStatusEnable()) { //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { + RgvErrCache.updateRgvErr(slave.getId(),errorRgv); break; } } if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); + RgvErrCache.updateRgvErr(slave.getId()); break; } else { TaskProtocol issued = new TaskProtocol(taskProtocol,true); write(issued); + RgvErrCache.updateRgvErr(slave.getId()); taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); break; } } } + RgvErrCache.updateRgvErr(slave.getId()); } else { for (TaskProtocol taskProtocol : allTakeTaskProtocol) { if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂 @@ -380,6 +389,7 @@ if (rgvOtherStatusEnable()) { //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { + RgvErrCache.updateRgvErr(slave.getId(),errorRgv); break; } } @@ -389,32 +399,38 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); if (staProtocol == null ) { + RgvErrCache.updateRgvErr(slave.getId(),"鏈煡鍒板皬杞︿綔涓氱珯"+staProtocol.getStaNo()+"绔欑偣"); break; } // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (!staProtocol.isAutoing() || staProtocol.isLoading() ){ + RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅绛夊緟"+staProtocol.getStaNo()+"绔欑偣灏辩华"); break; } } else if (taskProtocol.getTaskStatus()==2){ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); if (staProtocol == null ) { + RgvErrCache.updateRgvErr(slave.getId(),"鏈煡鍒板皬杞︿綔涓氱珯"+staProtocol.getStaNo()+"绔欑偣"); break; } // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (!staProtocol.isAutoing() || !staProtocol.isLoading() || staProtocol.getWorkNo()==0 ){ + RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅绛夊緟"+staProtocol.getStaNo()+"绔欑偣灏辩华"); break; } } TaskProtocol issued = new TaskProtocol(taskProtocol); write(issued); + RgvErrCache.updateRgvErr(slave.getId()); taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); break; } else { TaskProtocol issued = new TaskProtocol(taskProtocol,true); write(issued); + RgvErrCache.updateRgvErr(slave.getId()); break; } } @@ -465,10 +481,25 @@ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); if (rgvProtocol == null || rgvTaskProtocol == null) { + errorRgv = slave.getId()+"鍙峰皬杞﹁繛鎺ュけ璐�"; return false; } - if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 || rgvProtocol.getRgvPosDestination() == 0L - || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { + if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO)) { + errorRgv = slave.getId()+"鍙峰皬杞﹂潪鑷姩"; + return false; + } + if (rgvProtocol.getRgvPos().equals(0L) + || rgvTaskProtocol.getAvoid() == -1 + || rgvProtocol.getRgvPosDestination() == 0L) { + errorRgv = slave.getId()+"鍙峰皬杞︾姸鎬佸紓甯�"; + return false; + } + if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) { + errorRgv = slave.getId()+"鍙峰皬杞﹂潪绌洪棽"; + return false; + } + if ( (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) { + errorRgv = slave.getId()+"鍙峰皬杞﹀瓨鍦ㄨ繍琛岀洰鏍囧�硷紝闇�瑕佸浣嶏紒锛侊紒"; return false; } RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); @@ -477,10 +508,12 @@ // "rgvTaskProtocolOther:"+slave.getOtherId()+"sign:"+rgvTaskProtocolOther.isSignRun()+"/n"); if (rgvProtocolOther == null) { + errorRgv = slave.getOtherId()+"鍙峰皬杞﹁繛鎺ュけ璐�"; return false; } if (rgvProtocolOther.statusEnable) { if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) { + errorRgv = slave.getOtherId()+"鍙峰皬杞︾姸鎬佸紓甯�"; return false; } } @@ -536,6 +569,7 @@ long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -559,12 +593,15 @@ } } if (signNowPosRun){ + errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟..."; return false; } } long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -591,6 +628,8 @@ long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -618,6 +657,8 @@ long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -635,6 +676,8 @@ RgvTaskCache.updateRgvStatus(rgvTaskProtocol); return false; } + errorRgv = slave.getOtherId()+"鍙稲GV褰卞搷锛岀瓑寰呬腑..."; + return false; } } else { @@ -671,6 +714,8 @@ long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -694,12 +739,15 @@ } } if (signNowPosRun){ + errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟..."; return false; } } long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -726,6 +774,8 @@ long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -754,6 +804,8 @@ long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿"; + try{ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); @@ -771,6 +823,7 @@ RgvTaskCache.updateRgvStatus(rgvTaskProtocol); return false; } + errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟涓�..."; return false; } } else { @@ -781,6 +834,8 @@ } } } + + errorRgv = slave.getOtherId()+"鍙稲GV褰卞搷锛岀瓑寰呬腑..."; return false; } @@ -918,6 +973,9 @@ // } // } // } + if (rgvProtocol.getAlarm$()!=0){ + RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM()); + } try { // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 676afa7..51f727f 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -13,6 +13,7 @@ import com.zy.asrs.service.BasCrnOptService; import com.zy.asrs.service.BasCrnpService; import com.zy.core.CrnThread; +import com.zy.core.cache.CrnErrCache; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.enums.CrnStatusType; @@ -243,6 +244,8 @@ log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } + CrnErrCache.updateCrnErr(slave.getId(), "-"); + // convertRow(command); command.setCrnNo(slave.getId()); short[] array = new short[10]; @@ -276,6 +279,8 @@ if (!command.getTaskNo().equals(one.getTaskNo()) ){ i++; + CrnErrCache.updateCrnErr(slave.getId(), "鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�"); + log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one)); result = siemensNet.Write("DB100.0", array); }else{ @@ -297,6 +302,8 @@ if (transInt16 != commandFinish){ log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish); log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); + CrnErrCache.updateCrnErr(slave.getId(), "涓嬪彂DB100.18 鍥炶澶辫触"); + result = siemensNet.Write("DB100.18", commandFinish); signFinish++; }else { @@ -339,6 +346,8 @@ } else { OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + CrnErrCache.updateCrnErr(slave.getId(), "鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触"); + return false; } } diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index fdf1b1c..eb6e729 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -460,6 +460,17 @@ } } + /** + * 璁剧疆鍏ュ簱鏍囪 + */ + @Override + public void setErrorDev(Integer siteId, String msgErr) { + StaProtocol staProtocol = station.get(siteId); + if (null != staProtocol) { + staProtocol.setErrorDev(msgErr); + } + } + @Override public void close() { siemensS7Net.ConnectClose(); diff --git a/src/main/webapp/views/deviceOperate/crnOperate.html b/src/main/webapp/views/deviceOperate/crnOperate.html index f32bc2f..8406daf 100644 --- a/src/main/webapp/views/deviceOperate/crnOperate.html +++ b/src/main/webapp/views/deviceOperate/crnOperate.html @@ -28,6 +28,8 @@ </el-table-column> <el-table-column property="deviceStatus" label="璁惧鐘舵��"> </el-table-column> + <el-table-column property="errorCrn" label="寮傚父鎻愮ず"> + </el-table-column> </el-table> </div> @@ -166,6 +168,8 @@ </el-descriptions-item> <el-descriptions-item label="鍗囬檷鏃堕暱(H)">{{ tableData[currentIndex].yduration }} </el-descriptions-item> + <el-descriptions-item label="寮傚父鎻愮ず">{{ tableData[currentIndex].errorCrn }} + </el-descriptions-item> </el-descriptions> </div> </div> diff --git a/src/main/webapp/views/deviceOperate/devpOperate.html b/src/main/webapp/views/deviceOperate/devpOperate.html index 7565bc4..724416e 100644 --- a/src/main/webapp/views/deviceOperate/devpOperate.html +++ b/src/main/webapp/views/deviceOperate/devpOperate.html @@ -24,6 +24,10 @@ </el-table-column> <el-table-column property="pakMk" label="鍏ュ簱鏍囪"> </el-table-column> + <el-table-column property="weight" label="绉伴噸"> + </el-table-column> + <el-table-column property="errorDev" label="寮傚父鎻愮ず"> + </el-table-column> </el-table> </div> @@ -93,6 +97,10 @@ </el-descriptions-item> <el-descriptions-item label="楂樹綆搴撲綅">{{ tableData[currentIndex].locType1 }} </el-descriptions-item> + <el-descriptions-item label="閲嶉噺">{{ tableData[currentIndex].weight }} + </el-descriptions-item> + <el-descriptions-item label="寮傚父鎻愮ず">{{ tableData[currentIndex].errorDev }} + </el-descriptions-item> </el-descriptions> </div> </div> diff --git a/src/main/webapp/views/deviceOperate/rgvOperate.html b/src/main/webapp/views/deviceOperate/rgvOperate.html index 2a7ef09..fe04738 100644 --- a/src/main/webapp/views/deviceOperate/rgvOperate.html +++ b/src/main/webapp/views/deviceOperate/rgvOperate.html @@ -28,7 +28,9 @@ </el-table-column> <el-table-column property="rgvPosDestination" label="鐩爣瀹氫綅缃�"> </el-table-column> - <el-table-column property="loaded" label="鏈夌墿"> + <el-table-column property="loaded" label="鎺㈢墿"> + </el-table-column> + <el-table-column property="errorRgv" label="鎻愮ず"> </el-table-column> </el-table> </div> -- Gitblit v1.9.1