From 7977627e83ce88cb34dfd6e3243ef790b493bd70 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 12 五月 2025 16:26:09 +0800
Subject: [PATCH] 质检单功能优化 新增配置自动收货功能

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java    |   18 +++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java              |   68 +++++++++--
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java          |    3 
 rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx                                         |   26 +++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java             |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java        |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java       |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java          |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java      |    2 
 rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx                                          |    4 
 rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx                                       |  130 +++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java            |   19 +++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java                     |   22 +--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java                 |   10 
 15 files changed, 272 insertions(+), 47 deletions(-)

diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
index a2667dc..3c01e8c 100644
--- a/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
@@ -172,6 +172,10 @@
 
 export default QlyInspectList;
 
+const PrintLabelButton = () => {
+    const record = useRecordContext();
+}
+
 const InspectionButton = () => {
     const record = useRecordContext();
     const notify = useNotify();
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx
index fd1be19..56e5e25 100644
--- a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemList.jsx
@@ -43,6 +43,8 @@
 import MyExportButton from '../../components/MyExportButton';
 import PageDrawer from "../../components/PageDrawer";
 import request from '@/utils/request';
+import MyField from "@/page/components/MyField";
+import QlyIsptItemResult from "./QlyIsptItemResult";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
@@ -89,6 +91,7 @@
     const translate = useTranslate();
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
+    const [itemInfo, setItemInfo] = useState({})
     const isptId = useGetRecordId();
     const { data: dicts, isPending, error } = useGetOne('qlyInspect', { id: isptId });
     if (dicts == null) { return }
@@ -96,6 +99,7 @@
     return (
         <Box display="flex">
             <List
+                storeKey="qlyIsptItem"
                 resource="qlyIsptItem"
                 filter={{ ispectId: isptId }}
                 sx={{
@@ -119,19 +123,24 @@
                 )}
                 perPage={DEFAULT_ITEM_PAGE_SIZE}
             >
-               <DynamicFields />
+                <DynamicFields
+                    drawerVal={drawerVal}
+                    setDrawerVal={setDrawerVal}
+                    itemInfo={itemInfo}
+                    setItemInfo={setItemInfo} />
             </List>
             <QlyIsptItemCreate
                 open={createDialog}
                 record={dicts}
                 setOpen={setCreateDialog}
             />
-            <PageDrawer
-                title='QlyIsptItem Detail'
+
+            <QlyIsptItemResult
+                record={itemInfo}
                 drawerVal={drawerVal}
                 setDrawerVal={setDrawerVal}
             >
-            </PageDrawer>
+            </QlyIsptItemResult>
         </Box>
     )
 }
