From 0b190d8a9aad67aa521ec163b437c59f6e63c400 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 17 七月 2025 14:04:27 +0800
Subject: [PATCH] 盘点单下发功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java        |   21 +++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java              |    4 +
 rsf-admin/src/page/orders/check/CheckOrderPub.jsx                                                   |   34 +++++++----
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java     |   19 ++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderItemParams.java |   44 ++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderParams.java     |   56 ++++++++++++++++++
 6 files changed, 166 insertions(+), 12 deletions(-)

diff --git a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
index 61af609..24dade3 100644
--- a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
+++ b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -25,6 +25,7 @@
 import ConfirmButton from '../../components/ConfirmButton';
 import { Delete, Edit, Add } from '@mui/icons-material';
 import CheckOrderSiteDialog from "./CheckOrderSiteDialog";
+import { map } from "lodash";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -81,12 +82,12 @@
     const ComfirmButton = () => {
         const { selectedIds, data, onUnselectItems } = useListContext();
         const handleRowClick = () => {
-            const ids = data.filter(item => selectedIds.includes(item.id)).map(item => item.id);
+            const ids = data.filter(item => selectedIds.includes(item.id));
             setRowSelectedIds(ids);
             const mas = data.filter(item => selectedIds.includes(item.id)).map(item => item.matnrCode);
             //璁剧疆搴撲綅淇℃伅绛涢�夋潯浠�
             setSelectedMatnr(mas);
-            onUnselectItems()
+            // onUnselectItems()
         }
 
         return (
@@ -222,7 +223,7 @@
                             </Box>
                             <Box sx={{ textAlign: 'center' }}>
                                 <CloseButton setOpen={setOpen} />
-                                <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} gridRef={gridRef} record={record} />
+                                <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} rowSelectedIds={rowSelectedIds} gridRef={gridRef} record={record} />
                             </Box>
                         </Card>
                     </Grid>
@@ -420,23 +421,32 @@
 
 
 //鎻愪氦鎸夐挳
