From fe94feb60561eb7571fe781de975b12288925a15 Mon Sep 17 00:00:00 2001
From: zzgtfwq <zzgtfwq>
Date: 星期二, 03 三月 2026 16:55:25 +0800
Subject: [PATCH] #26-03-10-00
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 147 ++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 120 insertions(+), 27 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 120aa8c..cec7994 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,14 +3,15 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkDetl;
+import com.zy.asrs.entity.WrkLastno;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.TaskCreateParam;
import com.zy.asrs.entity.param.TaskStatusFeedbackParam;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.OpenService;
-import com.zy.asrs.service.WrkDetlService;
-import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.*;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.core.cache.MessageQueue;
@@ -44,7 +45,10 @@
@Autowired
private ApiLogService apiLogService;
-
+ @Autowired
+ private WrkLastnoService wrkLastnoService;
+ @Autowired
+ private RowLastnoService rowLastnoService;
@Autowired
private CommonService commonService;
@@ -53,7 +57,8 @@
@Autowired
private WrkDetlService wrkDetlService;
-
+ @Autowired
+ private LocMastService locMastService;
@Autowired
private SlaveProperties slaveProperties;
@@ -112,7 +117,45 @@
}
return false;
}
+ /**
+ * 鐢熸垚宸ヤ綔鍙�
+ *
+ * @param wrkMk
+ * @return workNo(宸ヤ綔鍙�)
+ */
+ public int getWorkNo(Integer wrkMk) {
+ WrkLastno wrkLastno = wrkLastnoService.selectById(wrkMk);
+ if (Cools.isEmpty(wrkLastno)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ int workNo = wrkLastno.getWrkNo();
+ int sNo = wrkLastno.getSNo();
+ int eNo = wrkLastno.getENo();
+ workNo = workNo >= eNo ? sNo : workNo + 1;
+ while (true) {
+ WrkMast wrkMast = wrkMastService.selectById(workNo);
+ if (null != wrkMast) {
+ workNo = workNo >= eNo ? sNo : workNo + 1;
+ } else {
+ break;
+ }
+ }
+ // 淇敼搴忓彿璁板綍
+ if (workNo > 0) {
+ wrkLastno.setWrkNo(workNo);
+ wrkLastnoService.updateById(wrkLastno);
+ }
+ // 妫�楠�
+ if (workNo == 0) {
+ throw new CoolException("鐢熸垚宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳");
+ } else {
+ if (wrkMastService.selectById(workNo) != null) {
+ throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪");
+ }
+ }
+ return workNo;
+ }
@Override
@Transactional(rollbackFor = Exception.class)
public boolean taskCreate(TaskCreateParam param) {
@@ -124,21 +167,22 @@
//21锛氭嫞閫夊嚭搴� 22锛氭嫞閫夊叆搴�
//31锛氱洏鐐瑰嚭搴� 32锛氱洏鐐瑰叆搴�
switch (param.getIoType()){
- case 1: Inbound = false;break;
- case 2 : Inbound = true;break;
- case 3: Inbound = false;break;
+ case 1: Inbound = false;ioType = 101;break;
+ case 2 : Inbound = true;ioType = 1;break;
+ case 3: Inbound = false;ioType = 11;break;
case 11: Inbound = false;ioType = 110;break;
- case 12: Inbound = true;break;
+ case 12: Inbound = true;ioType = 10;break;
case 21: Inbound = false;ioType = 103;break;
- case 22: Inbound = true;break;
+ case 22: Inbound = true;ioType = 53;break;
case 31: Inbound = false;ioType = 107;break;
- case 32: Inbound = true;break;
+ case 32: Inbound = true;ioType = 57;break;
}
// 2. 淇濆瓨WrkMast
WrkMast wrkMast = new WrkMast();
-
+ int workNo = getWorkNo(0);
if(param.getIoType() == 2 || param.getIoType() == 12){
- wrkMast.setWrkNo(Integer.valueOf(param.getTaskNo()));
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setUserNo(param.getTaskNo());
wrkMast.setIoType(param.getIoType() != 2?10:1);
wrkMast.setIoPri(param.getTaskPriority() != null ? param.getTaskPriority().doubleValue() : 11.0);
wrkMast.setBarcode(param.getBarcode());
@@ -150,7 +194,8 @@
}else if(param.getIoType() == 22 || param.getIoType() == 32){
wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode()));
wrkMast.setWrkSts(param.getIoType() != 32 ? 53L: 57L);
- wrkMast.setWrkNo(Integer.valueOf(param.getTaskNo()));
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setUserNo(param.getTaskNo());
wrkMast.setIoPri(param.getTaskPriority() != null ? param.getTaskPriority().doubleValue() : 11.0);
wrkMast.setBarcode(param.getBarcode());
wrkMast.setMemo(param.getMemo());
@@ -159,7 +204,8 @@
wrkMast.setLocNo(param.getTargetLocNo());
wrkMast.setSourceLocNo(param.getSourceLocNo());
}else if(param.getIoType() == 3){
- wrkMast.setWrkNo(Integer.valueOf(param.getTaskNo()));
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setUserNo(param.getTaskNo());
wrkMast.setIoType(11);
wrkMast.setIoPri(param.getTaskPriority() != null ? param.getTaskPriority().doubleValue() : 12.0);
wrkMast.setBarcode(param.getBarcode());
@@ -169,7 +215,8 @@
wrkMast.setLocNo(param.getTargetLocNo());
wrkMast.setSourceLocNo(param.getSourceLocNo());
}else{
- wrkMast.setWrkNo(Integer.valueOf(param.getTaskNo()));
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setUserNo(param.getTaskNo());
wrkMast.setIoType(ioType);
wrkMast.setIoPri(param.getTaskPriority() != null ? param.getTaskPriority().doubleValue() : 11.0);
wrkMast.setBarcode(param.getBarcode());
@@ -185,10 +232,40 @@
}else{
wrkMast.setWrkSts(11L);
}
+ String locNo = null;
+ if (param.getSourceLocNo() != null && !param.getSourceLocNo().isEmpty()) {
+ locNo = param.getSourceLocNo();
+ }
+ if (param.getTargetLocNo() != null && !param.getTargetLocNo().isEmpty()) {
+ locNo = param.getTargetLocNo();
+ }
+// 鍙栧墠涓や綅
+ int rowNo = Integer.parseInt(locNo.substring(0, 2));
+
+ int crnNo;
+
+ if (rowNo >= 1 && rowNo <= 4) {
+ crnNo = 1;
+ } else if (rowNo >= 5 && rowNo <= 8) {
+ crnNo = 2;
+ } else if (rowNo >= 9 && rowNo <= 10) {
+ crnNo = 3;
+ } else if (rowNo >= 11 && rowNo <= 14) {
+ crnNo = 4;
+ } else {
+ throw new IllegalArgumentException("鎺掑彿瓒呭嚭鑼冨洿: " + rowNo);
+ }
+
+ wrkMast.setCrnNo(crnNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setModiTime(new Date());
wrkMast.setAppeTime(new Date());
wrkMast.setWrkDate(new Date());
-
- wrkMastService.insert(wrkMast);
+ if(param.getIoType() == 22 || param.getIoType() == 32){
+ wrkMastService.updateById(wrkMast);
+ }else{
+ wrkMastService.insert(wrkMast);
+ }
// 3. 淇濆瓨WrkDetl
if (param.getDetlList() != null && !param.getDetlList().isEmpty()) {
@@ -204,7 +281,19 @@
wrkDetlService.insert(wrkDetl);
}
}
-
+ if(param.getIoType() == 2 || param.getIoType() == 12){
+ locMastService.updateLocMast(param.getTargetLocNo(),"S");
+ }else if(param.getIoType() == 3){
+ locMastService.updateLocMast(param.getSourceLocNo(),"R");
+ locMastService.updateLocMast(param.getTargetLocNo(),"S");
+ }else if(param.getIoType() == 22 || param.getIoType() == 32){
+ locMastService.updateLocMast(param.getTargetLocNo(),"Q");
+ }else if(param.getIoType() == 1 || param.getIoType() == 11){
+ locMastService.updateLocMast(param.getSourceLocNo(),"R" );
+ }else{
+ locMastService.updateLocMast(param.getSourceLocNo(),"P" );
+ }
+
// 4. 涓嬪彂缁橮LC
if(Inbound){
writeToPlc(wrkMast);
@@ -224,8 +313,7 @@
}
return true;
- } catch (Exception e) {
- log.error("浠诲姟涓嬪彂寮傚父", e);
+ } catch (Exception e) { log.error("浠诲姟涓嬪彂寮傚父", e);
try {
apiLogService.save("浠诲姟涓嬪彂",
"/taskCreate",
@@ -254,17 +342,22 @@
if (devpThread == null) continue;
// 妫�鏌ヨPLC鏄惁绠$悊璇ョ珯鐐�
- if (devpThread.getStation().containsKey(sourceStaNo.shortValue())) {
- StaProtocol staProtocol = devpThread.getStation().get(sourceStaNo.shortValue());
- if (staProtocol != null && staProtocol.getWorkNo() == 9998) {
+ if (devpThread.getStation().containsKey(sourceStaNo)) {
+ StaProtocol staProtocol = devpThread.getStation().get(sourceStaNo);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol != null && staProtocol.getWorkNo() == 9999) {
staProtocol.setWorkNo(wrkMast.getWrkNo());
if (wrkMast.getStaNo() != null) {
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ staProtocol.setStaNo((short)(wrkMast.getSourceStaNo()- 1));
}
// 涓嬪彂PLC鎸囦护
- devpThread.setPakMk(staProtocol.getSiteId(), false, 283);
+ devpThread.setPakMk(staProtocol.getSiteId(), false, 9999);
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (result) {
--
Gitblit v1.9.1