From 0970ed5ac8c8fd31d08fb5bc9f98ae01d0d6fbd4 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 27 十月 2025 18:47:37 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java | 203 ++++++++++++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/task/WrkMastAgvScheduler.java | 42 ++++++++
src/main/java/com/zy/asrs/entity/BasAgvMast.java | 4
3 files changed, 248 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/BasAgvMast.java b/src/main/java/com/zy/asrs/entity/BasAgvMast.java
index 62774fa..7690e8e 100644
--- a/src/main/java/com/zy/asrs/entity/BasAgvMast.java
+++ b/src/main/java/com/zy/asrs/entity/BasAgvMast.java
@@ -91,7 +91,7 @@
/**
* 鐘舵�� 0: 鍒濆 1: 浣滀笟涓� 2: 瀹屾垚
*/
- @ApiModelProperty(value= "鐘舵�� 0: 鍒濆 1: 浣滀笟涓� 2: 瀹屾垚 ")
+ @ApiModelProperty(value= "鐘舵�� 0: 鍒濆 1: 浣滀笟涓� 2: 瀹屾垚 3: 杞巻鍙�")
private Integer status;
/**
@@ -188,6 +188,8 @@
return "浣滀笟涓�";
case 2:
return "瀹屾垚";
+ case 3:
+ return "杞巻鍙�";
default:
return String.valueOf(this.status);
}
diff --git a/src/main/java/com/zy/asrs/task/WrkMastAgvScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastAgvScheduler.java
new file mode 100644
index 0000000..4acad06
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/WrkMastAgvScheduler.java
@@ -0,0 +1,42 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.BasAgvMast;
+import com.zy.asrs.service.BasAgvMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.WrkMastAgvHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Component
+public class WrkMastAgvScheduler {
+
+ @Autowired
+ private WrkMastAgvHandler wrkMastAgvHandler;
+ @Autowired
+ private BasAgvMastService basAgvMastService;
+
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void execute(){
+ List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("status", 2));
+ if (basAgvMastList.isEmpty()) {
+ return;
+ }
+ for (BasAgvMast basAgvMast : basAgvMastList) {
+ try{
+ ReturnT<String> result = wrkMastAgvHandler.start(basAgvMast);
+ if (!result.isSuccess()) {
+ log.error("AGV宸ヤ綔妗e伐浣滄。[TaskNo={}]瀹屾垚浠诲姟澶勭悊澶辫触:"+result.getMsg(), basAgvMast.getTaskNo());
+ }
+ } catch (Exception e) {
+ log.error("AGV宸ヤ綔妗e伐浣滄。[TaskNo={}]瀹屾垚浠诲姟澶勭悊澶辫触:"+e.getMessage(), basAgvMast.getTaskNo());
+
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java b/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
new file mode 100644
index 0000000..ef0cf30
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -0,0 +1,203 @@
+package com.zy.asrs.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Service
+@Transactional
+public class WrkMastAgvHandler extends AbstractHandler<String>{
+ @Autowired
+ private BasAgvMastService basAgvMastService;
+ @Autowired
+ private BasAgvLocDetlService basAgvLocDetlService;
+ @Autowired
+ private BasAgvWrkDetlService basAgvWrkDetlService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private LocDetlService locDetlService;
+
+
+ public ReturnT<String> start(BasAgvMast basAgvMast) {
+ try {
+ Date now = new Date();
+ switch (basAgvMast.getIoType()){
+ case 0:
+ LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo());
+ locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc0.getLocNo()));
+ sourceLoc0.setLocSts("O");
+ sourceLoc0.setBarcode("");
+ sourceLoc0.setModiTime(now);
+ sourceLoc0.setIoTime(now);
+ if (!locMastService.updateById(sourceLoc0)) {
+// exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]");
+ }
+
+ basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
+ basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
+ basAgvMast.setStatus(3);
+ basAgvMastService.updateById(basAgvMast);
+ break;
+ case 1:
+ LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
+
+
+
+ LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo());
+ List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+ if (!locDetls1.isEmpty()) {
+ locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+ }
+
+ // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
+ locMast1.setLocSts("F");
+ locMast1.setIoTime(now);
+ locMast1.setModiTime(now);
+ if (!locMastService.updateById(locMast1)) {
+// exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+ }
+
+
+ try{
+ // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
+ locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
+// if (!) {
+// exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+// }
+ } catch (Exception e) {
+
+ }
+
+
+ if (null != sourceLoc1) {
+ sourceLoc1.setBarcode("");
+ sourceLoc1.setLocSts("O");
+ sourceLoc1.setModiTime(now);
+ sourceLoc1.setIoTime(now);
+ if (!locMastService.updateById(sourceLoc1)) {
+// exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+ }
+ }
+
+ basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
+ basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
+ basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+ basAgvMast.setStatus(3);
+ basAgvMastService.updateById(basAgvMast);
+ break;
+ case 2:
+ List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+ if (!locDetls2.isEmpty()) {
+ locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+ }
+ List<LocDetl> locDetlList1 = new ArrayList<>();
+ List<LocDetl> locDetlList2 = new ArrayList<>();
+ List<BasAgvLocDetl> basAgvLocDetlList = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
+ List<BasAgvWrkDetl> basAgvWrkDetlList = basAgvWrkDetlService.selectList(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
+ if (!basAgvLocDetlList.isEmpty()) {
+ for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetlList){
+ LocDetl locDetl = new LocDetl();
+ locDetl.sync(basAgvLocDetl);
+ locDetlList1.add(locDetl);
+ }
+ } else if (!basAgvWrkDetlList.isEmpty()){
+ for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){
+
+ LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
+ ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
+ if (null != locDetl) {
+ if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
+ ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+ }
+ } else {
+ locDetl = new LocDetl();
+ locDetl.sync(wrkDetl);
+ locDetl.setLocNo(basAgvMast.getLocNo()); // 搴撲綅鍙�
+ locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+ locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+ locDetl.setModiTime(now);
+ locDetl.setAppeTime(now);
+ locDetl.setOrigin("鍦ㄥ簱");
+ if (!locDetlService.insert(locDetl)) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+ }
+ }
+
+ }
+ }
+
+ LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
+
+
+ // 淇敼搴撲綅鐘舵�� S ====>> F
+ if (locMast2.getLocSts().equals("S")) {
+ locMast2.setLocSts("F");
+ locMast2.setIoTime(now);
+ locMast2.setModiTime(now);
+ if (!locMastService.updateById(locMast2)) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄥ叆搴� ===>> 淇敼搴撲綅鐘舵�佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+ }
+ }
+
+
+ if (!locDetlList1.isEmpty()){
+ for (LocDetl locDetl : locDetlList1) {
+ locDetlService.insert(locDetl);
+ }
+ }
+ if (!locDetlList2.isEmpty()){
+ for (LocDetl locDetl : locDetlList2) {
+ locDetlService.insert(locDetl);
+ }
+ }
+
+ basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+ basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
+ basAgvMast.setStatus(3);
+ basAgvMastService.updateById(basAgvMast);
+ break;
+ case 3:
+ basAgvMast.setStatus(3);
+ basAgvMastService.updateById(basAgvMast);
+ break;
+ default:
+ return FAIL.setMsg("鏆備笉鏀寔璇ョ被鍨�");
+ }
+
+ } catch (Exception e) {
+ log.error("fail", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg(e.getMessage());
+ }
+ return SUCCESS;
+ }
+}
--
Gitblit v1.9.1