-const SubmitButton = ({ selectedIds, setSelectedIds, gridRef, record }) => {
+const SubmitButton = ({ selectedIds, setSelectedIds, rowSelectedIds, gridRef, record }) => {
     const notify = useNotify();
     const refresh = useRefresh();
     const redirect = useRedirect();
     const submit = async () => {
         const items = gridRef.current?.getSortedRows();
-        const { data: { code, data, msg } } = await request.post('/outStock/generate/tasks', { items, outId: record?.id });
-        if (code == 200) {
-            refresh();
-            redirect("/task")
-        } else {
-            notify(msg);
-        }
+        let selctRecord = items.filter(item => selectedIds.includes(item?.id));
+        const records = rowSelectedIds.map(map =>{
+            return {
+                ...map,
+                items: selctRecord.filter(item => item.matnrCode == map.matnrCode)
+            }
+        })
+        console.log(records);
+        
+        // const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records);
+        // if (code == 200) {
+        //     refresh();
+        //     redirect("/task")
+        // } else {
+        //     notify(msg);
+        // }
     }
     return (
         <ConfirmButton
-            label="toolbar.allComfirm"
+            label="toolbar.confirmSelect"
             variant="contained"
             size="medium"
             onConfirm={submit}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
index bbd2959..941cabb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
@@ -1,5 +1,6 @@
 package com.vincent.rsf.server.manager.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,8 +12,11 @@
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
+import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
+import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
 import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
 import com.vincent.rsf.server.manager.entity.WkOrder;
+import com.vincent.rsf.server.manager.entity.WkOrderItem;
 import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate;
 import com.vincent.rsf.server.manager.enums.CheckExceStatus;
 import com.vincent.rsf.server.manager.enums.OrderType;
@@ -181,6 +185,23 @@
         return checkOrderService.genCheckPreview(param);
     }
 
+
+    /**
+     * 鐩樼偣鍗曠敓鎴愬嚭搴撲换鍔�
+     * @param params
+     * @return
+     */
+    @PostMapping("/check/generate/tasks")
+    @ApiOperation("鐢熸垚鐩樼偣鍑哄簱浠诲姟")
+    @PreAuthorize("hasAuthority('manager:outStock:list')")
+    public R genCheckOutTask( @RequestBody List<CheckOrderParams> params) {
+        if (Cools.isEmpty()) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+
+        return  checkOrderService.genCheckOutTask(params, getLoginUserId());
+    }
+
     /**
      * 鑾峰彇鍑哄簱绔欑偣
      * @return
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderItemParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderItemParams.java
new file mode 100644
index 0000000..f17232f
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderItemParams.java
@@ -0,0 +1,44 @@
+package com.vincent.rsf.server.manager.controller.params;
+
+
+import com.vincent.rsf.server.manager.entity.WkOrderItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CheckOrderParams", description = "鐩樼偣鍗曞弬鏁�")
+public class CheckOrderItemParams {
+
+    @ApiModelProperty("搴撲綅")
+    private String locCode;
+
+    @ApiModelProperty("搴撲綅鏄庣粏ID")
+    private Long id;
+
+    @ApiModelProperty("鎵樼洏鐮�")
+    private String barcode;
+
+    @ApiModelProperty("鎵规")
+    private String batch;
+
+    @ApiModelProperty("鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty("瀹㈠崟鍙�")
+    private String platOrderCode;
+
+    @ApiModelProperty("瀛楁绱㈠紩")
+    private String fieldsIndex;
+
+    @ApiModelProperty("鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty("绔欑偣")
+    private String siteNo;
+
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderParams.java
new file mode 100644
index 0000000..6c24ddd
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderParams.java
@@ -0,0 +1,56 @@
+package com.vincent.rsf.server.manager.controller.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CheckOrderParams", description = "鐩樼偣鍗曞弬鏁�")
+public class CheckOrderParams {
+
+    @ApiModelProperty("鐩樼偣鍗曟槑缁咺D")
+    private Long id;
+
+    @ApiModelProperty(value= "绉�鐐瑰崟ID")
+    private Long orderId;
+
+    @ApiModelProperty(value= "ASN鍗曞彿")
+    private String orderCode;
+
+    @ApiModelProperty(value= "鐗╂枡鏍囪瘑")
+    private Long matnrId;
+
+    @ApiModelProperty(value = "鐗╂枡缂栫爜")
+    private String matnrCode;
+
+    @ApiModelProperty(value= "鐗╂枡鍚嶇О")
+    private String maktx;
+
+    @ApiModelProperty("瑙勬牸")
+    private String spec;
+
+    @ApiModelProperty("鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty(value= "閫佽揣鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty(value= "搴撳瓨鍗曚綅")
+    private String stockUnit;
+
+    @ApiModelProperty("搴撳瓨鎵规")
+    private String batch;
+
+    @ApiModelProperty(value= "宸叉敹鏁伴噺")
+    private Double qty;
+
+    @ApiModelProperty(value= "鏉″舰鐮�")
+    private String barcode;
+
+    @ApiModelProperty("搴撲綅鏄庣粏")
+    private List<CheckOrderItemParams> items;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
index 246d4ae..bdba839 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
+import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
+import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
 import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
 import com.vincent.rsf.server.manager.entity.WkOrder;
 import org.springframework.web.multipart.MultipartFile;
@@ -25,4 +27,6 @@
     R genCheckPreview(OrderOutTaskParam param);
 
     R getAllLocByMatnr(List<String> matnrs);
+
+    R genCheckOutTask(List<CheckOrderParams> checkParams, Long loginUserId);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
index 8e8955f..b29df72 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -9,6 +9,8 @@
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
+import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
+import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
 import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate;
@@ -249,6 +251,23 @@
 
     /**
      * @author Ryan
+     * @date 2025/7/17
+     * @description: 鐢熸垚鐩樼偣浠诲姟
+     * @version 1.0
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R genCheckOutTask(List<CheckOrderParams> checkParams, Long loginUserId) {
+        if (checkParams.isEmpty()) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        
+
+        return null;
+    }
+
+    /**
+     * @author Ryan
      * @date 2025/7/16
      * @description: 鍙栨秷鐩樼偣鍗曟嵁
      * @version 1.0

--
Gitblit v1.9.1