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