From ed08477d187fe143566c9baeeef365b1eacbdfd4 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 24 七月 2025 16:36:54 +0800
Subject: [PATCH] 新增调拔单明细功能
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java | 12
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TransferItemMapper.java | 12
rsf-server/src/main/resources/mapper/manager/TransferItemMapper.xml | 5
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferItemController.java | 110 +++++
rsf-server/src/main/java/transfer.sql | 33 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java | 8
rsf-admin/src/page/orders/transfer/TransferItemEdit.jsx | 203 +++++++++
rsf-admin/src/i18n/zh.js | 22 +
rsf-admin/src/page/orders/transfer/TransferEdit.jsx | 291 ++++++-------
rsf-admin/src/page/orders/transfer/TransferItemList.jsx | 177 ++++++++
rsf-admin/src/i18n/en.js | 21 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java | 314 ++++++++++++++
rsf-server/src/main/java/transferItem.sql | 39 +
14 files changed, 1,094 insertions(+), 157 deletions(-)
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 38765d7..bd7b5ab 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -670,6 +670,27 @@
tarAreaName: "tarAreaName",
},
+ transferItem: {
+ transferId: "transferId",
+ transferCode: "transferCode",
+ matnrId: "matnrId",
+ maktx: "maktx",
+ matnrCode: "matnrCode",
+ unit: "unit",
+ anfme: "anfme",
+ qty: "qty",
+ workQty: "workQty",
+ batch: "batch",
+ splrId: "splrId",
+ spec: "spec",
+ model: "model",
+ fieldsIndex: "fieldsIndex",
+ platItemId: "platItemId",
+ platOrderCode: "platOrderCode",
+ platWorkCode: "platWorkCode",
+ projectCode: "projectCode",
+ },
+
checkDiffItem: {
checkId: "checkId",
orderCode: "orderCode",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 6211ee3..fdcbf80 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -700,6 +700,28 @@
tarAreaId: "鐩爣搴撳尯",
tarAreaName: "鐩爣搴撳尯",
},
+
+ transferItem: {
+ transferId: "璋冩嫈鍗旾D",
+ transferCode: "璋冩嫈鍗�",
+ matnrId: "鐗╂枡ID",
+ maktx: "鐗╂枡鍚嶇О",
+ matnrCode: "鐗╂枡缂栫爜",
+ unit: "鍗曚綅",
+ anfme: "鏁伴噺",
+ qty: "瀹屾垚鏁伴噺",
+ workQty: "鎵ц鏁伴噺",
+ batch: "鎵规",
+ splrId: "渚涘簲鍟�",
+ spec: "瑙勬牸",
+ model: "鍨嬪彿",
+ fieldsIndex: "瀛楁绱㈠紩",
+ platOrderCode: "瀹㈠崟鍙�",
+ platWorkCode: "宸ュ崟鍙�",
+ projectCode: "椤圭洰鍗曞彿",
+ },
+
+
checkDiffItem: {
checkId: "鐩樼偣鍗旾D",
orderCode: "鐩樼偣鍗曞彿",
diff --git a/rsf-admin/src/page/orders/transfer/TransferEdit.jsx b/rsf-admin/src/page/orders/transfer/TransferEdit.jsx
index 2cd2003..fedacf5 100644
--- a/rsf-admin/src/page/orders/transfer/TransferEdit.jsx
+++ b/rsf-admin/src/page/orders/transfer/TransferEdit.jsx
@@ -1,171 +1,152 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
+ Edit,
+ SimpleForm,
+ FormDataConsumer,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ SaveButton,
+ Toolbar,
+ Labeled,
+ NumberField,
+ required,
+ useRecordContext,
+ DeleteButton,
+} from "react-admin";
import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common.js';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting.js';
+import { Stack, Grid, Box, Typography } from "@mui/material";
+import * as Common from "@/utils/common.js";
+import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from "@/config/setting.js";
import EditBaseAside from "../../components/EditBaseAside.jsx";
import CustomerTopToolBar from "../../components/EditTopToolBar.jsx";
import MemoInput from "../../components/MemoInput.jsx";
import StatusSelectInput from "../../components/StatusSelectInput.jsx";
+import TransferItemList from "./TransferItemList.jsx";
const FormToolbar = () => {
- const { getValues } = useFormContext();
+ const { getValues } = useFormContext();
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
+ return (
+ <Toolbar sx={{ justifyContent: "space-between" }}>
+ <SaveButton />
+ <DeleteButton mutationMode="optimistic" />
+ </Toolbar>
+ );
+};
const TransferEdit = () => {
- const translate = useTranslate();
+ const translate = useTranslate();
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
+ return (
+ <>
+ <Edit
+ redirect="list"
+ mutationMode={EDIT_MODE}
+ actions={<CustomerTopToolBar />}
+ aside={<EditBaseAside />}
+ >
+ <SimpleForm
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ // validate={(values) => { }}
>
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.transfer.code"
- source="code"
- parse={v => v}
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.transfer.type"
- source="type"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <SelectInput
- label="table.field.transfer.source"
- source="source"
- choices={[
- { id: 1, name: 'ERP绯荤粺' },
- { id: 2, name: 'WMS绯荤粺鐢熸垚' },
- { id: 3, name: 'EXCEL瀵煎叆 ' },
- { id: 4, name: 'QMS绯荤粺' },
- ]}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <SelectInput
- label="table.field.transfer.exceStatus"
- source="exceStatus"
- choices={[
- { id: 0, name: '鏈墽琛�' },
- { id: 1, name: '鎵ц涓�' },
- { id: 2, name: '鎵ц瀹屾垚' },
- ]}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.transfer.orgWareId"
- source="orgWareId"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.transfer.orgWareName"
- source="orgWareName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.transfer.tarWareId"
- source="tarWareId"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.transfer.tarWareName"
- source="tarWareName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.transfer.orgAreaId"
- source="orgAreaId"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.transfer.orgAreaName"
- source="orgAreaName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.transfer.tarAreaId"
- source="tarAreaId"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.transfer.tarAreaName"
- source="tarAreaName"
- parse={v => v}
- />
- </Stack>
-
- </Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
- )
-}
+ <Grid
+ container
+ width={{ xs: "100%", xl: "80%" }}
+ rowSpacing={3}
+ columnSpacing={3}
+ >
+ <Grid item xs={12} md={8}>
+ <Typography variant="h6" gutterBottom>
+ {translate("common.edit.title.main")}
+ </Typography>
+ <Stack direction="row" gap={2}>
+ <TextInput
+ label="table.field.transfer.code"
+ source="code"
+ parse={(v) => v}
+ autoFocus
+ />
+ </Stack>
+ <Stack direction="row" gap={2}>
+ <NumberInput label="table.field.transfer.type" source="type" />
+ <SelectInput
+ label="table.field.transfer.source"
+ source="source"
+ choices={[
+ { id: 1, name: "ERP绯荤粺" },
+ { id: 2, name: "WMS绯荤粺鐢熸垚" },
+ { id: 3, name: "EXCEL瀵煎叆 " },
+ { id: 4, name: "QMS绯荤粺" },
+ ]}
+ />
+ <SelectInput
+ label="table.field.transfer.exceStatus"
+ source="exceStatus"
+ choices={[
+ { id: 0, name: "鏈墽琛�" },
+ { id: 1, name: "鎵ц涓�" },
+ { id: 2, name: "鎵ц瀹屾垚" },
+ ]}
+ />
+ </Stack>
+ <Stack direction="row" gap={2}>
+ <NumberInput
+ label="table.field.transfer.orgWareId"
+ source="orgWareId"
+ />
+ <TextInput
+ label="table.field.transfer.orgWareName"
+ source="orgWareName"
+ parse={(v) => v}
+ />
+ <NumberInput
+ label="table.field.transfer.tarWareId"
+ source="tarWareId"
+ />
+ <TextInput
+ label="table.field.transfer.tarWareName"
+ source="tarWareName"
+ parse={(v) => v}
+ />
+ </Stack>
+ <Stack direction="row" gap={2}>
+ <NumberInput
+ label="table.field.transfer.orgAreaId"
+ source="orgAreaId"
+ />
+ <TextInput
+ label="table.field.transfer.orgAreaName"
+ source="orgAreaName"
+ parse={(v) => v}
+ />
+ <NumberInput
+ label="table.field.transfer.tarAreaId"
+ source="tarAreaId"
+ />
+ <TextInput
+ label="table.field.transfer.tarAreaName"
+ source="tarAreaName"
+ parse={(v) => v}
+ />
+ </Stack>
+ </Grid>
+ </Grid>
+ </SimpleForm>
+ </Edit>
+ <TransferItemList />
+ </>
+ );
+};
export default TransferEdit;
diff --git a/rsf-admin/src/page/orders/transfer/TransferItemEdit.jsx b/rsf-admin/src/page/orders/transfer/TransferItemEdit.jsx
new file mode 100644
index 0000000..3bde7c2
--- /dev/null
+++ b/rsf-admin/src/page/orders/transfer/TransferItemEdit.jsx
@@ -0,0 +1,203 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ Edit,
+ SimpleForm,
+ FormDataConsumer,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ SaveButton,
+ Toolbar,
+ Labeled,
+ NumberField,
+ required,
+ useRecordContext,
+ DeleteButton,
+} from 'react-admin';
+import { useWatch, useFormContext } from "react-hook-form";
+import { Stack, Grid, Box, Typography } from '@mui/material';
+import * as Common from '@/utils/common';
+import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import EditBaseAside from "../../components/EditBaseAside";
+import CustomerTopToolBar from "../../components/EditTopToolBar";
+import MemoInput from "../../components/MemoInput";
+import StatusSelectInput from "../../components/StatusSelectInput";
+
+const FormToolbar = () => {
+ const { getValues } = useFormContext();
+
+ return (
+ <Toolbar sx={{ justifyContent: 'space-between' }}>
+ <SaveButton />
+ <DeleteButton mutationMode="optimistic" />
+ </Toolbar>
+ )
+}
+
+const TransferItemEdit = () => {
+ const translate = useTranslate();
+
+ return (
+ <Edit
+ redirect="list"
+ mutationMode={EDIT_MODE}
+ actions={<CustomerTopToolBar />}
+ aside={<EditBaseAside />}
+ >
+ <SimpleForm
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ // validate={(values) => { }}
+ >
+ <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={12} md={8}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.transferItem.transferId"
+ source="transferId"
+ autoFocus
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.transferCode"
+ source="transferCode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.transferItem.matnrId"
+ source="matnrId"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.maktx"
+ source="maktx"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.matnrCode"
+ source="matnrCode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.unit"
+ source="unit"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.transferItem.anfme"
+ source="anfme"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.transferItem.qty"
+ source="qty"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.transferItem.workQty"
+ source="workQty"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.batch"
+ source="batch"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.transferItem.splrId"
+ source="splrId"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.spec"
+ source="spec"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.model"
+ source="model"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.fieldsIndex"
+ source="fieldsIndex"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.platItemId"
+ source="platItemId"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.platOrderCode"
+ source="platOrderCode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.platWorkCode"
+ source="platWorkCode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.transferItem.projectCode"
+ source="projectCode"
+ parse={v => v}
+ />
+ </Stack>
+
+ </Grid>
+ <Grid item xs={12} md={4}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.common')}
+ </Typography>
+ <StatusSelectInput />
+ <Box mt="2em" />
+ <MemoInput />
+ </Grid>
+ </Grid>
+ </SimpleForm>
+ </Edit >
+ )
+}
+
+export default TransferItemEdit;
diff --git a/rsf-admin/src/page/orders/transfer/TransferItemList.jsx b/rsf-admin/src/page/orders/transfer/TransferItemList.jsx
new file mode 100644
index 0000000..db16ab8
--- /dev/null
+++ b/rsf-admin/src/page/orders/transfer/TransferItemList.jsx
@@ -0,0 +1,177 @@
+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,
+} from 'react-admin';
+import { Box, Typography, Card, Stack } from '@mui/material';
+import { styled } from '@mui/material/styles';
+import EmptyData from "../../components/EmptyData";
+import MyCreateButton from "../../components/MyCreateButton";
+import MyExportButton from '../../components/MyExportButton';
+import PageDrawer from "../../components/PageDrawer";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import * as Common from '@/utils/common';
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
+}));
+
+const filters = [
+ <SearchInput source="condition" alwaysOn />,
+ <DateInput label='common.time.after' source="timeStart" alwaysOn />,
+ <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
+ <NumberInput source="transferId" label="table.field.transferItem.transferId" />,
+ <TextInput source="transferCode" label="table.field.transferItem.transferCode" />,
+ <NumberInput source="matnrId" label="table.field.transferItem.matnrId" />,
+ <TextInput source="maktx" label="table.field.transferItem.maktx" />,
+ <TextInput source="matnrCode" label="table.field.transferItem.matnrCode" />,
+ <TextInput source="unit" label="table.field.transferItem.unit" />,
+ <NumberInput source="anfme" label="table.field.transferItem.anfme" />,
+ <NumberInput source="qty" label="table.field.transferItem.qty" />,
+ <NumberInput source="workQty" label="table.field.transferItem.workQty" />,
+ <TextInput source="batch" label="table.field.transferItem.batch" />,
+ <NumberInput source="splrId" label="table.field.transferItem.splrId" />,
+ <TextInput source="spec" label="table.field.transferItem.spec" />,
+ <TextInput source="model" label="table.field.transferItem.model" />,
+ <TextInput source="fieldsIndex" label="table.field.transferItem.fieldsIndex" />,
+ <TextInput source="platItemId" label="table.field.transferItem.platItemId" />,
+ <TextInput source="platOrderCode" label="table.field.transferItem.platOrderCode" />,
+ <TextInput source="platWorkCode" label="table.field.transferItem.platWorkCode" />,
+ <TextInput source="projectCode" label="table.field.transferItem.projectCode" />,
+ <TextInput label="common.field.memo" source="memo" />,
+ <SelectInput
+ label="common.field.status"
+ source="status"
+ choices={[
+ { id: '1', name: 'common.enums.statusTrue' },
+ { id: '0', name: 'common.enums.statusFalse' },
+ ]}
+ resettable
+ />,
+]
+
+const TransferItemList = () => {
+ const translate = useTranslate();
+
+ const [createDialog, setCreateDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
+
+ return (
+ <Box display="flex">
+ <List
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.transferItem"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='transferItem' />
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='transferItem'
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ expand={false}
+ expandSingle={false}
+ omit={['id', 'createTime', 'createBy', 'memo']}
+ >
+ <NumberField source="id" />
+ <NumberField source="transferId" label="table.field.transferItem.transferId" />
+ <TextField source="transferCode" label="table.field.transferItem.transferCode" />
+ <NumberField source="matnrId" label="table.field.transferItem.matnrId" />
+ <TextField source="maktx" label="table.field.transferItem.maktx" />
+ <TextField source="matnrCode" label="table.field.transferItem.matnrCode" />
+ <TextField source="unit" label="table.field.transferItem.unit" />
+ <NumberField source="anfme" label="table.field.transferItem.anfme" />
+ <NumberField source="qty" label="table.field.transferItem.qty" />
+ <NumberField source="workQty" label="table.field.transferItem.workQty" />
+ <TextField source="batch" label="table.field.transferItem.batch" />
+ <NumberField source="splrId" label="table.field.transferItem.splrId" />
+ <TextField source="spec" label="table.field.transferItem.spec" />
+ <TextField source="model" label="table.field.transferItem.model" />
+ <TextField source="fieldsIndex" label="table.field.transferItem.fieldsIndex" />
+ <TextField source="platItemId" label="table.field.transferItem.platItemId" />
+ <TextField source="platOrderCode" label="table.field.transferItem.platOrderCode" />
+ <TextField source="platWorkCode" label="table.field.transferItem.platWorkCode" />
+ <TextField source="projectCode" label="table.field.transferItem.projectCode" />
+
+ <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <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">
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ </WrapperField>
+ </StyledDatagrid>
+ </List>
+ <PageDrawer
+ title='TransferItem Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
+ )
+}
+
+export default TransferItemList;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
index 8c5663c..f29ee02 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
@@ -22,8 +22,8 @@
// generator.username="sa";
// generator.password="Zoneyung@zy56$";
- generator.table = "man_transfer";
- generator.tableDesc = "璋冩嫈鍗�";
+ generator.table = "man_transfer_item";
+ generator.tableDesc = "璋冩嫈鍗曟槑缁�";
generator.packagePath = "com.vincent.rsf.server.manager";
generator.build();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferItemController.java
new file mode 100644
index 0000000..d80f348
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferItemController.java
@@ -0,0 +1,110 @@
+package com.vincent.rsf.server.manager.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.common.utils.ExcelUtil;
+import com.vincent.rsf.server.common.annotation.OperationLog;
+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.TransferItem;
+import com.vincent.rsf.server.manager.service.TransferItemService;
+import com.vincent.rsf.server.system.controller.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+@RestController
+public class TransferItemController extends BaseController {
+
+ @Autowired
+ private TransferItemService transferItemService;
+
+ @PreAuthorize("hasAuthority('manager:transfer:list')")
+ @PostMapping("/transferItem/page")
+ public R page(@RequestBody Map<String, Object> map) {
+ BaseParam baseParam = buildParam(map, BaseParam.class);
+ PageParam<TransferItem, BaseParam> pageParam = new PageParam<>(baseParam, TransferItem.class);
+ return R.ok().add(transferItemService.page(pageParam, pageParam.buildWrapper(true)));
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:list')")
+ @PostMapping("/transferItem/list")
+ public R list(@RequestBody Map<String, Object> map) {
+ return R.ok().add(transferItemService.list());
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:list')")
+ @PostMapping({"/transferItem/many/{ids}", "/transferItems/many/{ids}"})
+ public R many(@PathVariable Long[] ids) {
+ return R.ok().add(transferItemService.listByIds(Arrays.asList(ids)));
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:list')")
+ @GetMapping("/transferItem/{id}")
+ public R get(@PathVariable("id") Long id) {
+ return R.ok().add(transferItemService.getById(id));
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:save')")
+ @OperationLog("Create 璋冩嫈鍗曟槑缁�")
+ @PostMapping("/transferItem/save")
+ public R save(@RequestBody TransferItem transferItem) {
+ transferItem.setCreateBy(getLoginUserId());
+ transferItem.setCreateTime(new Date());
+ transferItem.setUpdateBy(getLoginUserId());
+ transferItem.setUpdateTime(new Date());
+ if (!transferItemService.save(transferItem)) {
+ return R.error("Save Fail");
+ }
+ return R.ok("Save Success").add(transferItem);
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:update')")
+ @OperationLog("Update 璋冩嫈鍗曟槑缁�")
+ @PostMapping("/transferItem/update")
+ public R update(@RequestBody TransferItem transferItem) {
+ transferItem.setUpdateBy(getLoginUserId());
+ transferItem.setUpdateTime(new Date());
+ if (!transferItemService.updateById(transferItem)) {
+ return R.error("Update Fail");
+ }
+ return R.ok("Update Success").add(transferItem);
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:remove')")
+ @OperationLog("Delete 璋冩嫈鍗曟槑缁�")
+ @PostMapping("/transferItem/remove/{ids}")
+ public R remove(@PathVariable Long[] ids) {
+ if (!transferItemService.removeByIds(Arrays.asList(ids))) {
+ return R.error("Delete Fail");
+ }
+ return R.ok("Delete Success").add(ids);
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:list')")
+ @PostMapping("/transferItem/query")
+ public R query(@RequestParam(required = false) String condition) {
+ List<KeyValVo> vos = new ArrayList<>();
+ LambdaQueryWrapper<TransferItem> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(TransferItem::getId, condition);
+ }
+ transferItemService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+ item -> vos.add(new KeyValVo(item.getId(), item.getId()))
+ );
+ return R.ok().add(vos);
+ }
+
+ @PreAuthorize("hasAuthority('manager:transfer:list')")
+ @PostMapping("/transferItem/export")
+ public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+ ExcelUtil.build(ExcelUtil.create(transferItemService.list(), TransferItem.class), response);
+ }
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java
new file mode 100644
index 0000000..e9127c3
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java
@@ -0,0 +1,314 @@
+package com.vincent.rsf.server.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.SpringUtils;
+import com.vincent.rsf.server.system.service.UserService;
+import com.vincent.rsf.server.system.entity.User;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("man_transfer_item")
+public class TransferItem implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value= "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 璋冩嫈鍗旾D
+ */
+ @ApiModelProperty(value= "璋冩嫈鍗旾D")
+ private Long transferId;
+
+ /**
+ * 璋冩嫈鍗曞彿
+ */
+ @ApiModelProperty(value= "璋冩嫈鍗曞彿")
+ private String transferCode;
+
+ /**
+ * 鐗╂枡ID
+ */
+ @ApiModelProperty(value= "鐗╂枡ID")
+ private Long matnrId;
+
+ /**
+ * 鐗╂枡鍚嶇О
+ */
+ @ApiModelProperty(value= "鐗╂枡鍚嶇О")
+ private String maktx;
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ @ApiModelProperty(value= "鐗╂枡缂栫爜")
+ private String matnrCode;
+
+ /**
+ * 搴撳瓨鍗曚綅
+ */
+ @ApiModelProperty(value= "搴撳瓨鍗曚綅")
+ private String unit;
+
+ /**
+ * 鏁伴噺
+ */
+ @ApiModelProperty(value= "鏁伴噺")
+ private Double anfme;
+
+ /**
+ * 瀹屾垚鏁伴噺
+ */
+ @ApiModelProperty(value= "瀹屾垚鏁伴噺")
+ private Double qty;
+
+ /**
+ * 鎵ц鏁伴噺
+ */
+ @ApiModelProperty(value= "鎵ц鏁伴噺 ")
+ private Double workQty;
+
+ /**
+ * 渚涘簲鍟嗘壒娆�
+ */
+ @ApiModelProperty(value= "渚涘簲鍟嗘壒娆�")
+ private String batch;
+
+ /**
+ * 渚涘簲鍟咺D
+ */
+ @ApiModelProperty(value= "渚涘簲鍟咺D")
+ private Long splrId;
+
+ /**
+ * 瑙勬牸
+ */
+ @ApiModelProperty(value= "瑙勬牸")
+ private String spec;
+
+ /**
+ * 鍨嬪彿
+ */
+ @ApiModelProperty(value= "鍨嬪彿")
+ private String model;
+
+ /**
+ * 瀛楁绱㈠紩
+ */
+ @ApiModelProperty(value= "瀛楁绱㈠紩")
+ private String fieldsIndex;
+
+ /**
+ * 骞冲彴ID(琛屽彿)
+ */
+ @ApiModelProperty(value= "骞冲彴ID(琛屽彿)")
+ private String platItemId;
+
+ /**
+ * 瀹㈡埛璁㈠崟鍙�
+ */
+ @ApiModelProperty(value= "瀹㈡埛璁㈠崟鍙�")
+ private String platOrderCode;
+
+ /**
+ * 宸ュ崟鍙�
+ */
+ @ApiModelProperty(value= "宸ュ崟鍙�")
+ private String platWorkCode;
+
+ /**
+ * 椤圭洰鍙�
+ */
+ @ApiModelProperty(value= "椤圭洰鍙�")
+ private String projectCode;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 鍐荤粨
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ")
+ private Integer status;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ @TableLogic
+ private Integer deleted;
+
+ /**
+ * 绉熸埛
+ */
+ @ApiModelProperty(value= "绉熸埛")
+ private Integer tenantId;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ private Long createBy;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ private Long updateBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public TransferItem() {}
+
+ public TransferItem(Long transferId,String transferCode,Long matnrId,String maktx,String matnrCode,String unit,Double anfme,Double qty,Double workQty,String batch,Long splrId,String spec,String model,String fieldsIndex,String platItemId,String platOrderCode,String platWorkCode,String projectCode,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+ this.transferId = transferId;
+ this.transferCode = transferCode;
+ this.matnrId = matnrId;
+ this.maktx = maktx;
+ this.matnrCode = matnrCode;
+ this.unit = unit;
+ this.anfme = anfme;
+ this.qty = qty;
+ this.workQty = workQty;
+ this.batch = batch;
+ this.splrId = splrId;
+ this.spec = spec;
+ this.model = model;
+ this.fieldsIndex = fieldsIndex;
+ this.platItemId = platItemId;
+ this.platOrderCode = platOrderCode;
+ this.platWorkCode = platWorkCode;
+ this.projectCode = projectCode;
+ this.status = status;
+ this.deleted = deleted;
+ this.tenantId = tenantId;
+ this.createBy = createBy;
+ this.createTime = createTime;
+ this.updateBy = updateBy;
+ this.updateTime = updateTime;
+ this.memo = memo;
+ }
+
+// TransferItem transferItem = new TransferItem(
+// null, // 璋冩嫈鍗旾D
+// null, // 璋冩嫈鍗曞彿
+// null, // 鐗╂枡ID
+// null, // 鐗╂枡鍚嶇О
+// null, // 鐗╂枡缂栫爜
+// null, // 搴撳瓨鍗曚綅
+// null, // 鏁伴噺
+// null, // 瀹屾垚鏁伴噺
+// null, // 鎵ц鏁伴噺
+// null, // 渚涘簲鍟嗘壒娆�
+// null, // 渚涘簲鍟咺D
+// null, // 瑙勬牸
+// null, // 鍨嬪彿
+// null, // 瀛楁绱㈠紩
+// null, // 骞冲彴ID(琛屽彿)
+// null, // 瀹㈡埛璁㈠崟鍙�
+// null, // 宸ュ崟鍙�
+// null, // 椤圭洰鍙�
+// null, // 鐘舵�乕闈炵┖]
+// null, // 鏄惁鍒犻櫎[闈炵┖]
+// null, // 绉熸埛
+// null, // 娣诲姞浜哄憳
+// null, // 娣诲姞鏃堕棿[闈炵┖]
+// null, // 淇敼浜哄憳
+// null, // 淇敼鏃堕棿[闈炵┖]
+// null // 澶囨敞
+// );
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "鍐荤粨";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getCreateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.createBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.updateBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+
+
+ public Boolean getStatusBool(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return true;
+ case 0:
+ return false;
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TransferItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TransferItemMapper.java
new file mode 100644
index 0000000..6b4f93b
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/TransferItemMapper.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.server.manager.mapper;
+
+import com.vincent.rsf.server.manager.entity.TransferItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface TransferItemMapper extends BaseMapper<TransferItem> {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java
new file mode 100644
index 0000000..b61038a
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java
@@ -0,0 +1,8 @@
+package com.vincent.rsf.server.manager.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.server.manager.entity.TransferItem;
+
+public interface TransferItemService extends IService<TransferItem> {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java
new file mode 100644
index 0000000..094d00f
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.server.manager.service.impl;
+
+import com.vincent.rsf.server.manager.mapper.TransferItemMapper;
+import com.vincent.rsf.server.manager.entity.TransferItem;
+import com.vincent.rsf.server.manager.service.TransferItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("transferItemService")
+public class TransferItemServiceImpl extends ServiceImpl<TransferItemMapper, TransferItem> implements TransferItemService {
+
+}
diff --git a/rsf-server/src/main/java/transfer.sql b/rsf-server/src/main/java/transfer.sql
new file mode 100644
index 0000000..7c640b1
--- /dev/null
+++ b/rsf-server/src/main/java/transfer.sql
@@ -0,0 +1,33 @@
+-- save transfer record
+-- mysql
+insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.transfer', '0', '/manager/transfer', 'transfer', '0' , '0', '1' , '1');
+
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 璋冩嫈鍗�', '', '1', 'manager:transfer:list', '0', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 璋冩嫈鍗�', '', '1', 'manager:transfer:save', '1', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 璋冩嫈鍗�', '', '1', 'manager:transfer:update', '2', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 璋冩嫈鍗�', '', '1', 'manager:transfer:remove', '3', '1', '1');
+
+-- locale menu name
+transfer: 'Transfer',
+
+-- locale field
+transfer: {
+ code: "code",
+ type: "type",
+ source: "source",
+ exceStatus: "exceStatus",
+ orgWareId: "orgWareId",
+ orgWareName: "orgWareName",
+ tarWareId: "tarWareId",
+ tarWareName: "tarWareName",
+ orgAreaId: "orgAreaId",
+ orgAreaName: "orgAreaName",
+ tarAreaId: "tarAreaId",
+ tarAreaName: "tarAreaName",
+},
+
+-- ResourceContent
+import transfer from './transfer';
+
+case 'transfer':
+ return transfer;
diff --git a/rsf-server/src/main/java/transferItem.sql b/rsf-server/src/main/java/transferItem.sql
new file mode 100644
index 0000000..5749b2e
--- /dev/null
+++ b/rsf-server/src/main/java/transferItem.sql
@@ -0,0 +1,39 @@
+-- save transferItem record
+-- mysql
+insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.transferItem', '0', '/manager/transferItem', 'transferItem', '0' , '0', '1' , '1');
+
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 璋冩嫈鍗曟槑缁�', '', '1', 'manager:transferItem:list', '0', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 璋冩嫈鍗曟槑缁�', '', '1', 'manager:transferItem:save', '1', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 璋冩嫈鍗曟槑缁�', '', '1', 'manager:transferItem:update', '2', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 璋冩嫈鍗曟槑缁�', '', '1', 'manager:transferItem:remove', '3', '1', '1');
+
+-- locale menu name
+transferItem: 'TransferItem',
+
+-- locale field
+transferItem: {
+ transferId: "transferId",
+ transferCode: "transferCode",
+ matnrId: "matnrId",
+ maktx: "maktx",
+ matnrCode: "matnrCode",
+ unit: "unit",
+ anfme: "anfme",
+ qty: "qty",
+ workQty: "workQty",
+ batch: "batch",
+ splrId: "splrId",
+ spec: "spec",
+ model: "model",
+ fieldsIndex: "fieldsIndex",
+ platItemId: "platItemId",
+ platOrderCode: "platOrderCode",
+ platWorkCode: "platWorkCode",
+ projectCode: "projectCode",
+},
+
+-- ResourceContent
+import transferItem from './transferItem';
+
+case 'transferItem':
+ return transferItem;
diff --git a/rsf-server/src/main/resources/mapper/manager/TransferItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/TransferItemMapper.xml
new file mode 100644
index 0000000..3080ac0
--- /dev/null
+++ b/rsf-server/src/main/resources/mapper/manager/TransferItemMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vincent.rsf.server.manager.mapper.TransferItemMapper">
+
+</mapper>
--
Gitblit v1.9.1