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 |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 059237b..65b61be 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -12,7 +12,9 @@
 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;
@@ -82,7 +84,17 @@
     public synchronized R getLocNoReassign(@RequestBody(required = false) GetLocNoReassignParam param) {
         log.info("鏀跺埌WCS閲嶆柊鍒嗛厤鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
         StartupDto dto = startupFullReassign(param.getTaskNo(), param.getRow());
-        log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{}", dto);
+        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);
     }
 
@@ -451,6 +463,97 @@
         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