From 3c577191d6ee0b488074b91c5e9b7d71a8e3d829 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 01 十二月 2025 14:31:51 +0800
Subject: [PATCH] #调整盘点

---
 src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java |   71 ++++++++++++++++++++++++++++++-----
 src/main/java/com/zy/asrs/controller/CheckOrderController.java    |    2 
 src/main/java/com/zy/asrs/service/CheckOrderService.java          |    3 -
 src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java   |    2 
 4 files changed, 63 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/CheckOrderController.java b/src/main/java/com/zy/asrs/controller/CheckOrderController.java
index e3a6a16..59e39eb 100644
--- a/src/main/java/com/zy/asrs/controller/CheckOrderController.java
+++ b/src/main/java/com/zy/asrs/controller/CheckOrderController.java
@@ -49,7 +49,7 @@
     @PostMapping(value = "/checkOrder/pdaComplete/auth")
     @ManagerAuth(memo = "pda锛氬畬鎴愮洏鐐�")
     public R checkOrderPdaComplete(@RequestBody CheckTaskListParam checkTaskListParam) {
-        checkOrderService.pdaComplete(checkTaskListParam);
+        checkOrderService.pdaComplete(checkTaskListParam,getUserId());
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/service/CheckOrderService.java b/src/main/java/com/zy/asrs/service/CheckOrderService.java
index 1813d63..161c202 100644
--- a/src/main/java/com/zy/asrs/service/CheckOrderService.java
+++ b/src/main/java/com/zy/asrs/service/CheckOrderService.java
@@ -3,7 +3,6 @@
 import com.zy.asrs.entity.CheckOrder;
 import com.baomidou.mybatisplus.service.IService;
 import com.zy.asrs.entity.CheckOrderDetl;
-import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.param.CheckTaskListParam;
 import com.zy.common.model.LocDto;
 import com.core.common.R;
@@ -18,7 +17,7 @@
 
     List<CheckOrderDetl> getTaskList(String barcode);
 
-    R pdaComplete(CheckTaskListParam checkTaskListParam);
+    R pdaComplete(CheckTaskListParam checkTaskListParam, Long userId);
 
     void adjustOrderComplete(Long orderId, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
index 23754df..618b165 100644
--- a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
@@ -1,7 +1,6 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.exception.CoolException;
@@ -12,13 +11,13 @@
 import com.zy.asrs.service.*;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.zy.common.model.LocDto;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
@@ -123,21 +122,68 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R pdaComplete(CheckTaskListParam checkTaskListParam) {
+    public R pdaComplete(CheckTaskListParam checkTaskListParam, Long userId) {
 
         WrkMast wrkMast = wrkMastService.selectByBarcode(checkTaskListParam.getBarcode());
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException("鏈壘鍒颁换鍔�");
         }
-
-        for (CheckOrderDetl checkOrderDetl: checkTaskListParam.getCheckOrderDetlList()){
-            checkOrderDetl.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
-            checkOrderDetl.setStatus(3);
-            if (!checkOrderDetlService.updateById(checkOrderDetl)){
-                throw new CoolException("鏇存柊鐩樼偣鐘舵�佸け璐�");
-            }
-        }
         CheckOrder checkOrder = this.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", checkTaskListParam.getCheckOrderDetlList().get(0).getOrderNo()));
+        for (CheckOrderDetl checkOrderDetl: checkTaskListParam.getCheckOrderDetlList()){
+            if (Cools.isEmpty(checkOrderDetl.getId()) && !Cools.isEmpty(checkOrderDetl.getWorkQty())){
+                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("barcode", checkTaskListParam.getBarcode()));
+                if (Cools.isEmpty(locMast)){
+                    throw new CoolException("鏈壘鍒板簱浣嶆暟鎹�");
+                }
+                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                        .eq("loc_no", locMast.getLocNo())
+                        .eq("matnr", checkOrderDetl.getMatnr())
+                        .eq(!Cools.isEmpty(checkOrderDetl.getBatch()),"batch", checkOrderDetl.getBatch())
+                        .eq("supp_code", checkOrderDetl.getSuppCode())
+                );
+                if (!Cools.isEmpty(locDetl)){
+                    throw new CoolException("褰撳墠搴撲綅鏈夌浉鍚屽簱瀛樹俊鎭�");
+                }
+                Date now = new Date();
+                CheckOrderDetl checkOrderDetl1 = new CheckOrderDetl();
+                checkOrderDetl1.sync(checkOrderDetl);
+                checkOrderDetl1.setLocNo(locMast.getLocNo());
+                checkOrderDetl1.setOrderId(checkOrder.getId());
+                checkOrderDetl1.setOrderNo(checkOrder.getOrderNo());
+                checkOrderDetl1.setAnfme(checkOrderDetl.getAnfme());
+                checkOrderDetl1.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
+                checkOrderDetl1.setWorkQty(checkOrderDetl.getWorkQty());
+                checkOrderDetl1.setStatus(3);
+                checkOrderDetl1.setZpallet(checkTaskListParam.getBarcode());
+                checkOrderDetl1.setCreateBy(userId);
+                checkOrderDetl1.setCreateTime(now);
+                checkOrderDetl1.setUpdateBy(userId);
+                checkOrderDetl1.setUpdateTime(now);
+                checkOrderDetlService.insert(checkOrderDetl1);
+                LocDetl locDetl1 = new LocDetl();
+                locDetl1.sync(checkOrderDetl);
+                BeanUtils.copyProperties(checkOrderDetl, locDetl1);
+                locDetl1.setLocNo(locMast.getLocNo());
+                locDetl1.setZpallet(checkTaskListParam.getBarcode());
+                locDetl1.setAnfme(checkOrderDetl.getAnfme().doubleValue());
+                locDetl1.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
+                locDetl1.setAppeUser(userId);
+                locDetl1.setAppeTime(now);
+                locDetl1.setModiUser(userId);
+                locDetl1.setModiTime(now);
+                locDetlService.insert(locDetl1);
+            }else if (!Cools.isEmpty(checkOrderDetl.getId())){
+                checkOrderDetl.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
+                checkOrderDetl.setStatus(3);
+                if (!checkOrderDetlService.updateById(checkOrderDetl)){
+                    throw new CoolException("鏇存柊鐩樼偣鐘舵�佸け璐�");
+                }
+            }else {
+                throw new CoolException("鏁版嵁閿欒");
+            }
+
+        }
+
         List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
         boolean is = checkOrderDetls.stream().allMatch(item -> item.getStatus().equals(3));
         if (is){
@@ -166,6 +212,9 @@
             if (Cools.isEmpty(locDetl)) {
                 throw new CoolException("鏈壘鍒板簱瀛樻暟鎹�,鏁版嵁閿欒");
             }
+            if (locDetl.getDiffQty().compareTo(BigDecimal.ZERO) == 0) {
+                throw new CoolException("搴撳瓨鏃犵洏鐐瑰樊寮傝褰�,鏁版嵁閿欒");
+            }
             if (checkOrderDetl.getStatus().equals(CheckStatusEnum.ALLOW.type)) {
                 BigDecimal decimal = locDetl.getBookQty().add(checkOrderDetl.getDiffQty());
                 locDetl.setAnfme(decimal.doubleValue());
diff --git a/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
index a596978..2973db1 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
@@ -50,7 +50,7 @@
                 for (int b = param.getStartBay(); b <= param.getEndBay(); b++) {
                     for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
                         // 鑾峰彇搴撲綅鍙�
-                        String locNo = String.format("CA") + String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l);
+                        String locNo = areas.getAreaNo() + String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l);
                         Date now = new Date();
                         LocCache locMast = new LocCache();
                         locMast.setLocNo(locNo);

--
Gitblit v1.9.1