From af7b9db27bf72c92108329815ec771fb46e5b877 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期五, 31 十月 2025 16:09:20 +0800
Subject: [PATCH] Merge branch 'jsxswms' into integrationWms
---
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 277 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index 68b9ca5..a983123 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -1,12 +1,287 @@
package com.zy.asrs.service.impl;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.TaskMapper;
-import com.zy.asrs.entity.Task;
-import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.*;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.utils.OrderInAndOutUtil;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
@Service("taskService")
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {
+ @Autowired
+ private TaskLogService taskLogService;
+ @Autowired
+ private LocCacheService locCacheService;
+ @Autowired
+ private WaitPakinService waitPakinService;
+ @Autowired
+ private TaskDetlService taskDetlService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private TaskDetlLogService taskDetlLogService;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void completeWrkMast(String workNo, Long userId) {
+ Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
+ if (Cools.isEmpty(wrkMast)) {
+ throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+ }
+ if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
+ throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+ }
+ // 鍏ュ簱 + 搴撲綅杞Щ
+ if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
+ wrkMast.setWrkSts(4L);
+ // 鍑哄簱
+ } else if (wrkMast.getWrkSts() > 10) {
+ wrkMast.setWrkSts(14L);
+ }
+ Date now = new Date();
+ wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ // 瀹屾垚鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩瀹屾垚");
+ if (!this.updateById(wrkMast)) {
+ throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+ }
+ }
+
+ @Override
+ @Transactional
+ public void pickWrkMast(String workNo, Long userId) {
+ Task wrkMast = this.selectById(workNo);
+ if (Cools.isEmpty(wrkMast)) {
+ throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+ }
+ // 鍏ュ嚭搴撶被鍨嬪垽鏂�
+ if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
+ throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�");
+ }
+ // 宸ヤ綔鐘舵�佸垽鏂�
+ if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
+ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
+ }
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+// }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!taskLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+ // 鑾峰彇鐩爣绔�
+// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+// .eq("type_no", wrkMast.getIoType() - 50)
+// .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+// .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+// StaDesc staDesc = staDescService.selectOne(wrapper);
+// if (Cools.isEmpty(staDesc)) {
+// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+// }
+ Date now = new Date();
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+// Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+// wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ if (!this.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
+ locMast.setLocSts("Q");
+ locMast.setModiTime(now);
+ locMast.setModiUser(userId);
+ if (!locCacheService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+ @Override
+ public List<Task> selectToBeCompleteData() {
+ return this.baseMapper.selectToBeCompleteData();
+ }
+
+
+ @Override
+ @Transactional
+ public void cancelWrkMast(String workNo, Long userId) {
+ Date now = new Date();
+ Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
+ if (Cools.isEmpty(wrkMast)) {
+ throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+ }
+ String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
+ String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+ // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+ if (wrkMast.getWrkSts() < 4) {
+ locNo = wrkMast.getLocNo();
+ locSts = "O";
+
+ // 搴撲綅杞Щ
+ if (wrkMast.getIoType() == 11) {
+ // 搴撲綅杞Щ锛氭簮搴撲綅
+ LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getSourceLocNo()));
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
+ }
+ locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
+ locMast.setModiTime(now);
+ locMast.setModiUser(userId);
+ locCacheService.updateById(locMast);
+ }
+ // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+ } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
+ locNo = wrkMast.getSourceLocNo();
+ // 鍑哄簱 ===>> F.鍦ㄥ簱
+ if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
+ locSts = "F";
+ // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+ } else if (wrkMast.getIoType() == 110) {
+ locSts = "D";
+ // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+ } else if (wrkMast.getIoType() == 11) {
+ locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
+ // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
+ LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
+ }
+ locMast.setLocSts("O");
+ locMast.setModiTime(now);
+ locMast.setModiUser(userId);
+ locCacheService.updateById(locMast);
+ }
+ } else {
+ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
+ }
+
+ //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
+ if (wrkMast.getIoType() == 1) {
+ List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+ for (WaitPakin waitPakin : waitPakins) {
+ if (!Cools.isEmpty(waitPakin)) {
+ waitPakin.setIoStatus("N");
+ waitPakin.setLocNo("");
+ waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
+// .eq("order_no", waitPakin.getOrderNo())
+ .eq("zpallet", waitPakin.getZpallet())
+ .eq("matnr", waitPakin.getMatnr())
+ .eq("batch", waitPakin.getBatch()));
+ }
+ }
+ }
+
+ //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
+ if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
+ List<TaskDetl> wrkDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ for (TaskDetl wrkDetl : wrkDetls) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+// }
+ OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
+ wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme());
+
+ //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
+ boolean flag = true;
+// List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+ Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo());
+ List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
+ for (OrderDetl orderDetl : orderDetls) {
+ if (orderDetl.getWorkQty() > 0) {
+ flag = false;
+ }
+ }
+ if (flag) {
+// Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
+ if (!Cools.isEmpty(order) && order.getSettle() == 2) {
+ order.setSettle(1L);
+ order.setUpdateBy(userId);
+ order.setUpdateTime(now);
+ }
+// if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
+// throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
+// }
+ OrderInAndOutUtil.updateOrder(Boolean.FALSE, order.getId(), order.getSettle(), userId);
+ }
+ }
+ }
+
+ }
+
+// // 璁㈠崟鍏宠仈
+// List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+// for (WrkDetl wrkDetl : wrkDetls) {
+// if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+// }
+// // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
+//// stockOutRe(wrkMast, wrkDetls);
+// }
+// }
+
+ // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩鍙栨秷");
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!taskService.updateById(wrkMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
+ }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!taskLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔涓绘。
+ boolean wrkMastRes = taskService.deleteById(wrkMast);
+
+ if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+ if (!taskDetlLogService.save(wrkMast.getWrkNo())) {
+// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔妗f槑缁�
+ boolean wrkDetlRes = taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", workNo));
+ }
+
+ // 淇敼搴撲綅鐘舵��
+ LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locNo));
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
+ }
+ locMast.setLocSts(locSts);
+ locMast.setModiTime(now);
+ locMast.setModiUser(userId);
+ boolean locMastRes = locCacheService.updateById(locMast);
+ if (!wrkMastRes || !locMastRes) {
+ throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+ }
+ }
+
}
--
Gitblit v1.9.1