@@ -141,6 +150,7 @@
 
 
 const DynamicFields = (props) => {
+    const { drawerVal, setDrawerVal, itemInfo, setItemInfo } = props
     const translate = useTranslate();
     const notify = useNotify();
     const [columns, setColumns] = useState([]);
@@ -163,7 +173,13 @@
                 <TextField source="stockBatch" label="table.field.qlyIsptItem.stockBatch" />,
                 <NumberField source="rcptQty" label="table.field.qlyIsptItem.rcptQty" />,
                 <NumberField source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />,
-                <NumberField source="anfme" label="table.field.qlyIsptItem.anfme" />,
+                <MyField source="anfme" label="table.field.qlyIsptItem.anfme"
+                    onClick={(event, record, val) => {
+                        event.stopPropagation();
+                        setItemInfo(record)
+                        setDrawerVal(!!drawerVal && drawerVal === val ? null : val);
+                    }}
+                />,
                 <TextField source="splrName" label="table.field.qlyIsptItem.splrName" />,
                 <NumberField source="isptResult$" label="table.field.qlyIsptItem.isptResult" />,
             ]
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
new file mode 100644
index 0000000..142f9d4
--- /dev/null
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
@@ -0,0 +1,130 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import { useNavigate } from 'react-router-dom';
+import {
+    List,
+    DatagridConfigurable,
+    SearchInput,
+    TopToolbar,
+    SelectColumnsButton,
+    EditButton,
+    FilterButton,
+    CreateButton,
+    ExportButton,
+    BulkDeleteButton,
+    WrapperField,
+    useRecordContext,
+    useTranslate,
+    useNotify,
+    useListContext,
+    FunctionField,
+    TextField,
+    NumberField,
+    DateField,
+    BooleanField,
+    ReferenceField,
+    TextInput,
+    DateTimeInput,
+    DateInput,
+    SelectInput,
+    NumberInput,
+    ReferenceInput,
+    ReferenceArrayInput,
+    AutocompleteInput,
+    DeleteButton,
+    useGetOne,
+    Button,
+    useRefresh,
+    useGetRecordId,
+} from 'react-admin';
+import { Box, Typography, Card, Stack, LinearProgress, Dialog, DialogActions, DialogContent, DialogTitle, } from '@mui/material';
+import { styled } from '@mui/material/styles';
+import QlyIsptItemCreate from "./QlyIsptItemCreate";
+import EmptyData from "../../components/EmptyData";
+import MyCreateButton from "../../components/MyCreateButton";
+import MyExportButton from '../../components/MyExportButton';
+import PageDrawer from "../../components/PageDrawer";
+import DialogCloseButton from "../../components/DialogCloseButton";
+import request from '@/utils/request';
+import MyField from "@/page/components/MyField";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
+
+
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+    '& .css-1vooibu-MuiSvgIcon-root': {
+        height: '.9em'
+    },
+    '& .RaDatagrid-row': {
+        cursor: 'auto'
+    },
+    '& .column-name': {
+    },
+    '& .opt': {
+        width: 200
+    },
+}));
+
+const QlyIsptItemResult = (props) => {
+    const { record, drawerVal, setDrawerVal } = props
+    const translate = useTranslate();
+    const [createDialog, setCreateDialog] = useState(false);
+    const handleClose = (event, reason) => {
+        if (reason !== "backdropClick") {
+            setDrawerVal(false);
+        }
+    };
+
+    return (
+        <Dialog
+            open={drawerVal}
+            onClose={handleClose}
+            aria-labelledby="form-dialog-title"
+            fullWidth
+            disableRestoreFocus
+            maxWidth="lg"
+        >
+            <DialogTitle id="form-dialog-title" sx={{
+                position: 'sticky',
+                top: 0,
+                backgroundColor: 'background.paper',
+                zIndex: 1000
+            }}>
+                <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
+                    <DialogCloseButton onClose={handleClose} />
+                </Box>
+            </DialogTitle>
+            <DialogContent sx={{ mt: 2 }}>
+                <List
+                    storeKey="IsptItem"
+                    resource="qlyIsptItem/ispt/result"
+                    filter={{ id: record?.id }}
+                    empty={false}
+                    filters={false}
+                    sort={{ field: "create_time", order: "desc" }}
+                    actions={false}
+                    perPage={DEFAULT_ITEM_PAGE_SIZE}
+                >
+                    <StyledDatagrid
+                        preferenceKey='IsptItem'
+                        bulkActionButtons={false}
+                        rowClick={false}
+                        omit={['id', 'memo', 'dlyQty', 'label', 'stockBatch', 'picPath', 'ispectId']}
+                    >
+                        <NumberField source="id" />
+                        <NumberField source="ispectId" label="table.field.qlyIsptItem.ispectId" />
+                        <TextField source="matnrCode" label="table.field.qlyIsptItem.matnrCode" />
+                        <TextField source="maktx" label="table.field.qlyIsptItem.maktx" />
+                        <TextField source="label" label="table.field.qlyIsptItem.label" />
+                        <TextField source="splrBatch" label="table.field.qlyIsptItem.splrBatch" />
+                        <NumberField source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />
+                        <NumberField source="anfme" label="table.field.qlyIsptItem.anfme" />
+                        <TextField source="splrName" label="table.field.qlyIsptItem.splrName" />
+                        <NumberField source="isptResult$" label="table.field.qlyIsptItem.isptResult" />
+                    </StyledDatagrid>
+                </List>
+            </DialogContent>
+        </Dialog>
+    )
+}
+
+export default QlyIsptItemResult;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 70094d9..c012a35 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -694,7 +694,8 @@
         /**鑾峰彇骞冲簱璁㈠崟*/
         AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
                 .eq(AsnOrder::getId, OrderId)
