From 8f5cdc2bae1ca3ebbe79db52b54591e8a0fb9321 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 17 四月 2025 16:25:05 +0800
Subject: [PATCH] 问题修复

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java       |   11 +
 rsf-admin/src/page/components/MyExportButton.jsx                                                 |   39 +++--
 rsf-admin/src/page/components/ConfirmButton.jsx                                                  |    2 
 rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx                                              |   69 ++++++++-
 rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx                                                   |   12 +
 rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogEdit.jsx                                   |   10 +
 rsf-admin/src/i18n/core/chineseMessages.js                                                       |    2 
 rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx                                     |   44 +++++-
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java          |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java                     |   31 +++-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java          |    2 
 rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx                                          |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java    |   27 +++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java                 |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java    |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java                  |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java              |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java |   72 ++++++++++
 rsf-admin/src/i18n/zh.js                                                                         |    2 
 rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx                                          |   27 +--
 rsf-admin/src/i18n/en.js                                                                         |    2 
 21 files changed, 297 insertions(+), 72 deletions(-)

diff --git a/rsf-admin/src/i18n/core/chineseMessages.js b/rsf-admin/src/i18n/core/chineseMessages.js
index 5cb87b2..375e8c7 100644
--- a/rsf-admin/src/i18n/core/chineseMessages.js
+++ b/rsf-admin/src/i18n/core/chineseMessages.js
@@ -23,7 +23,7 @@
       remove: "绉婚櫎",
       save: "淇濆瓨",
       search: "鎼滅储",
-      select_all: "鍏ㄩ儴閫変腑",
+      select_all_button: "鍏ㄩ儴閫変腑",
       select_row: "閫変腑涓�琛�",
       show: "鏄剧ず",
       sort: "鎺掑簭",
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 0ca7c32..6752740 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -886,6 +886,8 @@
         batch: 'batch',
         confirm: 'confirm',
         cancel: "cancel",
+        bulkExport: "Bulk Export",
+        continue: 'Continue Receipt',
         selectSite: 'Select Site',
         top: "top",
         resort: "sort",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 32fb483..d4d0bb5 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -895,8 +895,10 @@
         unenable: '绂佺敤',
         locInit: '搴撲綅鍒濆鍖�',
         siteInit: '绔欑偣鍒濆鍖�',
+        continue: '缁х画鏀惰揣',
         batch: '鎵归噺鎿嶄綔',
         confirm: '纭',
+        bulkExport: "鎵归噺瀵煎嚭",
         selectSite: '閫夋嫨绔欑偣',
         cancel: "鍙栨秷",
         top: "缃《",
diff --git a/rsf-admin/src/page/components/ConfirmButton.jsx b/rsf-admin/src/page/components/ConfirmButton.jsx
index c315e7c..446a506 100644
--- a/rsf-admin/src/page/components/ConfirmButton.jsx
+++ b/rsf-admin/src/page/components/ConfirmButton.jsx
@@ -20,7 +20,7 @@
         setOpen(false);
     };
 
