From bdd676ea0246acd555fff9c98c8d0bf24865437c Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 19 一月 2026 17:42:50 +0800
Subject: [PATCH] WCS功能完善
---
src/main/java/com/zy/service/impl/MainServiceImpl.java | 320 ++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 228 insertions(+), 92 deletions(-)
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 56e679d..b1a9bda 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -31,6 +31,8 @@
import com.zy.entity.*;
import com.zy.mapper.*;
import com.zy.service.*;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import com.zy.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -93,7 +95,7 @@
@Value("${wms.url}")
private String wmsUrl;
- public Integer wrkNo = 9901;
+ public Integer wrkNo = 9999;
/**
* 缁勬墭
@@ -147,20 +149,13 @@
errMsg = "瓒呴噸";
back = true;
}
- if (!back && staProtocol.isBarcodeErr()) {
+ if (!back && (staProtocol.isBarcodeErr()||Cools.isEmpty(barcode))) {
errMsg = "鎵爜澶辫触";
back = true;
}
// 閫�鍥�
- if (back) {
+ if (back && (staProtocol.getWorkNo() >= 9993 && staProtocol.getWorkNo() <= 9995 || staProtocol.getWorkNo() == 9997) && staProtocol.isLoading() && staProtocol.isPakMk()) {
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
-
- if (!staProtocol.isLoading()){
- continue;
- }
- if (!staProtocol.isPakMk()) {
- continue;
- }
staProtocol.setWorkNo(wrkNo);
News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -174,10 +169,18 @@
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
- && !staProtocol.isEmptyMk()
- && staProtocol.isPakMk()) {
- if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
- continue;
+// && !staProtocol.isEmptyMk()
+ && staProtocol.isPakMk()
+ && (staProtocol.getWorkNo() >= 9993 && staProtocol.getWorkNo() <= 9995|| staProtocol.getWorkNo() == 9997)) { // 9990-9992绌烘墭锛�9993-9995 婊℃墭锛�9999鍥為��
+ log.info("鍏ュ簱璇锋眰锛�" + staProtocol);
+ if(Cools.isEmpty(barcode) || barcode.endsWith("NG") || "NoRead".equals(barcode) || barcode.startsWith("00000000")) {
+ News.info("{}鏉$爜鎵弿閿欒锛歿}",barcodeThread.getSlave().getId(),barcode);
+ staProtocol.setWorkNo(wrkNo);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鏉$爜鎵弿閿欒"));
+ return;
}
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
@@ -197,6 +200,7 @@
param.setIoType(1);
param.setSourceStaNo(inSta.getStaNo());
param.setLocType1(locTypeDto.getLocType1());
+ param.setLocType2(locTypeDto.getLocType2());
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath("/rpc/pakin/loc/v1")
@@ -209,14 +213,12 @@
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
barcodeThread.setBarcode("");
staProtocol.setWorkNo(dto.getWorkNo());
- staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
+ staProtocol.setStaNo(dto.getStaNo().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
if (!result) {
News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
}else {
ledThread.errorReset();
}
@@ -238,7 +240,6 @@
}
-
}
}
@@ -258,7 +259,7 @@
}
String barcode = barcodeThread.getBarcode();
if(!Cools.isEmpty(barcode)) {
- if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ if(barcode.endsWith("NG") || barcode.equals("NoRead")) {
continue;
}
} else {
@@ -274,7 +275,8 @@
staProtocol = staProtocol.clone();
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()
+ && (staProtocol.getWorkNo() >= 9993 && staProtocol.getWorkNo() <= 9995 || staProtocol.getWorkNo() == 9997)) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
if (wrkMast == null) {
@@ -289,16 +291,16 @@
// 鑾峰彇鐩爣绔�
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", wrkMast.getIoType() - 50)
- .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("stn_no", wrkMast.getSourceStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
.eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
StaDesc staDesc = staDescService.selectOne(wrapper);
if (Cools.isEmpty(staDesc)) {
News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
staProtocol.setWorkNo(wrkNo);
- staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂4锛�"+9989+","+(pickSta.getStaNo().shortValue()-(short)1));
+ log.error("杈撻�佺嚎涓嬪彂4锛�"+wrkNo+","+pickSta.getBackSta());
//LED
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
// led 寮傚父鏄剧ず
@@ -326,8 +328,8 @@
wrkMast.setIoTime(now);
wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
- wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
- wrkMast.setStaNo(staNo); // 鐩爣绔�
+ wrkMast.setSourceStaNo(staProtocol.getSiteId()); // 婧愮珯
+ wrkMast.setStaNo(staProtocol.getSiteId()); // 鐩爣绔�
wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
wrkMast.setModiTime(now);
@@ -351,10 +353,10 @@
// 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo((short) 161);
+ staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+ log.info("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
if (!result) {
News.error(""+mark+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
}
@@ -419,7 +421,7 @@
wrkMast.setCrnEndTime(new Date());
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
- log.info("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�,浠诲姟鍙凤細{}",wrkMast.getWrkNo());
+ News.info("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�,浠诲姟鍙凤細{}",wrkMast.getWrkNo());
crnThread.setResetFlag(true);
} else {
News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
@@ -429,7 +431,7 @@
News.errorNoLog(""+mark+" - 6"+" - 鍫嗗灈鏈轰俊鎭笉绗﹀悎鍏ュ簱鏉′欢锛侊紒锛�"
+" 鍫嗗灈鏈虹姸鎬侊細"+crnProtocol.modeType+"==鑷姩AUTO锛�" + CrnModeType.AUTO
+"銆佸爢鍨涙満浠诲姟鍙凤細"+crnProtocol.getTaskNo()+"==宸ヤ綔妗d换鍔″彿锛�" + wrkMast.getWrkNo().shortValue()
- +"銆佺姸鎬佹灇涓撅細"+crnProtocol.statusType+"==WAITING锛�90 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
+ +"銆佺姸鎬佹灇涓撅細"+crnProtocol.statusType+"==WAITING锛�10 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
+"銆佽揣鍙変綅缃細"+crnProtocol.forkPosType+"==HOME锛�0 // 璐у弶鍘熶綅锛�" + CrnForkPosType.HOME);
}
@@ -458,30 +460,46 @@
// 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
- && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+ && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0 && wrkMastMapper.selectWorking(crn.getId()) == null) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
+ boolean success;
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
if (crnProtocol.getLastIo().equals("I")) {
if (basCrnp.getInEnable().equals("Y")) {
//mark - 1 - ....
- this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
- crnProtocol.setLastIo("O");
- } else if (basCrnp.getOutEnable().equals("Y")) {
+ success = this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
+ if(success) {
+ crnProtocol.setLastIo("O");
+ continue;
+ }
+ }
+ if (basCrnp.getOutEnable().equals("Y")) {
//mark - 2 - ....
- this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
- crnProtocol.setLastIo("I");
+ success = this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
+ if(success) {
+ crnProtocol.setLastIo("I");
+ continue;
+ }
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (crnProtocol.getLastIo().equals("O")) {
if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
- crnProtocol.setLastIo("I");
- } else if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
- crnProtocol.setLastIo("O");
+ success = this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
+ if(success) {
+ crnProtocol.setLastIo("I");
+ continue;
+ }
+ }
+ if (basCrnp.getInEnable().equals("Y")) {
+ success = this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
+ if(success) {
+ crnProtocol.setLastIo("O");
+ continue;
+ }
}
}
+// log.info("鍫嗗灈鏈哄垏鎹㈠嚭鍏ュ簱妯″紡涓猴細{}",crnProtocol.getLastIo().equals("I") ? "鍏ュ簱" : "鍑哄簱");
}
// 搴撲綅绉昏浆
//mark - 3 - ....
@@ -493,7 +511,7 @@
/**
* 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
*/
- public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+ public synchronized boolean crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
News.warnNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
boolean flag = false;
@@ -606,6 +624,9 @@
crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
+ if(crnStn.getBay() == 1 && locMast.getBay1() >= 15) { // 鍏ュ簱 闀垮簱浣嶅垯鍙栬揣浣嶇疆涓�0鍒�
+ crnCommand.setSourcePosY((short) 0);
+ }
crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
@@ -623,18 +644,41 @@
if (wrkMastMapper.updateById(wrkMast) == 0) {
News.error(""+mark+" - 1"+" - 17"+" - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
}
+ return true;
}
}
News.infoNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
+ return false;
}
+
+ @Resource
+ private BasDevpMapper basDevpMapper;
+
+ @Resource
+ private ConfigService configService;
/**
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
- public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+ public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
+ // 鎺у埗鏄惁鍏佽杩炵画鍑哄簱锛屼笉鍒ゆ柇鍑哄簱绔欑偣鐘舵��(鏍规嵁鐘舵�佸惎鐢�)
+ boolean crnAvailableOut = false;
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","removeCrnAvailableOut"));
+ if (config != null && config.getStatus() == 1) {
+ crnAvailableOut = true;
+ }
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
+ // 鍑哄叆搴撲换鍔℃帶鍒讹紝鏈夊叆搴撲换鍔′笉缁欏爢鍨涙満涓嬪彂鍛戒护
+ if (crnStn.getStaNo() == 205) {
+ BasDevp basDevp = basDevpMapper.selectById(crnStn.getStaNo());
+ Integer inQty = basDevp.getInQty();
+ if (inQty != 0) {
+ log.warn("璇ュ嚭搴撶珯鐐�:{},瀛樺湪鎵ц鐨勫叆搴撲换鍔�:{}鏉�", crnStn.getStaNo(), inQty);
+ continue;
+ }
+ }
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
for (WrkMast wrkMast : wrkMasts) {
@@ -672,8 +716,8 @@
}
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
- && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+ if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+ && (crnAvailableOut || !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable())) {
// 鍫嗗灈鏈烘帶鍒惰繃婊�
if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
// continue;
@@ -731,7 +775,7 @@
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
if (wrkMastMapper.selectWorking(slave.getId()) != null) {
- break;
+ return false;
// return;
}
@@ -750,6 +794,9 @@
crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
+ if(crnStn.getBay() == 1 && sourceSta.getBay1() >= 15) { // 闀垮簱浣� 鍑哄簱鏀捐揣鍒� 涓�0
+ crnCommand.setDestinationPosY((short) 0);
+ }
crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
crnCommand.setTraySize(sourceSta.getLocType1() == 2); //搴撲綅绫诲瀷
if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
@@ -763,12 +810,13 @@
if (wrkMastMapper.updateById(wrkMast) == 0) {
News.error(""+mark+" - 2"+" - 14"+" - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
}
- break;
+ return true;
}
}
}
}
News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
+ return false;
}
/**
@@ -797,7 +845,7 @@
News.error(""+mark+" - 3"+" - 2"+" - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
return;
}
- if(sta.getLocType1() != sourceSta.getLocType1()){
+ if(!Objects.equals(sta.getLocType1(), sourceSta.getLocType1())){
News.error("绉诲簱鐩爣搴撲綅绫诲瀷涓庢簮搴撲綅绫诲瀷涓嶇");
return;
}
@@ -908,13 +956,14 @@
if (crnProtocol == null) {
continue;
}
+ if (crnProtocol.getModeType() != CrnModeType.STOP) {
// 鏈変换鍔�
if (crnProtocol.getTaskNo() != 0) {
BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
// 鏈夊紓甯�
if (latest == null) {
- News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
+ News.warnNoLog("" + mark + " - 1" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
if (wrkMast == null) {
@@ -946,7 +995,7 @@
"浠诲姟涓紓甯�" // 澶囨敞
);
if (!basErrLogService.insert(basErrLog)) {
- News.error(""+mark+" - 2"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+ News.error("" + mark + " - 2" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
}
}
} else {
@@ -956,7 +1005,7 @@
latest.setUpdateTime(now);
latest.setStatus(2);
if (!basErrLogService.updateById(latest)) {
- News.error(""+mark+" - 3"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+ News.error("" + mark + " - 3" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
}
}
}
@@ -965,14 +1014,14 @@
BasErrLog latest = basErrLogService.findLatest(crn.getId());
// 鏈夊紓甯�
if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
- News.warnNoLog(""+mark+" - 4"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
+ News.warnNoLog("" + mark + " - 4" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
// 璁板綍鏂板紓甯�
if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
BasErrLog basErrLog = new BasErrLog(
null, // 缂栧彿
- null, // 宸ヤ綔鍙�
+ crnProtocol.getTaskNo().intValue(), // 宸ヤ綔鍙�
now, // 鍙戠敓鏃堕棿
null, // 缁撴潫鏃堕棿
null, // 宸ヤ綔鐘舵��
@@ -994,7 +1043,7 @@
"鏃犱换鍔″紓甯�" // 澶囨敞
);
if (!basErrLogService.insert(basErrLog)) {
- News.error(""+mark+" - 5"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+ News.error("" + mark + " - 5" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
}
}
// 鏃犲紓甯�
@@ -1005,11 +1054,12 @@
latest.setUpdateTime(now);
latest.setStatus(2);
if (!basErrLogService.updateById(latest)) {
- News.error(""+mark+" - 6"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+ News.error("" + mark + " - 6" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
}
}
}
}
+ }
}
}
@@ -1023,6 +1073,7 @@
for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
// 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode());
StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
if (staProtocol == null) {
continue;
@@ -1038,17 +1089,50 @@
if (!staProtocol.isLoading()){
continue;
}
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ // 灏哄妫�娴嬪紓甯�
+ boolean back = false;
+ String errMsg = "";
+ if (staProtocol.isFrontErr()) {
+ errMsg = "鍓嶈秴闄�";
+ back = true;
+ }
+ if (!back && (staProtocol.isBarcodeErr()||Cools.isEmpty(barcode))) {
+ errMsg = "鎵爜澶辫触";
+ back = true;
+ }
// 绔欑偣鏉′欢鍒ゆ柇
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
- && staProtocol.isEmptyMk()
- && staProtocol.isPakMk()
- && (staProtocol.getWorkNo() !=0 && staProtocol.getWorkNo() > 9700)
+// && staProtocol.isEmptyMk()
+// && staProtocol.isPakMk()
+ && ((staProtocol.getWorkNo() >= 9990 && staProtocol.getWorkNo() <= 9992) || staProtocol.getWorkNo() == 9996) // 9990-9992绌烘墭锛�9993-9995 婊℃墭锛�9999鍥為��
) {
+ if(back){
+ MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errMsg));
+ staProtocol.setWorkNo(wrkNo);
+ News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", emptyInSta.getStaNo(), errMsg,wrkNo);
+ staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+emptyInSta.getBackSta());
+ return;
+ }
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
-
+ if(Cools.isEmpty(barcode) || barcode.endsWith("NG") || barcode.equals("NoRead") || barcode.startsWith("00000000") || barcode.contains("ERROR")) {
+ News.info("{}鏉$爜鎵弿閿欒锛歿}",barcodeThread.getSlave().getId(),barcode);
+ staProtocol.setWorkNo(wrkNo);
+ staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, "鏉$爜鎵弿閿欒"));
+ return;
+ }
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -1056,6 +1140,8 @@
param.setIoType(10);
param.setSourceStaNo(emptyInSta.getStaNo());
param.setLocType1(locTypeDto.getLocType1());
+ param.setLocType2(locTypeDto.getLocType2());
+ param.setBarcode(barcode);
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath("/rpc/pakin/loc/v1")
@@ -1063,6 +1149,7 @@
.build()
.doPost();
JSONObject jsonObject = JSON.parseObject(response);
+ log.info("绌烘墭鍏ュ簱璇锋眰wms鍘熷杩斿洖:" + jsonObject);
if (jsonObject.getInteger("code").equals(200)) {
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
@@ -1071,10 +1158,10 @@
staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂6锛�"+dto.getWorkNo()+","+staProtocol.getSiteId());
+ log.info("杈撻�佺嚎涓嬪彂6锛�"+dto.getWorkNo()+","+staProtocol.getSiteId());
if (!result) {
News.errorNoLog(""+mark+" - 1"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触");
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ throw new CoolException("SiemensDevp - 5");
}
if (ledThread != null) {
@@ -1091,8 +1178,9 @@
MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(1, commands));
// ledThread.errorReset();
}
+ Thread.sleep(2000);
} else {
- staProtocol.setWorkNo(wrkNo++);
+ staProtocol.setWorkNo(wrkNo);
staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -1109,6 +1197,7 @@
}
// News.error(""+mark+" - 3"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
}
+ Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -1177,7 +1266,7 @@
"浠诲姟涓紓甯�" // 澶囨敞
);
if (!basDevpErrLogService.insert(basErrLog)) {
- log.error("杈撻�佺嚎寮傚父淇℃伅鎻掑叆琛╝sr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+ News.error("杈撻�佺嚎寮傚父淇℃伅鎻掑叆琛╝sr_bas_devp_err_log寮傚父锛歿}", basErrLog);
}
}
} else {
@@ -1187,7 +1276,7 @@
latestByTaskNo.setUpdateTime(now);
latestByTaskNo.setStatus(2);
if (!basDevpErrLogService.updateById(latestByTaskNo)) {
- log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latestByTaskNo);
+ News.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latestByTaskNo);
}
}
}
@@ -1200,7 +1289,7 @@
if (latest == null || !latest.getError().equals(plcErr) || latest.getStatus() == 2 ) {
BasDevpErrLog basErrLog = new BasDevpErrLog(
null, // 缂栧彿
- null, // 宸ヤ綔鍙�
+ staProtocol.getWorkNo(), // 宸ヤ綔鍙�
now, // 鍙戠敓鏃堕棿
null, // 缁撴潫鏃堕棿
null, // 宸ヤ綔鐘舵��
@@ -1222,7 +1311,7 @@
"鏃犱换鍔″紓甯�" // 澶囨敞
);
if (!basDevpErrLogService.insert(basErrLog)) {
- log.error("杈撻�佺嚎寮傚父璁板綍asr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+ News.error("杈撻�佺嚎寮傚父璁板綍asr_bas_devp_err_log寮傚父锛歿}", basErrLog);
}
}
// 鏃犲紓甯�
@@ -1233,7 +1322,7 @@
latest.setUpdateTime(now);
latest.setStatus(2);
if (!basDevpErrLogService.updateById(latest)) {
- log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latest);
+ News.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latest);
}
}
}
@@ -1294,7 +1383,7 @@
/**
* 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
*/
- public synchronized void ledExecute(Integer mark) {
+ public synchronized void ledExecute() {
for (LedSlave led : slaveProperties.getLed()) {
// 鑾峰彇杈撻�佺嚎plc绾跨▼
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1343,35 +1432,19 @@
ledCommand.setEmptyMk(true);
break;
default:
- News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+// News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
break;
}
+ ledCommand.setLocNo(wrkMast.getLocNo());
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
ledCommand.setBarcode(wrkMast.getBarcode());
if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-// List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
- wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getSpecs(),wrkDetl.getManuDate(),wrkDetl.getModel(),wrkDetl.getWeight(),wrkDetl.getLength(),wrkDetl.getVolume())));
-// wrkDetls.forEach(wrkDetl -> {
-// Double total = 0.0;
-// EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
-// LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-// if (Cools.isEmpty(locDetl)) {
-// total = wrkDetl.getAnfme();
-// } else {
-// total = locDetl.getAnfme();
-// }
-// if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-// }
-// if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-// }
-// if (wrkMast.getIoType() == 107) {
-// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-// }
-// });
+ wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getOrderNo(),wrkDetl.getMatnr(),wrkDetl.getMaktx(),
+ wrkDetl.getBatch(), wrkDetl.getSpecs(),wrkDetl.getManuDate(),wrkDetl.getModel(),wrkDetl.getAnfme(),wrkDetl.getStandby1())));
+ } else {
+ ledCommand.getMatDtos().add(new MatDto("","","","","","","",1.0,""));
}
commands.add(ledCommand);
}
@@ -1438,7 +1511,7 @@
}
ledThread.errorReset();
if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
- News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ News.error("鏄剧ず榛樿鍐呭{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
}
}
}
@@ -1475,7 +1548,7 @@
if (null == loc) {
for (Integer row : rows) {
if (Utils.isShallowLoc(slaveProperties, row)) {
- loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+ loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
@@ -1509,7 +1582,7 @@
wrkMast.setCrnNo(crn.getId());
wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
- wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+ wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
@@ -1592,4 +1665,67 @@
// News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
}
+ /**
+ * 鍫嗗灈鏈哄洖鍘熺偣
+ */
+ public synchronized void originGo() throws InterruptedException {
+
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if(crnProtocol == null) {
+ continue;
+ }
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+ && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+ // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
+ if(crnProtocol.getBay() == 3 && crnProtocol.getLevel() == 1) {
+ continue;
+ }
+ // 鍒ゆ柇鏄笉鏄┖闂蹭笁鍒嗛挓
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp.getWrkNo() != 0) {
+ continue;
+ }
+ Date now = new Date();
+ Date modiTime = basCrnp.getModiTime();
+ long diffInMillis = now.getTime()-modiTime.getTime();
+ if(diffInMillis < 10 * 1000) { // 绌洪棽灏忎簬10绉掑垯璺宠繃
+ continue;
+ } else { // 鏈夊叆搴撲换鍔℃垨澶т簬2鍒嗛挓锛屽洖鍘熺偣
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("crn_no", crn.getId()).in("wrk_sts", 2));
+ if(count == 0 && diffInMillis < 2 * 60 * 1000) {
+ continue;
+ }
+ }
+
+ // 鏈夊悐杞﹀叆搴撴垨鍚婅溅鍑哄簱浠诲姟
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnProtocol.getCrnNo()).in("wrk_sts", 3, 12));
+ if(count != 0) {
+ continue;
+ }
+
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(crn.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode((short)8); // 浠诲姟妯″紡: 鍥炲師鐐�
+ crnCommand.setSourcePosX((short) 1); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 3); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) {
+ News.error("鍥炲師鐐逛换鍔′笅鍙戝け璐�", crn.getId(), JSON.toJSON(crnCommand));
+ } else {
+ basCrnp.setModiTime(new Date());
+ basCrnpService.updateById(basCrnp); // 璁剧疆鏇存柊鏃堕棿锛岄伩鍏嶉噸澶嶄笅鍙戝洖鍘熺偣
+ log.info("{}鍙峰爢鍨涙満鍥炲師鐐逛换鍔′笅鍙戞垚鍔燂細{}", crn.getId(), JSON.toJSON(crnCommand));
+ }
+ Thread.sleep(3000);
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1