-                .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
+                        .eq(AsnOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)
+                .eq(AsnOrder::getType, OrderType.ORDER_IN.type));
         if (Objects.isNull(order)) {
             throw new CoolException("闈炲钩搴撳崟鎹笉鍙墽琛屼汉宸ヤ笂鏋讹紒锛�");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index 73248a4..5440f0c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -54,7 +54,7 @@
             BeanUtils.copyProperties(ors, purchase);
             String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase);
             purchase.setCode(wkVal)
-                    .setType(OrderType.ORDER_PURCHASE_IN.type);
+                    .setType(OrderType.ORDER_IN.type);
             if (!purchaseService.save(purchase)) {
                 throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触");
             }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index d999527..b5d8d35 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -186,7 +186,7 @@
             BeanUtils.copyProperties(item, taskItem);
 
             return taskItem.setTaskId(taskId)
-                    .setOrderType(OrderType.ORDER_RECEIPT.type)
+                    .setOrderType(OrderType.ORDER_IN.type)
                     .setSource(item.getId())
                     .setTrackCode(item.getTrackCode())
                     .setCreateBy(loginUserId)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
index c9b90c3..74771cf 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
@@ -76,8 +76,26 @@
         page.setRecords(records);
 
         return R.ok(page);
+    }
 
 
+    @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
+    @PostMapping("/qlyIsptItem/ispt/result/page")
+    public R getIsptResultList(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class);
+        QueryWrapper<QlyIsptItem> queryWrapper = pageParam.buildWrapper(true);
+        IPage<QlyIsptItem> page = qlyIsptItemService.pageByIsptResult(pageParam, queryWrapper);
+        List<QlyIsptItem> records = page.getRecords();
+        for (QlyIsptItem record : records) {
+            if (!Objects.isNull(record.getFieldsIndex())) {
+                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
+                record.setExtendFields(fields);
+            }
+        }
+        page.setRecords(records);
+
+        return R.ok(page);
     }
 
     @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
index d45f65c..c69c49e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
@@ -60,7 +60,7 @@
      */
     @Excel(name = "*鍗曟嵁绫诲瀷")
     @ApiModelProperty(value = "*鍗曟嵁绫诲瀷")
-    @ExcelComment(value = "type", example = "閲囪喘鍏ュ簱鍗�")
+    @ExcelComment(value = "type", example = "鍏ュ簱鍗�")
     private String type;
 
     /**
@@ -68,7 +68,7 @@
      */
     @Excel(name = "*涓氬姟绫诲瀷")
     @ApiModelProperty(value = "*涓氬姟绫诲瀷")
