From 87f00d0a2de9c22a56de6abd28806261adf38c10 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 三月 2023 08:01:59 +0800
Subject: [PATCH] 算法优化等
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 394 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 310 insertions(+), 84 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 c32a5d8..538cced 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,15 +10,11 @@
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
-import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.MatDto;
-import com.zy.common.model.SearchLocParam;
-import com.zy.common.model.StartupDto;
+import com.zy.common.model.*;
import com.zy.common.model.enums.WrkChargeType;
import com.zy.common.service.CommonService;
import com.zy.common.service.erp.ErpService;
-import com.zy.common.utils.CollectionUtils;
-import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.*;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.News;
@@ -28,15 +24,14 @@
import com.zy.core.model.*;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.LedCommand;
+import com.zy.core.model.command.ShuttleCommand;
import com.zy.core.model.command.SteCommand;
import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.model.protocol.SteProtocol;
import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
-import com.zy.core.thread.SiemensDevpThread;
-import com.zy.core.thread.SteThread;
+import com.zy.core.thread.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -96,6 +91,8 @@
private OrderMapper orderMapper;
@Autowired
private OrderDetlMapper orderDetlMapper;
+ @Autowired
+ private RedisUtil redisUtil;
/**
* 缁勬墭
@@ -115,59 +112,51 @@
staProtocol = staProtocol.clone();
}
Short workNo = staProtocol.getWorkNo();
+ // 灏哄妫�娴嬪紓甯�
+ boolean back = false;
+ String errMsg = "寮傚父锛�";
+ if (staProtocol.isFrontErr()) {
+ errMsg = errMsg+"鍓嶈秴闄愶紱";
+ back = true;
+ }
+ if (staProtocol.isBackErr()) {
+ errMsg = errMsg+"鍚庤秴闄�";
+ back = true;
+ }
+ if (staProtocol.isHighErr()) {
+ errMsg = errMsg+"楂樿秴闄�";
+ back = true;
+ }
+ if (staProtocol.isLeftErr()) {
+ errMsg = errMsg+"宸﹁秴闄�";
+ back = true;
+ }
+ if (staProtocol.isRightErr()) {
+ errMsg = errMsg+"鍙宠秴闄�";
+ back = true;
+ }
+ if (staProtocol.isWeightErr()) {
+ errMsg = errMsg+"瓒呴噸";
+ back = true;
+ }
+ if (staProtocol.isBarcodeErr()) {
+ errMsg = errMsg+"鎵爜澶辫触";
+ back = true;
+ }
+ // 閫�鍥�
+ if (back) {
+ // led 寮傚父鏄剧ず
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+ if (ledThread != null) {
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+ }
+ continue;
+ }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
&& staProtocol.isInEnable()
&& !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999))
&& staProtocol.isPakMk()) {
-
- // 灏哄妫�娴嬪紓甯�
- boolean back = false;
- String errMsg = "";
- if (staProtocol.isFrontErr()) {
- errMsg = "鍓嶈秴闄�";
- back = true;
- }
- if (!back && staProtocol.isBackErr()) {
- errMsg = "鍚庤秴闄�";
- back = true;
- }
- if (!back && staProtocol.isHighErr()) {
- errMsg = "楂樿秴闄�";
- back = true;
- }
- if (!back && staProtocol.isLeftErr()) {
- errMsg = "宸﹁秴闄�";
- back = true;
- }
- if (!back && staProtocol.isRightErr()) {
- errMsg = "鍙宠秴闄�";
- back = true;
- }
- if (!back && staProtocol.isWeightErr()) {
- errMsg = "瓒呴噸";
- back = true;
- }
- if (!back && staProtocol.isBarcodeErr()) {
- errMsg = "鎵爜澶辫触";
- back = true;
- }
-
- // 閫�鍥�
- if (back) {
- News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
- staProtocol.setWorkNo((short) 32002);
- staProtocol.setStaNo(inSta.getBackSta().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-
- // led 寮傚父鏄剧ず
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
- if (ledThread != null) {
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
- }
- continue;
- }
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
@@ -177,7 +166,7 @@
String barcode = barcodeThread.getBarcode();
if(!Cools.isEmpty(barcode)) {
// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
- if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)|| "00000000".equals(barcode)) {
staProtocol.setWorkNo((short) 32002);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -408,7 +397,6 @@
if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) {
wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
if (null == wrkMast) {
- News.error("{}浠诲姟鍙烽敊璇紝鏆傛棤鎷f枡浠诲姟锛�", staProtocol.getWorkNo());
continue;
}
} else {
@@ -621,6 +609,113 @@
}
/**
+ * 鍏ュ嚭搴� ===>> 鍥涘悜绌挎杞﹀叆鍑哄簱浣滀笟涓嬪彂
+ */
+ public synchronized void shuttleIoExecute() {
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ // 鍙湁褰撳洓鍚戠┛姊溅绌洪棽 骞朵笖鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() == 0) {
+ //鍏ュ嚭搴撻�昏緫
+ for (WrkMast wrkSts : wrkMastMapper.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 2))) {
+ //鍒嗛厤浠诲姟鍙�
+ shuttleProtocol.setTaskNo(wrkSts.getWrkNo().shortValue());
+ //鍒嗛厤婧愬簱浣�
+ shuttleProtocol.setSourceLocNo(wrkSts.getSourceLocNo());
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(wrkSts.getLocNo());
+
+ //璁$畻璺緞
+ List<NavigateNode> calc = NavigateUtils.calc(wrkSts.getSourceLocNo(), wrkSts.getLocNo(), "in");
+ //鑾峰彇鍒嗘璺緞
+ ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
+ //灏嗘map瀛樺叆redis涓�
+ HashMap<String, Object> map = new HashMap<>();
+ //鎵ц姝ュ簭
+ map.put("step", 0);
+ //璺緞鏁版嵁
+ map.put("path", data);
+ //宸ヤ綔鍙�
+ map.put("wrk_no", wrkSts.getWrkNo());
+ //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+ redisUtil.set("wrk_no_" + wrkSts.getWrkNo().shortValue(), JSON.toJSONString(map));
+ }
+
+ } else if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0) {
+ //鍥涘悜绌挎杞︾┖闂� 骞朵笖鏈変换鍔�
+ Object o = redisUtil.get("wrk_no_" + shuttleProtocol.getTaskNo());
+ HashMap map = JSON.parseObject(o.toString(), HashMap.class);
+ //褰撳墠姝ュ簭
+ int step = Integer.parseInt(map.get("step").toString());
+ //褰撳墠璺緞鏁版嵁
+ Object data = map.get("path");
+ ArrayList pathList = JSON.parseObject(data.toString(), ArrayList.class);
+ //鍙栫涓�鏉¤矾寰�
+ Object o1 = pathList.get(step);
+ ArrayList path = JSON.parseObject(o1.toString(), ArrayList.class);
+
+ int size = path.size();
+ //寮�濮嬭矾寰�
+ JSONObject startPath = JSON.parseObject(path.get(0).toString());
+ System.out.println(startPath);
+ //鐩爣璺緞
+ JSONObject endPath = JSON.parseObject(path.get(size - 1).toString());
+ System.out.println(endPath);
+
+ //涓嬪彂鍛戒护
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 1);
+ command.setStartCodeNum(NavigatePositionConvert.xyToPosition(startPath.getIntValue("x"), startPath.getIntValue("y")));
+ command.setMiddleCodeNum((short) 0);
+ command.setDistCodeNum(NavigatePositionConvert.xyToPosition(endPath.getIntValue("x"), endPath.getIntValue("y")));
+ command.setStartToDistDistance(1000);
+ command.setMiddleToDistDistance(1000);
+ command.setRunDirection(ShuttleRunDirection.get(startPath.get("direction").toString()).id);
+ command.setPalletLift((short) 1);
+ command.setForceMoveDistance(1000);
+ command.setChargeSwitch((short) 2);
+ command.setIOControl((short) 0);
+ command.setRunSpeed((short) 1000);
+ command.setRadarTmp((short) 0);
+ command.setCommandEnd((short) 1);
+
+ if (!MessageQueue.offer(SlaveType.Shuttle, shuttleProtocol.getShuttleNo().intValue(), new Task(2, command))) {
+ News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+ } else {
+ News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+
+ //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
+ if (step < size) {
+ //鏇存柊redis鏁版嵁
+ //姝ュ簭澧炲姞
+ step++;
+ map.put("step", step);
+ //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+ redisUtil.set("wrk_no_" + map.get("wrk_no").toString(), JSON.toJSONString(map));
+ }else {
+ //宸叉墽琛屽畬鎴�
+ //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
+ //鍒犻櫎redis
+ redisUtil.del("wrk_no_" + map.get("wrk_no").toString());
+
+ //銆傘�傘��
+ //1銆佸懡浠や笅鏂归渶瑕佸垽鏂皬杞︾┖闂茬姸鎬�
+ //2銆�
+ }
+
+ }
+ }
+ }
+
+ }
+
+ /**
* 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
*/
public synchronized void crnIoExecute(){
@@ -727,6 +822,51 @@
continue;
}
+ List<LocMast> locMasts = null;
+ boolean sign=false;
+ if (locMast.getRow1()>=5){
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+ .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()>locMast.getRow1()){
+ if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D")){
+ if (!locMast1.getLocSts().equals("X")){
+ sign=true;
+ break;
+ }
+ }
+ }else if (locMast1.getRow1()<locMast.getRow1()){
+ if (locMast1.getLocSts().equals("F") || locMast1.getLocSts().equals("D")){
+ News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }
+ }
+ }else {
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+ .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()>locMast.getRow1()){
+ if (locMast1.getLocSts().equals("F") || locMast1.getLocSts().equals("D")){
+ News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }else if (locMast1.getRow1()<locMast.getRow1()){
+ if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D")){
+ if (!locMast1.getLocSts().equals("X")){
+ sign=true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (sign){
+ continue;
+ }
+
// 妫�娴嬫槸鍚﹀瓨鍦ㄥ嚭搴撲换鍔�
if (null != wrkMastMapper.selectPakout(slave.getId(), null)) {
News.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍑哄簱涓换鍔�!", wrkMast.getWrkNo());
@@ -734,7 +874,9 @@
}
// 缃《浠诲姟
- wrkMast.setIoPri((double) 9999);
+ if (wrkMast.getIoPri()<8000){
+ wrkMast.setIoPri(wrkMast.getIoPri()+9000d);
+ }
wrkMastMapper.updateById(wrkMast);
// 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
@@ -900,6 +1042,36 @@
News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
continue;
}
+ List<LocMast> locMasts = null;
+ boolean sign=false;
+ if (sourceSta.getRow1()>=5){
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+ .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()<sourceSta.getRow1()){
+ if (!locMast1.getLocSts().equals("O")){
+ News.error("褰撳墠宸ヤ綔妗f簮搴撲綅鎵�鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }
+ }
+ }else {
+ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+ .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+ for (LocMast locMast1:locMasts){
+ if (locMast1.getRow1()>sourceSta.getRow1()){
+ if (!locMast1.getLocSts().equals("O")){
+ News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+ sign=true;
+ break;
+ }
+ }
+ }
+ }
+ if (sign){
+ continue;
+ }
// 鍚屽簱浣嶇粍杩涜鏍¢獙
List<String> groupLocNo = Utils.getGroupLocNo(wrkMast.getSourceLocNo());
@@ -949,7 +1121,9 @@
}
// 缃《浠诲姟
- wrkMast.setIoPri((double) 9998);
+ if (wrkMast.getIoPri()<8000){
+ wrkMast.setIoPri(wrkMast.getIoPri()+8999d);
+ }
wrkMastMapper.updateById(wrkMast);
// 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱
@@ -1614,6 +1788,17 @@
WrkCharge wrkCharge = wrkChargeService.selectById(crnProtocol.getTaskNo());
if (wrkCharge == null) {
News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ wrkMast = wrkMastMapper.selectCrnWaiting2(crnProtocol.getTaskNo().intValue());
+ if (wrkMast.getIoType() != 11) {
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅锛屼絾鏈壘鍒板伐浣滄。銆傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ } else {
+ News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ }
+ }
continue;
} else {
// 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚
@@ -2385,18 +2570,11 @@
break;
}
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+ ledCommand.setLocNo(wrkMast.getLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
- if (wrkMast.getIoType() != 110) {
+ if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
- try {
- WrkDetl wrkDetl = wrkDetls.get(0);
- if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
- OrderDetl orderDetl = orderDetlMapper.selectItemNoneOfBatch(wrkDetl.getOrderNo(), wrkDetl.getMatnr());
- ledCommand.getMatDtos().add(new MatDto(orderDetl));
- }
- } catch (Exception e) {
- News.error("led execute fail", e);
- }
+ wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs())));
}
commands.add(ledCommand);
}
@@ -2409,9 +2587,20 @@
}
// 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
if (!commands.isEmpty()) {
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
- News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
- continue;
+ if (led.getId()>3){
+ if (!MessageQueue.offer(SlaveType.Led, led.getId()-3, new Task(1, commands))) {
+ log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId()-3, led.getIp(), led.getPort());
+ continue;
+ }else {
+ ledThread.setLedMk(false);
+ }
+ }else {
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+ log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ continue;
+ }else {
+ ledThread.setLedMk(false);
+ }
}
}
@@ -2441,6 +2630,35 @@
*/
public void ledReset() {
for (LedSlave led : slaveProperties.getLed()) {
+
+ // 鑾峰彇杈撻�佺嚎plc绾跨▼
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+ // 鍛戒护闆嗗悎
+ boolean reset = true;
+ for (Integer staNo : led.getStaArr()) {
+ // 鑾峰彇鍙夎溅绔欑偣
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol == null) {
+ continue;
+ }
+ if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
+ reset = false;
+ break;
+ }
+ }
+ // 鑾峰彇led绾跨▼
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+ // led鏄剧ず榛樿鍐呭
+ if (reset && !ledThread.isLedMk()) {
+ ledThread.setLedMk(true);
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
+ News.error(" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ } else {
+
+ }
+ }
+ }
+ for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
// 鍛戒护闆嗗悎
@@ -2455,9 +2673,10 @@
}
}
// 鑾峰彇led绾跨▼
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
// led鏄剧ず榛樿鍐呭
- if (reset) {
+ if (reset && !ledThread.isLedMk()) {
+ ledThread.setLedMk(true);
if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
}
@@ -2470,6 +2689,9 @@
*/
@SuppressWarnings("serial")
public synchronized void loopSteCharge() {
+ if (!Cools.isEmpty(wrkMastMapper.selectAllC())){
+ return;
+ }
if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) {
return;
}
@@ -2586,14 +2808,18 @@
SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, 1);
SteProtocol steProtocol = steThread.getSteProtocol();
if (null == wrkCharge) {
- if (steProtocol.getChargeStatus()==(short)0 && steProtocol.isBrushConnect()){
- SteCommand steCommand = new SteCommand();
- steCommand.setSteNo(1); // 绌挎杞︾紪鍙�
- steCommand.setTaskNo(10060); // 宸ヤ綔鍙�
- steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
- if (!MessageQueue.offer(SlaveType.Ste, 1, new Task(2, steCommand))) {
- News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+ try{
+ if (steProtocol.getChargeStatus()==(short)0 && steProtocol.isBrushConnect()){
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(1); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(10060); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+ if (!MessageQueue.offer(SlaveType.Ste, 1, new Task(2, steCommand))) {
+ News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+ }
}
+ }catch (Exception e){
+ return;
}
return;
}
--
Gitblit v1.9.1