From 3ce585462753d4ae8bb9146aa84229afc0c35dc5 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期二, 08 七月 2025 11:25:16 +0800
Subject: [PATCH] 处理自动出空桶出一个情况
---
src/main/java/com/zy/service/impl/MainServiceImpl.java | 149 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 140 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index e7c5a67..6f4640d 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -327,6 +327,11 @@
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();
@@ -335,6 +340,8 @@
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) {
@@ -1997,7 +2004,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;
}
@@ -2006,21 +2013,104 @@
String[] split = config.getValue().split("=");
for (SearchLocParam.WantBucket wantBucket : getWantBucketFlag()) {
- if (wantBucket.getBucketType() != 0 && wantBucket.getWantBucketCount() >= 2) { // 缃愯绾挎湁瑕佹《淇″彿
+ 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) {
- log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}",wantBucket.getSite(), wantBucket.getBucketType(),count);
+ log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
+ if (wantBucket.getWantBucketCount() == 1) { // 鏈�鍚庡墿涓�鎷栫殑鏃跺��
+ 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) { // 鍙互鍑轰袱涓�
// 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
for (int i = 0; i < locDetlList.size(); i++) {
@@ -2082,8 +2172,8 @@
log.info("鑷姩鍑虹┖妗惰姹倃ms鍘熷杩斿洖锛�" + response);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.getInteger("code").equals(200)) {
- decreaseWantBucketCount(wantBucket.getSite(),2);
- log.info("鑷姩鍑虹┖妗舵垚鍔�:{}",wantBucket.getSite());
+ decreaseWantBucketCount(wantBucket.getSite(), 2);
+ log.info("鑷姩鍑虹┖妗舵垚鍔�:{}", wantBucket.getSite());
return;
} else {
News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response);
@@ -2095,6 +2185,47 @@
}
}
}
+ log.info("娌℃湁鎴愬鐨勭┖妗剁粍锛屽彧鑳戒竴涓竴涓嚭");
+ if (locDetlList.size() > 0) {
+ 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();
+ }
+ }
}
}
}
--
Gitblit v1.9.1