-    @ExcelComment(value = "wkType", example = "瀹屽伐鍏ュ簱鍗�")
+    @ExcelComment(value = "wkType", example = "閲囪喘鍏ュ簱鍗�")
     private String wkType;
 
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java
index becf65f..70eb44f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderType.java
@@ -9,12 +9,8 @@
  */
 public enum OrderType {
     //璁㈠崟绫诲瀷
-    ORDER_PURCHASE_IN("purchase", "閲囪喘鍏ュ簱鍗�"),
     ORDER_OUT("out", "鍑哄簱鍗�"),
     ORDER_IN("in", "鍏ュ簱鍗�"),
-    ORDER_RECEIPT("receipt", "鏀惰揣鍗�"),
-    ORDER_PLAT_IN("plat in", "骞冲簱鍏ュ簱鍗�"),
-
     ;
 
     OrderType(String type, String desc) {
@@ -30,12 +26,6 @@
             return OrderType.ORDER_IN.type;
         } else if (desc.equals(OrderType.ORDER_OUT.desc)) {
             return OrderType.ORDER_OUT.type;
-        } else if (desc.equals(OrderType.ORDER_PLAT_IN.desc)) {
-            return OrderType.ORDER_PLAT_IN.type;
-        } else if (desc.equals(OrderType.ORDER_RECEIPT.desc)) {
-            return OrderType.ORDER_RECEIPT.type;
-        } else if (desc.equals(OrderType.ORDER_PURCHASE_IN.desc)) {
-            return OrderType.ORDER_PURCHASE_IN.type;
         }
         return null;
     }
@@ -45,12 +35,12 @@
             return OrderType.ORDER_IN.desc;
         } else if (type.equals(OrderType.ORDER_OUT.type)) {
             return OrderType.ORDER_OUT.desc;
-        } else if (type.equals(OrderType.ORDER_PLAT_IN.type)) {
-            return OrderType.ORDER_PLAT_IN.desc;
-        } else if (type.equals(OrderType.ORDER_RECEIPT.type)) {
-            return OrderType.ORDER_RECEIPT.desc;
-        } else if (type.equals(OrderType.ORDER_PURCHASE_IN.type)) {
-            return OrderType.ORDER_PURCHASE_IN.desc;
+//        } else if (type.equals(OrderType.ORDER_PLAT_IN.type)) {
+//            return OrderType.ORDER_PLAT_IN.desc;
+//        } else if (type.equals(OrderType.ORDER_RECEIPT.type)) {
+//            return OrderType.ORDER_RECEIPT.desc;
+//        } else if (type.equals(OrderType.ORDER_PURCHASE_IN.type)) {
+//            return OrderType.ORDER_PURCHASE_IN.desc;
         }
         return null;
     }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
index 2f6b32b..69a46ce 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
@@ -13,7 +13,7 @@
     ORDER_WORK_TYPE_PROD("2", "鐢熶骇鍏ュ簱鍗�"),
     ORDER_WORK_TYPE_PURCHASE("3", "棰嗘枡閫�鍥炲叆搴撳崟"),
     ORDER_WORK_TYPE_SALE("4", "閿�鍞��鍥炲叆搴撳崟"),
-    ORDER_WORK_TYPE_RETURN("5", "鍏跺畠鍏ュ簱鍗�"),
+    ORDER_WORK_TYPE_OTHER_IN("5", "鍏跺畠鍏ュ簱鍗�"),
     ORDER_WORK_TYPE_SUPPLIER("11", "閿�鍞嚭搴撳崟"),
     ORDER_WORK_TYPE_RETURN_ORDER("12", "棰嗘枡鍑哄簱鍗�"),
     ORDER_WORK_TYPE_PURCHASE_RETURN("13", "閲囪喘閫�鍥炲嚭搴撳崟"),
@@ -37,8 +37,8 @@
             return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
             return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
