From fe87eb25a80054e54d3a58307a135edaa8289e8d Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期四, 10 八月 2023 13:19:11 +0800
Subject: [PATCH] 每次盘点只出一托
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 169 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 116 insertions(+), 53 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 8aaaae6..244f684 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -94,7 +94,7 @@
* 缁勬墭
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
*/
- public void generateStoreWrkFile() {
+ public synchronized void generateStoreWrkFile() {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙�
@@ -125,8 +125,10 @@
// 鍏ュ嚭搴撴ā寮忓垽鏂�
// if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
- if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
- if ( inSta.getStaNo()==402 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading()
@@ -149,6 +151,12 @@
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+ WrkMast wrkMast1 = wrkMastMapper.selectPakInStepBarcode(barcode);
+ if (wrkMast1 !=null){
+ if (wrkMast1.getIoType()==103 || wrkMast1.getIoType()==107 || wrkMast1.getIoType()==104){
+ continue;
+ }
+ }
if (wrkMast != null) {
log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
continue;
@@ -176,7 +184,9 @@
.build()
.doPost();
JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code").equals(200)) {
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+ Integer code = jsonObject.getInteger("code");
+ if (code == 200) {
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
barcodeThread.setBarcode("");
@@ -188,6 +198,15 @@
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
}
} else {
+ staProtocol.setWorkNo((short) 9999);
+ staProtocol.setStaNo((short)(inSta.getStaNo()-1));
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+ if(!Cools.isEmpty(ledThread)){
+ String errorMsg = jsonObject.getString("msg");
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+ }
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
}
@@ -266,7 +285,7 @@
* wms鍏ュ簱
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
*/
- public void generateStoreWrkFile0() {
+ public synchronized void generateStoreWrkFile0() {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙�
@@ -281,8 +300,12 @@
}
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
- if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-
+ // if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
+ if ( inSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( inSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
+// staProtocol.setPakMk(true);
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
&& !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990)
@@ -330,14 +353,14 @@
continue;
}
String barcode = barcodeThread.getBarcode();
- if(!Cools.isEmpty(barcode)) {
- log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
- if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
- continue;
- }
- } else {
- continue;
- }
+// if(!Cools.isEmpty(barcode)) {
+// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+// if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+// continue;
+// }
+// } else {
+// continue;
+// }
// 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -348,14 +371,15 @@
staProtocol = staProtocol.clone();
}
+
+// staProtocol.setPakMk(true);
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
-
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
-// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
+// WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
if(wrkMast == null){
- wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
+ wrkMast = wrkMastMapper.selectPickStep(barcode);
}
if (wrkMast == null) {
// 鏃犳嫞鏂欐暟鎹�
@@ -615,7 +639,7 @@
/**
* 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
*/
- public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){
+ public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){
for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
boolean flag = false;
// 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
@@ -748,11 +772,16 @@
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
- public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+ public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
+ // 鑾峰彇宸ヤ綔鐘舵�佷负14鐨勫伐浣滄。 涓� 鍑哄簱浠诲姟涓虹洏鐐�/鎷f枡鍑哄簱鐨勪换鍔�
+ WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep14(slave.getId(), crnStn.getStaNo());
+ if ( wrkMast1 !=null) {
+ continue;
+ }
for (WrkMast wrkMast : wrkMasts){
if (wrkMast == null) {
continue;
@@ -780,8 +809,10 @@
// 鍏ュ嚭搴撴ā寮忓垽鏂�
//if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
- if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {continue;}
- if (wrkMast.getStaNo() == 402 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {continue;}
+ if (wrkMast.getStaNo() == 101 && devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {continue;}
+ if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {continue;}
+ if (wrkMast.getStaNo() == 105 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {continue;}
+ if (wrkMast.getStaNo() == 107 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {continue;}
// 鏌ヨ绔欑偣璇︾粏淇℃伅
BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
@@ -838,7 +869,7 @@
log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(),shallowLocNo);
continue;
} else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")){
- WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
if (null != waitWrkMast && waitWrkMast.getWrkSts()==4) {
continue;
}
@@ -1001,7 +1032,7 @@
/**
* 搴撲綅绉昏浆
*/
- public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
+ public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
// 鑾峰彇宸ヤ綔妗d俊鎭�
WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
if (null == wrkMast) {
@@ -1246,9 +1277,12 @@
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
// if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
- if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
- if ( emptyInSta.getStaNo()==402 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
-
+// if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
+// if ( emptyInSta.getStaNo()==402 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( emptyInSta.getStaNo()==101 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( emptyInSta.getStaNo()==103 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( emptyInSta.getStaNo()==105 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { continue; }
+ if ( emptyInSta.getStaNo()==107 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { continue; }
// 绔欑偣鏉′欢鍒ゆ柇
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
&& staProtocol.isEmptyMk() && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
@@ -1411,7 +1445,7 @@
// ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10 ) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
- wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme())));
+ wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs())));
}
commands.add(ledCommand);
}
@@ -1424,15 +1458,15 @@
}
// 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
if (!commands.isEmpty()) {
- if (led.getId() == 7) {
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
+ if (led.getId()>4){
+ if (!MessageQueue.offer(SlaveType.Led, led.getId()-4, new Task(3, commands))) {
log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
continue;
} else {
ledThread.setLedMk(false);
}
- } else {
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+ }else {
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
continue;
} else {
@@ -1514,20 +1548,10 @@
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
// led鏄剧ず榛樿鍐呭
if (reset && !ledThread.isLedMk()) {
- if (led.getId() == 7) {
- ledThread.setLedMk(true);
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
- log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
- } else {
-
- }
+ ledThread.setLedMk(true);
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+ log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
} else {
- ledThread.setLedMk(true);
- if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
- log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
- } else {
-
- }
}
}
}
@@ -1613,7 +1637,7 @@
* 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
* tip锛氬悓姝�
*/
- private void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc){
+ private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc){
try {
List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
LocMast loc = null;
@@ -1751,7 +1775,10 @@
continue;
}
- LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
+ LocMast sourceLoc = locMastService.queryDemoSourceLoc0(crn.getId());
+ if(sourceLoc == null){
+ locMastService.queryDemoSourceLoc(crn.getId());
+ }
LocMast loc = locMastService.queryDemoLoc(crn.getId());
if (null == sourceLoc || null == loc) {
continue;
@@ -1879,7 +1906,7 @@
/**
* 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
*/
- public void ioConvert() {
+ public synchronized void ioConvert() {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -1891,15 +1918,33 @@
}
WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
switch (inSta.getStaNo()) {
- case 203://1F
+ case 101://1F
+ if (pakout != null) {
+ if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf1F = IoModeType.PAKOUT_BOOTING;
+ WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+ && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf1F = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 103://2F
if (pakout != null) {
if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
// 鍑哄簱鍒囨崲涓�
devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
- && !devpThread.getStation().get(inSta.getStaNo()+1).isLoading()
- && devpThread.getStation().get(inSta.getStaNo()+1).getWorkNo()==0) {
+ && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+ && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
// 鍑哄簱妯″紡
devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
}
@@ -1909,7 +1954,25 @@
devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
}
break;
- case 402://1F
+ case 105://3F
+ if (pakout != null) {
+ if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+ // 鍑哄簱鍒囨崲涓�
+ devpThread.ioModeOf3F = IoModeType.PAKOUT_BOOTING;
+ WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+ if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+ && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+ && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+ // 鍑哄簱妯″紡
+ devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+ }
+ }
+ } else {
+ // 鍏ュ簱妯″紡
+ devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+ }
+ break;
+ case 107://4F
if (pakout != null) {
if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
// 鍑哄簱鍒囨崲涓�
@@ -1939,7 +2002,7 @@
}
- public void outOfDevp() {
+ public synchronized void outOfDevp() {
List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
for (WrkMast wrkMast : wrkMasts) {
if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
--
Gitblit v1.9.1