From 2e5837667e60378a06c7d8d1a4b095c4ba6e2d06 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 17 十一月 2025 09:29:08 +0800
Subject: [PATCH] 限制优化
---
src/main/java/com/zy/service/impl/MainServiceImpl.java | 901 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 801 insertions(+), 100 deletions(-)
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index a300dec..f5ac54f 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -41,6 +41,7 @@
import javax.annotation.Resource;
import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@@ -77,6 +78,7 @@
// 鎴愬搧搴撳爢鍨涙満鍑哄簱绔欑偣鍒皉gv鎺ラ┏鐐�
public static final Map<Integer,Short> crnOutSiteToRgvSite = new HashMap<>();
+ public static final Map<Integer,Short> crnOutSiteToRgvSite2 = new HashMap<>();
static {
emptyPalletSiteMap.put(1001,"M"); // emptyPalletSiteMap.put(1002,"M");
@@ -104,6 +106,10 @@
outGzxSiteList.add(1081);outGzxSiteList.add(1084);outGzxSiteList.add(1087);
crnOutSiteToRgvSite.put(1093, (short) 1091);crnOutSiteToRgvSite.put(1099, (short) 1097);crnOutSiteToRgvSite.put(1107, (short) 1105);
+
+ crnOutSiteToRgvSite2.put(1093, (short) 1091);crnOutSiteToRgvSite2.put(1099, (short) 1097);crnOutSiteToRgvSite2.put(1107, (short) 1105);
+ crnOutSiteToRgvSite2.put(1087, (short) 1089);crnOutSiteToRgvSite2.put(1084, (short) 1086);crnOutSiteToRgvSite2.put(1081, (short) 1083);
+ crnOutSiteToRgvSite2.put(1043, (short) 1041);crnOutSiteToRgvSite2.put(1016, (short) 1018);crnOutSiteToRgvSite2.put(1008, (short) 1006);
}
@Autowired
@@ -118,6 +124,9 @@
private WaitPakinMapper waitPakinMapper;
@Autowired
private LocMastService locMastService;
+
+ @Resource
+ private LocMastMapper locMastMapper;
@Autowired
private StaDescService staDescService;
@Autowired
@@ -143,6 +152,9 @@
@Resource
private ConfigService configService;
+
+ @Resource
+ private BasDevpErrLogService basDevpErrLogService;
@Value("${wms.url}")
private String wmsUrl;
@@ -177,36 +189,36 @@
// 灏哄妫�娴嬪紓甯�
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 (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 && staProtocol.isInEnable()) {
+ if (back && staProtocol.isInEnable() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
if (!staProtocol.isLoading()){
@@ -265,9 +277,12 @@
barcodeThread.setBarcode("");
staProtocol.setWorkNo(dto.getWorkNo());
staProtocol.setStaNo(dto.getStaNo().shortValue());
+ if (dto.getStaNo() == 1071 || dto.getStaNo() == 1064 || dto.getStaNo() == 1078) {
+ decreaseWantBucketCount(dto.getStaNo(),1);
+ }
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
+ log.info("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
if (!result) {
News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
@@ -302,10 +317,53 @@
StaProtocol staProtocol1084 = devpThread.getStation().get(1084);
StaProtocol staProtocol1087 = devpThread.getStation().get(1087);
List<SearchLocParam.WantBucket> wantBucketList = new ArrayList<>();
- wantBucketList.add(new SearchLocParam.WantBucket(1064,staProtocol1084.getWantBucketFlag()));
- wantBucketList.add(new SearchLocParam.WantBucket(1071,staProtocol1081.getWantBucketFlag()));
- wantBucketList.add(new SearchLocParam.WantBucket(1078,staProtocol1087.getWantBucketFlag()));
+ wantBucketList.add(new SearchLocParam.WantBucket(1064,staProtocol1084.getWantBucketFlag(),staProtocol1084.getWantBucketCount()));
+ wantBucketList.add(new SearchLocParam.WantBucket(1071,staProtocol1081.getWantBucketFlag(),staProtocol1081.getWantBucketCount()));
+ wantBucketList.add(new SearchLocParam.WantBucket(1078,staProtocol1087.getWantBucketFlag(),staProtocol1087.getWantBucketCount()));
return wantBucketList;
+ }
+
+ /**
+ * 缃愯绾胯妗舵暟閲忓噺灏�
+ */
+ private synchronized void decreaseWantBucketCount(int site, int decrease) throws InterruptedException {
+
+ int siteNew;
+ switch (site) {
+ case 1071: siteNew = 1081;break;
+ case 1064: siteNew = 1084;break;
+ case 1078: siteNew = 1087;break;
+ default:
+ return;
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol = devpThread.getStation().get(siteNew);
+ if(staProtocol == null) {
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ int count = staProtocol.getWantBucketCount();
+
+ int remaining = count - decrease;
+ if ( remaining < 0) {
+ log.error("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁板紓甯革紝绔欑偣锛歿}锛屽噺灏戝墠锛歿}锛屽噺灏戞暟锛歿}锛屽墿浣欒妗舵暟锛歿}", site, count, decrease, remaining);
+ return;
+ }
+
+ staProtocol.setWantBucketCount(remaining);
+
+ boolean offer = MessageQueue.offer(SlaveType.Devp, inGzxSiteList.indexOf(site) + 4, new Task(6, staProtocol));
+ if (offer) {
+ log.info("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁板懡浠ゆ帹閫侀槦鍒楁垚鍔燂細绔欑偣锛歿}锛屽墿浣欒妗舵暟锛歿}" ,site, remaining);
+ } else {
+ log.error("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁板懡浠ゆ帹閫侀槦鍒楀け璐ワ細绔欑偣锛歿}锛屽墿浣欒妗舵暟锛歿}" ,site, remaining);
+ }
+
+ log.info("鑷姩鍑虹┖妗跺噺灏戠綈瑁呯嚎瑕佹《鏁版垚鍔燂紝绔欑偣锛歿}锛屽噺灏戝墠锛歿}锛屽噺灏戞暟锛歿}锛屽墿浣欒妗舵暟锛歿}", site, count, decrease, remaining);
+ Thread.sleep(700);
}
/**
@@ -565,15 +623,23 @@
crnProtocol.setLastIo("O");
} else if (basCrnp.getOutEnable().equals("Y")) {
//mark - 2 - ....
- this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
+ AtomicInteger atomicInteger = new AtomicInteger(mark);
+ this.locToCrnStn(crn, crnProtocol,atomicInteger); // 鍑哄簱
crnProtocol.setLastIo("I");
+ if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴�
+ crnProtocol.setLastIo("O");
+ }
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (crnProtocol.getLastIo().equals("O")) {
if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
+ AtomicInteger atomicInteger = new AtomicInteger(mark);
+ this.locToCrnStn(crn, crnProtocol,atomicInteger); // 鍑哄簱
crnProtocol.setLastIo("I");
+ if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴�
+ crnProtocol.setLastIo("O");
+ }
} else if (basCrnp.getInEnable().equals("Y")) {
this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
crnProtocol.setLastIo("O");
@@ -632,7 +698,12 @@
// 鍒ゆ柇1050鏄惁鏈夎揣
StaProtocol staProtocol1 = devpThread.getStation().get(1050);
if(staProtocol1.isAutoing() && staProtocol1.isLoading() && staProtocol1.isInEnable() && staProtocol1.getWorkNo() != 0) {
-
+ // 鍒嗛厤搴撲綅
+ boolean isContinue =getLocNoNew(staProtocol1.getWorkNo(),wrkMast);
+ // 鏄惁涓嶇户缁線涓嬫墽琛�
+ if (isContinue) {
+ continue;
+ }
} else {
continue;
}
@@ -686,7 +757,7 @@
continue;
}
- } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("M")|| shallowLoc.getLocSts().equals("Z")) {
News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏 搴撲綅鐘舵��={}",shallowLoc.getLocSts());
// 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
@@ -694,7 +765,7 @@
wrkMast.setIoPri(14D);
wrkMastMapper.updateById(wrkMast);
// 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
- moveLocForDeepLoc(slave, shallowLoc,mark);
+ moveLocForDeepLoc(slave, shallowLoc,new AtomicInteger(mark));
// 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
}
@@ -725,8 +796,8 @@
if(crnStn.getStaNo() == 1050 && locMast.getRow1() == 10) {
crnCommand.setDestinationPosX((short) 9);
}
- if(crnStn.getStaNo() == 1049 && locMast.getRow1() == 11) {
- crnCommand.setDestinationPosX((short) 12);
+ if(crnStn.getStaNo() == 1049 && locMast.getRow1() == 10) {
+ crnCommand.setDestinationPosX((short) 9);
}
crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞�
@@ -768,18 +839,161 @@
News.infoNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
}
+ private boolean getLocNoNew(Integer workNo1050, WrkMast wrkMast1049) {
+ if(!wrkMast1049.getLocNo().isEmpty()) {
+ return false;
+ }
+ WrkMast wrkMast1050 = wrkMastMapper.selectPakInStep2(4, workNo1050);
+ // 鍒ゆ柇1050娌℃湁琚爢鍨涙満鍙栵紝骞朵笖娌℃湁灏炬嫋淇″彿
+ if(wrkMast1050 != null && wrkMast1050.getCtnType() != 1) {
+ // 鍒ゆ柇杩欎袱涓揣鏄笉鏄竴绉嶇被鍨嬶紝涓嶆槸缁�1050鍒嗛厤搴撲綅锛岀粰灏炬嫋鏍囪瘑锛屾槸鍒欑粰涓や釜璐у垎閰嶅簱浣�
+ if(wrkMast1050.getPdcType().equals(wrkMast1049.getPdcType())) {
+ // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+ List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+ List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList());
+ if (collect.size() <= 0 && collect1.size() <= 0) {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犵┖搴撲綅",1050,workNo1050);
+ return true;
+ }
+ // 鍙敤搴撲綅缁�
+ List<LocMast> locMastList = new ArrayList<>();
+ for(LocMast locMast1:collect) {
+ Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+ && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+ first.ifPresent(locMastList::add);
+ }
+
+ if (locMastList.size() == 0) {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犲搴旂┖绌烘《缁�",1050,workNo1050);
+ return true;
+ }
+ WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050));
+ if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+ locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+ } else {
+ locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+ }
+ // 1049瀵瑰簲搴撲綅
+ LocMast locMast = locMastList.get(0);
+
+ wrkMast1049.setLocNo(locMast.getLocNo());
+ wrkMastService.updateById(wrkMast1049);
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)){
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氭敼鍙樺簱浣峽}鐘舵�亄}澶辫触",1049,wrkMast1049.getWrkNo(),locMast.getLocNo(),locMast.getLocSts());
+ } else {
+ // 缁�1050鍒嗛厤瀵瑰簲搴撲綅
+ Optional<LocMast> first = collect.stream().filter(locMast1 -> locMast1.getLocNo().equals((locMast.getRow1() == 10 ? "09" : "11") + locMast.getLocNo().substring(2))).findFirst();
+ if(first.isPresent()) {
+ LocMast locMast1 = first.get();
+ wrkMast1050.setLocNo(locMast1.getLocNo());
+
+ locMast1.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast1.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast1050); // 鏇存柊鍒嗛厤鐨勫簱浣�
+ locMastService.updateById(locMast1); // 鏇存柊搴撲綅鐘舵��
+ return false;
+ } else {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氱┖搴撲綅缁剓}鏃犲搴旂┖搴撲綅",1050,workNo1050,locMast.getLocNo());
+ }
+ }
+ } else {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氱洰鏍囧簱浣嶏細{}宸茶鍗犵敤",1049,wrkMast1049.getWrkNo(),locMast.getLocNo());
+ }
+ } else {
+ // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+ List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+ List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+ if (collect.size() <= 0 && collect1.size() <= 0) {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犵┖搴撲綅",1050,workNo1050);
+ return true;
+ }
+ // 鍙敤搴撲綅缁�
+ List<LocMast> locMastList = new ArrayList<>();
+ for(LocMast locMast1:collect) {
+ Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+ && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+ first.ifPresent(locMastList::add);
+ }
+
+ if (locMastList.size() == 0) {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犲搴旂┖绌烘《缁�",1050,workNo1050);
+ return true;
+ }
+ WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050));
+ if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+ locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+ } else {
+ locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+ }
+ LocMast locMast = locMastList.get(0);
+ wrkMast1050.setLocNo(locMast.getLocNo());
+ wrkMast1050.setCtnType(1); // 灏炬墭鏍囪瘑
+ wrkMastService.updateById(wrkMast1050);
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)){
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氭敼鍙樺簱浣峽}鐘舵�亄}澶辫触",1050,workNo1050,locMast.getLocNo(),locMast.getLocSts());
+ }
+ } else {
+ News.error("绔欑偣:{},浠诲姟鍙穥}锛氱洰鏍囧簱浣嶏細{}宸茶鍗犵敤",1050,workNo1050,locMast.getLocNo());
+ }
+ }
+ }
+ return true;
+ }
+
/**
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
- public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+ public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,AtomicInteger 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 && !Cools.isEmpty(config.getValue())) {
+ // 闇�瑕佽嚜鍔ㄨˉ绌烘《鐨勭珯鐐�
+ String[] split = config.getValue().split("=");
+ for (String item : split) {
+ if (slave.getId() == Integer.parseInt(item)) {
+ crnAvailableOut = true;
+ break;
+ }
+ }
+ }
+ // 闄愬埗鍘绘崋缁戞満鍣ㄤ换鍔℃暟
+ int kbWrks = wrkMastMapper.selectCountByKb();
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
for (WrkMast wrkMast : wrkMasts) {
if (wrkMast == null) {
continue;
+ }
+ // 鍒ゆ柇浠诲姟鐩爣绔欑偣鏄惁鏄嚭搴撴ā寮�
+ if(wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo());
+ if(staProtocol.getInOrOutMode() != 2) {
+ News.error("{}浠诲姟鐩爣绔欑偣锛歿}锛屽綋鍓嶆ā寮忥細{}涓嶆槸鍑哄簱妯″紡锛屾棤娉曞嚭搴�",wrkMast.getWrkNo(),wrkMast.getStaNo(),staProtocol.getInOrOutMode());
+ continue;
+ }
+ }
+ if (wrkMast.getStaNo() == 1031) {
+ // 鑾峰彇1033鏃犵姸鎬佹椂浠诲姟鏁�+1
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(1033);
+ if (staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
+ kbWrks ++;
+ }
+ if (kbWrks > 2) {
+ continue;
+ }
}
// 宸ヤ綔妗g姸鎬佸垽鏂�
if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
@@ -810,8 +1024,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) {
break;
@@ -848,7 +1062,7 @@
}
}
- } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("M")|| shallowLoc.getLocSts().equals("Z")) {
News.warnNoLog(""+mark+" - 2"+" - 9"+" - // F銆丏 搴撲綅鐘舵��={}",shallowLoc.getLocSts());
// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
//2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
@@ -919,6 +1133,7 @@
wrkMast1.setSourceStaNo(1056);
wrkMastService.updateById(wrkMast1);
}
+ mark.set(99);
break;
}
}
@@ -960,7 +1175,7 @@
// 淇敼绌烘《搴撳搴斿簱浣嶄换鍔$姸鎬�
if(slave.getId() == 4 && crnStn.getStaNo() == 1056) {
String locNo2 = (wrkMast.getSourceLocNo().startsWith("09") ? "10" : "12") + wrkMast.getSourceLocNo().substring(2);
- WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locNo2));
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locNo2).eq("wrk_sts",11));
if (wrkMast1 != null) {
wrkMast1.setWrkSts(12L);
wrkMast1.setCrnStrTime(now);
@@ -1102,21 +1317,30 @@
// 绌烘《鍏ュ簱瀹屾垚锛屽厛瀹屾垚瀵瑰簲搴撲綅缁勪换鍔�
if(wrkMast.getWorkNoOther() != 0 ){
WrkMast wrkMast1 = wrkMastService.selectByWrkNo(wrkMast.getWorkNoOther());
- // 浜ゆ崲搴撲綅鍙�
- String locNo = wrkMast.getLocNo();
- wrkMast.setLocNo(wrkMast1.getLocNo());
- wrkMast1.setLocNo(locNo);
- wrkMast1.setCrnEndTime(now);
- wrkMast1.setModiTime(now);
- wrkMast1.setWrkSts(4L);
- wrkMast1.setWorkNoOther(0);
- wrkMastMapper.updateById(wrkMast1);
+ if (wrkMast1 != null) {
+// // 浜ゆ崲搴撲綅鍙�
+ String locNo = wrkMast.getLocNo();
+// wrkMast.setLocNo(wrkMast1.getLocNo());
+ // 浜ゆ崲鍏ュ簱鏃堕棿锛屾彁鍙栧簱瀛樻椂鎸夐『搴忓厛娴呭悗娣�
+ Date ioTime = wrkMast.getIoTime();
+ if(locNo.startsWith("10")) {
+ wrkMast.setIoTime(wrkMast1.getIoTime());
+ wrkMast1.setIoTime(ioTime);
+ }
+// wrkMast1.setLocNo(locNo);
+ wrkMast1.setCrnEndTime(now);
+ wrkMast1.setModiTime(now);
+ wrkMast1.setWrkSts(4L);
+ wrkMast1.setWorkNoOther(0);
+ wrkMastMapper.updateById(wrkMast1);
+ }
}
wrkMast.setCrnEndTime(now);
wrkMast.setModiTime(now);
wrkMast.setWorkNoOther(0); // 娓呯┖鍙︿竴涓换鍔″彿
// 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
if (wrkMastMapper.updateById(wrkMast) > 0) {
+ log.info("{}鍙峰爢鍨涙満浠诲姟瀹屾垚锛岀敵璇峰浣嶏紝浠诲姟鍙凤細{}",crnProtocol.getCrnNo(),crnProtocol.getTaskNo());
// 鍫嗗灈鏈哄浣�
News.warnNoLog(""+mark+" - 2"+" - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}",crnThread.getCrnProtocol().getCrnNo());
crnThread.setResetFlag(true);
@@ -1131,13 +1355,13 @@
/**
* 鍫嗗灈鏈哄洖鍘熺偣
*/
- public synchronized void originGo() {
+ 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) {
+ if(crnProtocol == null) {
continue;
}
if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
@@ -1148,10 +1372,24 @@
}
// 鍒ゆ柇鏄笉鏄┖闂蹭笁鍒嗛挓
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 < 3 * 60 * 1000) {
+ 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, 9, 10));
+ 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;
}
@@ -1168,8 +1406,11 @@
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);
}
}
}
@@ -1185,15 +1426,15 @@
if (crnProtocol == null) {
continue;
}
- if (true) {
-// if (crnProtocol.getModeType() != CrnModeType.STOP) {
+// if (true) {
+ 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) {
@@ -1296,6 +1537,174 @@
}
/**
+ * 杈撻�佺嚎寮傚父
+ */
+ public synchronized void recDevpErr() {
+ Date now = new Date();
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ Integer devpId = devp.getId();
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+ Map<Integer, StaProtocol> station = devpThread.getStation();
+ for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
+ Integer siteNo = entry.getKey();
+ StaProtocol staProtocol = entry.getValue();
+ Integer workNo = staProtocol.getWorkNo();
+ // 杈撻�佺嚎鎶ヨ
+ String plcErr = staPlcErr(staProtocol);
+ if (staProtocol.isAutoing()) {
+ // 鏈変换鍔�
+ if (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() <= 9000) {
+
+ // 鑾峰彇杈撻�佺嚎鎶ヨ淇℃伅
+ BasDevpErrLog latestByTaskNo = basDevpErrLogService.findLatestByTaskNo(siteNo, workNo);
+
+ // 鏈夊紓甯�
+ if (latestByTaskNo == null) {
+ if (!plcErr.equals("")) {
+ WrkMast wrkMast = wrkMastMapper.selectById(workNo);
+ if (wrkMast == null) {
+ continue;
+ }
+
+ BasDevpErrLog basErrLog = new BasDevpErrLog(
+ null, // 缂栧彿
+ wrkMast.getWrkNo(), // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ wrkMast.getWrkSts(), // 宸ヤ綔鐘舵��
+ wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨�
+ wrkMast.getCrnNo(), // 鍫嗗灈鏈�
+ devpId, // plc
+ wrkMast.getLocNo(), // 鐩爣搴撲綅
+ wrkMast.getStaNo(), // 鐩爣绔�
+ siteNo, // 婧愮珯
+ wrkMast.getSourceLocNo(), // 婧愬簱浣�
+ wrkMast.getBarcode(), // 鏉$爜
+ 0, // 寮傚父鐮�
+ plcErr, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�" // 澶囨敞
+ );
+ if (!basDevpErrLogService.insert(basErrLog)) {
+ log.error("杈撻�佺嚎寮傚父淇℃伅鎻掑叆琛╝sr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (plcErr.equals("")) {
+ latestByTaskNo.setEndTime(now);
+ latestByTaskNo.setUpdateTime(now);
+ latestByTaskNo.setStatus(2);
+ if (!basDevpErrLogService.updateById(latestByTaskNo)) {
+ log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latestByTaskNo);
+ }
+ }
+ }
+ // 鏃犱换鍔�
+ } else {
+ BasDevpErrLog latest = basDevpErrLogService.findLatest(siteNo);
+ // 鏈夊紓甯�
+ if (!plcErr.equals("")) {
+ // 璁板綍鏂板紓甯�
+ if (latest == null || !latest.getError().equals(plcErr) || latest.getStatus() == 2 ) {
+ BasDevpErrLog basErrLog = new BasDevpErrLog(
+ null, // 缂栧彿
+ null, // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ null, // 宸ヤ綔鐘舵��
+ null, // 鍏ュ嚭搴撶被鍨�
+ 0, // 鍫嗗灈鏈�
+ devpId, // plc
+ null, // 鐩爣搴撲綅
+ null, // 鐩爣绔�
+ siteNo, // 婧愮珯
+ null, // 婧愬簱浣�
+ null, // 鏉$爜
+ 0, // 寮傚父鐮�
+ plcErr, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "鏃犱换鍔″紓甯�" // 澶囨敞
+ );
+ if (!basDevpErrLogService.insert(basErrLog)) {
+ log.error("杈撻�佺嚎寮傚父璁板綍asr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+ }
+ }
+ // 鏃犲紓甯�
+ } else {
+ // 寮傚父淇
+ if (latest != null && latest.getStatus() == 1) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basDevpErrLogService.updateById(latest)) {
+ log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latest);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // 鑾峰彇杈撻�佺嚎鎶ヨ
+ public String staPlcErr(StaProtocol staProtocol){
+ Integer siteId = staProtocol.getSiteId();
+ if (staProtocol.getBreakerErr()){
+ return "鏂矾鍣ㄦ晠闅�";
+ }
+ if (staProtocol.getInfraredErr()){
+ return "鍏夌數寮傚父";
+ }
+ if (staProtocol.getOutTimeErr()){
+ return "杩愯瓒呮椂";
+ }
+ if (staProtocol.getSeizeSeatErr()){
+ return "鍗犱綅瓒呮椂";
+ }
+ if (staProtocol.getWrkYgoodsN()){
+ return "鏈変换鍔℃棤璐ф晠闅�";
+ }
+ if (staProtocol.getInverterErr()){
+ return "鍙橀鍣ㄦ晠闅�";
+ }
+ if (staProtocol.getContactErr()){
+ return "鐢垫満鎺ヨЕ鍣ㄦ晠闅�";
+ }
+ if (staProtocol.getUpcontactErr()){
+ return "椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅�";
+ }
+ if (staProtocol.isFrontErr()){
+ return "鍓嶈秴闄�";
+ }
+ if (staProtocol.isBackErr()){
+ return "鍚庤秴闄�";
+ }
+ if (staProtocol.isHighErr()){
+ return "楂樿秴闄�";
+ }
+ if (staProtocol.isLeftErr()){
+ return "宸﹁秴闄�";
+ }
+ if (staProtocol.isRightErr()){
+ return "鍙宠秴闄�";
+ }
+ if (staProtocol.isBarcodeErr() && siteId != 1083 && siteId != 1086 && siteId != 1089 ){
+ return "鎵爜澶辫触";
+ }
+ return "";
+ }
+
+ /**
* 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
*/
public synchronized void ledExecute(Integer mark) {
@@ -1349,6 +1758,9 @@
ledCommand.setTitle("绌烘澘鍑哄簱");
ledCommand.setEmptyMk(true);
break;
+ case 120:
+ ledCommand.setTitle("鎵嬪姩杞Щ");
+ break;
default:
News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
break;
@@ -1362,6 +1774,13 @@
// 鏄庣粏
WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
if (wrkDetl1 != null) {
+ // 鍑哄簱浠诲姟鐨勫洓涓嚭搴撶珯鐐癸紝鍒ゆ柇褰撳墠鐗╂枡涓�鎵瑰嚭搴撶殑鏃堕棿 鑾峰彇褰撳墠宸插畬鎴� / 鎬绘暟
+ if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 ||wrkMast.getStaNo() == 1031 ||wrkMast.getStaNo() == 1043 ||wrkMast.getStaNo() == 1016) ) {
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101).eq("io_time", wrkMast.getIoTime()));
+ int countHis = wrkMastMapper.selectCountHisByIoTypeAndIoTime(101, wrkMast.getIoTime());
+ matDto.setOutTotal(count+countHis);
+ matDto.setIsOutCount(countHis + 1);
+ }
ledCommand.setOrderNo(wrkDetl1.getOrderNo());
matDto.setMaknx(wrkDetl1.getMaktx());
matDto.setMatnr(wrkDetl1.getMatnr());
@@ -1371,6 +1790,11 @@
matDto.setWeight(wrkDetl1.getWeight());
matDto.setGrossWeight(wrkDetl1.getManLength());
ledCommand.getMatDtos().add(matDto);
+ } else {
+ // 鍏ュ簱绌烘墭鐩橈紝寮傚父鍘诲紓甯稿彛鏄剧ず鎶ヨ淇℃伅,缁欑┖宸ヤ綔鏄庣粏
+ if(wrkMast.getIoType() == 3) {
+ ledCommand.getMatDtos().add(matDto);
+ }
}
// 璁㈠崟
// if(wrkDetl1 != null && !Cools.isEmpty(wrkDetl1.getOrderNo())) {
@@ -1430,6 +1854,14 @@
if (staProtocol.getWorkNo() != 0) {
reset = false;
break;
+ } else {
+ // 鍏ュ簱鍦ㄦ棤鐗╃殑鏃跺�欐墠娓呴櫎寮傚父
+ if(staNo == 1006 || staNo == 1012 || staNo == 1018 || staNo == 1041) {
+ if(staProtocol.isLoading()) {
+ reset = false;
+ break;
+ }
+ }
}
}
// 鑾峰彇led绾跨▼
@@ -1451,15 +1883,27 @@
* 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
* tip锛氬悓姝�
*/
- private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
+ private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,AtomicInteger mark) {
+ // 鍙湁208L鑳芥斁11灞�
+ String model = null;
+ if(shallowLoc.getLocSts().equals("F")) {
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+ if(locDetl != null && locDetl.getModel() != null) {
+ String matModel = locMastMapper.selectMatMatnrByMaktx(locDetl.getModel());
+ if(matModel != null && matModel.equals("208L")) {
+ model = "208L";
+ }
+ }
+ }
try {
News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
LocMast loc = null;
for (Integer row : rows) {
if (Utils.isDeepLoc(slaveProperties, row)) {
- loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+// loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+ loc = locMastMapper.queryFreeLocMastNew(row,model);
if (loc != null) {
if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
@@ -1478,12 +1922,12 @@
if (null == loc) {
for (Integer row : rows) {
if (Utils.isShallowLoc(slaveProperties, row)) {
- loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
-
+// loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
+ loc = locMastMapper.queryFreeLocMastNew(row,model);
if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
LocMast deepLoc1 = locMastService.selectById(deepLoc);
- if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("D")) {
+ if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("M")&& !deepLoc1.getLocSts().equals("Z")) {
loc = null;
}
}
@@ -1515,7 +1959,7 @@
wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
- wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+ wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("M") ? "M" : shallowLoc.getLocSts().equals("Z") ? "Z" : "N"); // 绌烘澘
wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
wrkMast.setLinkMis("N");
wrkMast.setAppeTime(new Date());
@@ -1543,7 +1987,7 @@
}
}
// 淇敼婧愬簱浣嶇姸鎬�
- if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+ if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("M") || shallowLoc.getLocSts().equals("Z")) {
shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
shallowLoc.setModiTime(new Date());
if (!locMastService.updateById(shallowLoc)) {
@@ -1663,21 +2107,60 @@
} else {
staProtocol = staProtocol.clone();
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9000) {
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && (staProtocol.getWorkNo() <= 9000 || staProtocol.getWorkNo()>=30000)) {
+ if (staProtocol.getSiteId() == 1034 && !staProtocol.isHigh()) { // 1034绌烘瘝鎷栧洖娴佷换鍔¢渶瑕侀珮淇″彿
+ continue;
+ }
// 鏌ヨ宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
if (wrkMast == null) {
log.error("鍛煎彨rgv,浠诲姟鍙蜂笉瀛樺湪:{}",staProtocol.getWorkNo());
continue;
}
+ // 1083,1086,1089 澶栧舰妫�娴嬪け璐ワ紝涓嶆槸鍘诲紓甯稿彛鐨� 鍋滃湪鍘熷
+ if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) {
+ 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) {
+ log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg);
+ continue;
+ }
+ }
if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
continue;
}
- if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
+ if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15 || (wrkMast.getIoType() == 120 && wrkMast.getWrkSts() == 52)) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
// 鏈�1090鐨勪换鍔¤烦杩噐gv鍒嗛厤
if(wrkMast.getStaNo() == 1090) {
- int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 or source_sta_no = 1090 "));
- if (count > 1) {
+ DevpThread devpThread2 = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol2 = devpThread2.getStation().get(1090);
+ if(!staProtocol2.isAutoing() || staProtocol2.isLoading() || staProtocol2.getWorkNo() != 0) {
+ log.info("{}鍘诲紓甯稿彛鐩爣绔欑偣锛岃嚜鍔�:{}锛屾湁鐗�:{}锛屽伐浣滃彿涓猴細{}",wrkMast.getWrkNo(),staProtocol2.isAutoing(),staProtocol2.isLoading(),staProtocol2.getWorkNo());
+ continue;
+ }
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 AND (wrk_sts IN (9,10) OR (wrk_sts = 2 AND rgv_finish_time IS NOT NULL))"));
+ if (count > 0) {
+ log.info("{}鍘诲紓甯稿彛锛屼絾鏄墠闈㈡湁鍘诲紓甯稿彛浠诲姟鏁帮細{}",wrkMast.getWrkNo(),count);
continue;
}
}
@@ -1696,7 +2179,7 @@
/**
* rgv鏀捐揣瀹屾垚锛岀粰杈撻�佺嚎涓嬪彂浠诲姟
*/
- public synchronized void rgvToDev() {
+ public synchronized void rgvToDev() throws InterruptedException {
for (Integer site : rgvConnectionSiteList) {
// 杈撻�佺嚎plc缂栧彿
Integer devpPlcId = site < 1044 ? 1 : site <= 1090 ? 2 : 3;
@@ -1715,7 +2198,7 @@
continue;
}
- if(wrkMast.getIoType() == 3 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) { // 鍒�1024鍑哄簱鍙o紝鏀惧埌杈撻�佺嚎鍚庝换鍔″畬鎴�
+ if(wrkMast.getIoType() == 3 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1031 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) { // 鍒�1024鍑哄簱鍙o紝鏀惧埌杈撻�佺嚎鍚庝换鍔″畬鎴�
if(wrkMast.getWrkSts() != 2 ){
log.warn("rgv鏀捐揣瀹屾垚3锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
continue;
@@ -1726,7 +2209,7 @@
// }
wrkMast.setModiTime(new Date());
wrkMastService.updateById(wrkMast);
- } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
+ } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1031 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
if(wrkMast.getWrkSts() != 2 ) {
log.warn("rgv鏀捐揣瀹屾垚101锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}", wrkMast.getRgvNo(), wrkMast.getWrkNo(), wrkMast.getWrkSts());
continue;
@@ -1734,12 +2217,27 @@
wrkMast.setWrkSts(15L);
wrkMast.setModiTime(new Date());
wrkMastService.updateById(wrkMast);
- } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035)) {
+ } else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035
+ || wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016|| wrkMast.getStaNo() == 1043)) {
if(wrkMast.getWrkSts() != 2 ){
log.warn("rgv鏀捐揣瀹屾垚110锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
continue;
}
wrkMast.setWrkSts(15L);
+ wrkMast.setModiTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ // 1020鍒囨崲鍑哄簱妯″紡锛屽鏋滄湁鎵樼洏鍏ユ媶鐩樻満锛屼笉缁欒緭閫佺嚎涓嬪彂鍛戒护
+ if(wrkMast.getStaNo() == 1020) {
+ if(staProtocol.getInOrOutMode() != 1) {
+ continue;
+ }
+ }
+ } else if(wrkMast.getIoType() == 120) {
+ if(wrkMast.getWrkSts() != 53 ){
+ log.warn("rgv鏀捐揣瀹屾垚120锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
+ continue;
+ }
+ wrkMast.setWrkSts(54L);
wrkMast.setModiTime(new Date());
wrkMastService.updateById(wrkMast);
}
@@ -1748,10 +2246,11 @@
staProtocol.setWorkNo(staProtocol.getHideWorkNo());
staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
if (!MessageQueue.offer(SlaveType.Devp, devpPlcId, new Task(2, staProtocol))) {
- log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护澶辫触!,plc id:{},绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getStaNo(), staProtocol.getWorkNo(), staProtocol.getStaNo());
+ log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护澶辫触!,plc id:{},绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getSiteId(), staProtocol.getWorkNo(), staProtocol.getStaNo());
} else {
- log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护鎴愬姛plc id:{}!,绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getStaNo(), staProtocol.getWorkNo(), staProtocol.getStaNo());
+ log.info("rgv鎼繍瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护鎴愬姛plc id:{}!,绔欑偣{}锛屼换鍔″彿锛歿}锛岀洰鏍囩珯锛歿}", devpPlcId,staProtocol.getSiteId(), staProtocol.getWorkNo(), staProtocol.getStaNo());
}
+ Thread.sleep(300);
}
}
}
@@ -1773,14 +2272,14 @@
if (wrkMast == null) {
log.error("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔�:{}", staProtocol.getWorkNo());
return;
- } else if (wrkMast.getLocNo() != null) {
+ } else if (wrkMast.getLocNo() != null && wrkMast.getLocNo().length() == 7) {
// log.info("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤:{}", wrkMast.getLocNo());
return;
} else if(wrkMast.getStaNo() != 1090) {
// log.info("寮傚父鍙e叆搴撳叆搴撶洰鏍囩珯鐐瑰凡鍒嗛厤:{}", wrkMast.getStaNo());
return;
}
-
+ log.info("寮傚父鍙e叆搴撹姹倃ms鍓�,浠诲姟鍙凤細{}锛屼换鍔$姸鎬侊細{}",wrkMast.getWrkNo(), wrkMast.getWrkSts());
try {
CanningLineInLocParam param = new CanningLineInLocParam();
param.setWrkNo(staProtocol.getWorkNo());
@@ -1796,7 +2295,7 @@
log.info("寮傚父鍙e叆搴撹姹倃ms鍘熷杩斿洖锛�" + response);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.getInteger("code").equals(200)) {
- log.error("寮傚父鍙e叆搴撹姹傛帴鍙f垚鍔熷父锛寀rl:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
+ log.info("寮傚父鍙e叆搴撹姹傛帴鍙f垚鍔燂紝url:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
} else {
log.error("寮傚父鍙e叆搴撹姹傛帴鍙e紓甯革紝url:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
News.error("寮傚父鍙e叆搴撹姹傛帴鍙e紓甯革紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
@@ -1823,7 +2322,18 @@
}
// 绔欑偣鏉′欢鍒ゆ柇
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() == 0) {
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() == 0 && staProtocol.isHigh()) {
+ if(site == 1019 && staProtocol.getHideWorkNo() != 0) {
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getHideWorkNo()));
+ if(wrkMast1 != null && wrkMast1.getWrkSts() != 15) {
+ News.warn("绌烘墭鍑哄簱鏈畬鎴愶紝鏃犳硶杞┖鎵樺叆搴撲换鍔★紝浠诲姟鍙�:{}锛屽綋鍓嶇姸鎬�:{}",wrkMast1.getWrkNo(),wrkMast1.getWrkSts());
+ continue;
+ }
+ }
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 10).eq("source_sta_no", site));
+ if (count >= 2) {
+ News.warn("闄愬埗{}绌烘瘝鎵樺彔鐩樺叆搴撴暟灏忎簬2锛屽綋鍓嶏細{}", site, count);
+ }
try {
SearchLocParam param = new SearchLocParam();
param.setIoType(10);
@@ -1907,7 +2417,7 @@
}
public synchronized void autoOutEmptyBucket() {
- Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","autoOutEmptyBucket").eq("status",1));
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoOutEmptyBucket").eq("status", 1));
if (config == null || Cools.isEmpty(config.getValue())) {
return;
}
@@ -1916,20 +2426,111 @@
String[] split = config.getValue().split("=");
for (SearchLocParam.WantBucket wantBucket : getWantBucketFlag()) {
- if (wantBucket.getBucketType() != 0) { // 缃愯绾挎湁瑕佹《淇″彿
+ if (wantBucket.getBucketType() != 0 && wantBucket.getWantBucketCount() > 0) { // 缃愯绾挎湁瑕佹《淇″彿+瑕佹墭鏁颁笉涓�0
boolean flag = true; // 鏄惁闇�瑕佽嚜鍔ㄨˉ锛宼rue涓嶉渶瑕侊紝false闇�瑕�
- for(String item: split) {
- if(String.valueOf(wantBucket.getSite()).equals(item)) {
+ for (String item : split) {
+ if (String.valueOf(wantBucket.getSite()).equals(item)) {
flag = false;
break;
}
}
- if(flag) {
+ if (flag) {
return;
}
// <4 < 2 < 4
int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
- if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) {
+
+ if (wantBucket.getWantBucketCount() == 1) { // 鏈�鍚庡墿涓�鎷栫殑鏃跺��
+ log.info("{}鑷姩琛ョ┖妗跺墿鏈�鍚庝竴鎵橈紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
+ if (wantBucket.getSite() == 1071 && count <= 3 || wantBucket.getSite() == 1064 && count <= 1 || wantBucket.getSite() == 1078 && count <= 3) { // 鍙互鍑轰竴涓�
+ List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
+ if (locDetlList.size() == 0) {
+ log.warn("鑷姩鍑虹┖妗舵渶鍚庝竴涓紝搴撳瓨鏃犳暟鎹�");
+ break;
+ }
+ Map<String, LocDetl> locDetlMap = locDetlList.stream().collect(Collectors.toMap(LocDetl::getLocNo, locDetl -> locDetl));
+ LocDetl locDetlSta = null;
+ for (LocDetl locDetl : locDetlList) {
+ String loc1 = locDetl.getLocNo(); // 褰撳墠搴撲綅
+ String row = loc1.substring(0, 2);
+ String rowNew = ""; // 瀵瑰簲搴撲綅
+ switch (row) {
+ case "09":
+ rowNew = "10";
+ break;
+ case "10":
+ rowNew = "09";
+ break;
+ case "11":
+ rowNew = "12";
+ break;
+ case "12":
+ rowNew = "11";
+ break;
+ default:
+ }
+ String locNoNew = rowNew + loc1.substring(2);
+ LocDetl locDetl1 = locDetlMap.get(locNoNew);
+ if (locDetl1 == null) {
+ locDetlSta = locDetl;
+ break;
+ }
+ }
+ // 娌℃湁鍗曠殑锛屾繁娴呭簱浣嶉兘鏈夛紝鍏堝彇娴呭簱浣�
+ if (locDetlSta == null) {
+ Optional<LocDetl> first = locDetlList.stream().filter(locDetl -> locDetl.getLocNo().startsWith("10") || locDetl.getLocNo().startsWith("11")).findFirst();
+ if (first.isPresent()) {
+ locDetlSta = first.get();
+ }
+ }
+ if (locDetlSta != null) {
+ try {
+ StockOutParam param = new StockOutParam();
+ param.setOutSite(wantBucket.getSite());
+ List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+ StockOutParam.LocDetl locDetl2 = new StockOutParam.LocDetl();
+ locDetl2.setLocNo(locDetlSta.getLocNo());
+ locDetl2.setMatnr(locDetlSta.getMatnr());
+ locDetl2.setBatch(locDetlSta.getBatch());
+ locDetl2.setBrand(locDetlSta.getBrand());
+ locDetl2.setCount(locDetlSta.getAnfme());
+ locDetl2.setBoxType1(locDetlSta.getBoxType1());
+ locDetl2.setBoxType2(locDetlSta.getBoxType2());
+ locDetl2.setBoxType3(locDetlSta.getBoxType3());
+ locDetl2.setStandby1(locDetlSta.getStandby1());
+ locDetl2.setStandby2(locDetlSta.getStandby2());
+ locDetl2.setStandby3(locDetlSta.getStandby3());
+ locDetls.add(locDetl2);
+ param.setLocDetls(locDetls);
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/autoOutEmptyBucket")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ log.info("鏈�鍚庝竴涓嚜鍔ㄥ嚭绌烘《璇锋眰wms鍘熷杩斿洖锛�" + response);
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ decreaseWantBucketCount(wantBucket.getSite(), 1);
+ log.info("鏈�鍚庝竴涓嚜鍔ㄥ嚭绌烘《鎴愬姛:{}", wantBucket.getSite());
+ return;
+ } else {
+ News.error("鏈�鍚庝竴涓嚜鍔ㄧ┖妗跺嚭搴�" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+
+ }
+ } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 鍙互鍑轰袱涓�
+ // 鑷姩鍑虹┖妗讹紝鍧囧寑鍑哄埌姣忓彴缃愯绾�
+ Integer count1 = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("sta_no",wantBucket.getSite()).in("wrk_sts", 11,12));
+ if(count1 > 0) {
+ return;
+ }
+ log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
// 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
for (int i = 0; i < locDetlList.size(); i++) {
@@ -1991,16 +2592,58 @@
log.info("鑷姩鍑虹┖妗惰姹倃ms鍘熷杩斿洖锛�" + response);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.getInteger("code").equals(200)) {
- log.info("鑷姩鍑虹┖妗舵垚鍔�:{}",wantBucket.getSite());
+ decreaseWantBucketCount(wantBucket.getSite(), 2);
+ log.info("鑷姩鍑虹┖妗舵垚鍔�:{}", wantBucket.getSite());
return;
} else {
- News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+ News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response);
}
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
+ }
+ }
+ if (locDetlList.size() > 0) {
+ log.info("娌℃湁鎴愬鐨勭┖妗剁粍锛屽彧鑳戒竴涓竴涓嚭");
+ try {
+ LocDetl locDetl = locDetlList.get(0);
+ StockOutParam param = new StockOutParam();
+ param.setOutSite(wantBucket.getSite());
+ List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+ StockOutParam.LocDetl locDetl2 = new StockOutParam.LocDetl();
+ locDetl2.setLocNo(locDetl.getLocNo());
+ locDetl2.setMatnr(locDetl.getMatnr());
+ locDetl2.setBatch(locDetl.getBatch());
+ locDetl2.setBrand(locDetl.getBrand());
+ locDetl2.setCount(locDetl.getAnfme());
+ locDetl2.setBoxType1(locDetl.getBoxType1());
+ locDetl2.setBoxType2(locDetl.getBoxType2());
+ locDetl2.setBoxType3(locDetl.getBoxType3());
+ locDetl2.setStandby1(locDetl.getStandby1());
+ locDetl2.setStandby2(locDetl.getStandby2());
+ locDetl2.setStandby3(locDetl.getStandby3());
+ locDetls.add(locDetl2);
+ param.setLocDetls(locDetls);
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/autoOutEmptyBucket")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ log.info("鑷姩鍑虹┖妗惰姹倃ms鍘熷杩斿洖锛�" + response);
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ decreaseWantBucketCount(wantBucket.getSite(), 1);
+ log.info("鑷姩鍑虹┖妗舵垚鍔�:{}", wantBucket.getSite());
+ return;
+ } else {
+ News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}
@@ -2041,7 +2684,7 @@
// 鏍规嵁缃愯绾垮弽棣堜换鍔″彿鏌ヨ宸ヤ綔妗�
WrkMast wrkMast = wrkMastService.selectById(staProtocol.getWrkNo());
if(wrkMast == null) {
- log.error("鍑虹綈瑁呯嚎璐х墿浠诲姟鍙峰伐浣滄。涓嶅瓨鍦�:{}",staProtocol.getWrkNo());
+ News.error("鍑虹綈瑁呯嚎璐х墿浠诲姟鍙峰伐浣滄。涓嶅瓨鍦�:{}",staProtocol.getWrkNo());
continue;
} else if(wrkMast.getWrkSts() != 2) {
log.error("鍑虹綈瑁呯嚎璐х墿浠诲姟鍙峰伐浣滄。鐘舵�佸紓甯革紝涓嶄负2:{}",staProtocol.getWrkNo());
@@ -2060,14 +2703,6 @@
param.setSourceStaNo(site + 2);
param.setTbFlag(staProtocol2.isBarcodeErr());
param.setCannedVolume(Math.round(staProtocol.getCannedVolume() * 100.0) / 100.0);
-// param.setWrkNo(57);
-// param.setMatnr("101");
-// param.setBatch("tt1");
-// param.setManuDate("2025-06-05");
-// param.setWeight(100.0);
-// param.setGrossWeight(100.0);
-// param.setSourceStaNo(site);
-// param.setTbFlag(true);
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
@@ -2127,8 +2762,13 @@
WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
if (wrkMast != null && wrkMast.getWhsType() == null) {
WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
- staProtocol.setBucketType(wrkDetl.getMatnr());
- staProtocol.setBucketCount(wrkDetl.getAnfme().intValue());
+ if(wrkMast.getIoType() == 120) {
+ staProtocol.setBucketType("1");
+ staProtocol.setBucketCount(1);
+ } else {
+ staProtocol.setBucketType(wrkDetl.getMatnr());
+ staProtocol.setBucketCount(wrkDetl.getAnfme().intValue());
+ }
boolean result = MessageQueue.offer(SlaveType.Devp, inGzxSiteList.indexOf(site) + 4, new Task(4, staProtocol));
if (result) {
log.info("鍛婅瘔缃愯绾垮叆搴撴《淇℃伅鍛戒护闃熷垪鎺ㄩ�佹垚鍔燂細" + staProtocol.getWorkNo() + "," +"鎵樼洏鐮侊細" + wrkMast.getBarcode() +"锛�" + site + "," + staProtocol.getBucketType() +"," + staProtocol.getBucketCount());
@@ -2164,4 +2804,65 @@
}
}
}
+
+ /**
+ * 鎵嬪姩绔欎綅杞Щ
+ */
+ public synchronized void manualStationTransfer() {
+ WrkMast wrkMast = wrkMastMapper.selectByIoTypeAndWrkSts(120, 51L);
+
+ if (Cools.isEmpty(wrkMast)) {
+ return;
+ }
+ int devpId;
+ if (wrkMast.getSourceStaNo() < 1044) {
+ devpId = 1;
+ } else if (wrkMast.getSourceStaNo() < 1091) {
+ devpId = 2;
+ } else {
+ devpId = 3;
+ }
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+ try {
+ StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getSourceStaNo());
+
+ if (staProtocol == null) {
+ wrkMast.setIoTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ return;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ // 绔欑偣鏉′欢鍒ゆ柇
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ StaProtocol staProtocolNew = new StaProtocol();
+ staProtocolNew.setSiteId(staProtocol.getSiteId());
+ staProtocolNew.setWorkNo(wrkMast.getWrkNo());
+ staProtocolNew.setStaNo(crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()) != null ? crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()) :wrkMast.getSourceStaNo().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolNew));
+ Integer siteId = staProtocol.getSiteId();
+ if(siteId == 1081 || siteId == 1084 || siteId == 1087) {
+ staProtocol.setPlaceableFlag(1);
+ MessageQueue.offer(SlaveType.Devp, outGzxSiteList.indexOf(staProtocol.getSiteId()) + 4, new Task(5, staProtocol));
+ }
+ log.info("鎵嬪姩绔欎綅杞Щ杈撻�佺嚎涓嬪彂锛�" + staProtocolNew.getWorkNo() + "," + staProtocolNew.getSiteId() + "->" + staProtocolNew.getStaNo());
+ if (!result) {
+ News.errorNoLog("" + " - 1" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触");
+ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+ }
+
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(52L);
+ wrkMastService.updateById(wrkMast);
+ } else {
+ wrkMast.setIoTime(new Date());
+ wrkMastService.updateById(wrkMast);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
--
Gitblit v1.9.1