From c96f6070a283df666a6560635f529a5fbf94182e Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期三, 05 十一月 2025 22:11:05 +0800
Subject: [PATCH] 临时盘点功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java           |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java  |  118 +++++++++++++++++++++++++++++++++++----
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java |    9 +++
 3 files changed, 117 insertions(+), 12 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java
index eec07b7..dd91c71 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java
@@ -87,4 +87,13 @@
         return pdaCheckOrderService.confirmMatnr(params);
     }
 
+    @ApiOperation("涓存椂鐩樼偣鎻愪氦")
+    @PostMapping("/temp/check/confirm")
+    public R tempCheckConfirm(@RequestBody Map<String, Object> map) {
+        if (Objects.isNull(map)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return  pdaCheckOrderService.tempCheckConfirm(map);
+    }
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java
index 8473c5a..89f51d7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java
@@ -22,4 +22,6 @@
     R tempCheckItem(String barcode);
 
     R confirmMatnr(Map<String, Object> map);
+
+    R tempCheckConfirm(Map<String, Object> map);
 }
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 dee3291..07ad4b6 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
@@ -7,22 +7,25 @@
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.controller.erp.params.ReportDataParam;
+import com.vincent.rsf.server.api.controller.erp.params.ReportParams;
 import com.vincent.rsf.server.api.controller.erp.params.SaveCheckDiffParams;
 import com.vincent.rsf.server.api.service.PdaCheckOrderService;
+import com.vincent.rsf.server.api.service.ReportMsgService;
 import com.vincent.rsf.server.common.utils.FieldsUtils;
 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.enums.*;
 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.entity.FieldsItem;
+import com.vincent.rsf.server.system.entity.User;
 import com.vincent.rsf.server.system.service.DictDataService;
 import com.vincent.rsf.server.system.service.DictTypeService;
 import com.vincent.rsf.server.system.service.FieldsItemService;
+import com.vincent.rsf.server.system.service.UserService;
 import com.vincent.rsf.server.system.service.impl.FieldsItemServiceImpl;
+import com.vincent.rsf.server.system.service.impl.UserServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,6 +55,10 @@
     private MatnrService matnrService;
     @Autowired
     private FieldsItemService fieldsItemService;
+    @Autowired
+    private ReportMsgService reportMsgService;
+    @Autowired
+    private UserService userService;
 
 
     @Override
@@ -204,19 +211,18 @@
     @Override
     public R selectAddMatnr(Map<String, String> map) {
         String matnrCode = map.get("matnr");
-        if (Cools.isEmpty(matnrCode)){
+        if (Cools.isEmpty(matnrCode)) {
             return R.error("鐗╂枡鐮佷负绌�");
         }
         Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, matnrCode));
-        if (null == matnr){
+        if (null == matnr) {
             return R.error("鏈壘鍒扮紪鐮佸搴旂殑鏄庣粏");
         }
         CheckDiffItem checkDiffItem = new CheckDiffItem()
                 .setMatnrCode(matnr.getCode())
                 .setMaktx(matnr.getName())
                 .setAnfme(0D)
-                .setCheckQty(0D)
-                ;
+                .setCheckQty(0D);
         return R.ok(checkDiffItem);
     }
 
@@ -232,11 +238,11 @@
             return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
         }
         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
-        if (Cools.isEmpty(taskItems)){
+        if (Cools.isEmpty(taskItems)) {
             throw new CoolException("鏈壘鍒拌瀹瑰櫒鐮佸搴旂殑浠诲姟鏄庣粏");
         }
         String sourceCode = taskItems.stream().findFirst().map(TaskItem::getSourceCode).orElse(null);
-        CheckDiff checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>().eq(CheckDiff::getOrderCode,sourceCode));
+        CheckDiff checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>().eq(CheckDiff::getOrderCode, sourceCode));
         if (null == checkDiff) {
             return R.error("鏈壘鍒扮洏鐐瑰樊寮傚崟");
         }