-    const handleConfirm = (event) => {
+    const handleConfirm = (event) => {        
         handleClose(event);
         onConfirm();
     };
diff --git a/rsf-admin/src/page/components/MyExportButton.jsx b/rsf-admin/src/page/components/MyExportButton.jsx
index f70dced..8922271 100644
--- a/rsf-admin/src/page/components/MyExportButton.jsx
+++ b/rsf-admin/src/page/components/MyExportButton.jsx
@@ -6,12 +6,14 @@
   useDataProvider,
   useNotify,
   useListContext,
+  useUnselectAll,
 } from "react-admin";
 
 const MyExportButton = (props) => {
   const {
     maxResults = 1000,
     onClick,
+    ids,
     label = "ra.action.export",
     icon = defaultIcon,
     exporter: customExporter,
@@ -19,16 +21,18 @@
     ...rest
   } = props;
 
-  const { filter, filterValues, resource, sort, total } = useListContext();
-
+  const { filter, selectedIds, filterValues, resource, sort, total } = useListContext();
+  const unSelect = useUnselectAll(resource);
+  console.log(selectedIds);
   const dataProvider = useDataProvider();
   const notify = useNotify();
-
-  const handleClick = useCallback(
+  const handleClick = 
+  // useCallback(
     (event) => {
       dataProvider
         .export(resource, {
           sort,
+          ids: selectedIds,
           filter: filter ? { ...filterValues, ...filter } : filterValues,
           pagination: { page: 1, perPage: maxResults },
           meta,
@@ -43,6 +47,7 @@
           document.body.appendChild(link);
           link.click();
           link.remove();
+          unSelect();
         })
         .catch((error) => {
           console.error(error);
@@ -51,19 +56,19 @@
       if (typeof onClick === "function") {
         onClick(event);
       }
-    },
-    [
-      dataProvider,
-      filter,
-      filterValues,
-      maxResults,
-      notify,
-      onClick,
-      resource,
-      sort,
-      meta,
-    ],
-  );
+    }
+    // [
+    //   dataProvider,
+    //   filter,
+    //   filterValues,
+    //   maxResults,
+    //   notify,
+    //   onClick,
+    //   resource,
+    //   sort,
+    //   meta,
+    // ],
+  // );
 
   return (
     <Button
diff --git a/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx b/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx
index 3cb07de..ce29d0c 100644
--- a/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx
+++ b/rsf-admin/src/page/histories/asnOrderLog/AsnOrderLogList.jsx
@@ -31,6 +31,9 @@
     ReferenceArrayInput,
     AutocompleteInput,
     DeleteButton,
+    Button,
+    useRecordSelection,
+    useRefresh,
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
@@ -40,10 +43,11 @@
 import MyCreateButton from "../../components/MyCreateButton";
 import MyExportButton from '../../components/MyExportButton';
 import PageDrawer from "../../components/PageDrawer";
-import MyField from "../../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
 import * as Common from '@/utils/common';
-
+import request from '@/utils/request';
+import ConfirmButton from '../../components/ConfirmButton';
+import CachedIcon from '@mui/icons-material/Cached';
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
         height: '.9em'
@@ -54,7 +58,7 @@
     '& .column-name': {
     },
     '& .opt': {
-        width: 200
+        width: 150
     },
 }));
 
@@ -118,7 +122,6 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                         <SelectColumnsButton preferenceKey='asnOrderLog' />
                         <MyExportButton />
                     </TopToolbar>
@@ -127,7 +130,11 @@
             >
                 <StyledDatagrid
                     preferenceKey='asnOrderLog'
-                    bulkActionButtons={false}
+                    bulkActionButtons={
+                        <>
+                            <MyExportButton />
+                        </>
+                    }
                     rowClick={'edit'}
                     expand={false}
                     expandSingle={true}
@@ -145,12 +152,15 @@
                     <DateField source="arrTime" label="table.field.asnOrderLog.arrTime" showTime />
                     <TextField source="rleStatus$" label="table.field.asnOrderLog.rleStatus" sortable={false} />
                     <TextField source="ntyStatus$" label="table.field.asnOrderLog.ntyStatus" sortable={false} />
-                    <TextField source="updateBy$" label="common.field.updateBy"  />
+                    <TextField source="updateBy$" label="common.field.updateBy" />
                     <DateField source="updateTime" label="common.field.updateTime" showTime />
-                    <TextField source="createBy$" label="common.field.createBy"/>
+                    <TextField source="createBy$" label="common.field.createBy" />
                     <DateField source="createTime" label="common.field.createTime" showTime />
                     <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                     <TextField source="memo" label="common.field.memo" sortable={false} />
+                    <WrapperField cellClassName="opt" label="common.field.opt">
+                        <ContinueButton />
+                    </WrapperField>
                 </StyledDatagrid>
             </List>
             <AsnOrderLogCreate
@@ -168,3 +178,23 @@
 }
 
 export default AsnOrderLogList;
