From d7020a8f1ec6f55167b4ad14941de0e28ce3d8c1 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期五, 16 一月 2026 14:19:59 +0800
Subject: [PATCH] agv出库逻辑
---
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 1159 +++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 863 insertions(+), 296 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index dfcc9da..f8883ff 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -1,22 +1,38 @@
package com.zy.asrs.task.handler;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.BasStationServiceImpl;
import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.properties.AgvProperties;
+import com.zy.common.service.CommonService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
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.Arrays;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* Created by vincent on 2020/7/4
*/
+@Slf4j
@Service
@Transactional
-public class WorkMastHandler extends AbstractHandler {
+public class WorkMastHandler extends AbstractHandler<String> {
@Autowired
private WrkMastService wrkMastService;
@@ -28,326 +44,877 @@
private LocDetlService locDetlService;
@Autowired
private WaitPakinService waitPakinService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private OrderDetlPakinService orderDetlPakinService;
+ @Autowired
+ private OrderDetlPakoutService orderDetlPakoutService;
+ @Autowired
+ private LocCacheService locCacheService;
+ @Autowired
+ private OrderPakinService orderPakinService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private TaskDetlService taskDetlService;
+ @Autowired
+ private BasStationServiceImpl basStationService;
- public void start() {
- List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
- if (wrkMasts.isEmpty()) {
- return;
- }
- for (WrkMast wrkMast : wrkMasts) {
- // 4.鍏ュ簱瀹屾垚
- if (wrkMast.getWrkSts() == 4) {
- doIn(wrkMast);
+ @Autowired
+ private LocCacheDetlService locCacheDetlService;
+
+ @Autowired
+ private CommonService commonService;
+
+ @Autowired
+ private AgvProperties agvProperties;
+
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
+
+ public ReturnT<String> start(WrkMast wrkMast) {
+ // 4.鍏ュ簱瀹屾垚
+ if (wrkMast.getWrkSts() == 4) {
+ return doIn(wrkMast);
// 14.鍑哄簱瀹屾垚
- } else if (wrkMast.getWrkSts() == 14) {
- doOut(wrkMast);
- }
+ } else if (wrkMast.getWrkSts() == 14) {
+ return doOut(wrkMast);
}
+ return SUCCESS;
}
- private void doIn(WrkMast wrkMast){
+
+ public ReturnT<String> doIn(WrkMast wrkMast) {
Date now = new Date();
LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
- if (null == locMast) {
- exceptionHandle(""); // todo
- return;
+ try {
+ if (null == locMast) {
+// exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+ }
+ assert locMast != null;
+ switch (wrkMast.getIoType()) {
+ // 绌烘澘鍏ュ簱
+ case 10:
+ // 淇敼搴撲綅鐘舵��=D
+ if (locMast.getLocSts().equals("S") || locMast.getLocSts().equals("Q")) {
+ if (!Cools.isEmpty(wrkMast.getBarcode())) {
+ locMast.setBarcode(wrkMast.getBarcode());
+ }
+ locMast.setLocSts("D");
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ break;
+ // 鍏ㄦ澘鍏ュ簱
+ case 1:
+ // 娓呴櫎鎵�灞炲簱浣嶄箣鍓嶇殑搴撳瓨鏄庣粏
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+ if (!locDetls.isEmpty()) {
+ locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+ }
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls.isEmpty()) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪锛沎workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
+ for (WrkDetl wrkDetl : wrkDetls) {
+
+ LocDetl locDetl = locDetlService.selectItem(locMast.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(), wrkMast.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=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ } else {
+ locDetl = new LocDetl();
+ BeanUtils.copyProperties(wrkDetl, locDetl);
+// locDetl.sync(wrkDetl);
+ locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+ locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+ locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+ locDetl.setModiTime(now);
+ locDetl.setAppeTime(now);
+ if (!locDetlService.insert(locDetl)) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
+ (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ if (orderDetlPakin == null) {
+ orderDetlPakin = orderDetlPakinService.selectItem
+ (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),
+ wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ }
+ try {
+ if (!Cools.isEmpty(orderDetlPakin)) {
+ if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
+// wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ } catch (Exception ignore) {
+ }
+
+ }
+ // 淇敼搴撲綅鐘舵�� S ====>> F
+ if (locMast.getLocSts().equals("S")) {
+ locMast.setLocSts("F");
+ locMast.setBarcode(wrkMast.getBarcode());
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ break;
+ // 鎷f枡閫斾腑骞舵澘
+ case 8:
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls8 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls8.isEmpty()) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 宸ヤ綔鏄庣粏妗d笉瀛樺湪; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
+ for (WrkDetl wrkDetl : wrkDetls8) {
+ LocDetl locDetl = locDetlService.selectItem(locMast.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() + locDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+ , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ } else {
+ locDetl = new LocDetl();
+ BeanUtils.copyProperties(wrkDetl, locDetl);
+// locDetl.sync(wrkDetl);
+ locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+ locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+ locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+ locDetl.setModiTime(now);
+ locDetl.setAppeTime(now);
+ if (!locDetlService.insert(locDetl)) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ }
+ break;
+ // 鎷f枡鍏ュ簱
+ case 53:
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls53.isEmpty()) {
+// exceptionHandle("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ for (WrkDetl wrkDetl : wrkDetls53) {
+
+ LocDetl locDetl = locDetlService.selectItem(locMast.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(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+ , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+// exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
+ (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
+ wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ if (orderDetlPakin == null) {
+ orderDetlPakin = orderDetlPakinService.selectItem
+ (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ }
+ try {
+ if (!Cools.isEmpty(orderDetlPakin)) {
+ if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+// exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
+// wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ } catch (Exception ignore) {
+ }
+
+ }
+ // 淇敼搴撲綅鐘舵�� Q ====>> F
+ if (locMast.getLocSts().equals("Q")) {
+ locMast.setLocSts("F");
+ locMast.setBarcode(wrkMast.getBarcode());
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ break;
+ // 骞舵澘鍏ュ簱
+ case 54:
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls54.isEmpty()) {
+// exceptionHandle("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
+ for (WrkDetl wrkDetl : wrkDetls54) {
+
+ LocDetl locDetl = locDetlService.selectItem(locMast.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(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+ , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+// exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ } else {
+ locDetl = new LocDetl();
+ BeanUtils.copyProperties(wrkDetl, locDetl);
+// locDetl.sync(wrkDetl);
+ locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+ locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+ locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+ locDetl.setModiTime(now);
+ locDetl.setAppeTime(now);
+ if (!locDetlService.insert(locDetl)) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ try {
+ if (!Cools.isEmpty(orderDetlPakin)) {
+ if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ } catch (Exception ignore) {
+
+ }
+
+ }
+ // 淇敼搴撲綅鐘舵�� Q ====>> F
+ if (locMast.getLocSts().equals("Q")) {
+ locMast.setLocSts("F");
+ locMast.setBarcode(wrkMast.getBarcode());
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ break;
+ // 鐩樼偣鍏ュ簱
+ case 57:
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls57 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls57.isEmpty()) {
+// exceptionHandle("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ for (WrkDetl wrkDetl : wrkDetls57) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ if (!Cools.isEmpty(orderDetlPakout)) {
+ if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ }
+ }
+ }
+ // 淇敼搴撲綅鐘舵�� Q ====>> F
+ if (locMast.getLocSts().equals("Q")) {
+ locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D");
+ locMast.setBarcode(wrkMast.getBarcode());
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ break;
+ // 搴撲綅绉昏浆
+ case 11:
+ // 榛樿鐩爣搴撲綅鏄┖鏉�
+ String locSts = "D";
+ // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
+ if (wrkMast.getEmptyMk().equals("N")) {
+ locSts = "F";
+ // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
+ if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
+// exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬� ==> O
+ LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+ if (null != sourceLoc) {
+ sourceLoc.setBarcode("");
+ sourceLoc.setLocSts("O");
+ sourceLoc.setModiTime(now);
+ sourceLoc.setIoTime(now);
+ if (!locMastService.updateById(sourceLoc)) {
+// exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
+ locMast.setLocSts(locSts);
+ locMast.setBarcode(wrkMast.getBarcode());
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ break;
+ default:
+ break;
+ }
+ // 淇敼宸ヤ綔涓绘。鐘舵��
+ wrkMast.setWrkSts(5L);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.updateById(wrkMast)) {
+// exceptionHandle("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg(e.getMessage());
}
- switch (wrkMast.getIoType()) {
- // 绌烘澘鍏ュ簱
- case 10:
- // 淇敼搴撲綅鐘舵��=D
- if (locMast.getLocType().equals("S") || locMast.getLocType().equals("Q")) {
- locMast.setLocType("D");
- locMast.setIoTime(now);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
- }
- }
- break;
- // 鍏ㄦ澘鍏ュ簱
- case 1:
- // 娓呴櫎鎵�灞炲簱浣嶄箣鍓嶇殑搴撳瓨鏄庣粏
- List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
- if (!locDetls.isEmpty()) {
- locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
- }
- // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
- List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
- if (wrkDetls.isEmpty()) {
- exceptionHandle(""); // todo
- }
- // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
- for (WrkDetl wrkDetl : wrkDetls) {
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
- if (null != locDetl) {
- boolean res = locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr());
- if (!res) {
- exceptionHandle(""); // todo
- }
- } else {
- locDetl = new LocDetl(
- wrkMast.getLocNo(), // 搴撲綅鍙�
- wrkDetl.getMatnr(), // 鐗╂枡鍙�
- null, // 浠撳簱鍙�
- null, // 杞偍璇锋眰缂栧彿
- null, // 琛岄」鐩�
- null, // 鐗╂枡鏍囩ID
- wrkDetl.getMaktx(), // 鐗╂枡鎻忚堪
- null, // 宸ュ巶
- wrkDetl.getAnfme(), // 鏁伴噺
- wrkDetl.getAltme(), // 鍗曚綅
- wrkDetl.getZpallet(), // 鎵樼洏鏉$爜
- null, // 鐢ㄦ埛ID
- null, // 澶囨敞
- null, // 淇敼浜哄憳
- now, // 淇敼鏃堕棿
- null, // 鍒涘缓鑰�
- now // 娣诲姞鏃堕棿
- );
- if (!locDetlService.insert(locDetl)) {
- exceptionHandle(""); // todo
- }
- }
- // 鏇存柊鍏ュ簱閫氱煡妗� status ===>> Y
- WaitPakin setParam = new WaitPakin();
- setParam.setStatus("Y");
- boolean updateRes = waitPakinService.update(setParam
- , new EntityWrapper<WaitPakin>().eq("barcode", wrkDetl.getZpallet())
- .eq("matnr", wrkDetl.getMatnr())
- .eq("anfme", wrkDetl.getAnfme()));
- if (!updateRes) {
- exceptionHandle(""); // todo
- }
- }
- // 淇敼搴撲綅鐘舵�� S ====>> F
- if (locMast.getLocType().equals("S")) {
- locMast.setLocType("F");
- locMast.setBarcode(wrkMast.getBarcode());
- locMast.setIoTime(now);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
- }
- }
- break;
- // 鎷f枡鍏ュ簱
- case 53:
- // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
- List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
- if (wrkDetls53.isEmpty()) {
- exceptionHandle(""); // todo
- }
- for (WrkDetl wrkDetl:wrkDetls53) {
- // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏋滃伐浣滄槑缁嗘暟閲忎负0鏃讹紝鍒犻櫎搴撳瓨鏄庣粏
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
- if (null != locDetl) {
- if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr())) {
- exceptionHandle(""); // todo
- }
- // todo:luxiaotao 3)淇敼鍑哄簱閫氱煡妗� status ==> Y
- }
- }
- // 淇敼搴撲綅鐘舵�� Q ====>> F
- if (locMast.getLocType().equals("Q")) {
- locMast.setLocType("F");
- locMast.setBarcode(wrkMast.getBarcode());
- locMast.setIoTime(now);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
- }
- }
- break;
- // 骞舵澘鍏ュ簱
- case 54:
- // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
- List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
- if (wrkDetls54.isEmpty()) {
- exceptionHandle(""); // todo
- }
- // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
- for (WrkDetl wrkDetl:wrkDetls54) {
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
- if (null != locDetl) {
- if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr())) {
- exceptionHandle(""); // todo
- }
- } else {
- locDetl = new LocDetl(
- wrkMast.getLocNo(), // 搴撲綅鍙�
- wrkDetl.getMatnr(), // 鐗╂枡鍙�
- null, // 浠撳簱鍙�
- null, // 杞偍璇锋眰缂栧彿
- null, // 琛岄」鐩�
- null, // 鐗╂枡鏍囩ID
- wrkDetl.getMaktx(), // 鐗╂枡鎻忚堪
- null, // 宸ュ巶
- wrkDetl.getAnfme(), // 鏁伴噺
- wrkDetl.getAltme(), // 鍗曚綅
- wrkDetl.getZpallet(), // 鎵樼洏鏉$爜
- null, // 鐢ㄦ埛ID
- null, // 澶囨敞
- null, // 淇敼浜哄憳
- now, // 淇敼鏃堕棿
- null, // 鍒涘缓鑰�
- now // 娣诲姞鏃堕棿
- );
- if (!locDetlService.insert(locDetl)) {
- exceptionHandle(""); // todo
- }
- }
- // todo:luxiaotao 3)淇敼鍑哄簱閫氱煡妗� status ==> Y
- }
- // 淇敼搴撲綅鐘舵�� Q ====>> F
- if (locMast.getLocType().equals("Q")) {
- locMast.setLocType("F");
- locMast.setBarcode(wrkMast.getBarcode());
- locMast.setIoTime(now);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
- }
- }
- break;
- // 鐩樼偣鍏ュ簱
- case 57:
- // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
- List<WrkDetl> wrkDetls57 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
- if (wrkDetls57.isEmpty()) {
- exceptionHandle(""); // todo
- }
- // todo:luxiaotao 3)淇敼鐩樼偣閫氱煡妗� status ==> Y
- // 淇敼搴撲綅鐘舵�� Q ====>> F
- if (locMast.getLocType().equals("Q")) {
- locMast.setLocType("F");
- locMast.setBarcode(wrkMast.getBarcode());
- locMast.setIoTime(now);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
- }
- }
- break;
- // 搴撲綅绉昏浆
- case 11:
- // 榛樿鐩爣搴撲綅鏄┖鏉�
- String locType = "D";
- // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
- if (wrkMast.getEmptyMk().equals("N")) {
- locType = "F";
- // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
- if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
- exceptionHandle(""); // todo
- }
- }
- // todo:luxiaotao 3)淇敼鐩樼偣閫氱煡妗� status ==> Y
- // 淇敼婧愬簱浣嶇姸鎬� ==> O
- LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
- if (null != sourceLoc) {
- sourceLoc.setBarcode("");
- sourceLoc.setLocType("O");
- sourceLoc.setModiTime(now);
- sourceLoc.setIoTime(now);
- if (!locMastService.updateById(sourceLoc)) {
- exceptionHandle(""); // todo
- }
- }
- // 淇敼鐩爣搴撲綅鐘舵�� ==> .locType
- locMast.setLocType(locType);
- locMast.setBarcode(wrkMast.getBarcode());
- locMast.setIoTime(now);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
- }
- break;
- default:
- break;
- }
- // 淇敼宸ヤ綔涓绘。鐘舵��
- wrkMast.setWrkSts(5L);
- wrkMast.setModiTime(now);
- if (!wrkMastService.updateById(wrkMast)) {
- exceptionHandle(""); // todo
- }
+
+ return SUCCESS;
}
- private void doOut(WrkMast wrkMast){
+ private ReturnT<String> doOut(WrkMast wrkMast) {
Date now = new Date();
LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
- if (null == locMast) {
- exceptionHandle(""); // todo
- return;
- }
- switch (wrkMast.getIoType()) {
- // 鍏ㄦ澘鍑哄簱
- case 101:
- // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
- List<WrkDetl> wrkDetls101 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
- if (wrkDetls101.isEmpty()) {
- exceptionHandle(""); // todo
- }
- for (WrkDetl wrkDetl : wrkDetls101) {
- // todo:luxiaotao 3)淇敼鍑哄簱閫氱煡妗� status ==> Y
- }
- // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
- if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
- exceptionHandle(""); // todo
- }
- // 淇敼搴撲綅鐘舵�� R ===>> O
- if (locMast.getLocType().equals("R")) {
- locMast.setLocType("O");
- locMast.setBarcode("");
- locMast.setModiTime(now);
- locMast.setIoTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
+ try {
+ if (null == locMast) {
+// exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("宸ヤ綔妗e簱浣嶅彿閿欒; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ assert locMast != null;
+ switch (wrkMast.getIoType()) {
+ // 鍏ㄦ澘鍑哄簱
+ case 101:
+// // 鍑哄簱纭淇″彿浣�
+// if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) {
+// return SUCCESS;
+// }
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls101 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls101.isEmpty()) {
+// exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
}
- }
- break;
- // 绌烘澘鍑哄簱
- case 110:
- // 淇敼搴撲綅鐘舵�� R ===>> O
- if (locMast.getLocType().equals("R")) {
- locMast.setLocType("O");
- locMast.setBarcode("");
- locMast.setModiTime(now);
- locMast.setIoTime(now);
- if (!locMastService.updateById(locMast)) {
- exceptionHandle(""); // todo
+ for (WrkDetl wrkDetl : wrkDetls101) {
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ if (orderDetlPakout == null) {
+ orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ }
+ try {
+ if (!Cools.isEmpty(orderDetlPakout)) {
+ if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ }
+ } catch (Exception ignore) {
+
+ }
}
- }
- break;
- default:
- break;
+ // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
+ if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鍒犻櫎搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+ if (locMast.getLocSts().equals("R")) {
+ locMast.setLocSts("O");
+ locMast.setBarcode("");
+ locMast.setModiTime(now);
+ locMast.setIoTime(now);
+ if (!locMastService.updateById(locMast)) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ }
+ break;
+ // 骞舵澘閫斾腑鎹℃枡
+ case 108:
+ // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
+ List<WrkDetl> wrkDetls108 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls108.isEmpty()) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘閫斾腑鎹℃枡 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ for (WrkDetl wrkDetl : wrkDetls108) {
+ LocDetl locDetl = locDetlService.selectItem(locMast.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(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+ , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘閫斾腑鎹℃枡 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ try {
+ if (!Cools.isEmpty(orderDetlPakout)) {
+ if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘閫斾腑鎹℃枡 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ }
+ } catch (Exception ignore) {
+ }
+ }
+ break;
+ // 绌烘澘鍑哄簱
+ case 110:
+ // 淇敼搴撲綅鐘舵�� R ===>> O
+ if (locMast.getLocSts().equals("R")) {
+ locMast.setLocSts("O");
+ locMast.setBarcode("");
+ locMast.setModiTime(now);
+ locMast.setIoTime(now);
+ if (!locMastService.updateById(locMast)) {
+// exceptionHandle("绌烘澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("绌烘澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ // 淇敼宸ヤ綔涓绘。鐘舵��
+ wrkMast.setWrkSts(15L);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.updateById(wrkMast)) {
+// exceptionHandle("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg(e.getMessage());
}
- // 淇敼宸ヤ綔涓绘。鐘舵��
- wrkMast.setWrkSts(15L);
- wrkMast.setModiTime(now);
- if (!wrkMastService.updateById(wrkMast)) {
- exceptionHandle(""); // todo
- }
+ return SUCCESS;
}
- public static void main(String[] args) {
- for (int i = 0;i<10;i++) {
+ /**
+ * @author Ryan
+ * @date 2025/9/23
+ * @description: AGV浠诲姟瀹屾垚鍔犲叆鍘嗗彶妗�
+ * @version 1.0
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> AgvStart(Task task) {
+ // 4.鍏ュ簱瀹屾垚
+ if (task.getWrkSts() == 4) {
+ return agvDoIn(task);
+ // 14.鍑哄簱瀹屾垚
+ } else if (task.getWrkSts() == 14) {
+ return agvDoOut(task);
+ // 15.鍑哄簱鏇存柊瀹屾垚 - 鐢熸垚绌烘墭/婊℃墭鍑哄簱浠诲姟
+ } else if (task.getWrkSts() == 15) {
+ return generateEmptyOrFullPalletOutTaskForCompleted(task);
+ }
+ return SUCCESS;
+ }
- try {
- System.out.println("====" + i);
- if (i == 5){
- throw new Exception("dsa");
+ /**
+ * @author Ryan
+ * @date 2025/9/25
+ * @description: AGV鍑哄簱浠诲姟
+ * @version 1.0
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> agvDoOut(Task task) {
+ if (task.getIoType().equals(101)) {
+ Date now = new Date();
+ LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
+ if (Objects.isNull(locMast)) {
+ throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
+ }
+ List<TaskDetl> wrkDetls101 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+ if (wrkDetls101.isEmpty()) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
+ }
+ // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
+ if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", task.getSourceLocNo()))) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鍒犻櫎搴撳瓨鏄庣粏澶辫触; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
+ }
+ // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+ if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+ locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ locMast.setBarcode("");
+ locMast.setModiTime(now);
+ locMast.setIoTime(now);
+ if (!locCacheService.updateById(locMast)) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
}
- System.out.println("----" + i);
-
- } catch (Exception e) {
- e.printStackTrace();
+ } else {
+ throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
+ }
+ task.setWrkSts(15L);
+ if (!taskService.updateById(task)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ // 娉ㄦ剰锛氱敓鎴愮┖鎵�/婊℃墭鍑哄簱浠诲姟鐨勯�昏緫宸茬Щ鑷崇姸鎬�15鐨勫鐞嗘柟娉曚腑
+ } else if(task.getIoType().equals(53) || task.getIoType().equals(54) || task.getIoType().equals(57)){
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
+ if (Objects.isNull(locCache)) {
+ throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
+ }
+ if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+ throw new CoolException("褰撳墠搴撲綅鐘舵�佷负锛�" + LocStsType.LOC_STS_TYPE_R.type + "." + LocStsType.LOC_STS_TYPE_R.desc + "锛屼笉鏄嚭搴撻绾︾姸鎬�");
}
+ locCache.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ locCache.setModiTime(new Date());
+ locCache.setBarcode(null);
+ locCache.setModiTime(new Date());
+ locCache.setIoTime(new Date());
+ if (!locCacheService.updateById(locCache)) {
+ throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
+ }
+ boolean deleted = locCacheDetlService.delete(new EntityWrapper<LocCacheDetl>().eq("loc_id", locCache.getId()));
+ if (!deleted){
+ throw new CoolException("搴撲綅鏄庣粏鍒犻櫎澶辫触锛�");
+ }
+
+ task.setWrkSts(15L);
+ task.setModiTime(new Date());
+ if (!taskService.updateById(task)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+ return SUCCESS;
+ }
+
+ /**
+ * 鐘舵��15锛堝嚭搴撴洿鏂板畬鎴愶級鏃讹紝鐢熸垚绌烘墭鍑哄簱鎴栨弧鎵樺嚭搴撲换鍔★紝灏嗘墭鐩樻斁鍏ョ紦瀛樺簱浣�
+ * @param completedTask 宸插畬鎴愬嚭搴撴洿鏂扮殑浠诲姟锛堢姸鎬�15锛�
+ * @return 澶勭悊缁撴灉
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> generateEmptyOrFullPalletOutTaskForCompleted(Task completedTask) {
+ // 鍙鐞唅oType=101鐨勫叏鏉垮嚭搴撲换鍔�
+ if (!completedTask.getIoType().equals(101)) {
+ return SUCCESS;
+ }
+
+ // 妫�鏌ユ槸鍚﹀凡缁忕敓鎴愯繃绌烘墭/婊℃墭鍑哄簱浠诲姟锛堥伩鍏嶉噸澶嶇敓鎴愶級
+ List<Task> existingTasks = taskService.selectList(new EntityWrapper<Task>()
+ .eq("barcode", completedTask.getBarcode())
+ .in("io_type", 110, 101) // 绌烘澘鍑哄簱鎴栧叏鏉垮嚭搴�
+ .eq("wrk_sts", 7) // 寰呭懠鍙獳GV鐘舵��
+ );
+ if (!existingTasks.isEmpty()) {
+ log.info("浠诲姟ID锛歿}鐨勬墭鐩樼爜锛歿}宸插瓨鍦ㄧ┖鎵�/婊℃墭鍑哄簱浠诲姟锛岃烦杩囩敓鎴�", completedTask.getId(), completedTask.getBarcode());
+ return SUCCESS;
+ }
+
+ try {
+ generateEmptyOrFullPalletOutTask(completedTask, null);
+ return SUCCESS;
+ } catch (Exception e) {
+ log.error("鐘舵��15鏃剁敓鎴愮┖鎵�/婊℃墭鍑哄簱浠诲姟澶辫触锛屼换鍔D锛歿}锛岄敊璇細{}", completedTask.getId(), e.getMessage(), e);
+ return FAIL.setMsg("鐢熸垚绌烘墭/婊℃墭鍑哄簱浠诲姟澶辫触锛�" + e.getMessage());
}
}
+ /**
+ * 鍑哄簱瀹屾垚鍚庯紝鐢熸垚绌烘墭鍑哄簱鎴栨弧鎵樺嚭搴撲换鍔★紝灏嗘墭鐩樻斁鍏ョ紦瀛樺簱浣�
+ * @param outTask 鍑哄簱浠诲姟
+ * @param sourceLocCache 婧愬簱浣嶏紙鍙负null锛�
+ */
+ private void generateEmptyOrFullPalletOutTask(Task outTask, LocCache sourceLocCache) {
+ // 鍒ゆ柇鎵樼洏绫诲瀷锛氱┖鎵樻垨婊℃墭
+ boolean isEmptyPallet = "Y".equals(outTask.getEmptyMk());
+ Integer ioType = isEmptyPallet ? 110 : 101; // 110=绌烘澘鍑哄簱锛�101=鍏ㄦ澘鍑哄簱锛堟弧鎵樺嚭搴擄級
+
+ log.info("鍑哄簱浠诲姟瀹屾垚锛岀敓鎴恵}浠诲姟锛屼换鍔D锛歿}锛屾墭鐩樼爜锛歿}", isEmptyPallet ? "绌烘墭鍑哄簱" : "婊℃墭鍑哄簱", outTask.getId(), outTask.getBarcode());
+
+ // 鍒嗛厤缂撳瓨搴撲綅锛坵hs_type=2锛�
+ LocCache cacheLoc = locCacheService.selectOne(new EntityWrapper<LocCache>()
+ .eq("whs_type", agvProperties.getWhsTypeMapping().getCacheArea()) // whs_type=2 缂撳瓨鍖�
+ .eq("frozen", 0)
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) // O.闂茬疆
+ .ne("full_plt", isEmptyPallet ? "Y" : "N") // 绌烘墭涓嶉�夋弧鏉垮簱浣嶏紝婊℃墭涓嶉�夌┖鏉垮簱浣�
+ .orderAsc(Arrays.asList("row1", "bay1", "lev1"))
+ .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+
+ if (cacheLoc == null) {
+ log.warn("娌℃湁鍙敤鐨勭紦瀛樺簱浣嶏紝鏃犳硶鐢熸垚{}浠诲姟锛屼换鍔D锛歿}", isEmptyPallet ? "绌烘墭鍑哄簱" : "婊℃墭鍑哄簱", outTask.getId());
+ return;
+ }
+
+ // 鑾峰彇鍑哄簱绔欑偣锛堝嚭搴撲换鍔$殑staNo鏄嚭搴撶珯鐐癸紝灏嗕綔涓虹┖鎵�/婊℃墭鍑哄簱浠诲姟鐨勬簮绔欑偣锛�
+ String outboundStaNo = outTask.getStaNo();
+ if (outboundStaNo == null || outboundStaNo.isEmpty()) {
+ log.warn("鍑哄簱浠诲姟娌℃湁鍑哄簱绔欑偣锛屾棤娉曠敓鎴恵}浠诲姟锛屼换鍔D锛歿}", isEmptyPallet ? "绌烘墭鍑哄簱" : "婊℃墭鍑哄簱", outTask.getId());
+ return;
+ }
+
+ // 鏍规嵁缂撳瓨鍖洪厤缃�夋嫨绔欑偣鍜屾満鍣ㄤ汉缁勶紙瑗夸晶锛�
+ List<String> cacheStations = agvProperties.getWestStations();
+ String robotGroup = agvProperties.getRobotGroupWest();
+
+ if (cacheStations.isEmpty()) {
+ log.warn("缂撳瓨鍖烘病鏈夐厤缃珯鐐癸紝鏃犳硶鐢熸垚{}浠诲姟锛屼换鍔D锛歿}", isEmptyPallet ? "绌烘墭鍑哄簱" : "婊℃墭鍑哄簱", outTask.getId());
+ return;
+ }
+
+ // 妫�鏌ュ伐浣滄。鏄惁宸插畬鎴愭垨宸茶浆鍘嗗彶妗�
+ boolean workCompleted = false;
+ if (outTask.getWrkNo() != null) {
+ // 妫�鏌ュ伐浣滄。鏄惁瀛樺湪涓斿凡瀹屾垚
+ WrkMast wrkMast = wrkMastService.selectOne(
+ new EntityWrapper<WrkMast>().eq("wrk_no", outTask.getWrkNo())
+ );
+
+ if (wrkMast != null) {
+ Long wrkSts = wrkMast.getWrkSts();
+ // 鍑哄簱浠诲姟瀹屾垚鐘舵�侊細14锛堝凡鍑哄簱鏈‘璁わ級鎴�15锛堝嚭搴撴洿鏂板畬鎴愶級
+ if (wrkSts != null && (wrkSts == 14L || wrkSts == 15L)) {
+ workCompleted = true;
+ log.debug("宸ヤ綔妗}宸插畬鎴愶紝鐘舵�侊細{}", outTask.getWrkNo(), wrkSts);
+ }
+ } else {
+ // 濡傛灉宸ヤ綔妗d笉瀛樺湪锛屾鏌ュ巻鍙叉。
+ WrkMastLog wrkMastLog = wrkMastLogService.selectOne(
+ new EntityWrapper<WrkMastLog>().eq("wrk_no", outTask.getWrkNo())
+ );
+ if (wrkMastLog != null) {
+ long logWrkSts = wrkMastLog.getWrkSts();
+ // 鍑哄簱浠诲姟鍘嗗彶妗e畬鎴愮姸鎬侊細15锛堝嚭搴撴洿鏂板畬鎴愶級
+ if (logWrkSts == 15L) {
+ workCompleted = true;
+ log.debug("宸ヤ綔妗}宸茶浆鍘嗗彶妗e苟瀹岀粨锛屽巻鍙叉。鐘舵�侊細{}", outTask.getWrkNo(), logWrkSts);
+ }
+ }
+ }
+ }
+
+ // 妫�鏌ユ槸鍚︽湁浠庤鍑哄簱绔欑偣鍒扮紦瀛樺尯鐨勬鍦ㄦ惉杩愪换鍔★紙鐘舵��8锛氬凡鍛煎彨AGV锛屾鍦ㄦ惉杩愶級
+ // 鍑哄簱鍒扮紦瀛樺尯鐨勪换鍔$被鍨嬶細101锛堝叏鏉垮嚭搴擄級鎴�110锛堢┖鏉垮嚭搴擄級
+ List<Task> transportingTasks = taskService.selectList(
+ new EntityWrapper<Task>()
+ .eq("source_sta_no", outboundStaNo) // 婧愮珯鐐规槸鍑哄簱绔欑偣
+ .in("sta_no", cacheStations) // 鐩爣绔欑偣鏄紦瀛樺尯绔欑偣
+ .eq("task_type", "agv")
+ .eq("wrk_sts", 8L) // 鍙鏌ユ鍦ㄦ惉杩愮姸鎬佺殑浠诲姟
+ .in("io_type", 101, 110) // 鍑哄簱鍒扮紦瀛樺尯鐨勪换鍔$被鍨�
+ );
+
+ // 濡傛灉鏈夋鍦ㄦ惉杩愮殑浠诲姟锛屼笖宸ヤ綔妗f湭瀹屾垚锛屽垯涓嶅垎閰嶇紦瀛樺簱浣�
+ if (!transportingTasks.isEmpty() && !workCompleted) {
+ log.info("鍑哄簱绔欑偣{}鍒扮紦瀛樺尯鏈墈}涓鍦ㄦ惉杩愮殑AGV浠诲姟锛屼笖宸ヤ綔妗f湭瀹屾垚锛屾殏涓嶅垎閰嶇紦瀛樺簱浣嶏紝绛夊緟鎼繍瀹屾垚銆傚嚭搴撲换鍔D锛歿}",
+ outboundStaNo, transportingTasks.size(), outTask.getId());
+ return; // 鏈夋鍦ㄦ惉杩愮殑浠诲姟涓斿伐浣滄。鏈畬鎴愶紝涓嶅垎閰嶇紦瀛樺簱浣嶏紝绛夊緟涓嬫妫�鏌�
+ }
+
+ if (!transportingTasks.isEmpty() && workCompleted) {
+ log.info("鍑哄簱绔欑偣{}鍒扮紦瀛樺尯鏈墈}涓鍦ㄦ惉杩愮殑AGV浠诲姟锛屼絾宸ヤ綔妗e凡瀹屾垚鎴栧凡杞巻鍙叉。锛屽厑璁稿垎閰嶇紦瀛樺簱浣嶃�傚嚭搴撲换鍔D锛歿}",
+ outboundStaNo, transportingTasks.size(), outTask.getId());
+ }
+
+ // 閫夋嫨缂撳瓨鍖虹洰鏍囩珯鐐癸紙浣跨敤绗竴涓彲鐢ㄧ珯鐐癸紝鎴栧彲浠ヤ紭鍖栦负閫夋嫨浠诲姟鏈�灏戠殑绔欑偣锛�
+ String cacheStaNo = cacheStations.get(0);
+
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
+
+ // 鍒涘缓绌烘墭鍑哄簱/婊℃墭鍑哄簱浠诲姟
+ Task cacheTask = new Task();
+ Date now = new Date();
+ cacheTask.setWrkNo(workNo)
+ .setIoTime(now)
+ .setWrkSts(7L) // 宸ヤ綔鐘舵�侊細7.寰呭懠鍙獳GV
+ .setIoType(ioType) // 110=绌烘澘鍑哄簱锛�101=鍏ㄦ澘鍑哄簱
+ .setTaskType("agv")
+ .setIoPri(10D)
+ .setStaNo(cacheStaNo) // 鐩爣绔欑偣锛堢紦瀛樺尯绔欑偣锛�
+ .setSourceStaNo(outboundStaNo) // 婧愮珯鐐癸紙鍑哄簱绔欑偣锛�
+ .setInvWh(robotGroup) // 鏈哄櫒浜虹粍锛堣タ渚э級
+ .setFullPlt(isEmptyPallet ? "N" : "Y") // 婊℃澘锛氱┖鎵�=N锛屾弧鎵�=Y
+ .setPicking("N")
+ .setExitMk("N")
+ .setSourceLocNo(null) // 鍑哄簱浠诲姟涓嶉渶瑕佹簮搴撲綅
+ .setLocNo(cacheLoc.getLocNo()) // 鐩爣搴撲綅锛堢紦瀛樺簱浣嶏級
+ .setEmptyMk(isEmptyPallet ? "Y" : "N") // 绌烘澘鏍囪
+ .setBarcode(outTask.getBarcode()) // 鎵樼洏鐮�
+ .setLinkMis("N")
+ .setAppeTime(now)
+ .setModiTime(now);
+
+ if (!taskService.insert(cacheTask)) {
+ log.error("鐢熸垚{}浠诲姟澶辫触锛屼换鍔D锛歿}", isEmptyPallet ? "绌烘墭鍑哄簱" : "婊℃墭鍑哄簱", outTask.getId());
+ return;
+ }
+
+ // 鏇存柊缂撳瓨搴撲綅鐘舵�侊細O.闂茬疆 鈫� S.鍏ュ簱棰勭害
+ cacheLoc.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
+ cacheLoc.setBarcode(outTask.getBarcode());
+ cacheLoc.setModiTime(now);
+ if (!locCacheService.updateById(cacheLoc)) {
+ log.error("鏇存柊缂撳瓨搴撲綅鐘舵�佸け璐ワ紝搴撲綅锛歿}", cacheLoc.getLocNo());
+ // 鍥炴粴浠诲姟
+ taskService.deleteById(cacheTask.getId());
+ return;
+ }
+
+ log.info("鎴愬姛鐢熸垚{}浠诲姟锛屼换鍔D锛歿}锛屽伐浣滃彿锛歿}锛屾簮绔欑偣锛歿}锛岀洰鏍囩珯鐐癸細{}锛岀紦瀛樺簱浣嶏細{}",
+ isEmptyPallet ? "绌烘墭鍑哄簱" : "婊℃墭鍑哄簱", cacheTask.getId(), workNo, outboundStaNo, cacheStaNo, cacheLoc.getLocNo());
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ public ReturnT<String> agvDoIn(Task wrkMast) {
+ if (wrkMast.getIoType().equals(1)) {
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
+ if (Objects.isNull(locCache)) {
+ throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
+ }
+ if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) {
+ throw new CoolException("褰撳墠搴撲綅鐘舵�佷负锛�" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + "锛屼笉鏄嚭搴撻绾︾姸鎬�");
+ }
+ List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("task_id", wrkMast.getId()));
+ if (Objects.isNull(taskDetls)) {
+ throw new CoolException("鏁版嵁閿欒锛氱粍鎵樻暟鎹笉瀛樺湪锛侊紒");
+ }
+ taskDetls.forEach(pakin -> {
+ LocCacheDetl detl = new LocCacheDetl();
+ BeanUtils.copyProperties(pakin, detl);
+ detl.setBarcode(pakin.getBarcode())
+ .setLocId(locCache.getId())
+ .setAnfme(pakin.getAnfme())
+ .setBrand(pakin.getBrand())
+ .setAppeTime(new Date())
+ .setSpecs(pakin.getSpecs())
+ .setColor(pakin.getColor())
+ .setLocNo(locCache.getLocNo())
+ .setAreaId(locCache.getAreaId())
+ .setAreaName(locCache.getAreaName())
+ .setUnit(pakin.getUnit())
+ .setBatch(pakin.getBatch());
+ if (!locCacheDetlService.insert(detl)) {
+ throw new CoolException("搴撲綅鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ });
+
+ locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+ locCache.setModiTime(new Date());
+ locCache.setBarcode(wrkMast.getBarcode());
+ locCache.setModiTime(new Date());
+ locCache.setIoTime(new Date());
+ if (!locCacheService.updateById(locCache)) {
+ throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
+ }
+ wrkMast.setWrkSts(5L);
+ wrkMast.setModiTime(new Date());
+ if (!taskService.updateById(wrkMast)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ }else {
+ throw new CoolException("鏁版嵁閿欒锛歩oType涓嶅瓨鍦紒锛�");
+ }
+
+
+ return SUCCESS;
+ }
}
--
Gitblit v1.9.1