-        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.desc)) {
-            return OrderWorkType.ORDER_WORK_TYPE_RETURN.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
             return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc)) {
@@ -60,8 +60,8 @@
             return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.type)) {
             return OrderWorkType.ORDER_WORK_TYPE_SALE.desc;
-        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.type)) {
-            return OrderWorkType.ORDER_WORK_TYPE_RETURN.desc;
+        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
+            return OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type)) {
             return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java
new file mode 100644
index 0000000..089dd71
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehouseAreasType.java
@@ -0,0 +1,19 @@
+package com.vincent.rsf.server.manager.enums;
+
+public enum WarehouseAreasType {
+
+    WAREHOUSE_AREAS_TYPE_RECEIPT("receipt", "鏀惰揣鍖�"),
+    WAREHOUSE_AREAS_TYPE_DELIVERY("delivery", "寰呭彂鍖�"),
+    ORDER_WORK_TYPE_COLLECTION("collection", "闆嗚揣鍖�"),
+    ORDER_WORK_TYPE_CTU("CTU", "CTU搴撳尯"),
+    ORDER_WORK_TYPE_CRN("CRN", "鍫嗗灈鏈�")
+    ;
+
+    WarehouseAreasType(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    public String type;
+    public String desc;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index ce3825f..6519f6d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -1,14 +1,18 @@
 package com.vincent.rsf.server.manager.schedules;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.config.SysStockProperties;
 import com.vincent.rsf.server.common.utils.CommonUtil;
 import com.vincent.rsf.server.common.utils.DateUtils;
+import com.vincent.rsf.server.manager.controller.params.WarehouseAreaParam;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.AsnExceStatus;
 import com.vincent.rsf.server.manager.enums.PakinIOStatus;
+import com.vincent.rsf.server.manager.enums.WarehouseAreasType;
 import com.vincent.rsf.server.manager.service.*;
+import com.vincent.rsf.server.manager.service.impl.WarehouseAreasItemServiceImpl;
 import com.vincent.rsf.server.system.constant.GlobalConfigCode;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.entity.Config;
@@ -60,6 +64,10 @@
     private WaitPakinItemLogService waitPakinItemLogService;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private WarehouseAreasService warehouseAreasService;
+    @Autowired
+    private WarehouseAreasItemServiceImpl warehouseAreasItemService;
 
 
     /**
@@ -68,32 +76,64 @@
      * @description: 鐩存帴缁勬墭寮�鍏充负true锛屽皢鏀惰揣鍗曠洿鎺ュ姞鍏ヤ复鏃跺簱瀛�
      * @version 1.0
      */
+//    @Scheduled(cron = "0 0/05 * * * ?  ")
+    @Scheduled(cron = "0/25 * * * * ?")
+    @Transactional(rollbackFor = Exception.class)
     public synchronized void IgnoreReceipt() {
         Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.DIRECT_WAIT_PAKIN));
         if (Objects.isNull(config)) {
             return;
         }
-        if (!Boolean.getBoolean(config.getVal())) {
+
+        if (!Boolean.parseBoolean(config.getVal())) {
             return;
         }
         List<AsnOrder> orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val));
-        if (orders.isEmpty()) {
+        if (!orders.isEmpty()) {
             for (AsnOrder order : orders) {
                 List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()));
+                if (orderItems.isEmpty()) {
+                    return;
+                }
+                List<WarehouseAreasItem> items = new ArrayList<>();
+                for (AsnOrderItem item : orderItems) {
+                    WarehouseAreas one = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
+                            .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type), false);
+                    Long areaId = Objects.isNull(one) ? null : one.getId();
+                    String areaName = Objects.isNull(one) ? null : one.getName();
 
+                    WarehouseAreasItem param = new WarehouseAreasItem();
+                    BeanUtils.copyProperties(item, param);
+                    param.setAreaId(one.getId())
+                            .setAsnCode(order.getCode())
+                            .setAreaId(areaId)
+                            .setAreaName(areaName)
+                            .setAsnId(order.getId());
+                    items.add(param);
+                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>().set(AsnOrderItem::getQty, item.getAnfme()).eq(AsnOrderItem::getId, item.getId()))) {
+                        throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�");
+                    }
+                }
+                if (!warehouseAreasItemService.saveBatch(items)) {
+                    throw new CoolException("鏀惰揣鍗曚繚瀛樿嚦鏀惰揣鍖烘墽琛屽け璐ワ紒锛�");
+                }
 
+                if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
+                        .set(AsnOrder::getQty, order.getQty())
+                        .set(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)
+                        .eq(AsnOrder::getId, order.getId()))) {
+                    throw new CoolException("鏀惰揣鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
+                }
             }
         }