+
+
+const ContinueButton = () => {
+    const refresh = useRefresh();
+    const record = useRecordContext();
+    const notify = useNotify();
+    const continueReceipt = async () => {
+      const { data: { code, data, msg } } = await request.post(`/asnOrderLog/continue/${record.id}`);
+      if (code === 200) {
+        notify(msg);
+      } else {
+        notify(msg);
+      }
+      refresh();
+    }
+
+    return (
+      <ConfirmButton label={"toolbar.continue"}  startIcon={<CachedIcon />} onConfirm={continueReceipt} />
+    )
+  }
\ No newline at end of file
diff --git a/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogEdit.jsx b/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogEdit.jsx
index 958deb6..112f7f2 100644
--- a/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogEdit.jsx
+++ b/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogEdit.jsx
@@ -53,6 +53,16 @@
                 aside={<EditBaseAside />}
             >
                 <SimpleForm
+                    sx={{
+                        '& .MuiInputBase-input.MuiFilledInput-input.Mui-disabled': {
+                            bgcolor: "white",
+                            color: "black",
+                            '-webkit-text-fill-color': "rgba(0, 0, 0)"
+                        },
+                        '& .MuiFormLabel-root.MuiInputLabel-root.Mui-disabled': {
+                            color: 'rgba(0, 0, 0, 0.77)'
+                        }
+                    }}
                     shouldUnregister
                     warnWhenUnsavedChanges
                     toolbar={<FormToolbar />}
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
index d5e2a44..f8fe1fb 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
@@ -119,7 +119,7 @@
           }}
           title={"menu.asnOrderItem"}
           empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
