From b0d8734e81b825381f1b2af13e0df33cd5114e2d Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 19 十二月 2025 14:53:08 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/web/WcsController.java | 191 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 187 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 3a1102e..65b61be 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -7,28 +7,28 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
-import com.zy.asrs.entity.result.StorageResult;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.CodeRes;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
+import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
+import com.zy.common.web.param.GetLocNoChangeParam;
+import com.zy.common.web.param.GetLocNoReassignParam;
import com.zy.common.web.param.NotifyDto;
import com.zy.common.web.param.SearchLocParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ReactiveTypeDescriptor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
/**
* Created by vincent on 2020/10/30
@@ -78,6 +78,25 @@
return R.ok(map);
}
+ @PostMapping("/reassign/loc/v1")
+ @ResponseBody
+ @Transactional
+ public synchronized R getLocNoReassign(@RequestBody(required = false) GetLocNoReassignParam param) {
+ log.info("鏀跺埌WCS閲嶆柊鍒嗛厤鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
+ StartupDto dto = startupFullReassign(param.getTaskNo(), param.getRow());
+ log.info("WCS閲嶆柊鍒嗛厤鍏ュ簱鎺ュ彛杩斿弬:{}", dto);
+ return R.ok().add(dto);
+ }
+
+ @PostMapping("/change/loc/v1")
+ @ResponseBody
+ @Transactional
+ public synchronized R getLocNoChange(@RequestBody(required = false) GetLocNoChangeParam param) {
+ log.info("鏀跺埌WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅璇锋眰====>>鍏ュ弬:{}", param);
+ StartupDto dto = applyChangeLocNo(param.getLocNo(), param.getRow());
+ log.info("WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅鎺ュ彛杩斿弬:{}", dto);
+ return R.ok().add(dto);
+ }
@PostMapping("/pakin/loc/v1")
@ResponseBody
@@ -371,6 +390,170 @@
return dto;
}
+ /**
+ * 鍏ㄦ澘鍏ュ簱-閲嶆柊鍒嗛厤
+ */
+ @Transactional
+ public StartupDto startupFullReassign(String workNo, int[] row) {
+ WrkMast sourceWrkMast = wrkMastService.selectByTaskNo(workNo);
+ if(sourceWrkMast == null) {
+ throw new CoolException(workNo + "宸ヤ綔鏁版嵁涓嶅瓨鍦�");
+ }
+
+ List<WrkDetl> sourceWrkDetlList = wrkDetlService.selectByWrkNo(sourceWrkMast.getWrkNo());
+ if (sourceWrkDetlList.isEmpty()) {
+ throw new CoolException(workNo + "宸ヤ綔鏄庣粏鏁版嵁涓嶅瓨鍦�");
+ }
+
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+ findLocNoAttributeVo.setMatnr(sourceWrkDetlList.get(0).getMatnr());
+
+ LocMast sourceLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", sourceWrkMast.getLocNo()));
+ if (sourceLocMast == null) {
+ throw new CoolException(sourceWrkMast.getLocNo() + "搴撲綅鏁版嵁涓嶅瓨鍦�");
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1(sourceLocMast.getLocType1());
+
+ StartupDto dto = commonService.getLocNoToWmsDev(1, sourceWrkMast.getSourceStaNo(), findLocNoAttributeVo, locTypeDto, sourceWrkMast.getBarcode(), row);
+ if (dto == null) {
+ throw new CoolException("鎵句笉鍒扮┖搴撲綅");
+ }
+ dto.setTaskNo(sourceWrkMast.getWrkNo());
+
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ sourceWrkMast.setIoTime(new Date());
+ sourceWrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ sourceWrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ sourceWrkMast.setIoPri(13D); // 浼樺厛绾�
+ sourceWrkMast.setCrnNo(dto.getCrnNo());
+ sourceWrkMast.setSourceStaNo(dto.getSourceStaNo());
+ sourceWrkMast.setStaNo(dto.getStaNo());
+ sourceWrkMast.setLocNo(loc(dto.getLocNo()));
+ sourceWrkMast.setModiTime(now);
+ boolean res = wrkMastService.updateById(sourceWrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ // 鏇存柊婧愬簱浣嶇姸鎬�
+ if (sourceLocMast.getLocSts().equals("S")) {
+ sourceLocMast.setLocSts("O");
+ sourceLocMast.setModiTime(now);
+ if (!locMastService.updateById(sourceLocMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅鐘舵�佷笉灞炰簬鍏ュ簱棰勭害涓�");
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(loc(dto.getLocNo()));
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ return dto;
+ }
+
+ /**
+ * WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ */
+ @Transactional
+ public StartupDto applyChangeLocNo(String wcsLocNo, int[] row) {
+ String sourceLocNo = loc(wcsLocNo);
+ LocMast sourceLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", sourceLocNo));
+ if (sourceLocMast == null) {
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ }
+ List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+ LocDetl sourceLocDetl = locDetlList.get(0);
+
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+ findLocNoAttributeVo.setMatnr(sourceLocDetl.getMatnr());
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1(sourceLocMast.getLocType1());
+
+ StartupDto dto = commonService.getLocNoToWmsDev(1, null, findLocNoAttributeVo, locTypeDto, sourceLocMast.getBarcode(), row);
+ if (dto == null) {
+ throw new CoolException("鎵句笉鍒扮┖搴撲綅");
+ }
+
+ String locNo = loc(dto.getLocNo());
+ LocMast loc = locMastService.selectById(locNo);
+ if (Cools.isEmpty(loc)){
+ throw new CoolException("鏈壘鍒板簱浣�");
+ }
+ Date now = new Date();
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ dto.setTaskNo(workNo);
+
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+ wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setBarcode(sourceLocMast.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (LocDetl locDetl : locDetlList) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLocMast.getLocSts().equals("D") || sourceLocMast.getLocSts().equals("F")) {
+ sourceLocMast.setLocSts("R"); // R.鍑哄簱棰勭害
+ sourceLocMast.setModiTime(now);
+ if (!locMastService.updateById(sourceLocMast)){
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLocMast.getLocSts$());
+ }
+
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(now);
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+ }
+ return dto;
+ }
+
public String loc(String locNo){
String[] split = locNo.split("-");
return Utils.getLocNo(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));
--
Gitblit v1.9.1