@@ -249,7 +255,7 @@
             throw new CoolException("姝ゆ潯鐮佷笉鍦ㄥ綋鍓嶇洏鐐瑰崟涓�");
         }
 
-        return R.ok(Cools.add("checkDiffItems",checkDiffItems).add("checkDiff",checkDiff));
+        return R.ok(Cools.add("checkDiffItems", checkDiffItems).add("checkDiff", checkDiff));
     }
 
     /**
@@ -273,7 +279,7 @@
             return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
         }
         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
-        if (Cools.isEmpty(taskItems)){
+        if (Cools.isEmpty(taskItems)) {
             throw new CoolException("鏈壘鍒拌瀹瑰櫒鐮佸搴旂殑浠诲姟鏄庣粏");
         }
         taskItems.forEach(taskItem -> {
@@ -354,4 +360,92 @@
         return R.ok();
     }
 
+    /**
+     * @param map
+     * @return com.vincent.rsf.framework.common.R
+     * @author Ryan
+     * 涓存椂鐩樼偣鎻愪氦ERP淇敼
+     * @date 2025/11/5 20:49
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R tempCheckConfirm(Map<String, Object> map) {
+        if (Objects.isNull(map)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(map.get("barcode"))) {
+            throw new CoolException("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
+        }
+        if (Objects.isNull(map.get("matnrs"))) {
+            throw new CoolException("鏂板鐗╂枡涓嶈兘涓虹┖锛侊紒");
+        }
+        String barcode = map.get("barcode").toString();
+        LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(Task::getBarcode, barcode);
+        Task task = taskService.getOne(lambdaQueryWrapper);
+        if (null == task) {
+            throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟");
+        }
+        if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) {
+            return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
+        }
+
+        task.setTaskStatus(TaskStsType.GENERATE_IN.id)
+                .setTargLoc(task.getOrgLoc())
+                .setTaskType(TaskType.TASK_TYPE_CHECK_IN.type)
+                .setUpdateTime(new Date());
+
+        if (!taskService.updateById(task)) {
+            throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
+
+        uploadCheckResult(task);
+
+        return R.ok("鎻愪氦鎴愬姛");
+    }
+
+
+    /**
+     * 涓婁紶鐩樼偣缁撴灉
+     * @author Ryan
+     * @date 2025/11/5 21:50
+     * @param task
+     */
+    public void uploadCheckResult(Task task) {
+        if (Objects.isNull(task)) {
+            throw new CoolException("浠诲姟涓嶈兘涓虹┖锛侊紒");
+        }
+        ReportParams params = new ReportParams();
+        List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
+        if (Objects.isNull(taskItems) || taskItems.isEmpty()) {
+            throw new CoolException("鎵樼洏鏄庣粏涓虹┖锛�1");
+        }
+        List<ReportDataParam> reportDataParams = new ArrayList<>();
+        taskItems.forEach(taskItem -> {
+            ReportDataParam dataParam = new ReportDataParam();
+
+            User user = userService.getById(taskItem.getUpdateBy());
+            String nickName = null;
+            if (!Objects.isNull(user)) {
+                nickName = user.getNickname();
+            }
+            //鑾峰彇绱㈠紩鍐呭
+            Map<String, String> fields = FieldsUtils.getFields(taskItem.getFieldsIndex());
+            //璁剧疆閫氱敤鍙傛暟
+            dataParam.setItemCode(taskItem.getMatnrCode())
+                    .setPDQty(taskItem.getAnfme())
+                    .setEditUser(nickName)
+                    .setEditDate(taskItem.getUpdateTime())
+                    .setGoodsNO(fields.get("crushNo"))
+                    .setIsBad(0 + "")
+                    .setMemoDtl(taskItem.getMemo());
+
+            reportDataParams.add(dataParam);
+        });
+
+        params.setOrderType("PD_stock").setAction("Update").setData(reportDataParams);
+
+        reportMsgService.uploadCheckOrder(params);
+    }
+
 }

--
Gitblit v1.9.1