-          filter={{ asnId: asnId }}
+          filter={{ asnId: asnId, deleted: 0 }}
           filters={filters}
           sort={{ field: "create_time", order: "desc" }}
           actions={(
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
index 1a1356a..a9c7a64 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -11,6 +11,7 @@
   CreateButton,
   ExportButton,
   BulkDeleteButton,
+  useDataProvider,
   WrapperField,
   useRecordContext,
   useTranslate,
@@ -34,6 +35,7 @@
   DeleteButton,
   Button,
   useRedirect,
+  useUnselectAll,
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
@@ -45,16 +47,15 @@
 import BillStatusField from '../../components/BillStatusField';
 import ConfirmButton from '../../components/ConfirmButton';
 import PageDrawer from "../../components/PageDrawer";
-import MyField from "../../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
 import ConstructionIcon from "@mui/icons-material/Construction";
-import FileDownloadIcon from '@mui/icons-material/FileDownload';
 import EditIcon from '@mui/icons-material/Edit';
 import TaskIcon from '@mui/icons-material/Task';
 import CloseIcon from '@mui/icons-material/Close';
 import request from '@/utils/request';
 import DictionarySelect from "../../components/DictionarySelect";
+import ExitToAppIcon from '@mui/icons-material/ExitToApp';
+
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
   '& .css-1vooibu-MuiSvgIcon-root': {
@@ -106,18 +107,18 @@
 
 ]
 
-const AsnOrderList = () => {
+const AsnOrderList = (props) => {
   const translate = useTranslate();
   const [createDialog, setCreateDialog] = useState(false);
   const [drawerVal, setDrawerVal] = useState(false);
   const [modalType, setmodalType] = useState(0);
   const [select, setSelect] = useState(0);
   const billReload = useRef();
-  const location = useLocation();
   const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
   return (
     <Box display="flex">
       <List
+        resource="asnOrder"
         sx={{
           flexGrow: 1,
           transition: (theme) =>
@@ -129,6 +130,7 @@
         title={"menu.asnOrder"}
         empty={<EmptyData onClick={() => { setCreateDialog(true); setmodalType(0) }} />}
         filters={filters}
+        filter={{deleted: 0}}
         sort={{ field: "create_time", order: "desc" }}
         actions={(
           <TopToolbar>
@@ -143,7 +145,14 @@
         <StyledDatagrid
           sx={{ width: '100%' }}
           preferenceKey='asnOrder'
-          bulkActionButtons={<> <InspectionsButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>}
+          bulkActionButtons={
+            <>
+              <InspectionsButton />
+              <MyExportButton />
+              {/* <BtnBulkExport></BtnBulkExport> */}
+              <BulkDeleteButton mutationMode={OPERATE_MODE}
+              />
+            </>}
           rowClick={false}
           expandSingle={true}
           omit={['id', 'createTime', 'createBy', 'memo', 'poId', 'rleStatus$']}
@@ -265,11 +274,56 @@
     }
   }
 
-
   return (
     <Button onClick={inspection} label={"toolbar.inspection"}>
       <ConstructionIcon />
     </Button>
+  )
+}
+
+const BtnBulkExport = () => {
+  const { filter, selectedIds, filterValues, resource, sort, total } = useListContext();
+  const refresh = useRefresh();
+  const dataProvider = useDataProvider();
+  const notify = useNotify();
+  const unSelect = useUnselectAll(resource);
+
+  const bulkExport = () => {
+    getExport()
+    unSelect();
+  }
+  const getExport = () => {
+    dataProvider
+      .export(resource, {
+        ids: selectedIds,
+        pagination: { page: 1, perPage: 1000 },
+      })
+      .then((res) => {
+        const url = window.URL.createObjectURL(
+          new Blob([res.data], { type: res.headers["content-type"] }),
+        );
+        const link = document.createElement("a");
+        link.href = url;
+        link.setAttribute("download", `${resource}.xlsx`);
+        document.body.appendChild(link);
+        link.click();
+        link.remove();
+      })
+      .catch((error) => {
+        console.error(error);
+        notify("ra.notification.http_error", { type: "error" });
+      });
+    if (typeof onClick === "function") {
+      onClick(event);
+    }
+  };
+
+  return (
+    <>
+      <Button label="toolbar.bulkExport" onClick={bulkExport}>
+        <ExitToAppIcon />
+      </Button>
+    </>
   )
 }
 
@@ -287,7 +341,6 @@
       notify(msg);
     }
   }
-
 
   return (
     record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="success">
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
index 03e1721..f9b848c 100644
--- a/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyInspectList.jsx
@@ -36,15 +36,11 @@
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
-import QlyInspectCreate from "./QlyInspectCreate";
-import QlyInspectPanel from "./QlyInspectPanel";
 import EmptyData from "../../components/EmptyData";
 import MyCreateButton from "../../components/MyCreateButton";
 import MyExportButton from '../../components/MyExportButton';
 import PageDrawer from "../../components/PageDrawer";
-import MyField from "../../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
 import ConstructionIcon from "@mui/icons-material/Construction";
 import CloseIcon from "@mui/icons-material/Close";
 import TaskIcon from '@mui/icons-material/Task';
@@ -69,6 +65,9 @@
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
+    <ReferenceInput source="isptStatus" label="table.field.qlyInspect.isptStatus" reference="dictData" filter={{ dictTypeCode: 'sys_qly_inspect_status' }} alwaysOn>
+        <AutocompleteInput source="value" optionText='label' optionValue="value" label="table.field.qlyInspect.isptStatus"></AutocompleteInput>
+    </ReferenceInput>,
     <TextInput source="code" label="table.field.qlyInspect.code" />,
     <TextInput source="wkType" label="table.field.qlyInspect.wkType" />,
     <NumberInput source="safeQty" label="table.field.qlyInspect.safeQty" />,
@@ -95,6 +94,7 @@
     return (
         <Box display="flex">
             <List
+                resource="qlyInspect"
                 sx={{
                     flexGrow: 1,
                     transition: (theme) =>
@@ -152,9 +152,9 @@
                         <InspectionButton />
                         <CompleteButton />
                         <CloseButton />
-                </WrapperField>
-            </StyledDatagrid>
-        </List>
+                    </WrapperField>
+                </StyledDatagrid>
+            </List>
             {/* <QlyInspectCreate
                 open={createDialog}
                 setOpen={setCreateDialog}
@@ -182,17 +182,16 @@
     const [createDialog, setCreateDialog] = useState(false);
 
     return (
-        <>
+        record.isptStatus != 1 && record.isptStatus != 3 ? (<>
             <Button onClick={() => setCreateDialog(true)} label={"toolbar.quality"}>
                 <ConstructionIcon />
             </Button>
-
             <InspectModal
                 open={createDialog}
                 setOpen={setCreateDialog}
                 ispectId={record.id}
             />
-        </>
+        </>) : (<></>)
     )
 }
 
@@ -202,7 +201,6 @@
     const refresh = useRefresh();
     const requestComplete = async () => {
         const { data: { code, data, msg } } = await request.post(`/qlyInspect/update`, { ...record, isptStatus: '1' });
-
         if (code === 200) {
             notify(msg);
             refresh()
@@ -211,11 +209,10 @@
         }
     }
 
-
     return (
-        <Button onClick={requestComplete} label={"toolbar.complete"} mutationMode={OPERATE_MODE}>
+        record.isptStatus != 1 && record.isptStatus != 3 ? (<Button onClick={requestComplete} label={"toolbar.complete"} mutationMode={OPERATE_MODE}>
             <TaskIcon />
-        </Button>
+        </Button>) : (<></>)
     )
 }
 
@@ -259,8 +256,6 @@
                     <AddIcon />
                 </Button>
             }
-
-
             <AsnSelModal
                 open={createDialog}
                 setOpen={setCreateDialog}
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx b/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
index 7f123d6..b1c51b6 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
@@ -42,9 +42,19 @@
                 aside={<EditBaseAside />}
             >
                 <SimpleForm
+                    sx={{
+                        '& .MuiInputBase-input.MuiFilledInput-input.Mui-disabled': {
+                            bgcolor: "white",
+                            color: "black",
+                            '-webkit-text-fill-color': "rgba(0, 0, 0)"
+                        },
+                        '& .MuiFormLabel-root.MuiInputLabel-root.Mui-disabled': {
+                            color: 'rgba(0, 0, 0, 0.77)'
+                        }
+                    }}
                     shouldUnregister
                     warnWhenUnsavedChanges
-                    toolbar={<FormToolbar />}
+                    toolbar={<></>}
                     mode="onTouched"
                     defaultValues={{}}
                 >
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 198b8f1..70b0ec2 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
@@ -224,7 +224,7 @@
         }
         //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
         Double rcptedQty = asnOrder.getQty() + receiptQty;
-        asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
+        asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
 
         if (!asnOrderMapper.updateById(asnOrder)) {
             throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
index 69e88b9..7cb5cfb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
@@ -240,17 +240,30 @@
                 String column =  Utils.toSymbolCase(field.getName(), '_');
                 columns.add(column);
             }
+//            if (!columns.isEmpty()) {
+//                for (int i=0;i<columns.size();i++){
+//                    String column = columns.get(i);
+//                    String condition = where.getCondition();
+//
+//                    if (i == 0) {
+//                        queryWrapper.and(wrapper -> wrapper.like("`" + column + "`", condition));
+//                    } else {
+//                        queryWrapper.or().like("`" + column + "`", condition);
+//                    }
+//                }
+//            }
             if (!columns.isEmpty()) {
-                for (int i=0;i<columns.size();i++){
-                    String column = columns.get(i);
-                    String condition = where.getCondition();
-
-                    if (i == 0) {
-                        queryWrapper.and(wrapper -> wrapper.like("`" + column + "`", condition));
-                    } else {
-                        queryWrapper.or().like("`" + column + "`", condition);
+                queryWrapper.and(wrapper -> {
+                    for (int i=0;i<columns.size();i++){
+                        String column = columns.get(i);
+                        String condition = where.getCondition();
+                        if (i == 0) {
+                            wrapper.or().like("`" + column + "`", condition);
+                        } else {
+                            wrapper.or().like("`" + column + "`", condition);
+                        }
                     }
-                }
+                });
             }
         }
         return queryWrapper;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
index b6458c5..84681bd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -1,5 +1,7 @@
 package com.vincent.rsf.server.manager.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
@@ -124,9 +126,14 @@
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
         List<AsnOrder> orders = new ArrayList<>();
         if (!Objects.isNull(map.get("ids"))) {
-            orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, map.get("ids")).eq(AsnOrder::getStatus, 1));
+            List<Long> ids = JSONArray.parseArray(JSONObject.toJSONString(map.get("ids")), Long.class);
+            if (!ids.isEmpty()) {
+                orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, ids));
+            } else {
+                orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>());
+            }
         } else {
-            orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().last("limit 1"));
+            orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>());
         }
         ExcelUtil.build(ExcelUtil.create(orders, AsnOrder.class), response);
     }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java
index 4c75ffd..4bd9745 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java
@@ -1,5 +1,7 @@
 package com.vincent.rsf.server.manager.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
@@ -9,9 +11,11 @@
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.KeyValVo;
 import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.manager.entity.AsnOrder;
 import com.vincent.rsf.server.manager.entity.AsnOrderLog;
 import com.vincent.rsf.server.manager.service.AsnOrderLogService;
 import com.vincent.rsf.server.system.controller.BaseController;
+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.*;
@@ -104,7 +108,28 @@
     @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
     @PostMapping("/asnOrderLog/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
-        ExcelUtil.build(ExcelUtil.create(asnOrderLogService.list(), AsnOrderLog.class), response);
+        List<AsnOrderLog> orders = new ArrayList<>();
+        if (!Objects.isNull(map.get("ids"))) {
+            List<Long> ids = JSONArray.parseArray(JSONObject.toJSONString(map.get("ids")), Long.class);
+            if (!ids.isEmpty()) {
+                orders = asnOrderLogService.list(new LambdaQueryWrapper<AsnOrderLog>().in(AsnOrderLog::getId, ids));
+            } else {
+                orders = asnOrderLogService.list(new LambdaQueryWrapper<>());
+            }
+        } else {
+            orders = asnOrderLogService.list(new LambdaQueryWrapper<>());
+        }
+        ExcelUtil.build(ExcelUtil.create(orders, AsnOrderLog.class), response);
+    }
+
+    @ApiOperation("缁х画鏀惰揣")
+    @PreAuthorize("hasAuthority('manager:asnOrderLog:update')")
+    @PostMapping("/asnOrderLog/continue/{id}")
+    public R continuRcpt(@PathVariable Long id) {
+        if (Objects.isNull(id)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return asnOrderLogService.continueRecipt(id);
     }
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java
index 767d42d..784cdfa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java
@@ -184,7 +184,6 @@
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
     @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
-    @TableLogic
     private Integer deleted;
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
index 38b863f..cc2bdf9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
@@ -41,6 +41,7 @@
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+
     @ApiModelProperty("涓诲崟ID")
     private Long asnId;
 
@@ -124,7 +125,6 @@
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
     @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
-    @TableLogic
     private Integer deleted;
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
index 51c539f..98148e4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
@@ -17,11 +17,11 @@
     ASN_EXCE_STATUS_TASK_CLOSE("4", "宸插叧闂�")
             ;
     AsnExceStatus(String val, String desc) {
-        this.val = val;
+        this.val = Short.parseShort(val);
         this.desc = desc;
     }
 
-    public String val;
+    public Short val;
     public String desc;
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java
index c66b58d..fba08e8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java
@@ -1,8 +1,10 @@
 package com.vincent.rsf.server.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.manager.entity.AsnOrderLog;
 
 public interface AsnOrderLogService extends IService<AsnOrderLog> {
 
+    R continueRecipt(Long id);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
index a607ac5..440a2b5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
@@ -1,12 +1,84 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.entity.AsnOrder;
+import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
 import com.vincent.rsf.server.manager.mapper.AsnOrderLogMapper;
 import com.vincent.rsf.server.manager.entity.AsnOrderLog;
+import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
+import com.vincent.rsf.server.manager.service.AsnOrderItemService;
 import com.vincent.rsf.server.manager.service.AsnOrderLogService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vincent.rsf.server.manager.service.AsnOrderService;
+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.ArrayList;
+import java.util.List;
+import java.util.Objects;
 
 @Service("asnOrderLogService")
 public class AsnOrderLogServiceImpl extends ServiceImpl<AsnOrderLogMapper, AsnOrderLog> implements AsnOrderLogService {
 
+    @Autowired
+    private AsnOrderItemLogService asnOrderItemLogService;
+    @Autowired
+    private AsnOrderItemService asnOrderItemService;
+    @Autowired
+    private AsnOrderService asnOrderService;
+    /**
+     * @author Ryan
+     * @description 缁х画鏀惰揣
+     * @param
+     * @return
+     * @time 2025/4/17 15:08
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R continueRecipt(Long id) {
+        AsnOrderLog orderLog = this.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getId, id));
+        if (Objects.isNull(orderLog)) {
+            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        AsnOrder order = new AsnOrder();
+        BeanUtils.copyProperties(orderLog, order);
+        order.setId(orderLog.getAsnId())
+                .setDeleted(0)
+                .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
+        if (!asnOrderService.saveOrUpdate(order)) {
+            throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒");
+        }
+        List<AsnOrderItemLog> itemLogs = asnOrderItemLogService
+                .list(new LambdaQueryWrapper<AsnOrderItemLog>()
+                .eq(AsnOrderItemLog::getLogId, id));
+        List<AsnOrderItem> orderItems = new ArrayList<>();
+        if (!Objects.isNull(itemLogs) || !itemLogs.isEmpty()) {
+            for (AsnOrderItemLog itemLog : itemLogs) {
+                AsnOrderItem item = new AsnOrderItem();
+                BeanUtils.copyProperties(itemLog, item);
+                item.setId(itemLog.getAsnItemId())
+                        .setAsnId(order.getId())
+                        .setDeleted(0);
+                orderItems.add(item);
+            }
+           if (!asnOrderItemService.saveOrUpdateBatch(orderItems)) {
+               throw new CoolException("鏄庣粏淇濆瓨澶辫触");
+           }
+        }
+        if (!this.removeById(orderLog.getId())) {
+            throw new CoolException("鍘嗗彶鍗曟嵁鍒犻櫎澶辫触锛侊紒");
+        }
+        if (!asnOrderItemLogService.remove(new LambdaQueryWrapper<AsnOrderItemLog>()
+                .eq(AsnOrderItemLog::getLogId, orderLog.getId()))) {
+            throw new CoolException("鍘嗗彶鍗曟嵁鏄庣粏鍒犻櫎澶辫触锛侊紒");
+        }
+
+        return R.ok();
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index 08d52a5..741bcda 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -258,7 +258,7 @@
         if (Objects.isNull(asrder) || Objects.isNull(asrder.getId())) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        asrder.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val));
+        asrder.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val);
 
         if (!this.updateById(asrder)) {
             throw new CoolException("鍗曟嵁鍏抽棴澶辫触锛侊紒");
@@ -272,7 +272,7 @@
 //        }
         AsnOrder order = this.getById(asrder.getId());
         AsnOrderLog orderLog = new AsnOrderLog();
-        order.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val));
+        order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
         BeanUtils.copyProperties(order, orderLog);
         orderLog.setId(null);
         orderLog.setAsnId(order.getId());
@@ -280,7 +280,7 @@
         if (!this.saveOrUpdate(order)) {
             throw new CoolException("鐘舵�佷慨鏀瑰け璐ワ紒锛�");
         }
-        orderLog.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val));
+        orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val);
         if (!asnOrderLogService.save(orderLog)) {
             throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
         }

--
Gitblit v1.9.1