From b3280d431ea42f46afe020782b677b11d504be31 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期三, 14 一月 2026 13:32:38 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 132 ++++++++++++++++++++++++++++---------------
1 files changed, 86 insertions(+), 46 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 155d1b3..54da5d7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -43,6 +43,8 @@
import com.zy.core.thread.LedThread;
import com.zy.core.thread.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -77,6 +79,8 @@
private WaitPakinMapper waitPakinMapper;
@Autowired
private LocMastService locMastService;
+ @Autowired
+ private ConfigService configService;
@Autowired
private StaDescService staDescService;
@Autowired
@@ -310,7 +314,7 @@
}
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
.eq("barcode", barcode)
- .in("io_type", 107,103,57));
+ .in("io_type", 107,103,57,53));
if (!Cools.isEmpty(checkPick)) {
continue;
}
@@ -533,6 +537,44 @@
// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+ // 鍒ゆ柇閲嶅宸ヤ綔妗�
+ WrkMast wrkMast1 = wrkMastMapper.selectPakInStep1(pickSta.getStaNo(), barcode);
+ if (wrkMast1 != null) {
+ int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast1.getWrkNo()));
+ if (wrkNo1 != 0){
+ News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast1.getWrkNo());
+ StaProtocol staProtocolNew = new StaProtocol();
+ staProtocolNew.setWorkNo(wrkMast1.getWrkNo());
+ staProtocolNew.setStaNo(RouteUtils.SouStaEnd(wrkMast1.getStaNo(),wrkMast1.getSourceStaNo()));
+ staProtocolNew.setSiteId(staProtocol.getSiteId());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ staProtocolNew.setBarcode(barcode);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew));
+ if (ledThread != null) {
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�="+ wrkMast1.getWrkNo()));
+ }
+ continue;
+ }
+ barcodeThread.setBarcode("");
+ staProtocol.setWorkNo(wrkMast1.getWrkNo());
+ staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast1.getSourceStaNo()));
+ staProtocol.setBarcode(barcode);
+
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast1.getWrkNo()+","+wrkMast1.getStaNo());
+
+ ledThread.errorReset();
+ log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+
+ if (!result) {
+ News.error( ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+ log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+ continue;
+ }
+ continue;
+
+ }
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
@@ -1180,7 +1222,7 @@
//mark - 3 - ....
this.locToLoc(crn, crnProtocol,mark);
//棰勮皟搴�
-// this.crnRebackHp(crn, crnProtocol, crnThread);
+ this.crnRebackHp(crn, crnProtocol, crnThread);
}
// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -1198,6 +1240,9 @@
new EntityWrapper<BasCrnp>().eq("crn_no", crnProtocol.getCrnNo())
);
boolean result = true;
+ if(crnProtocol.getCrnNo() == 3){
+ return;
+ }
for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
@@ -1537,14 +1582,14 @@
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
// 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") && !staProtocol.isLoading()
+ boolean unLoading = !staProtocol.isLoading();
+ Config configAGVAUTOIN = configService.selectConfigByCode("COB");
+ if(Boolean.parseBoolean(configAGVAUTOIN.getValue())){
+ unLoading = true;
+ }
+ if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && unLoading
) {
-// if (slave.getId() == 1 || slave.getId() == 2){
-// if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){
-// continue;
-// }
-// }
+//
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -4114,6 +4159,9 @@
log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
continue;
}
+ if(staProtocol == null){
+ continue;
+ }
if(staProtocol.getWorkNo() == 0){
continue;
}
@@ -4656,34 +4704,26 @@
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
RgvTaskStatusType type;
Integer targetPosition = 0;
+ String typeNo = null;
if(wrkMastSta.getWrkSts() == 0){
type = RgvTaskStatusType.FETCH; //鍙栬揣
targetPosition = wrkMastSta.getStaStart();
+ typeNo = "2";
}else{
type = RgvTaskStatusType.PUT; //鏀捐揣
targetPosition = wrkMastSta.getStaEnd();
+ typeNo = "3";
}
- Date now = new Date();
- if (targetPosition == 1038) {
- System.out.println("灏忚溅涓嬪彂鍛戒护鏃堕棿锛�" +
- new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
- }
- EntityWrapper<BasRgvOpt> entityWrapper = new EntityWrapper<>();
- entityWrapper.eq("rgv_no", rgvId)
- .orderBy("send_time");
- BasRgvOpt basRgvOpt = basRgvOptService.selectOne(entityWrapper);
+ BasRgvOpt basRgvOpt = basRgvOptService.getBasRgvOpt(rgvId);
// 闃叉閲嶅涓嬪彂鍛戒护
if (basRgvOpt != null) {
- // 鑾峰彇鏈�鏂拌褰曠殑 mode 瀵瑰簲鐨勪换鍔$被鍨�
- RgvTaskStatusType latestTaskStatus = RgvTaskStatusType.valueOf(basRgvOpt.getMode());
- // 鍒ゆ柇褰撳墠鍛戒护涓庢渶鏂拌褰曟槸鍚︾浉鍚�
- if (latestTaskStatus == type && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
+ if (basRgvOpt.getMode().equals(typeNo) && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
// 濡傛灉鏈�鏂拌褰曠殑 mode 鍜� posSta 涓庡綋鍓嶅懡浠ょ浉鍚岋紝璁や负鏄噸澶嶅懡浠�
log.error("鍛戒护閲嶅涓嬪彂锛屽綋鍓嶅懡浠や笌鏈�鏂拌褰曠浉鍚岋紝浠诲姟涓嶄笅鍙戯紒");
return false;
}
+ log.info("rgv鍛戒护鏃ュ織wrkNo={},posSta={},mode={}",wrkMastSta.getWrkNo(),basRgvOpt.getPosSta(),basRgvOpt.getMode());
}
-
rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡: 鍙栬揣
rgvCommand.setTargetPosition(targetPosition); //宸ヤ綅鐩爣绔欑偣
@@ -4824,6 +4864,10 @@
* arm浠诲姟瀹屾垚鑷姩缁勬墭
* */
public synchronized void armMissionAccomplished1() {
+ Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
+ if(!Boolean.parseBoolean(configAGVAUTOIN.getValue())){
+ return;
+ }
try{
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鎷f枡鍏ュ簱鍙�
@@ -4922,6 +4966,10 @@
* arm浠诲姟瀹屾垚鑷姩缁勬墭
* */
public synchronized void armMissionAccomplished2() {
+ Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
+ if(!Boolean.parseBoolean(configAGVAUTOIN.getValue())){
+ return;
+ }
try{
List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().gt("arm_no",4));
for (BasArm basArm : basArmList) {
@@ -5202,6 +5250,10 @@
* arm浠诲姟涓嬪彂
* */
public synchronized void armTaskAssignment2() {
+ Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
+ if(!Boolean.parseBoolean(configAGVAUTOIN.getValue())){
+ return;
+ }
try{
List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().gt("arm_no",4));
for (BasArm basArm : basArmList) {
@@ -5357,7 +5409,7 @@
// 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
for (ApiLog apiLog : apiLogs) {
long parseLong = Long.parseLong(apiLog.getTimestamp());
- if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
+ if (new Date().getTime() - parseLong < 30 * 1000 * 60) {
// 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
return;
}
@@ -5384,7 +5436,7 @@
// 閬嶅巻缁撴灉闆嗭紝妫�鏌ユ椂闂存埑宸�兼槸鍚﹀皬浜� 5 鍒嗛挓
for (ApiLog apiLog : apiLogs) {
long parseLong = Long.parseLong(apiLog.getTimestamp());
- if (new Date().getTime() - parseLong < 5 * 1000 * 60) {
+ if (new Date().getTime() - parseLong < 30 * 1000 * 60) {
// 濡傛灉鎵惧埌绗﹀悎鏉′欢鐨勮褰曚笖鏃堕棿宸皬浜� 5 鍒嗛挓锛屽垯涓嶄繚瀛樻柊璁板綍锛岀洿鎺ヨ繑鍥�
return;
}
@@ -5536,7 +5588,7 @@
// 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
BasAgvMast basAgvMast = new BasAgvMast();
-
+ BasAgvWrkDetl basAgvWrkDetl = new BasAgvWrkDetl();
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -5723,6 +5775,9 @@
* agv浠诲姟鐢熸垚 Empty
* */
public synchronized void agvTaskCreateR() {
+
+ Config configAGVAUTOIN = configService.selectConfigByCode("AGVAUTOIN");
+
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍑哄簱鍙�
@@ -5762,20 +5817,22 @@
.le("row1", 26)
.orderBy("io_time",true)
);
- }else if(inStaAgv.getStaNo() < 4000){
+ }else if(inStaAgv.getStaNo() < 4000 && Boolean.parseBoolean(configAGVAUTOIN.getValue())){
locMastList = locMastService.selectList(new EntityWrapper<LocMast>()
.eq("loc_sts", "R")
.ge("row1", 28)
.le("row1", 31)
.orderBy("io_time",true));
floorNo = 2;
- }else{
+ }else if(inStaAgv.getStaNo() < 5000){
locMastList = locMastService.selectList(new EntityWrapper<LocMast>()
.eq("loc_sts", "R")
.ge("row1", 32)
.le("row1", 38)
.orderBy("io_time",true));
floorNo = 3;
+ }else{
+ continue;
}
for (LocMast locMast : locMastList){
@@ -5943,23 +6000,6 @@
if ((!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())) || basAgvMast.getSourceStaNo().equals(2033)){
AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
if(basAgvMast.getFloorNo()==1) {
-// WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
-// AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
-// agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
-// agvBindCtnrAndBinParam.setCtnrTyp("1");
-// ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
-// if (resultBind.getCode()==200){
-// //浠诲姟涓嬪彂
-// ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
-// if (result.getCode()==200){
-// basAgvMast.setStatus(1);
-// basAgvMastService.updateById(basAgvMast);
-// } else {
-// agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV浠诲姟涓嬪彂澶辫触", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-// }
-// } else {
-// agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV瀹瑰櫒缁戝畾瑙g粦", "浠诲姟鍙凤細"+basAgvMast.getTaskNo()+"浠诲姟淇℃伅涓嬪彂澶辫触锛侊紒锛�", false);
-// }
//浠诲姟涓嬪彂
ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV浠诲姟涓嬪彂", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam);
if (result.getCode()==200){
@@ -5977,7 +6017,7 @@
agvBindCtnrAndBinTwoParam.setPodcode(basAgvMast.getBarcode());
agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getSourceStaNo().toString());
agvBindCtnrAndBinTwoParam.setIndBind("1");;
- ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒缁戝畾瑙g粦",
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒缁戝畾",
AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam);
if (resultBind.getCode()!=200){
basAgvMast.setStatus(4);
--
Gitblit v1.9.1