From 1ddefcdadd90f100df509369ea520bebd6d206ce Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 24 七月 2025 09:42:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/tzglwcs' into tzglwcs --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 797 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 638 insertions(+), 159 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 cd49969..3e01e03 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -10,6 +10,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; +import com.zy.system.service.*; import com.zy.asrs.utils.RouteUtils; import com.zy.asrs.utils.Utils; import com.zy.asrs.utils.VersionUtils; @@ -38,6 +39,9 @@ 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.mapper.ConfigMapper; +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; @@ -45,7 +49,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -94,6 +101,8 @@ private WrkMastService wrkMastService; @Autowired private BasRgvMapService basRgvMapService; + @Autowired + private ConfigService configService; @Value("${wms.url}") private String wmsUrl; @@ -101,12 +110,9 @@ private boolean isToOrigin; public Integer wrkNo = 10000; - - /** - * 缁勬墭 - * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 - */ - public synchronized void generateStoreWrkFile(Integer mark) { + @Autowired + private ConfigMapper configMapper; + public synchronized void generateStoreWrkFile3(Integer mark) { String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { @@ -117,16 +123,23 @@ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + StaProtocol staProtocolIn = devpThread.getStation().get(inSta.getStaNo() -1); + if (staProtocolIn == null) { + continue; + } else { + staProtocolIn = staProtocolIn.clone(); + } + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); // 灏哄妫�娴嬪紓甯� boolean back = false; String errMsg = ""; @@ -150,14 +163,23 @@ errMsg = "鍙宠秴闄�"; back = true; } - if (!back && staProtocol.isWeightErr()) { - errMsg = "瓒呴噸"; + if (!back && staProtocol.getWeight() > 1000) { + errMsg = "瓒呴噸鎴栨湭璇诲彇"; back = true; } if (!back && staProtocol.isBarcodeErr()) { errMsg = "鎵爜澶辫触"; back = true; } +// if(staProtocol.getWeight() <= 0 ){ +// continue; +// } +// if (!back && staProtocol.getWeight() == 0.0) { +// errMsg = "閲嶉噺鑾峰彇澶辫触"; +// back = true; +// } + +// News.info("{}閲嶉噺", staProtocol.getWeight()); // 閫�鍥� if (back) { @@ -209,7 +231,7 @@ // // } News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo())); +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo())); continue; // barcodeThread.setBarcode(""); // staProtocol.setWorkNo(wrkMast.getWrkNo()); @@ -245,6 +267,7 @@ param.setIoType(1); param.setSourceStaNo(inSta.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); + param.setWeight(staProtocol.getWeight()); String response = new HttpHandler.Builder() .setTimeout(30,TimeUnit.SECONDS) .setUri(wmsUrl) @@ -273,27 +296,6 @@ } } else { if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) { - - //宸ヤ綔妗e凡瀛樺湪 鍐嶆杩涘幓 -// wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode); -// if (wrkMast != null) { -// barcodeThread.setBarcode(""); -// staProtocol.setWorkNo(9999); -// //staProtocol.setWorkNo(wrkMast.getWrkNo()); -// //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); -// staProtocol.setStaNo(inSta.getBackSta().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// log.error("杈撻�佺嚎涓嬪彂2锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo()); -// ledThread.errorReset(); -// log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎"); -// if (!result) { -// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); -// -// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); -// } -// } - continue; } staProtocol.setWorkNo(wrkNo); @@ -301,7 +303,8 @@ staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// + log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo()); + // if (ledThread != null) { String errorMsg = jsonObject.getString("msg"); if (!Cools.isEmpty(errorMsg)) { @@ -325,6 +328,436 @@ // News.infoNoLog(""+mark+" - 0"+" - 缁勬墭 ===銆嬫墽琛屽畬鎴�"); } + /** + * 缁勬墭 + * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 + */ +// public synchronized void generateStoreWrkFile(Integer mark) { +// String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); +// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鍏ュ簱鍙� +// for (DevpSlave.Sta inSta : devp.getInSta()) { +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); +// StaProtocol staProtocolIn = devpThread.getStation().get(inSta.getStaNo() -1); +// if (staProtocolIn == null) { +// continue; +// } else { +// staProtocolIn = staProtocolIn.clone(); +// } +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if(staProtocolIn.getStamp() == 1 && barcode!=null && !barcode.isEmpty()) { +// log.error("鐢熸垚浠诲姟涓�"); +// +// WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>() +// .eq("barcode", barcode) +// .in("io_type", 107, 103, 57)); +// if (!Cools.isEmpty(checkPick)) { +// continue; +// } +// try { +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// +// SearchLocParam param = new SearchLocParam(); +// locTypeDto.setLocType1((short) 1); +// param.setBarcode(barcode); +// param.setIoType(1); +// param.setSourceStaNo(inSta.getStaNo()); +// param.setLocType1(locTypeDto.getLocType1()); +// param.setWeight(staProtocol.getWeight()); +// String response = new HttpHandler.Builder() +// .setTimeout(30, TimeUnit.SECONDS) +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v1") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// if (jsonObject.getInteger("code").equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); +// barcodeThread.setBarcode(""); +// staProtocolIn.setWorkNo(dto.getWorkNo()); +//// //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); +//// staProtocol.setStaNo(dto.getStaNo().shortValue()); +// devpThread.setPakMk(staProtocolIn.getSiteId(), false); +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocolIn)); +// log.error("宸ヤ綔鍙蜂笅鍙�2锛�" + dto.getWorkNo() + "," + dto.getStaNo()); +// ledThread.errorReset(); +// log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎"); +// if (!result) { +// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); +// +// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// }else{ +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// +// // 灏哄妫�娴嬪紓甯� +// 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.getWeight() > 1000) { +// errMsg = "瓒呴噸鎴栨湭璇诲彇"; +// back = true; +// } +// if (!back && staProtocol.isBarcodeErr()) { +// errMsg = "鎵爜澶辫触"; +// back = true; +// } +// +// // 閫�鍥� +// if (back) { +// log.info("errmsg: " + errMsg); +//// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); +// +// if (!staProtocol.isLoading()) { +// continue; +// } +// if (!staProtocol.isPakMk()) { +// continue; +// } +// staProtocol.setWorkNo(wrkNo); +// News.info("{}PLC鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo); +// wrkNo++; +// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta()); +// } +// +// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +// && !staProtocol.isEmptyMk() +// && staProtocol.isPakMk()) { +// if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { +// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); +// +// staProtocol.setWorkNo(wrkNo); +// News.info("{}barcode鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo); +// wrkNo++; +// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta()); +// continue; +// } +// // 鍒ゆ柇閲嶅宸ヤ綔妗� +// WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); +// if (wrkMast != null) { +// News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); +// continue; +// } +// WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>() +// .eq("barcode", barcode) +// .in("io_type", 107, 103, 57)); +// if (!Cools.isEmpty(checkPick)) { +// continue; +// } +// try { +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// +// SearchLocParam param = new SearchLocParam(); +// locTypeDto.setLocType1((short) 1); +// param.setBarcode(barcode); +// param.setIoType(1); +// param.setSourceStaNo(inSta.getStaNo()); +// param.setLocType1(locTypeDto.getLocType1()); +// param.setWeight(staProtocol.getWeight()); +// String response = new HttpHandler.Builder() +// .setTimeout(30,TimeUnit.SECONDS) +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v1") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// if (jsonObject.getInteger("code").equals(200)) { +// 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()); +// +// ledThread.errorReset(); +// log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎"); +// +// if (!result) { +// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); +// +// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// } +// } else { +// if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) { +// continue; +// } +// staProtocol.setWorkNo(wrkNo); +// wrkNo++; +// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo()); +// +// String errorMsg = jsonObject.getString("msg"); +// if (!Cools.isEmpty(errorMsg)) { +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// } +// } +// +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// +// } +// } +// } +// } +// +// } + + // 闈欐�佺嚎绋嬪畨鍏⊿et锛岀敤浜庡瓨鍌ㄦ鍦ㄨ皟鐢ㄦ帴鍙g殑宸ヤ綅鍙� + private static final Set<Integer> callingStations = ConcurrentHashMap.newKeySet(); + + public synchronized void generateStoreWrkFile(Integer mark) { + String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); + final Set<String> INVALID_BARCODES = new HashSet<>(Arrays.asList("NG", "NoRead", "00000000")); + + for (DevpSlave devp : slaveProperties.getDevp()) { + for (DevpSlave.Sta inSta : devp.getInSta()) { + + // 銆愬垽鏂伐浣嶆槸鍚︽鍦ㄨ皟鐢ㄦ帴鍙o紝璺宠繃姝e湪璋冪敤鐨勩�� + int staNo = inSta.getStaNo(); + if (!callingStations.add(staNo)) { + // 濡傛灉宸插瓨鍦ㄨ皟鐢ㄤ腑锛岃烦杩� + log.info("宸ヤ綅{}鎺ュ彛璋冪敤涓紝璺宠繃鏈", staNo); + continue; + } + + try { + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + + StaProtocol staProtocol = devpThread.getStation().get(staNo); + StaProtocol staProtocolIn = devpThread.getStation().get(staNo - 1); + + if (staProtocolIn == null || barcodeThread == null) continue; + staProtocolIn = staProtocolIn.clone(); + String barcode = barcodeThread.getBarcode(); + + // 濡傛灉鍓嶅伐浣嶆湁璐� + 鎵爜鍣ㄦ湁鏉$爜 + if (staProtocolIn.getStamp() == 1 && barcode != null && !barcode.isEmpty()) { + log.info("鐢熸垚淇″彿鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date())); + if (wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("barcode", barcode) + .in("io_type", 107, 103, 57)) != null) { + continue; + } + + try { + + + SearchLocParam param = new SearchLocParam(); + param.setBarcode(barcode); + param.setIoType(1); + param.setSourceStaNo(staNo); + param.setLocType1((short) 1); + param.setWeight(staProtocol.getWeight()); + + String response = new HttpHandler.Builder() + .setTimeout(30, TimeUnit.SECONDS) + .setUri(wmsUrl) + .setPath("/rpc/pakin/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + + JSONObject json = JSON.parseObject(response); + if (json.getInteger("code").equals(200)) { + StartupDto dto = json.getObject("data", StartupDto.class); + barcodeThread.setBarcode(""); + staProtocolIn.setWorkNo(dto.getWorkNo()); + devpThread.setPakMk(staProtocolIn.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocolIn)); + log.info("鐢熸垚浠诲姟鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date())); + + ledThread.errorReset(); + log.error("宸ヤ綔鍙蜂笅鍙�2锛�" + dto.getWorkNo() + "," + dto.getStaNo()); + + if (!result) { + News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + } else { + String msg = json.getString("msg"); + if (!"宸ヤ綔妗e凡瀛樺湪".equals(msg)) { + staProtocol.setWorkNo(wrkNo++); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo()); + if (!Cools.isEmpty(msg)) { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, msg)); + } + } + } + } catch (Exception e) { + log.error("缁勬墭浠诲姟寮傚父锛�", e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + + continue; + } else { + // 灏哄/閲嶉噺/鎵爜寮傚父妫�娴� + if (staProtocol == null) continue; + staProtocol = staProtocol.clone(); + boolean back = false; + String errMsg = ""; + + if (staProtocol.isFrontErr()) { errMsg = "鍓嶈秴闄�"; back = true; } + else if (staProtocol.isBackErr()) { errMsg = "鍚庤秴闄�"; back = true; } + else if (staProtocol.isHighErr()) { errMsg = "楂樿秴闄�"; back = true; } + else if (staProtocol.isLeftErr()) { errMsg = "宸﹁秴闄�"; back = true; } + else if (staProtocol.isRightErr()) { errMsg = "鍙宠秴闄�"; back = true; } + else if (staProtocol.getWeight() > 1000) { errMsg = "瓒呴噸鎴栨湭璇诲彇"; back = true; } + else if (staProtocol.isBarcodeErr()) { errMsg = "鎵爜澶辫触"; back = true; } + + // 灏哄寮傚父鍥為�� + if (back && staProtocol.getWorkNo() <9999) { +// log.info("errmsg: " + errMsg); + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); + + if (!staProtocol.isLoading() || !staProtocol.isPakMk()) continue; + staProtocol.setWorkNo(wrkNo++); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta()); + continue; + } + +// // 鍏ュ簱鏉′欢婊¤冻锛屽紑濮嬭姹傚叆搴撳湴鍧� +// if (staProtocol.isAutoing() && staProtocol.isLoading() +// && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) { +// +// if (Cools.isEmpty(barcode) || INVALID_BARCODES.contains(barcode)) { +// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); +// staProtocol.setWorkNo(wrkNo++); +// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// log.error("杈撻�佺嚎涓嬪彂1锛歿} , {}", wrkNo, inSta.getBackSta()); +// continue; +// } +// +// if (wrkMastMapper.selectPakInStep1(staNo, barcode) != null || +// wrkMastService.selectOne(new EntityWrapper<WrkMast>() +// .eq("barcode", barcode) +// .in("io_type", 107, 103, 57)) != null) { +// News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛�2.璁惧涓婅蛋锛夌殑鏁版嵁锛岃鏌ョ湅WCS杈撻�佺嚎鐣岄潰"); +// continue; +// } +// +// try { +// SearchLocParam param = new SearchLocParam(); +// param.setBarcode(barcode); +// param.setIoType(1); +// param.setSourceStaNo(staNo); +// param.setLocType1((short) 1); +// param.setWeight(staProtocol.getWeight()); +// +// String response = new HttpHandler.Builder() +// .setTimeout(30, TimeUnit.SECONDS) +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v1") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// +// JSONObject json = JSON.parseObject(response); +// if (json.getInteger("code").equals(200)) { +// StartupDto dto = json.getObject("data", StartupDto.class); +// barcodeThread.setBarcode(""); +// staProtocol.setWorkNo(dto.getWorkNo()); +// staProtocol.setStaNo(dto.getStaNo().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// ledThread.errorReset(); +// log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo()); +// +// if (!result) { +// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); +// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// } +// } else { +// String msg = json.getString("msg"); +// if (!"宸ヤ綔妗e凡瀛樺湪".equals(msg)) { +// staProtocol.setWorkNo(wrkNo++); +// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo()); +// if (!Cools.isEmpty(msg)) { +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, msg)); +// } +// } +// } +// } catch (Exception e) { +// log.error("缁勬墭浠诲姟寮傚父锛�", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// } + } + } finally { + // 銆愭棤璁烘帴鍙h皟鐢ㄦ槸鍚︽垚鍔燂紝鏈�鍚庨兘閲婃斁璋冪敤鏍囪銆� + callingStations.remove(staNo); + log.debug("宸ヤ綅{}鎺ュ彛璋冪敤瀹屾垚锛岄噴鏀捐皟鐢ㄦ爣璁�", staNo); + } + } + } + } + /** * wms鍏ュ簱 @@ -911,7 +1344,7 @@ if (crnProtocol.getLastIo().equals("I")) { if (basCrnp.getInEnable().equals("Y")) { //mark - 1 - .... - this.crnStnToLoc(crn, crnProtocol, mark); // 鍏ュ簱 + this.crnStnToLoc(crn, crnProtocol, mark, crnThread); // 鍏ュ簱 crnProtocol.setLastIo("O"); } else if (basCrnp.getOutEnable().equals("Y")) { //mark - 2 - .... @@ -925,15 +1358,15 @@ this.locToCrnStn(crn, crnProtocol, mark); // 鍑哄簱 crnProtocol.setLastIo("I"); } else if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc(crn, crnProtocol, mark); // 鍏ュ簱 + this.crnStnToLoc(crn, crnProtocol, mark, crnThread); // 鍏ュ簱 crnProtocol.setLastIo("O"); } } } // 搴撲綅绉昏浆 //mark - 3 - .... -// this.locToLoc(crn, crnProtocol, mark); -// this.crnRebackHp(crnProtocol, crnThread); + this.locToLoc(crn, crnProtocol, mark); + this.crnRebackHp(crnProtocol, crnThread,null); } // News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚"); @@ -942,55 +1375,103 @@ /** * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣 */ - public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) { -// for (CrnSlave crn : slaveProperties.getCrn()) { -// // 鑾峰彇鍫嗗灈鏈轰俊鎭� -// CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); -// CrnProtocol crnProtocol = crnThread.getCrnProtocol(); -// if (crnProtocol == null) { -// continue; -// } -// BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); -// if (basCrnp == null) { -// log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId()); -// continue; -// } - if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { - if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) { - return; + public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread,String staNo) { + if(staNo == null){ + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { + if (crnProtocol.getBay() == 121 || crnProtocol.getBay() == 1) { + return; + } + int x=1; + switch (crnProtocol.getCrnNo()){ + case 1: x =1; break; + case 2: x =3; break; + case 3: x =5; break; + case 4: x =7; break; + } + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12 + if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) { + return; + } + + //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12 + if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) { + return; + } + + //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2 + if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) != null) { + return; + } + News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣"); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.X_MOVE); // 浠诲姟妯″紡: 鍥炲師鐐� + crnCommand.setSourcePosX((short) x); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY((short) 121); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ((short) 2); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand)); + } + crnThread.setBackHpFlag(true); + } + } else { + int y = 1; // 榛樿鍒� + int x=1; + switch (crnProtocol.getCrnNo()){ + case 1: x =1; break; + case 2: x =3; break; + case 3: x =5; break; + case 4: x =7; break; + } + int staNoInt = Integer.parseInt(staNo); + + int z = staNoInt / 100; // 灞� + + if ((staNoInt >= 121 && staNoInt <= 126) || (staNoInt >= 221 && staNoInt <= 231) || (staNoInt >= 411 && staNoInt <= 414)) { + y = 121; } - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12 - if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) { - return; - } + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { + if (crnProtocol.getBay() == y) { + return; + } - //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12 - if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) { - return; - } + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) { + return; + } - //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2 - if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) { - return; + // 鍫嗗灈鏈烘湁鎵ц涓换鍔� + if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) { + return; + } + + + News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣"); + // 鍛戒护涓嬪彂 + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(crnProtocol.getCrnNo()); + crnCommand.setTaskNo((short) 9999); + crnCommand.setAckFinish((short) 0); + crnCommand.setTaskMode(CrnTaskModeType.X_MOVE); + crnCommand.setSourcePosX((short) x); // 榛樿鎺掑缁堜负1 + crnCommand.setSourcePosY((short) y); // 鍔ㄦ�佸垪 + crnCommand.setSourcePosZ((short) z); // 鍔ㄦ�佸眰 + crnCommand.setDestinationPosX((short) 0); + crnCommand.setDestinationPosY((short) 0); + crnCommand.setDestinationPosZ((short) 0); + if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand)); + } + crnThread.setBackHpFlag(true); } - News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣"); - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡: 鍥炲師鐐� - crnCommand.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) { - News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand)); - } - crnThread.setBackHpFlag(true); } // } } @@ -998,7 +1479,7 @@ /** * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� */ - public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) { + public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark,CrnThread crnThread) { News.warnNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�"); for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { boolean flag = false; @@ -1017,11 +1498,22 @@ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); continue; } -// if(staProtocol.getWorkNo() == 9998){ -// continue; + WrkMast wrkMast1 = wrkMastMapper.selectPakInOne(slave.getId()); + if(wrkMast1 != null){ + crnRebackHp(crnProtocol,crnThread,wrkMast1.getStaNo().toString()); + } +// if(staProtocol.getSiteId() == 225){ +// News.info("鍏ュ簱绔欑偣淇℃伅{}",staProtocol); +// staProtocol.isLoading() && // } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + if(staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9998){ + log.info("璇诲彇鍒板伐浣滃彿鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date())); + + } + if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9998 && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { + log.info("鍙叆鏃堕棿: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date())); + flag = true; } if (!flag) { @@ -1032,8 +1524,9 @@ continue; } // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。 - WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); + WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo(), crnStn.getStaNo()); if (null == wrkMast) { + log.info("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); // log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; @@ -1060,48 +1553,6 @@ continue; } -// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� -// if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) { -// News.warnNoLog("" + mark + " - 1" + " - 8" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo()); -// String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo()); -// LocMast shallowLoc = locMastService.selectById(shallowLocNo); -// // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒 -// if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) { -// News.warnNoLog("" + mark + " - 1" + " - 9" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts()); -// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); -// if (null == waitWrkMast) { -// News.error("" + mark + " - 1" + " - 10" + " - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); -// } else { -// waitWrkMast.setIoPri(15D); -// waitWrkMast.setModiTime(new Date()); -// if (wrkMastMapper.updateById(waitWrkMast) == 0) { -// News.error("" + mark + " - 1" + " - 11" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); -// } -// continue; -// } -// -// } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { -// News.warnNoLog("" + mark + " - 1" + " - 12" + " - // F銆丏 搴撲綅鐘舵��={}", shallowLoc.getLocSts()); -// // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� -// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { -// wrkMast.setUpdMk("Y"); -// wrkMast.setIoPri(14D); -// wrkMastMapper.updateById(wrkMast); -// // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑 -// moveLocForDeepLoc(slave, shallowLoc, mark); -// // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) -//// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast); -// } -// continue; -// } else if (shallowLoc.getLocSts().equals("Q")) { -// News.warnNoLog("" + mark + " - 1" + " - 13" + " - // Q 搴撲綅鐘舵��={}", shallowLoc.getLocSts()); -// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); -// if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) { -// News.infoNoLog("" + mark + " - 1" + " - 14" + " - // F銆丏 宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts()); -// continue; -// } -// } -// } News.warnNoLog("" + mark + " - 1" + " - 15" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue() , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue() , locMast.getRow1().shortValue(), locMast.getBay1().shortValue(), locMast.getLev1().shortValue()); @@ -1119,6 +1570,8 @@ crnCommand.setDestinationPosY((short) (locMast.getBay1() + slave.getOffset())); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ((short) (locMast.getLev1() + slave.getOffset())); // 鐩爣搴撲綅灞� // crnCommand.setTraySize(locMast.getLocType1() == 2); + log.info("鍫嗗灈鏈轰换鍔′笅鍙戞椂闂�: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date())); + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { News.error("" + mark + " - 1" + " - 16" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -1159,7 +1612,7 @@ // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); for (WrkMast wrkMast : wrkMasts) { - if (wrkMast == null) { + if (wrkMast == null) { continue; } // 宸ヤ綔妗g姸鎬佸垽鏂� @@ -1198,9 +1651,21 @@ break; // continue; } + boolean canOut; + Config config = configService.selectConfigByCode("C-OUT-OP"); + + if (Cools.isEmpty(config) || config.getValue().equals("false") ){ + canOut = staProtocol.isAutoing() + && !staProtocol.isLoading() + && "Y".equals(staDetl.getCanouting()) + && staProtocol.getWorkNo() == 0 + && staProtocol.isOutEnable(); + } else { + canOut = staProtocol.isAutoing(); + } + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") - && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { + if (canOut) { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- // 鍫嗗灈鏈烘帶鍒惰繃婊� @@ -1508,33 +1973,47 @@ if (crnProtocol == null) { continue; } - // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 - if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { - News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo()); + if(crnProtocol.getTaskNo() == 9999){ + // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 + if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { + News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo()); - // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); - if (wrkMast == null) { - News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); - continue; - } - // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚 - if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) { - wrkMast.setWrkSts(4L); - } else { - continue; - } - Date now = new Date(); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 - if (wrkMastMapper.updateById(wrkMast) > 0) { + + // 鍫嗗灈鏈哄浣� - log.error(wrkMast.getWrkNo() + "浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}", crnThread.getCrnProtocol().getCrnNo()); News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo()); crnThread.setResetFlag(true); } + }else{ + // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 + if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { + News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo()); + + // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); + if (wrkMast == null ) { + News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); + continue; + } + // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚 + if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) { + wrkMast.setWrkSts(4L); + } else { + continue; + } + Date now = new Date(); + wrkMast.setCrnEndTime(now); + wrkMast.setModiTime(now); + // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 + if (wrkMastMapper.updateById(wrkMast) > 0) { + // 鍫嗗灈鏈哄浣� + log.error(wrkMast.getWrkNo() + "浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}", crnThread.getCrnProtocol().getCrnNo()); + News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo()); + crnThread.setResetFlag(true); + } + } } + } @@ -1856,14 +2335,14 @@ } 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() == 101 || wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getOrderNo(),wrkDetl.getOutOrderNo(),wrkDetl.getUnit(),wrkDetl.getWeight(),wrkDetl.getSupp(),wrkDetl.getLength() ,wrkDetl.getTemp1(), wrkDetl.getProType(),wrkDetl.getAnfme(),wrkDetl.getTemp2(),wrkDetl.getLuHao(), 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() == 103 ) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getOrderNo(),wrkDetl.getOutOrderNo(),wrkDetl.getUnit(),wrkDetl.getWeight(),wrkDetl.getSupp(),wrkDetl.getLength() ,wrkDetl.getTemp1(), wrkDetl.getProType(),wrkDetl.getAnfme(),wrkDetl.getTemp2(),wrkDetl.getLuHao(), 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)); + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getOrderNo(),wrkDetl.getOutOrderNo(),wrkDetl.getUnit(),wrkDetl.getWeight(),wrkDetl.getSupp(),wrkDetl.getLength() ,wrkDetl.getTemp1(), wrkDetl.getProType(),wrkDetl.getAnfme(),wrkDetl.getTemp2(),wrkDetl.getLuHao(), total)); } }); } -- Gitblit v1.9.1