From 0ad1d513feaf7641614b5679b1b24f613aba982c Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 21 七月 2025 14:28:24 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java |  111 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 91 insertions(+), 20 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
index b0a263d..edd0186 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
@@ -8,18 +8,23 @@
 import com.vincent.rsf.server.api.service.PdaCheckOrderService;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.CheckDiffExceStatus;
+import com.vincent.rsf.server.manager.enums.OrderType;
+import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.manager.enums.TaskStsType;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.system.constant.DictTypeCode;
 import com.vincent.rsf.server.system.entity.DictData;
 import com.vincent.rsf.server.system.service.DictDataService;
 import com.vincent.rsf.server.system.service.DictTypeService;
+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.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 @Service
 public class PdaCheckOrderServiceImpl implements PdaCheckOrderService {
@@ -39,33 +44,36 @@
     private DictTypeService dictTypeService;
     @Autowired
     private DictDataService dictDataService;
+    @Autowired
+    private MatnrService matnrService;
+
 
     @Override
     public R getCheckList(String code) {
         LambdaQueryWrapper<CheckDiff> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(!Cools.isEmpty(code),CheckDiff::getOrderCode,code);
+        lambdaQueryWrapper.eq(!Cools.isEmpty(code), CheckDiff::getOrderCode, code);
         List<CheckDiff> waveList = checkDiffService.list(lambdaQueryWrapper);
         return R.ok(waveList);
 
     }
 
     @Override
-    public R getCheckTaskItemList(String barcode,String checkCode) {
+    public R getCheckTaskItemList(String barcode, String checkCode) {
 
         List<CheckDiffItem> checkDiffItems = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>()
                 .eq(CheckDiffItem::getBarcode, barcode)
                 .eq(CheckDiffItem::getOrderCode, checkCode)
         );
-        if (checkDiffItems.isEmpty()){
+        if (checkDiffItems.isEmpty()) {
             throw new CoolException("姝ゆ潯鐮佷笉鍦ㄥ綋鍓嶇洏鐐瑰崟涓�");
         }
         LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(Task::getBarcode, barcode);
         Task task = taskService.getOne(lambdaQueryWrapper);
-        if (null == task){
+        if (null == task) {
             throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟");
         }
-        if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){
+        if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) {
             return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
         }
 
@@ -83,39 +91,102 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R saveCheckDiff(SaveCheckDiffParams params,Long loginUserId) {
+    public R saveCheckDiff(SaveCheckDiffParams params, Long loginUserId) {
         CheckDiff checkDiff = checkDiffService.getById(params.getCheckId());
-        if (null == checkDiff){
+        if (null == checkDiff) {
             return R.error("鏈壘鍒扮洏鐐瑰樊寮傚崟");
         }
-        if (checkDiff.getExceStatus().equals(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val)){
+        if (checkDiff.getExceStatus().equals(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val)) {
             return R.error("璇ョ洏鐐瑰崟宸插畬鎴�");
         }
-        for (CheckDiffItem checkDiffItem: params.getCheckDiffItems()){
-            CheckDiffItem diffItem = checkDiffItemService.getById(checkDiffItem.getId());
-            if (null == diffItem){
-                return R.error("鏁版嵁閿欒锛屾湭鎵惧埌宸紓鍗曟槑缁�");
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getContainer()));
+        if (null == task) {
+            throw new CoolException("鏁版嵁閿欒锛屾湭鎵惧埌瀹瑰櫒鐮佸搴旂洏鐐逛换鍔�");
+        }
+        for (CheckDiffItem checkDiffItem : params.getCheckDiffItems()) {
+            CheckDiffItem diffItem = new CheckDiffItem();
+            if (Objects.isNull(checkDiffItem.getId())) {
+                BeanUtils.copyProperties(checkDiffItem, diffItem);
+                diffItem.setCheckId(params.getCheckId());
+
+                Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, diffItem.getMatnrCode()));
+                if (Objects.isNull(matnr)) {
+                    throw new CoolException("鍗曟嵁鐗╂枡鍚嶇О涓嶅瓨鍦紒锛�");
+                }
+
+                if (!checkDiffItemService.save(diffItem)) {
+                    throw new CoolException("鏂板鏄庣粏淇濆瓨澶辫触锛侊紒");
+                }
+                //鏂板浠诲姟鏄庣粏淇℃伅
+                TaskItem taskItem = new TaskItem();
+                BeanUtils.copyProperties(diffItem, diffItem);
+                taskItem.setTaskId(task.getId())
+                        .setOrderType(OrderType.ORDER_CHECK.type)
+                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type))
+                        .setAnfme(diffItem.getAnfme())
+                        .setWorkQty(0.0)
+                        .setBatch(diffItem.getBatch())
+                        .setMaktx(matnr.getName())
+                        .setMatnrCode(diffItem.getMatnrCode())
+                        .setSpec(diffItem.getSpec())
+                        .setModel(diffItem.getModel())
+                        .setMatnrId(matnr.getId())
+                        .setCreateBy(loginUserId)
+                        //婕忕洏搴撳瓨锛屾柊澧炴病鏈夌洏鐐瑰崟鏄庣粏ID
+                        .setSource(diffItem.getId())
+                        .setSourceId(params.getCheckId())
+                        .setCreateTime(new Date())
+                        .setUpdateBy(loginUserId)
+                        .setMemo("涓嶅湪搴撴槑缁嗭紝鐩樻紡鏂板")
+                        .setUpdateTime(new Date())
+                        .setId(null)
+                        //鐩樼偣鍗旾D
+                        .setOrderId(checkDiff.getOrderId());
+                if (!taskItemService.save(taskItem)) {
+                    throw new CoolException("鏂板鐩樼偣鏄庣粏淇濆瓨澶辫触锛侊紒");
+                }
+            } else {
+                diffItem = checkDiffItemService.getById(checkDiffItem.getId());
+                if (null == diffItem) {
+                    return R.error("鏁版嵁閿欒锛屾湭鎵惧埌宸紓鍗曟槑缁�");
+                }
             }
-            if(!checkDiffItemService.updateById(checkDiffItem)){
+
+            checkDiffItem.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val);
+            if (!checkDiffItemService.updateById(checkDiffItem)) {
                 throw new CoolException("鏇存柊宸紓鍗曟槑缁嗗け璐�");
             }
-            checkDiff.setCheckQty(checkDiff.getCheckQty()+checkDiffItem.getCheckQty());
+            Double checkQty = Math.round((checkDiff.getCheckQty() + checkDiffItem.getCheckQty()) * 10000) / 10000.0;
+            checkDiff.setCheckQty(checkQty);
         }
         checkDiff.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val);
 
-        if(!checkDiffService.updateById(checkDiff)){
+        if (!checkDiffService.updateById(checkDiff)) {
             throw new CoolException("鏇存柊宸紓鍗曞け璐�");
         }
-        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getContainer()));
-        if (null == task){
-            throw new CoolException("鏁版嵁閿欒锛屾湭鎵惧埌瀹瑰櫒鐮佸搴旂洏鐐逛换鍔�");
-        }
+
         task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
         task.setUpdateBy(loginUserId);
         task.setUpdateTime(new Date());
-        if (!taskService.updateById(task)){
+        if (!taskService.updateById(task)) {
             throw new CoolException("鏇存柊浠诲姟澶辫触");
         }
         return R.ok("鐩樼偣瀹屾垚");
     }
+
+    @Override
+    public R selectAddMatnr(Map<String, String> map) {
+        String matnrCode = map.get("matnr");
+        if (Cools.isEmpty(matnrCode)){
+            return R.error("鐗╂枡鐮佷负绌�");
+        }
+        Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, matnrCode));
+        CheckDiffItem checkDiffItem = new CheckDiffItem()
+                .setMatnrCode(matnr.getCode())
+                .setMaktx(matnr.getName())
+                .setAnfme(0D)
+                .setCheckQty(0D)
+                ;
+        return R.ok(checkDiffItem);
+    }
 }

--
Gitblit v1.9.1