From 24393cdbdcc3f3e921050e733bd6a27208d4ea55 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 09 五月 2023 12:48:54 +0800
Subject: [PATCH] console.html fixed
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1881 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 1,572 insertions(+), 309 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 e54a137..f2b386c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,20 +4,17 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
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;
@@ -25,17 +22,10 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
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.SteCommand;
-import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.StaProtocol;
-import com.zy.core.model.protocol.SteProtocol;
+import com.zy.core.model.command.*;
+import com.zy.core.model.protocol.*;
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;
@@ -78,6 +68,10 @@
@Autowired
private BasSteErrLogService basSteErrLogService;
@Autowired
+ private BasShuttleErrLogService basShuttleErrLogService;
+ @Autowired
+ private BasShuttleErrService basShuttleErrService;
+ @Autowired
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private BasSteService basSteService;
@@ -95,6 +89,8 @@
private OrderMapper orderMapper;
@Autowired
private OrderDetlMapper orderDetlMapper;
+ @Autowired
+ private RedisUtil redisUtil;
/**
* 缁勬墭
@@ -114,59 +110,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());
@@ -176,7 +164,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);
@@ -407,7 +395,6 @@
if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) {
wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
if (null == wrkMast) {
- News.error("{}浠诲姟鍙烽敊璇紝鏆傛棤鎷f枡浠诲姟锛�", staProtocol.getWorkNo());
continue;
}
} else {
@@ -619,6 +606,780 @@
}
}
+
+ /**
+ * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
+ */
+ public synchronized void shuttleIoInExecute() {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鍏ュ簱绔�
+ for (DevpSlave.StaRack rackInStn : devp.getRackInStn()) {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+
+ StaProtocol staProtocol = devpThread.getStation().get(rackInStn.getStaNo());
+ StaProtocol staProtocol105 = devpThread.getStation().get(105);
+ staProtocol105.setWorkNo((short) 752);
+ staProtocol105.setStaNo((short) 100);
+
+ StaProtocol staProtocol106 = devpThread.getStation().get(106);
+ staProtocol106.setWorkNo((short) 753);
+ staProtocol106.setStaNo((short) 100);
+
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ Short workNo = staProtocol.getWorkNo();
+
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (true || staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
+ WrkMast wrkMast = wrkMastMapper.selectRackInStep48(workNo, staProtocol.getSiteId());
+ if (wrkMast != null) {
+ if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 8) {
+ ShuttleThread shuttleThread = null;
+ HashMap<String, Object> searchIdleShuttle = null;
+ if (wrkMast.getWrkSts() == 4) {
+ //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
+ searchIdleShuttle = this.searchIdleShuttle(wrkMast);
+ shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+ }else {
+ //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
+ Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
+ shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
+ }
+
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (!shuttleProtocol.isIdle()) {
+ continue;
+ }
+
+ wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
+
+ //鍒嗛厤浠诲姟鍙�
+ shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());
+ //鍒嗛厤婧愬簱浣�
+ shuttleProtocol.setSourceLocNo(wrkMast.getSourceLocNo());
+
+ //鍒涘缓鍒嗛厤鍛戒护
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ嚭搴撴ā寮�
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+ assignCommand.setSourceLocNo(currentLocNo);//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+
+ String locNo = wrkMast.getLocNo();//褰撳墠宸ヤ綔妗e簱浣嶅彿
+ Integer lev = Integer.parseInt(locNo.substring(locNo.length() - 2, locNo.length()));//褰撳墠宸ヤ綔妗e簱浣嶅眰楂�
+ Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));//灏忚溅褰撳墠灞傞珮
+
+ //鑾峰彇鎻愬崌鏈�
+ LiftSlave liftSlave = slaveProperties.getLift().get(0);
+ //鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNo = liftSlave.getLiftLocNo(currentLev);
+
+ if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
+ //鍚屼竴灞傜洿鎺ュ彇璐ф棤闇�缁忚繃鎻愬崌鏈�
+ //鐩存帴璁$畻杞﹀埌鎻愬崌鏈哄彇璐у啀鍒板簱浣嶈矾寰勬寚浠�
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, locNo);
+ if (wrkMast.getWrkSts() == 8) {
+ //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+ BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭�
+ ShuttleCommand moveCommand = new ShuttleCommand();
+ moveCommand.setCommandWord((short) 1);
+ moveCommand.setStartCodeNum(Short.parseShort(basDevp.getQrCodeValue()));//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
+ moveCommand.setDistCodeNum(commands.get(0).getStartCodeNum());//鎻愬崌鏈哄彛浜岀淮鐮�
+ moveCommand.setStartToDistDistance(1300);
+ moveCommand.setMiddleToDistDistance(0);
+ moveCommand.setRunDirection(commands.get(0).getRunDirection());
+ moveCommand.setCommandEnd((short) 1);
+ commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+ }
+ assignCommand.setCommands(commands);
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(wrkMast.getLocNo());
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(wrkMast.getLocNo());
+ wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
+ }else {
+ //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
+
+ //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(liftLocNo);
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(liftLocNo);
+ assignCommand.setCommands(commands);
+ wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
+ }
+
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+
+ }
+ }
+
+ }
+ }
+
+ }
+
+ //鑾峰彇璧风偣-缁堢偣鎸囦护銆俶apType锛�1=銆嬫棤璐у湴鍥撅紝2=銆嬫湁璐у湴鍥�
+ public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String locNO,Integer mapType) {
+ //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
+ List<NavigateNode> calc = NavigateUtils.calc(startLocNo, locNO, mapType);
+ List<ShuttleCommand> commands = new ArrayList<>();
+ if (calc == null) {
+ return null;
+ }
+
+ //鑾峰彇鍒嗘璺緞
+ ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
+ //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
+ for (ArrayList<NavigateNode> nodes : data) {
+ //寮�濮嬭矾寰�
+ NavigateNode startPath = nodes.get(0);
+ //鐩爣璺緞
+ NavigateNode endPath = nodes.get(nodes.size() - 1);
+ Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
+ command.setStartCodeNum(startCodeNum);
+
+ command.setMiddleCodeNum((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ command.setDistCodeNum(distCodeNum);
+
+ command.setStartToDistDistance(allDistance);
+ command.setMiddleToDistDistance(0);
+ command.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id);
+ command.setPalletLift((short) 1);
+ command.setForceMoveDistance(0);
+ command.setChargeSwitch((short) 2);
+ command.setIOControl((short) 0);
+ command.setRadarTmp((short) 0);
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+ }
+ return commands;
+ }
+
+ //鑾峰彇璧风偣-涓偣-缁堢偣鎸囦护
+ public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String middleLocNo, String locNO) {
+ //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
+ List<NavigateNode> calc = NavigateUtils.calc(startLocNo, middleLocNo, 1);//灏忚溅鏃犺揣锛岃蛋鍏ュ簱鍦板浘
+ List<ShuttleCommand> commands = new ArrayList<>();
+ if (calc == null) {
+ return null;
+ }
+
+ //鑾峰彇鍒嗘璺緞
+ ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
+ //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
+ for (ArrayList<NavigateNode> nodes : data) {
+ //寮�濮嬭矾寰�
+ NavigateNode startPath = nodes.get(0);
+ //鐩爣璺緞
+ NavigateNode endPath = nodes.get(nodes.size() - 1);
+ Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
+ command.setStartCodeNum(startCodeNum);
+
+ command.setMiddleCodeNum((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ command.setDistCodeNum(distCodeNum);
+
+ command.setStartToDistDistance(allDistance);
+ command.setMiddleToDistDistance(0);
+ command.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id);
+ command.setPalletLift((short) 1);
+ command.setForceMoveDistance(0);
+ command.setChargeSwitch((short) 2);
+ command.setIOControl((short) 0);
+ command.setRadarTmp((short) 0);
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+ }
+
+ //灏忚溅鎸囦护鍒拌揪鐩爣浣嶇疆鍚庯紝鍐嶅彂鍑轰竴鏉¢《鍗囨寚浠�
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 2);
+ command.setPalletLift((short) 1);
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+
+ //璁$畻灏忚溅涓偣鍒扮粓鐐规墍闇�鍛戒护
+ List<NavigateNode> calc2 = NavigateUtils.calc(middleLocNo, locNO, 2);//灏忚溅鏈夎揣锛岃蛋鍑哄簱鍦板浘(鍑哄簱鍦板浘鏈変笓鐢ㄨ揣閬�)
+ if (calc2 == null) {
+ return null;
+ }
+
+ //鑾峰彇鍒嗘璺緞
+ ArrayList<ArrayList<NavigateNode>> data2 = NavigateUtils.getSectionPath(calc2);
+ for (ArrayList<NavigateNode> nodes : data2) {
+ //寮�濮嬭矾寰�
+ NavigateNode startPath = nodes.get(0);
+ //鐩爣璺緞
+ NavigateNode endPath = nodes.get(nodes.size() - 1);
+ Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+
+ command = new ShuttleCommand();
+ command.setCommandWord((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
+ command.setStartCodeNum(startCodeNum);
+
+ command.setMiddleCodeNum((short) 1);
+
+ //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
+ Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ command.setDistCodeNum(distCodeNum);
+
+ command.setStartToDistDistance(allDistance);
+ command.setMiddleToDistDistance(0);
+ command.setRunDirection(ShuttleRunDirection.get(startPath.getDirection()).id);
+ command.setPalletLift((short) 1);
+ command.setForceMoveDistance(0);
+ command.setChargeSwitch((short) 2);
+ command.setIOControl((short) 0);
+ command.setRadarTmp((short) 0);
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+ }
+
+ //灏忚溅鎸囦护鍒拌揪鐩爣浣嶇疆鍚庯紝鍐嶅彂鍑轰竴鏉℃墭鐩樹笅闄嶆寚浠�
+ command = new ShuttleCommand();
+ command.setCommandWord((short) 2);
+ command.setPalletLift((short) 2);
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+
+ return commands;
+ }
+
+ /**
+ * 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
+ */
+ public synchronized void shuttleIoOutExecute() {
+ for (WrkMast wrkMast : wrkMastMapper.selectBy2125()) {
+ //鎻愬彇涓�鏉″緟鍑哄簱浠诲姟
+ if (wrkMast != null) {
+ String outStaLocNo = null;//鍑哄簱绔欑偣搴撲綅鍙�
+ //鑾峰彇鍑哄簱绔欑偣
+ for (DevpSlave devpSlave : slaveProperties.getDevp()) {
+ for (DevpSlave.StaRack staOutRack : devpSlave.getRackOutStn()) {
+ if (staOutRack.getStaNo().equals(wrkMast.getStaNo())) {
+ //鍑哄簱绔欑偣鍜屽伐浣滄。鍑哄簱绔欑偣涓�鑷�
+ outStaLocNo = CommonUtils.getLocNoFromRBL(staOutRack.getRow(), staOutRack.getBay(), staOutRack.getLev());
+ }
+ }
+
+ }
+
+ if (wrkMast.getWrkSts() == 21
+ || wrkMast.getWrkSts() == 25
+ || wrkMast.getWrkSts() == 31) {
+ ShuttleThread shuttleThread = null;
+ HashMap<String, Object> searchIdleShuttle = null;
+ if (wrkMast.getWrkSts() == 21) {
+ //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
+ searchIdleShuttle = this.searchIdleShuttle(wrkMast);
+ shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+ }else if(wrkMast.getWrkSts() == 31 || wrkMast.getWrkSts() == 25) {
+ //缁х画瀹屾垚涔嬪墠灏忚溅鏈畬鎴愮殑浠诲姟
+ shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ }
+
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (!shuttleProtocol.isIdle()) {
+ continue;
+ }
+
+ if (outStaLocNo == null) {
+ continue;
+ }
+
+ wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
+ //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+
+ //灏忚溅褰撳墠灞傞珮
+ Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
+ //鑾峰彇鎻愬崌鏈�
+ LiftSlave liftSlave = slaveProperties.getLift().get(0);
+ //鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNo = liftSlave.getLiftLocNo(currentLev);
+
+ //鍒嗛厤浠诲姟鍙�
+ shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());
+ //鍒嗛厤婧愬簱浣�
+ shuttleProtocol.setSourceLocNo(currentLocNo);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ //鍥涘悜绌挎杞﹀彿
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ //浠诲姟鍙�
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ //鍏ュ嚭搴撴ā寮�
+ assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());
+ assignCommand.setSourceLocNo(currentLocNo);
+
+ if (wrkMast.getWrkSts() == 21) {
+ //鍒ゆ柇灏忚溅鍜屽簱浣嶆槸鍚﹀湪鍚屼竴灞�
+ if (Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
+ //鍚屼竴灞�(灏嗗皬杞︾Щ鍔ㄥ埌璐х墿浣嶇疆)
+
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo);
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(wrkMast.getSourceLocNo());
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(wrkMast.getSourceLocNo());
+ assignCommand.setCommands(commands);
+ wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓�
+ }else {
+ //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿(灏嗗皬杞︾Щ鍔ㄥ埌鎻愬崌鏈轰綅缃�)
+
+ //灏忚溅鍒版彁鍗囨満鍙f寚浠�
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id);
+ shuttleProtocol.setLocNo(liftLocNo);
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(liftLocNo);
+ assignCommand.setCommands(commands);
+ wrkMast.setWrkSts(22L);//灏忚溅杩佺Щ鐘舵��
+ }
+ } else if (wrkMast.getWrkSts() == 25) {
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo);
+ //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
+ BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭�
+ ShuttleCommand moveCommand = new ShuttleCommand();
+ moveCommand.setCommandWord((short) 1);//灏忚溅绉诲姩鎸囦护瀛�
+ moveCommand.setStartCodeNum(Short.parseShort(basDevp.getQrCodeValue()));//鎻愬崌鏈轰簩缁寸爜
+ moveCommand.setDistCodeNum(commands.get(0).getStartCodeNum());
+ moveCommand.setStartToDistDistance(1300);
+ moveCommand.setMiddleToDistDistance(0);
+ moveCommand.setRunDirection(commands.get(0).getRunDirection());
+ moveCommand.setCommandEnd((short) 1);
+ commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
+
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(wrkMast.getSourceLocNo());
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(wrkMast.getSourceLocNo());
+ assignCommand.setCommands(commands);
+ wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓�
+ }
+
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 鎼滅储绌洪棽涓旀渶杩戠殑鍥涘悜绌挎杞�(浠ュ伐浣滄。鐩爣搴撲綅涓哄熀鐐硅绠楁渶杩戜笖绌洪棽鐨勮溅)
+ */
+ public HashMap<String,Object> searchIdleShuttle(WrkMast wrkMast) {
+ HashMap<String, Object> map = new HashMap<>();
+ String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();//搴撲綅鍙�
+ LocMast locMast = locMastService.queryByLoc(locNo);//鎵惧埌搴撲綅璁板綍
+ String lay = locNo.substring(locNo.length() - 2, locNo.length());//褰撳墠宸ヤ綔妗e簱浣嶅眰楂�
+ ShuttleThread recentShuttle = null;//褰撳墠璺濈鏈�杩戠殑鍥涘悜绌挎杞︾嚎绋�
+
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+ if (!shuttleProtocol.isIdle()) {
+ continue;
+ }
+
+ String shuttleLocNo = shuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
+ String shuttleLocNoLay = shuttleLocNo.substring(shuttleLocNo.length() - 2, shuttleLocNo.length());//搴撲綅鍙峰搴斿眰楂�
+ if (lay.equals(shuttleLocNoLay)) {
+ //褰撳墠鍥涘悜绌挎杞﹀拰宸ヤ綔妗d换鍔″湪鍚屼竴灞傦紝鍒欒皟閰嶈杞﹁締
+ map.put("sameLay", true);//鍚屼竴灞�
+ map.put("result", shuttleThread);
+ return map;
+ }
+
+ //鏇存柊褰撳墠鏈�杩戠殑鍥涘悜绌挎杞�
+ if (recentShuttle == null) {
+ recentShuttle = shuttleThread;
+ }else {
+ ShuttleProtocol recentShuttleProtocol = recentShuttle.getShuttleProtocol();//鐩墠鏈�杩戠┛姊溅
+ String recentShuttleLocNo = recentShuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
+ String recentShuttleLocNoLay = recentShuttleLocNo.substring(recentShuttleLocNo.length() - 2, recentShuttleLocNo.length());//搴撲綅鍙峰搴斿眰楂�
+
+ int recentShuttleLocNoLayInt = Integer.parseInt(recentShuttleLocNoLay);
+ int layInt = Integer.parseInt(lay);
+ int shuttleLocNoLayInt = Integer.parseInt(shuttleLocNoLay);
+ int i = Math.abs(layInt - recentShuttleLocNoLayInt);//宸ヤ綔妗fゼ灞傚噺鏈�杩戠┛姊溅妤煎眰锛屽彇缁濆鍊�
+ int j = Math.abs(layInt - shuttleLocNoLayInt);//宸ヤ綔妗fゼ灞傚噺褰撳墠绌挎杞︽ゼ灞傦紝鍙栫粷瀵瑰��
+ if (i < j) {
+ //鏇存柊鏈�杩戠┛姊溅
+ recentShuttle = shuttleThread;
+ } else if (i == j) {
+ //妤煎眰鐩稿悓鎯呭喌
+ //鎵捐窛绂诲嚭搴撶偣鏈�杩戠殑杞�
+
+ if (!(recentShuttleProtocol.isIdle() && shuttleProtocol.isIdle())) {
+ //鍙鏈変竴杈嗚溅涓嶆槸绌洪棽鍒欎笉杩涜璋冨害
+ map.put("sameLay", false);//涓嶅悓灞�
+ map.put("result", null);
+ return map;
+ }
+
+ //鑾峰彇鎻愬崌鏈�
+ LiftSlave liftSlave = slaveProperties.getLift().get(0);
+ //鎻愬崌鏈哄簱浣嶅彿
+ String recentLiftLocNo = liftSlave.getLiftLocNo(recentShuttleLocNoLayInt);
+ String shuttleLiftLocNo = liftSlave.getLiftLocNo(shuttleLocNoLayInt);
+
+ //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒版彁鍗囨満璺緞
+ List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, recentLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //褰撳墠妤煎眰鍥涘悜绌挎杞﹀埌鎻愬崌鏈鸿矾寰�
+ List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, shuttleLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //鍒ゆ柇鍝竴涓矾寰勬渶鐭�
+ if (shuttlePath.size() < recentShuttlePath.size()) {
+ //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
+ recentShuttle = shuttleThread;
+ }
+ }
+ }
+ }
+
+ map.put("sameLay", false);//涓嶅悓灞�
+ map.put("result", recentShuttle);
+ return map;
+ }
+
+ /**
+ * 鍥涘悜绌挎杞︿换鍔″畬鎴�
+ */
+ public synchronized void shuttleFinished() {
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭
+ && shuttleProtocol.getTaskNo() != 0) {
+ //灏嗕换鍔℃。鏍囪涓哄畬鎴�
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
+ if (wrkMast != null) {
+ switch (wrkMast.getWrkSts().intValue()) {
+ case 9:
+ wrkMast.setWrkSts(14L);
+ break;
+ case 5:
+ wrkMast.setWrkSts(6L);
+ break;
+ case 22:
+ wrkMast.setWrkSts(23L);
+ break;
+ case 26:
+ wrkMast.setWrkSts(27L);
+ break;
+ default:
+ }
+
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ //浠诲姟鍙锋竻闆�
+ shuttleProtocol.setTaskNo((short) 0);
+ //婧愬簱浣嶆竻闆�
+ shuttleProtocol.setSourceLocNo(null);
+ //鐩爣搴撲綅娓呴浂
+ shuttleProtocol.setLocNo(null);
+ //鏍囪澶嶄綅
+ shuttleProtocol.setPakMk(true);
+ //浠诲姟鎸囦护娓呴浂
+ shuttleProtocol.setAssignCommand(null);
+ News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+ } else {
+ News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+ }
+ }
+
+ }
+
+ //鍥涘悜绌挎杞︾姸鎬佷负鍏呯數鐘舵��
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id //鍏呯數鏍囪瘑
+ && shuttleProtocol.getTaskNo() != 0) {
+ //鏌ヨ鏄惁鏈夊厖鐢典换鍔�
+ WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
+ if (wrkCharge != null) {
+ switch (wrkCharge.getWrkSts().intValue()) {
+ case 52://鍥涘悜绌挎杞﹁縼绉诲埌鎻愬崌鏈哄彛
+ wrkCharge.setWrkSts(53L);//杩佺Щ瀹屾垚
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ break;
+ case 56:
+ if (shuttleProtocol.getBatteryPower() == 1000) {
+ wrkCharge.setWrkSts(60L);//鍏呯數瀹屾垚
+ }
+ break;
+ default:
+ }
+
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ if (wrkCharge.getWrkSts() == 60) {
+ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ }
+ //浠诲姟鍙锋竻闆�
+ shuttleProtocol.setTaskNo((short) 0);
+ //婧愬簱浣嶆竻闆�
+ shuttleProtocol.setSourceLocNo(null);
+ //鐩爣搴撲綅娓呴浂
+ shuttleProtocol.setLocNo(null);
+ //鏍囪澶嶄綅
+ shuttleProtocol.setPakMk(true);
+ //浠诲姟鎸囦护娓呴浂
+ shuttleProtocol.setAssignCommand(null);
+ News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+ } else {
+ News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
+ }
+ }
+ }
+
+ }
+ }
+
+ /**
+ * 鎻愬崌鏈轰换鍔�
+ */
+ public synchronized void liftIoExecute() {
+ for (LiftSlave liftSlave : slaveProperties.getLift()) {
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
+ if (liftThread == null) {
+ continue;
+ }
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+ if (liftProtocol == null) {
+ continue;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
+ if (!liftProtocol.isIdle()) {
+ continue;
+ }
+
+ //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
+ WrkMast wrkMast = wrkMastMapper.selectLiftStep623();
+ if (wrkMast == null) {
+ continue;
+ }
+
+ //缁欐彁鍗囨満鍒嗛厤浠诲姟
+ liftProtocol.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+ liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
+ liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
+
+ //鎵惧埌鍥涘悜绌挎杞︾殑绾跨▼
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, liftProtocol.getShuttleNo().intValue());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ //鍛戒护list
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+
+ //褰撳墠绌挎杞﹀簱浣嶅彿
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+ //褰撳墠绌挎杞︽ゼ灞�
+ int currentLocNoLey = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
+
+ //宸ヤ綔妗g洰鏍囧簱浣嶅彿
+ String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo();
+ //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
+ int wrkMastLocNoLey = Integer.parseInt(wrkMastLocNo.substring(wrkMastLocNo.length() - 2, wrkMastLocNo.length()));
+
+ //鎻愬崌鏈哄綋鍓嶆ゼ灞�
+ int liftLev = liftProtocol.getLev().intValue();
+ if (liftLev != currentLocNoLey) {
+ //涓嶅悓妤煎眰
+ LiftCommand command1 = new LiftCommand();
+ command1.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command1.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command1.setRun((short) 1);//鍗囬檷
+ command1.setDistPosition((short) currentLocNoLey);//鐩爣妤煎眰(绌挎杞︽墍鍦ㄦゼ灞�)
+ command1.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
+ }
+
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩杩涙潵
+ LiftCommand command2 = new LiftCommand();
+ command2.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command2.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command2.setRun((short) 6);//杈撻�佺嚎杩愪綔
+ command2.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
+ LiftCommand command3 = new LiftCommand();
+ command3.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command3.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command3.setRun((short) 1);//鍗囬檷
+ command3.setDistPosition((short) wrkMastLocNoLey);//宸ヤ綔妗g洰鏍囨ゼ灞�
+ command3.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲嚭鍘�
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩鍑哄幓
+ LiftCommand command4 = new LiftCommand();
+ command4.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command4.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command4.setRun((short) 3);//杈撻�佺嚎杩愪綔
+ command4.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ if (wrkMast.getIoType() == 101) {
+ //鍑哄簱浠诲姟
+ wrkMast.setWrkSts(24L);//绉诲姩浠诲姟
+ }else {
+ //鍏ュ簱浠诲姟
+ wrkMast.setWrkSts(7L);//绉诲姩浠诲姟
+ }
+ //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(liftProtocol.getLiftNo());
+ assignCommand.setTaskNo(liftProtocol.getTaskNo());
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+ }
+
+ /**
+ * 鎻愬崌鏈轰换鍔″畬鎴�
+ */
+ public synchronized void liftFinished() {
+ for (LiftSlave liftSlave : slaveProperties.getLift()) {
+ //鑾峰彇鎻愬崌鏈轰俊鎭�
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+ if (liftProtocol == null) {
+ continue;
+ }
+
+ //鎻愬崌鏈轰负绛夊緟纭
+ if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id && liftProtocol.getTaskNo() != 0) {
+ //灏嗕换鍔℃。鏍囪涓哄畬鎴�
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo724(liftProtocol.getTaskNo().intValue());
+ if (wrkMast != null) {
+ switch (wrkMast.getWrkSts().intValue()) {
+ case 7:
+ wrkMast.setWrkSts(8L);
+ break;
+ case 24:
+ wrkMast.setWrkSts(25L);
+ break;
+ default:
+ }
+
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
+ //浠诲姟鍙锋竻闆�
+ liftProtocol.setTaskNo((short) 0);
+ //鏍囪澶嶄綅
+ liftProtocol.setPakMk(true);
+ //浠诲姟鎸囦护娓呴浂
+ liftProtocol.setAssignCommand(null);
+ //鎻愬崌鏈鸿В閿�
+ liftProtocol.setLiftLock(false);
+ News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
+ } else {
+ News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
+ }
+ }
+
+ //鏌ヨ鏄惁鏈夊厖鐢典换鍔�
+ WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(liftProtocol.getTaskNo().intValue());
+ if (wrkCharge != null) {
+ switch (wrkCharge.getWrkSts().intValue()) {
+ case 54://鎻愬崌鏈烘惉杩愪腑
+ wrkCharge.setWrkSts(55L);//鎻愬崌鏈烘惉杩愬畬鎴�
+ break;
+ default:
+ }
+
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
+ //浠诲姟鍙锋竻闆�
+ liftProtocol.setTaskNo((short) 0);
+ //鏍囪澶嶄綅
+ liftProtocol.setPakMk(true);
+ //浠诲姟鎸囦护娓呴浂
+ liftProtocol.setAssignCommand(null);
+ //鎻愬崌鏈鸿В閿�
+ liftProtocol.setLiftLock(false);
+ News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
+ } else {
+ News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
+ }
+ }
+ }
+ }
+ }
+
/**
* 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
*/
@@ -666,7 +1427,7 @@
// 搴撲綅绉昏浆
// this.locToLoc(crn, crnProtocol);
// 婕旂ず
- this.steMoveDemo(crn, crnProtocol);
+// this.steMoveDemo(crn, crnProtocol);
}
}
}
@@ -726,6 +1487,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());
@@ -733,7 +1539,9 @@
}
// 缃《浠诲姟
- wrkMast.setIoPri((double) 9999);
+ if (wrkMast.getIoPri()<8000){
+ wrkMast.setIoPri(wrkMast.getIoPri()+9000d);
+ }
wrkMastMapper.updateById(wrkMast);
// 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
@@ -899,6 +1707,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());
@@ -948,74 +1786,10 @@
}
// 缃《浠诲姟
- wrkMast.setIoPri((double) 9998);
+ if (wrkMast.getIoPri()<8000){
+ wrkMast.setIoPri(wrkMast.getIoPri()+8999d);
+ }
wrkMastMapper.updateById(wrkMast);
-
- // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
- if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
- String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
- LocMast shallowLoc = locMastService.selectById(shallowLocNo);
- // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
- if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
- WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
- if (null == waitWrkMast) {
- News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
- } else {
- if(waitWrkMast.getWrkSts() == 11) {
- waitWrkMast.setIoPri(wrkMast.getIoPri() + 1);
- waitWrkMast.setModiTime(new Date());
- if (wrkMastMapper.updateById(waitWrkMast) == 0) {
- News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
- }
- }
- continue;
- }
- } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
- // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
- if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
- wrkMast.setUpdMk("Y");
- wrkMastMapper.updateById(wrkMast);
- // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
- moveLocForDeepLoc(slave, shallowLoc);
- }
- News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
- continue;
- }
- }
-
- // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (wrkMastMapper.selectWorking(slave.getId()) != null) {
- continue;
- }
-
- // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
- if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
- News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓�
- Date now = new Date();
- wrkMast.setWrkSts(16L);
- wrkMast.setCrnStrTime(now);
- wrkMast.setModiTime(now);
- if (wrkMastMapper.updateById(wrkMast) == 0) {
- News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
- } else {
- return true;
- }
- }
-
- } else {
// 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱
if (locMastService.isOutMost(wrkMast.getSourceLocNo(), false)) {
@@ -1050,7 +1824,7 @@
return true;
}
}
- // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱
+ // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱
} else {
// 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞�
Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo());
@@ -1128,7 +1902,7 @@
}
}
- // 娌℃湁灏忚溅
+ // 娌℃湁灏忚溅
} else {
if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
// 瀵绘壘鏈�杩戠殑灏忚溅
@@ -1310,7 +2084,7 @@
SteProtocol steProtocol = steThread.getSteProtocol();
if (steProtocol == null) { continue; }
if (!steProtocol.isIdle()) { continue; }
- if (steProtocol.getRow() == 1) { continue; }
+// if (steProtocol.getRow() == 1) { continue; }
String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();
// 濡傛灉鍦ㄥ悓涓�涓簱浣嶇粍
if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true))
@@ -1679,6 +2453,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 {
// 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚
@@ -1901,6 +2686,22 @@
}
}
// 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
+ } else if (wrkMast.getWrkSts() == 16) {
+ // 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚
+ wrkMast.setWrkSts(17L);
+ Date now = new Date();
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+ Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+ wrkMast.setCrnNo(outCrnNo);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ } else {
+ News.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
}
}
}
@@ -1945,15 +2746,17 @@
} else {
steThread.setResetFlag(true);
}
- } else if (wrkCharge.getWrkSts() == 29) {
- // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
- wrkCharge.setWrkSts(30L);
- if (!wrkChargeService.updateById(wrkCharge)) {
- News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
- } else {
- steThread.setResetFlag(true);
- }
- } else if (wrkCharge.getWrkSts() == 32) {
+ }
+// else if (wrkCharge.getWrkSts() == 29) {
+// // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+// wrkCharge.setWrkSts(30L);
+// if (!wrkChargeService.updateById(wrkCharge)) {
+// News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+// } else {
+// steThread.setResetFlag(true);
+// }
+// }
+ else if (wrkCharge.getWrkSts() == 32) {
// 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉
wrkCharge.setWrkSts(33L);
if (!wrkChargeService.updateById(wrkCharge)) {
@@ -2056,10 +2859,129 @@
*/
public void recErr() {
try {
+ this.recShuttleErr();
this.recCrnErr();
this.recSteErr();
} catch (Exception e) {
News.error("recErr fail", e);
+ }
+ }
+
+ /**
+ * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
+ */
+ private void recShuttleErr() {
+ Date now = new Date();
+ for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getTaskNo() != 0) {
+ //鏈変换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo().intValue());
+ // 鏈夊紓甯�
+ if (latest == null) {
+ if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
+ WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo());
+ if (wrkMast == null) {
+ continue;
+ }
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
+ String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+ BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+ null, // 缂栧彿
+ wrkMast.getWrkNo(), // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ wrkMast.getWrkSts(), // 宸ヤ綔鐘舵��
+ wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨�
+ shuttleSlave.getId(), // 鍥涘悜绌挎杞�
+ null, // plc
+ wrkMast.getLocNo(), // 鐩爣搴撲綅
+ wrkMast.getStaNo(), // 鐩爣绔�
+ wrkMast.getSourceStaNo(), // 婧愮珯
+ wrkMast.getSourceLocNo(), // 婧愬簱浣�
+ wrkMast.getBarcode(), // 鏉$爜
+ (int) shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�" // 澶囨敞
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (shuttleProtocol.getStatusErrorCode() == null || shuttleProtocol.getStatusErrorCode() == 0) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }else {
+ //鏃犱换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId());
+ // 鏈夊紓甯�
+ if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
+ // 璁板綍鏂板紓甯�
+ if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) {
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
+ String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+ BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+ null, // 缂栧彿
+ null, // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ null, // 宸ヤ綔鐘舵��
+ null, // 鍏ュ嚭搴撶被鍨�
+ shuttleSlave.getId(), // 鍥涘悜绌挎杞�
+ null, // plc
+ null, // 鐩爣搴撲綅
+ null, // 鐩爣绔�
+ null, // 婧愮珯
+ null, // 婧愬簱浣�
+ null, // 鏉$爜
+ (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "鏃犱换鍔″紓甯�" // 澶囨敞
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ // 鏃犲紓甯�
+ } else {
+ // 寮傚父淇
+ if (latest != null && latest.getStatus() == 1) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }
}
}
@@ -2432,18 +3354,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);
}
@@ -2456,9 +3371,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);
+ }
}
}
@@ -2488,6 +3414,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());
// 鍛戒护闆嗗悎
@@ -2502,9 +3457,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());
}
@@ -2513,10 +3469,281 @@
}
/**
+ * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
+ */
+ public synchronized void loopShuttleCharge() {
+ for (DevpSlave devpSlave : slaveProperties.getDevp()) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId());
+ for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
+ if (!shuttleProtocol.isRequireCharge()) {
+ continue;
+ }
+
+ WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
+ if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟
+ continue;
+ }
+
+ ShuttleChargeType shuttleCharge = null;
+ String locNo;
+ for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+ switch (chargeType.id) {
+ case 1:
+ if (devpThread.charge0 == false) {
+ ShuttleChargeType first = ShuttleChargeType.FIRST;
+ locNo = first.locNo;
+ if (wrkChargeService.selectWorkingOfCharge(first.id) == null) {
+ shuttleCharge = first;
+ }
+ }
+ break;
+ default:
+ }
+ }
+
+ if (shuttleCharge == null) {
+ continue;
+ }
+
+ String chargeLocNo = shuttleCharge.locNo;
+ wrkCharge = new WrkCharge();
+ wrkCharge.setShuttleNo(shuttle.getId());
+ wrkCharge.setCharge(shuttleCharge.id);
+ wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
+ wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數
+ wrkCharge.setIoPri((double) 10);
+ wrkCharge.setLocNo(chargeLocNo);
+ wrkCharge.setMemo("charge");
+ wrkCharge.setAppeTime(new Date());
+ if (!wrkChargeService.insert(wrkCharge)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
+ continue;
+ }
+
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓�
+ News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId());
+ }
+ }
+
+
+ }
+
+ /**
+ * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔�
+ */
+ public synchronized void executeShuttleCharge() {
+ WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
+ if (wrkCharge == null) {
+ return;
+ }
+
+
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo());
+ if (shuttleThread == null) {
+ return;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ return;
+ }
+
+ //褰撳墠绌挎杞﹀簱浣嶅彿
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+ //灏忚溅褰撳墠灞傞珮
+ Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
+ //鑾峰彇鎻愬崌鏈�
+ LiftSlave liftSlave = slaveProperties.getLift().get(0);
+ //鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNo = liftSlave.getLiftLocNo(currentLev);
+ //鍏呯數搴撲綅鍙�
+ String chargeLocNo = wrkCharge.getLocNo();
+ //鍏呯數搴撲綅灞傞珮
+ Integer chargeLocNoLev = Integer.parseInt(chargeLocNo.substring(chargeLocNo.length() - 2, chargeLocNo.length()));
+
+ if (wrkCharge.getWrkSts() == 51 || wrkCharge.getWrkSts() == 55) {
+ if (currentLev == chargeLocNoLev) {
+ //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈�
+ //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅
+ //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //杩涜鍏呯數涓�
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 9);//鍏呯數
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);//鍏呯數浠诲姟
+
+ //鍒涘缓鍏呯數鎸囦护
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 5);//鍏呯數
+ command.setShuttleNo(shuttleProtocol.getShuttleNo());
+ command.setChargeSwitch((short) 1);//寮�濮嬪厖鐢�
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+
+ //鎸囦护闆嗗垎閰�
+ assignCommand.setCommands(commands);
+
+ wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }else {
+ //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
+
+ //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞
+ List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id);
+ //鍒嗛厤鐩爣搴撲綅
+ shuttleProtocol.setLocNo(liftLocNo);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 9);//鍏呯數
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);//鍏呯數浠诲姟
+ //鐩爣搴撲綅
+ assignCommand.setLocNo(liftLocNo);
+ //婧愬簱浣�
+ assignCommand.setSourceLocNo(currentLocNo);
+ assignCommand.setCommands(commands);
+ wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵��
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+ }
+
+ }else if(wrkCharge.getWrkSts() == 53){
+ //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄彛
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
+ if (liftThread == null) {
+ return;
+ }
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+ if (liftProtocol == null) {
+ return;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
+ if (!liftProtocol.isIdle()) {
+ return;
+ }
+
+ //缁欐彁鍗囨満鍒嗛厤浠诲姟
+ liftProtocol.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+ liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
+ liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
+
+ //鍛戒护list
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+
+ //鎻愬崌鏈哄綋鍓嶆ゼ灞�
+ int liftLev = liftProtocol.getLev().intValue();
+ if (liftLev != currentLev) {
+ //绌挎杞﹀拰鎻愬崌鏈哄浜庝笉鍚屾ゼ灞�
+ LiftCommand command1 = new LiftCommand();
+ command1.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command1.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command1.setRun((short) 1);//鍗囬檷
+ command1.setDistPosition(currentLev.shortValue());//鐩爣妤煎眰(绌挎杞︽墍鍦ㄦゼ灞�)
+ command1.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+ commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
+ }
+
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩杩涙潵
+ LiftCommand command2 = new LiftCommand();
+ command2.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command2.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command2.setRun((short) 6);//杈撻�佺嚎杩愪綔
+ command2.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰
+ LiftCommand command3 = new LiftCommand();
+ command3.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command3.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command3.setRun((short) 1);//鍗囬檷
+ command3.setDistPosition(chargeLocNoLev.shortValue());//鍏呯數搴撲綅鐩爣妤煎眰
+ command3.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲嚭鍘�
+ //杈撻�佺嚎灏嗗洓鍚戠┛姊溅绉诲姩鍑哄幓
+ LiftCommand command4 = new LiftCommand();
+ command4.setLiftNo(liftProtocol.getLiftNo());//鎻愬崌鏈哄彿
+ command4.setTaskNo(liftProtocol.getTaskNo());//浠诲姟鍙�
+ command4.setRun((short) 3);//杈撻�佺嚎杩愪綔
+ command4.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+
+ commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list
+
+ wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑
+ //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(liftProtocol.getLiftNo());
+ assignCommand.setTaskNo(liftProtocol.getTaskNo());
+ if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+ }
+
+ } else if (wrkCharge.getWrkSts() == 56) {
+ //鍏呯數涓�
+ //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂
+ if (shuttleProtocol.getBatteryPower() >= 1000 || shuttleProtocol.getCurrentVoltage() >= 540) {
+ //鍏呮弧锛屾柇寮�鍏呯數
+ List<ShuttleCommand> commands = new ArrayList<>();
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
+ assignCommand.setTaskMode((short) 0);
+ assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());
+ assignCommand.setCharge(true);
+
+ //鍒涘缓鍏呯數鎸囦护
+ ShuttleCommand command = new ShuttleCommand();
+ command.setCommandWord((short) 5);//鍏呯數
+ command.setShuttleNo(shuttleProtocol.getShuttleNo());
+ command.setChargeSwitch((short) 2);//鏂紑鍏呯數
+ command.setCommandEnd((short) 1);
+ commands.add(command);
+
+ //鎸囦护闆嗗垎閰�
+ assignCommand.setCommands(commands);
+
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ }
+
+ if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) {
+ shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
+ }
+ }
+
+ }
+
+ /**
* 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數
*/
@SuppressWarnings("serial")
public synchronized void loopSteCharge() {
+ if (!Cools.isEmpty(wrkMastMapper.selectAllC())){
+ return;
+ }
if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) {
return;
}
@@ -2552,7 +3779,7 @@
SteChargeType steCharge = null;
do {
String locNo;
- if (!devpThread.charge0) {
+ if (devpThread.charge0) {
SteChargeType first = SteChargeType.FIRST;
locNo = first.locNo;
if (basSteService.hasCarOfLocNo(locNo) == null
@@ -2561,24 +3788,24 @@
break;
}
}
- if (!devpThread.charge1) {
- SteChargeType second = SteChargeType.SECOND;
- locNo = second.locNo;
- if (basSteService.hasCarOfLocNo(locNo) == null
- && wrkChargeService.selectWorkingOfCharge(second.ssbm) == null) {
- steCharge = second;
- break;
- }
- }
- if (!devpThread.charge2) {
- SteChargeType third = SteChargeType.THIRD;
- locNo = third.locNo;
- if (basSteService.hasCarOfLocNo(locNo) == null
- && wrkChargeService.selectWorkingOfCharge(third.ssbm) == null) {
- steCharge = third;
- break;
- }
- }
+// if (!devpThread.charge1) {
+// SteChargeType second = SteChargeType.SECOND;
+// locNo = second.locNo;
+// if (basSteService.hasCarOfLocNo(locNo) == null
+// && wrkChargeService.selectWorkingOfCharge(second.ssbm) == null) {
+// steCharge = second;
+// break;
+// }
+// }
+// if (!devpThread.charge2) {
+// SteChargeType third = SteChargeType.THIRD;
+// locNo = third.locNo;
+// if (basSteService.hasCarOfLocNo(locNo) == null
+// && wrkChargeService.selectWorkingOfCharge(third.ssbm) == null) {
+// steCharge = third;
+// break;
+// }
+// }
break;
} while (false);
@@ -2592,7 +3819,7 @@
wrkCharge.setCharge(steCharge.ssbm);
wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
wrkCharge.setWrkSts(21L); // 21.鍑嗗鍏呯數
- wrkCharge.setCrnNo(2); // 鍥哄畾2鍙峰爢鍨涙満
+ wrkCharge.setCrnNo(1); // 鍥哄畾1鍙峰爢鍨涙満
wrkCharge.setIoPri((double) 10);
wrkCharge.setLocNo(chargeLocNo);
wrkCharge.setMemo("charge");
@@ -2602,49 +3829,15 @@
continue;
}
- // 灏忚溅澶勪簬閫氶亾
- List<String> channel = slaveProperties.getChannel();
- for (String channelLocNo : channel) {
- if (steProtocol.getRow().intValue() == Utils.getRow(channelLocNo)
- && steProtocol.getBay().intValue() == Utils.getBay(channelLocNo)
- && steProtocol.getLev().intValue() == Utils.getLev(channelLocNo)) {
- Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
- if (null != otherSte) {
- News.warn("{}鍙峰皬杞﹀厖鐢甸樆鏂紝鍘熷洜锛氶�氶亾瀛樺湪{}鍙风┛姊溅锛�", wrkCharge.getSteNo(), otherSte);
- } else {
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- SteCommand steCommand = new SteCommand();
- steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
- steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
- steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 鍘诲彸绔�
-
- steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
- steCommand.setBay(steProtocol.getBay());
- steCommand.setLev(steProtocol.getLev());
- if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
- News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
- } else {
- // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌
- wrkCharge.setWrkSts(25L);
- Date now = new Date();
- wrkCharge.setModiTime(now);
- if (!wrkChargeService.updateById(wrkCharge)) {
- News.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
- }
- }
- }
- }
- }
-
// 澶勪簬鍏呯數搴撲綅缁�
- if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo)
+ if ( 0<steProtocol.getRow().intValue() && steProtocol.getRow().intValue()<=4
&& steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo)
&& steProtocol.getLev().intValue() == Utils.getLev(chargeLocNo)) {
- // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 28.鍏呯數灏辩华
- wrkCharge.setWrkSts(28L);
+ // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪
+ wrkCharge.setWrkSts(24L);
wrkCharge.setModiTime(new Date());
if (!wrkChargeService.updateById(wrkCharge)) {
- News.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 28.鍏呯數灏辩华 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ News.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
} else {
this.letCarBeWaiting(wrkCharge, ste.getId());
@@ -2664,10 +3857,26 @@
*/
public synchronized void executeSteCharge() {
WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
- if (null == wrkCharge) { return; }
- Integer steNo = wrkCharge.getSteNo();
- SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, 1);
SteProtocol steProtocol = steThread.getSteProtocol();
+ if (null == wrkCharge) {
+ 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;
+ }
+ Integer steNo = wrkCharge.getSteNo();
+
BasSte basSte = basSteService.selectById(steNo);
if (Cools.isEmpty(steProtocol, basSte)) { return; }
if (steProtocol.getMode() == 0
@@ -2681,9 +3890,35 @@
if (!steProtocol.isEnable()) {
return;
}
- if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
+ if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())+40) {
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//涓柇鍏呯數鏍囪
wrkCharge.setWrkSts(30L);
- wrkChargeMapper.updateById(wrkCharge);
+ if (!wrkChargeService.updateById(wrkCharge)) {
+ News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ }else {
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+ if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+ News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+ }
+ }
+ return;
+ }else if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine()) && steProtocol.getChargeStatus()==(short)0 && steProtocol.isBrushConnect()) {
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//涓柇鍏呯數鏍囪
+ wrkCharge.setWrkSts(30L);
+ if (!wrkChargeService.updateById(wrkCharge)) {
+ News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ }else {
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+ if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+ News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+ }
+ }
return;
}
try {
@@ -2700,49 +3935,39 @@
return;
}
+ LocMast locMast = locMastService.selectById(basSte.getIdleLoc());
+
// 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾
- List<String> channel = slaveProperties.getChannel();
- for (String channelLocNo : channel) {
- Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
- if (null != otherSte) {
- News.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte);
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) { return; }
+ // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+ // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) {
+ News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
} else {
- LocMast channelLoc = locMastService.selectById(channelLocNo);
-
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo());
- CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol == null) { continue; }
- // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
- if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
- // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue()); // 鐩爣搴撲綅灞�
- if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) {
- News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
- } else {
- // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
- steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1());
- // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍
- Date now = new Date();
- wrkCharge.setWrkSts(23L);
- wrkCharge.setCrnStrTime(now);
- wrkCharge.setModiTime(now);
- if (!wrkChargeService.updateById(wrkCharge)) {
- News.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
- }
- }
- break;
+ // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
+ steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo(), true), locMast.getBay1(), locMast.getLev1());
+ // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍
+ Date now = new Date();
+ wrkCharge.setWrkSts(23L);
+ wrkCharge.setCrnStrTime(now);
+ wrkCharge.setModiTime(now);
+ if (!wrkChargeService.updateById(wrkCharge)) {
+ News.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
-
}
}
@@ -2754,7 +3979,7 @@
SteCommand steCommand = new SteCommand();
steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
- steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 鍘诲彸绔�
+ steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN); // 鍘诲彸绔�
steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
steCommand.setBay(steProtocol.getBay());
@@ -2773,49 +3998,7 @@
}
}
} else if (wrkCharge.getWrkSts() == 26) {
- // 鍥哄畾鍫嗗灈鏈�
- int crnNo = 1;
- // 鍏ュ嚭搴撲换鍔′紭鍏�
- if (null != wrkMastMapper.selectWorkingByCrn(crnNo)) {
- return;
- }
-
- // 鍏呯數浣�
- LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo());
-
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
- CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol == null) { return; }
- // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
- if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
- // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue()); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(chargeLoc.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY(chargeLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ(chargeLoc.getLev1().shortValue()); // 鐩爣搴撲綅灞�
- if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) {
- News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(crnCommand));
- } else {
- // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
- steThread.modifyPos(chargeLoc.getRow1(), chargeLoc.getBay1(), chargeLoc.getLev1());
- // 淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣�
- Date now = new Date();
- wrkCharge.setWrkSts(27L);
- wrkCharge.setCrnStrTime(now);
- wrkCharge.setModiTime(now);
- if (!wrkChargeService.updateById(wrkCharge)) {
- News.error("淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
- }
- }
- }
- } else if (wrkCharge.getWrkSts() == 28L) {
+ //26.绛夊緟鍏呯數 ===>
// 绌挎杞︿笅鍙戝厖鐢典换鍔�
SteCommand steCommand = new SteCommand();
steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
@@ -2830,6 +4013,27 @@
News.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
}
}
+ } else if (wrkCharge.getWrkSts() == 29) {
+ Float idle2 = steProtocol.isIdle2();
+ String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(1).getChargeLine();
+ if (idle2<(Float.parseFloat(chargeLine)+2)){
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 666));//鍏呯數鏍囪
+ }else if (idle2 >= 100f){
+ MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//涓柇鍏呯數鏍囪
+ // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+ wrkCharge.setWrkSts(30L);
+ if (!wrkChargeService.updateById(wrkCharge)) {
+ News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+ }else {
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+ if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+ News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+ }
+ }
+ }
}
} catch (Exception e) {
News.error("executeSteCharge fail", e);
@@ -2839,6 +4043,7 @@
/**
* 杞鍏呯數妗╂槸鍚︽湁绌洪棽灏忚溅
*/
+ @Deprecated
public synchronized void queryChargeLocOfComplete() {
// 涓庡厖鐢典换鍔′笉鍚屾杩涜
if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) { return; }
@@ -2915,6 +4120,7 @@
/**
* 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅
*/
+ @Deprecated
public synchronized void steFromChargeToIdleLoc() {
WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.reset);
if (wrkCharge == null) { return; }
@@ -3352,6 +4558,63 @@
}
}
+ /**
+ * 鍑哄叆搴撴ā寮忓垏鎹�
+ */
+ public synchronized void outAndIn() {
+ try {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ for (DevpSlave.Sta inSta : devp.getInSta()) {
+ Thread.sleep(500);
+ boolean a=true,b=true;
+ List<WrkMast> wrkMasts = wrkMastMapper.selectAll(inSta.getStaNo());
+ if (Cools.isEmpty(wrkMasts)){
+ b=false;
+ }else {
+ for (WrkMast wrkMast:wrkMasts){
+ if (wrkMast.getSourceStaNo() > wrkMast.getStaNo()){
+ a=false;
+ break;
+ }
+ }
+ }
+ switch (inSta.getStaNo()) {
+ case 102://1F
+ if (a && b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 11));
+ }else if (b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 12));
+ }else {
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 10));
+ }
+ break;
+ case 202://2F
+ if (a && b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 21));
+ }else if (b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 22));
+ }else {
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 20));
+ }
+ break;
+ case 302://3F
+ if (a && b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 31));
+ }else if (b){
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 32));
+ }else {
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 30));
+ }
+ break;
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
--
Gitblit v1.9.1