From d7ec100166068db8197d218c57d2a6c86a5289a4 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 04 十一月 2025 14:10:42 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 268 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 219 insertions(+), 49 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 d358482..e8ee51c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2756,51 +2756,58 @@
* 婕旂ず妯″紡鍚姩
*/
public boolean crnStnDEMOOpen1() {
- int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>());
- if (selectCount>0) {
- return false;
- }
- for (CrnSlave crn : slaveProperties.getCrn()) {
-
- // 鑾峰彇鍫嗗灈鏈轰俊鎭�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
- CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol == null) {
- continue;
+ try{
+ int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>());
+ if (selectCount>0) {
+ return false;
}
- BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
- if (basCrnp == null) {
- log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
- continue;
- }
-
- if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
- CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "瀛樺湪鍏跺畠鍫嗗灈鏈哄紑鍚紨绀烘ā寮忥紒");
- continue;
- }
-
- CrnSlave crnSlave = new CrnSlave(crn);
- if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
- CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
- continue;
- }
-
- if (!crn.getId().equals(crnProtocol.getLaneNo())) {
- for (CrnSlave crnOther : slaveProperties.getCrn()) {
- if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
- crnSlave.updateCrnInStn(crnOther);
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+ try{
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
}
- }
- }
- for (String locNo : crnProtocol.getLocMastDemoList()){
- LocMast locMast = locMastService.selectByLocNo(locNo);
- TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast);
- taskCreateParam.setStartPointSta(crnProtocol.getStaIntDemo());
- taskCreateParam.setTargetPointSta(crnProtocol.getStaOutDemo());
- openService.taskCreate(taskCreateParam);
- }
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ continue;
+ }
- return true;
+ if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "瀛樺湪鍏跺畠鍫嗗灈鏈哄紑鍚紨绀烘ā寮忥紒");
+ continue;
+ }
+//
+ CrnSlave crnSlave = new CrnSlave(crn);
+ if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
+ continue;
+ }
+
+ if (!crn.getId().equals(crnProtocol.getLaneNo())) {
+ for (CrnSlave crnOther : slaveProperties.getCrn()) {
+ if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
+ crnSlave.updateCrnInStn(crnOther);
+ }
+ }
+ }
+ for (String locNo : crnProtocol.getLocMastDemoList()){
+ LocMast locMast = locMastService.selectByLocNo(locNo);
+ TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast);
+ taskCreateParam.setStartPointSta(crnProtocol.getStaIntDemo());
+ taskCreateParam.setTargetPointSta(crnProtocol.getStaOutDemo());
+ openService.taskCreate(taskCreateParam);
+ }
+ } catch (Exception e) {
+ CrnErrCache.updateCrnErr(crn.getId(), "婕旂ず妯″紡鐢熸垚浠诲姟寮傚父锛�");
+ continue;
+ }
+
+ return true;
+ }
+ } catch (Exception e) {
}
return false;
}
@@ -2853,14 +2860,18 @@
this.crnStnToLocDemo(crn, crnProtocol); // 鍏ュ簱
crnProtocol.setLastIo("O");
} else if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStnDemo(crn, crnProtocol); // 鍑哄簱
+ if (!Cools.isEmpty(basCrnp.getHpMk()) && basCrnp.getHpMk().equals("Y")) {
+ this.locToCrnStnDemo(crn, crnProtocol); // 鍑哄簱
+ }
crnProtocol.setLastIo("I");
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (crnProtocol.getLastIo().equals("O")) {
if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStnDemo(crn, crnProtocol); // 鍑哄簱
+ if (!Cools.isEmpty(basCrnp.getHpMk()) && basCrnp.getHpMk().equals("Y")) {
+ this.locToCrnStnDemo(crn, crnProtocol); // 鍑哄簱
+ }
crnProtocol.setLastIo("I");
} else if (basCrnp.getInEnable().equals("Y")) {
this.crnStnToLocDemo(crn, crnProtocol); // 鍏ュ簱
@@ -2996,7 +3007,7 @@
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
public void locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
- List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
+ List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOutDemo(crnProtocol.getLaneNo(), null);
if (taskWrksInitial.size() == 0) {
return;
}
@@ -3173,7 +3184,6 @@
continue;
}
log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
-// R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
staProtocol.setWorkNo(taskWrk.getWrkNo());
staProtocol.setStaNo(BarcodeUtils.getStaNo(staProtocol.getSiteId()));
boolean offer = false;
@@ -3183,18 +3193,17 @@
log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
}
-// JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r));
if (offer) {
log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
Date now = new Date();
-// taskWrk.setStatus(TaskStatusType.OVER3.id);
+ taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);
+
taskWrk.setWrkSts(2);
taskWrk.setModiTime(now);
taskWrk.setCompleteTime(now);
taskWrkService.updateById(taskWrk);
} else {
log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
-// log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯镐俊鎭�:"+JSON.toJSONString(r));
}
}
} catch (Exception e) {
@@ -3206,4 +3215,165 @@
}
}
+
+
+ public synchronized void taskStartDemo() {
+ for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+ try {
+ if (rgvDetection(rgvSlave)) {
+ String taskNoNow = rgvOtherTaskWrk(rgvSlave);
+ List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true));
+ boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
+ if (basDevpPositions.isEmpty()) {
+ log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�");
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚锛氳幏鍙栨墍鏈夌珯鐐逛俊鎭紓甯�");
+ } catch (Exception e2){
+ }
+ continue;
+ }
+ List<TaskWrk> taskWrkList = new ArrayList<>();
+ List<Integer> staList = new ArrayList<>();
+ for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
+ TaskWrk taskWrk = deviceDetection(inSta);
+ if (taskWrk != null) {
+ if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue;
+ taskWrkList.add(taskWrk);
+ staList.add(inSta.getStaNo());
+ }
+ }
+
+ if (taskWrkList.isEmpty() || staList.isEmpty()) continue;
+
+ boolean sign = false;
+
+ if (!sign){
+ //鍙敤鍖哄煙灏辫繎鍙栬揣
+ //灏辫繎鎺掑簭
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+ List<Integer> rangeList = RouteUtils.SortNearby(staList, rgvProtocol.RgvPos, basDevpPositions);
+ // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+ for (Integer staNoNow : rangeList) {
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+ if (rgvStn.getStaNo().equals(staNoNow)) {
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+ for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+ if (rgvStnOut.getStaNo().equals(outStaNo)) {
+ sign = taskGenerate(rgvSlave, rgvStn, 0);
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ if (sign) {
+ break;
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}", e.getMessage());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "鎸囦护鐢熸垚澶辫触");
+ } catch (Exception e2){
+ }
+ }
+ }
+ }
+
+ /**
+ * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+ */
+ public void storeFinishedDemo() throws InterruptedException {
+ for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+ try{
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
+ }
+
+ BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+ continue;
+ }
+
+
+ CrnSlave crn = new CrnSlave(crnSlave);
+ if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+ CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
+ continue;
+ }
+
+ if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
+ for (CrnSlave crnOther : slaveProperties.getCrn()) {
+ if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
+ crn.updateCrnInStn(crnOther);
+ }
+ }
+ }
+
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+ //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+ TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorkingDemo(crnProtocol.getLaneNo(), crnProtocol.getTaskNo().intValue());
+ if (Cools.isEmpty(taskWrk) && crnProtocol.getTaskNo() != 999) {
+ log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽贩閬撳彿={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
+ continue;
+ }
+
+ Date now = new Date();
+
+ crnThread.setResetFlag(true);
+
+ if (!Cools.isEmpty(taskWrk)) {
+ if (taskWrk.getIoType() == 4 && taskWrk.getWrkSts() == 3) {
+ taskWrk.setWrkSts(11);//鍏ュ簱瀹屾垚
+ taskWrk.setStatus(TaskStatusType.RECEIVE.id);//鎺ユ敹
+ if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")) {
+ taskWrk.setWrkSts(4);
+ taskWrk.setStatus(TaskStatusType.OVER.id);
+ }
+ //鏇存柊搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+ locMast.setLocSts("R");//F.鍦ㄥ簱
+ if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")) {
+ locMast.setLocSts("F");//F.鍦ㄥ簱
+ }
+ locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
+ locMast.setModiTime(now);
+ locMast.setModiUser(9999L);
+ locMastService.updateById(locMast);
+ } else if (taskWrk.getIoType() == 4 && taskWrk.getWrkSts() == 12) {
+ taskWrk.setWrkSts(13);//鍑哄簱瀹屾垚
+ taskWrk.setStatus(TaskStatusType.RECEIVE.id);//鎺ユ敹
+ //鏇存柊搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
+ locMast.setLocSts("S");//O.绌哄簱浣�
+ locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
+ locMast.setModiTime(now);
+ locMast.setModiUser(9999L);
+ locMastService.updateById(locMast);
+ }
+ taskWrk.setModiTime(now);
+ taskWrk.setCompleteTime(now);
+ taskWrkService.updateById(taskWrk);
+
+ }
+
+ }
+ } catch (Exception e){
+ log.error("鍫嗗灈鏈烘墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔澶辫触 ===>> [id:{}] [error:{}]", crnSlave.getId(), e.getMessage());
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1