From 78067a1c03707766f3d6561c22e165af68ad36b9 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 18 十二月 2025 14:38:35 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/web/WcsController.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 101 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 9def5c4..059237b 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -7,13 +7,13 @@
 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.service.CommonService;
+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;
@@ -23,11 +23,10 @@
 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
@@ -77,6 +76,15 @@
         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("/pakin/loc/v1")
     @ResponseBody
@@ -103,6 +111,18 @@
             if (Cools.isEmpty(param.getBarcode())) {
                 return R.error("鏉$爜涓嶈兘涓虹┖");
             }
+
+            WrkMast wrkMast1 = wrkMastService.selectByBarcode(param.getBarcode());
+            if (wrkMast1 != null) {
+                StartupDto startupDto = new StartupDto();
+                startupDto.setTaskNo(wrkMast1.getWrkNo());
+                startupDto.setSourceStaNo(wrkMast1.getSourceStaNo());
+                startupDto.setTaskPri(wrkMast1.getIoPri());
+                startupDto.setCrnNo(wrkMast1.getCrnNo());
+                startupDto.setLocNo(Utils.locToLocNo(wrkMast1.getLocNo()));
+                return R.ok().add(startupDto);
+            }
+
             waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
             if (Cools.isEmpty(waitPakins)) {
                 WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
@@ -123,6 +143,10 @@
 
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1(param.getLocType1());
+
+        if (param.getRow().length == 0) {
+            return R.error("WCS涓婃姤鏃犲彲鐢ㄨ澶�");
+        }
 
         StartupDto dto = null;
         switch (param.getIoType()) {
@@ -331,7 +355,7 @@
             }
         });
         // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
-        if (!waitPakinService.updateIoStatus("Y", dto.getLocNo(), barcode)) {
+        if (!waitPakinService.updateIoStatus("Y", loc(dto.getLocNo()), barcode)) {
             throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
         }
         // 鏇存柊婧愮珯鐐逛俊鎭�
@@ -354,6 +378,79 @@
         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;
+    }
+
     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