From 0316d7fdfbd248bbccdc023cda44aef9994b0109 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期六, 19 七月 2025 13:49:05 +0800
Subject: [PATCH] #盘点pda

---
 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java               |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java           |   14 +++
 rsf-admin/src/page/orders/asnOrder/POItemModal.jsx                                              |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java  |  121 ++++++++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/SaveCheckDiffParams.java  |   18 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java |   54 +++++++++++++
 6 files changed, 211 insertions(+), 2 deletions(-)

diff --git a/rsf-admin/src/page/orders/asnOrder/POItemModal.jsx b/rsf-admin/src/page/orders/asnOrder/POItemModal.jsx
index 471a4f1..65d8f88 100644
--- a/rsf-admin/src/page/orders/asnOrder/POItemModal.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/POItemModal.jsx
@@ -345,7 +345,7 @@
                 flex: 1,
                 editable: true
             }))
-            setColumns([...columns, ...cols, action])
+            setColumns([...columns, ...cols])
         } else {
             notify(msg);
         }
@@ -396,7 +396,7 @@
                 }}
                 pageSizeOptions={[15, 25, 50, 100]}
                 editMode="row"
-                checkboxSelection
+                
                 onRowSelectionModelChange={handleSelectionChange}
                 selectionModel={selectedRows}
                 sx={{
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/SaveCheckDiffParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/SaveCheckDiffParams.java
new file mode 100644
index 0000000..f452033
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/SaveCheckDiffParams.java
@@ -0,0 +1,18 @@
+package com.vincent.rsf.server.api.controller.params;
+
+import com.vincent.rsf.server.manager.entity.CheckDiffItem;
+import com.vincent.rsf.server.manager.entity.TaskItem;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors
+@ApiModel(value = "SaveCheckDiffParams", description = "淇濆瓨鐩樼偣鏁版嵁鍙傛暟")
+public class SaveCheckDiffParams {
+    private String checkId;
+    private String container;
+    private List<CheckDiffItem> checkDiffItems;
+}
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
new file mode 100644
index 0000000..eefd1f6
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java
@@ -0,0 +1,54 @@
+package com.vincent.rsf.server.api.controller.pda;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.params.SaveCheckDiffParams;
+import com.vincent.rsf.server.api.service.PdaCheckOrderService;
+import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/pda")
+@Api(tags = "pda鐩樼偣")
+public class PdaCheckOrderController extends BaseController {
+
+    @Autowired
+    private PdaCheckOrderService pdaCheckOrderService;
+
+    @PreAuthorize("hasAuthority('manager:task:list')")
+    @PostMapping("/getCheckList")
+    @ApiOperation("鏌ヨ鐩樼偣宸紓鍗曞垪琛�")
+    public R getCheckList(@RequestBody Map<String, String> map) {
+
+        return pdaCheckOrderService.getCheckList(map.get("code"));
+    }
+
+    @PreAuthorize("hasAuthority('manager:task:list')")
+    @PostMapping("/getCheckTaskItemList")
+    @ApiOperation("鏌ヨ鐩樼偣浠诲姟鍒楄〃")
+    public R getCheckTaskItemList(@RequestBody Map<String, String> map) {
+
+        return pdaCheckOrderService.getCheckTaskItemList(map.get("barcode"),map.get("checkCode"));
+    }
+
+    @PreAuthorize("hasAuthority('manager:task:list')")
+    @GetMapping("/getCheckDiffReasonList")
+    @ApiOperation("鏌ヨ鐩樼偣宸紓鍘熷洜")
+    public R getCheckDiffReasonList() {
+
+        return pdaCheckOrderService.getCheckDiffReasonList();
+    }
+
+    @PreAuthorize("hasAuthority('manager:task:list')")
+    @PostMapping("/saveCheckDiff")
+    @ApiOperation("淇濆瓨鐩樼偣鏁版嵁")
+    public R saveCheckDiff(@RequestBody SaveCheckDiffParams saveCheckDiffParams) {
+
+        return pdaCheckOrderService.saveCheckDiff(saveCheckDiffParams,getLoginUserId());
+    }
+}
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
new file mode 100644
index 0000000..5641ca9
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java
@@ -0,0 +1,14 @@
+package com.vincent.rsf.server.api.service;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.params.SaveCheckDiffParams;
+
+public interface PdaCheckOrderService {
+    R getCheckList(String code);
+
+    R getCheckTaskItemList(String barcode,String checkCode);
+
+    R getCheckDiffReasonList();
+
+    R saveCheckDiff(SaveCheckDiffParams saveCheckDiffParams,Long loginUserId);
+}
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
new file mode 100644
index 0000000..b0a263d
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
@@ -0,0 +1,121 @@
+package com.vincent.rsf.server.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.params.SaveCheckDiffParams;
+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.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.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class PdaCheckOrderServiceImpl implements PdaCheckOrderService {
+
+    @Autowired
+    private CheckDiffService checkDiffService;
+
+    @Autowired
+    private CheckDiffItemService checkDiffItemService;
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private TaskItemService taskItemService;
+    @Autowired
+    private DictTypeService dictTypeService;
+    @Autowired
+    private DictDataService dictDataService;
+
+    @Override
+    public R getCheckList(String code) {
+        LambdaQueryWrapper<CheckDiff> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        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) {
+
+        List<CheckDiffItem> checkDiffItems = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>()
+                .eq(CheckDiffItem::getBarcode, barcode)
+                .eq(CheckDiffItem::getOrderCode, checkCode)
+        );
+        if (checkDiffItems.isEmpty()){
+            throw new CoolException("姝ゆ潯鐮佷笉鍦ㄥ綋鍓嶇洏鐐瑰崟涓�");
+        }
+        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("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
+        }
+
+
+        return R.ok(checkDiffItems);
+    }
+
+    @Override
+    public R getCheckDiffReasonList() {
+        List<DictData> list = dictDataService.list(new LambdaQueryWrapper<DictData>()
+                .eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_DIFF_REASON)
+        );
+        return R.ok(list);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R saveCheckDiff(SaveCheckDiffParams params,Long loginUserId) {
+        CheckDiff checkDiff = checkDiffService.getById(params.getCheckId());
+        if (null == checkDiff){
+            return R.error("鏈壘鍒扮洏鐐瑰樊寮傚崟");
+        }
+        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("鏁版嵁閿欒锛屾湭鎵惧埌宸紓鍗曟槑缁�");
+            }
+            if(!checkDiffItemService.updateById(checkDiffItem)){
+                throw new CoolException("鏇存柊宸紓鍗曟槑缁嗗け璐�");
+            }
+            checkDiff.setCheckQty(checkDiff.getCheckQty()+checkDiffItem.getCheckQty());
+        }
+        checkDiff.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val);
+
+        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)){
+            throw new CoolException("鏇存柊浠诲姟澶辫触");
+        }
+        return R.ok("鐩樼偣瀹屾垚");
+    }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
index 0c77e1a..4e51070 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -87,4 +87,6 @@
     public final static String SYS_CHECK_EXCE_STATUS =  "sys_check_exce_status";
     /**鐩樼偣宸紓鍗曟墽琛岀姸鎬�*/
     public final static String SYS_CHECK_DIFF_EXCE_STATUS =  "sys_check_diff_exce_status";
+
+    public final static String SYS_CHECK_DIFF_REASON =  "sys_check_diff_reason";
 }

--
Gitblit v1.9.1