-
     }
 
 
-
     /**
-     * @author Ryan
-     * @description  鏍规嵁PO鍗曟嵁鐢熸垚ASN鍗�,鑷姩鐢熸垚ASN鍗曚负鍏ㄩ噺鐢熸垚
-     * @throws
      * @return
+     * @throws
+     * @author Ryan
+     * @description 鏍规嵁PO鍗曟嵁鐢熸垚ASN鍗�, 鑷姩鐢熸垚ASN鍗曚负鍏ㄩ噺鐢熸垚
      * @time 2025/3/3 15:44
      */
     @Scheduled(cron = "0 0/05 * * * ?  ")
@@ -176,17 +216,17 @@
     }
 
     /**
-     * @author Ryan
-     * @description 鐢熸垚鐗╂枡鏍囩
      * @param
      * @return
+     * @author Ryan
+     * @description 鐢熸垚鐗╂枡鏍囩
      * @time 2025/3/29 12:35
      */
     @Scheduled(cron = "0 0/05 * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
     public void generateMatnrLabel() {
         List<AsnOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
-                        .isNull(AsnOrderItem::getTrackCode)
+                .isNull(AsnOrderItem::getTrackCode)
                 .select(AsnOrderItem::getId));
         if (Objects.isNull(list) || list.isEmpty()) {
             return;
@@ -208,16 +248,16 @@
     }
 
     /**
-     * @author Ryan
-     * @description 缁勬嫋鍘嗗彶妗�
      * @param
      * @return
+     * @author Ryan
+     * @description 缁勬嫋鍘嗗彶妗�
      * @time 2025/3/29 12:36
      */
     @Scheduled(cron = "0/25 * * * * ?")
     @Transactional(rollbackFor = Exception.class)
     public void pakinLog() {
-        List<WaitPakin>  pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
+        List<WaitPakin> pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getIoStatus, Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_TASK_DONE.val))
                 .select(WaitPakin::getId));
         if (pakinIds.isEmpty()) {
@@ -229,7 +269,7 @@
             throw new CoolException("缁勬嫋鍗曚负绌猴紒锛�");
         }
         List<WaitPakinLog> pakinLogs = new ArrayList<>();
-        pakins.forEach(pakin ->{
+        pakins.forEach(pakin -> {
             WaitPakinLog log = new WaitPakinLog();
             BeanUtils.copyProperties(pakin, log);
             log.setPakinId(pakin.getId()).setIoStatus(Short.parseShort("2"));
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
index 14be580..cec5a02 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
@@ -13,4 +13,6 @@
     boolean batchUpdate(IsptItemsParams params, Long loginUserId);
 
     IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper);
+
+    IPage<QlyIsptItem> pageByIsptResult(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
index cfcbd2c..f4457a3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
@@ -149,4 +149,9 @@
         }
         return page;
     }
+
+    @Override
+    public IPage<QlyIsptItem> pageByIsptResult(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper) {
+        return this.baseMapper.pageByWrapper(pageParam, queryWrapper);
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 4f9e716..426b81f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -116,7 +116,7 @@
                 TaskItem taskItem = new TaskItem();
                 BeanUtils.copyProperties(item, taskItem);
                 taskItem.setTaskId(task.getId())
-                        .setOrderType(OrderType.ORDER_RECEIPT.type)
+                        .setOrderType(OrderType.ORDER_IN.type)
                         .setSource(item.getId())
                         .setTrackCode(item.getTrackCode())
                         .setCreateBy(loginUserId)
@@ -244,7 +244,7 @@
 //                    throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�");
 //                }
                 taskItem.setTaskId(task.getId())
-                        .setOrderType(OrderType.ORDER_RECEIPT.type)
+                        .setOrderType(OrderType.ORDER_IN.type)
                         .setSource(item.getId())
                         .setTrackCode(item.getTrackCode())
                         .setCreateBy(loginUserId)

--
Gitblit v1.9.1