From 0d7f167b3de255a9b3343b6968132cb8ce0bfef7 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 13 九月 2024 11:03:10 +0800
Subject: [PATCH] #
---
zy-acs-framework/src/main/resources/templates/react-admin/Sql.txt | 8
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/ZoneController.java | 111 ++++++++++
zy-acs-flow/src/i18n/zh.js | 12 +
zy-acs-flow/src/page/zone/index.jsx | 18 +
zy-acs-flow/src/page/zone/ZoneCreate.jsx | 137 ++++++++++++
zy-acs-framework/src/main/resources/templates/react-admin/Controller.txt | 1
zy-acs-flow/src/page/zone/ZonePanel.jsx | 75 ++++++
zy-acs-flow/src/layout/MyMenu.jsx | 8
zy-acs-flow/src/page/menu/MenuList.jsx | 5
zy-acs-flow/src/page/zone/ZoneEdit.jsx | 109 +++++++++
zy-acs-flow/src/i18n/en.js | 12 +
zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java | 2
zy-acs-flow/src/page/ResourceContent.js | 4
zy-acs-flow/src/page/zone/ZoneList.jsx | 150 +++++++++++++
14 files changed, 644 insertions(+), 8 deletions(-)
diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index 6868ba2..aefe209 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -10,6 +10,7 @@
dataError: "Submit data was error, Please check",
},
field: {
+ id: 'ID',
uuid: 'uuid',
name: 'name',
createTime: 'create time',
@@ -84,6 +85,11 @@
tenant: 'Tenant',
role: 'Role',
userLogin: 'Token',
+ base: 'Base',
+ warehouse: 'Warehouse',
+ dispatcher: 'Dispatcher',
+ equipment: 'Equipment',
+ zone: 'Zone',
},
table: {
field: {
@@ -183,6 +189,12 @@
result: "result",
userId: "user",
},
+ zone: {
+ uuid: "uuid",
+ name: "name",
+ area: "area",
+ capacity: "capacity",
+ },
}
}
};
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index 0ce0a37..6659bc3 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -10,6 +10,7 @@
dataError: "鏁版嵁閿欒锛岃浠旂粏妫�鏌�",
},
field: {
+ id: 'ID',
uuid: '缂栧彿',
name: '鍚嶇О',
createTime: '娣诲姞鏃堕棿',
@@ -84,6 +85,11 @@
tenant: '绉熸埛绠$悊',
role: '瑙掕壊绠$悊',
userLogin: '鐧诲綍鏃ュ織',
+ base: '鍩虹妗f',
+ warehouse: '浠撳簱绠$悊',
+ dispatcher: '浠诲姟绠$悊',
+ equipment: '璁惧绠$悊',
+ zone: '搴撳尯绠$悊',
},
table: {
field: {
@@ -182,6 +188,12 @@
result: "result",
userId: "鎿嶄綔鐢ㄦ埛",
},
+ zone: {
+ uuid: "搴撳尯缂栧彿",
+ name: "搴撳尯鍚嶇О",
+ area: "闈㈢Н",
+ capacity: "瀹归噺",
+ },
}
}
};
diff --git a/zy-acs-flow/src/layout/MyMenu.jsx b/zy-acs-flow/src/layout/MyMenu.jsx
index bfbe11f..8d0ff35 100644
--- a/zy-acs-flow/src/layout/MyMenu.jsx
+++ b/zy-acs-flow/src/layout/MyMenu.jsx
@@ -12,12 +12,12 @@
import SubMenu from './SubMenu';
import SettingsIcon from '@mui/icons-material/Settings';
import DashboardIcon from '@mui/icons-material/Dashboard';
-import DehazeIcon from '@mui/icons-material/Dehaze';
+import HorizontalRuleIcon from '@mui/icons-material/HorizontalRule';
import PersonIcon from '@mui/icons-material/Person';
import * as Icons from '@mui/icons-material';
const getIconComponent = (iconStr) => {
- return Icons[iconStr] || DehazeIcon;
+ return Icons[iconStr] || HorizontalRuleIcon;
};
export const MyMenu = ({ dense = false }) => {
@@ -41,7 +41,9 @@
const getIcon = (iconStr) => {
const IconComponent = getIconComponent(iconStr);
- return <IconComponent />;
+ if (IconComponent) {
+ return <IconComponent />;
+ }
};
const generateMenu = (permissions) => {
diff --git a/zy-acs-flow/src/page/ResourceContent.js b/zy-acs-flow/src/page/ResourceContent.js
index ef34985..f361601 100644
--- a/zy-acs-flow/src/page/ResourceContent.js
+++ b/zy-acs-flow/src/page/ResourceContent.js
@@ -13,6 +13,7 @@
import menu from './menu'
import user from './user';
import operationRecord from './operationRecord';
+import zone from './zone';
const ResourceContent = (node) => {
switch (node.component) {
@@ -34,6 +35,9 @@
return user;
case 'operationRecord':
return operationRecord;
+ case 'zone':
+ return zone;
+
default:
return {
list: ListGuesser,
diff --git a/zy-acs-flow/src/page/menu/MenuList.jsx b/zy-acs-flow/src/page/menu/MenuList.jsx
index e45bd6c..8b1ed6b 100644
--- a/zy-acs-flow/src/page/menu/MenuList.jsx
+++ b/zy-acs-flow/src/page/menu/MenuList.jsx
@@ -101,6 +101,11 @@
// }
// },
{
+ id: 'id',
+ label: 'common.field.id',
+ minWidth: 80,
+ },
+ {
id: 'actions',
label: 'common.field.opt',
minWidth: 100,
diff --git a/zy-acs-flow/src/page/zone/ZoneCreate.jsx b/zy-acs-flow/src/page/zone/ZoneCreate.jsx
new file mode 100644
index 0000000..2b54ea0
--- /dev/null
+++ b/zy-acs-flow/src/page/zone/ZoneCreate.jsx
@@ -0,0 +1,137 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ CreateBase,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SaveButton,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ Toolbar,
+ required,
+ useDataProvider,
+ useNotify,
+ Form,
+ useCreateController,
+} from 'react-admin';
+import {
+ Dialog,
+ DialogActions,
+ DialogContent,
+ DialogTitle,
+ Stack,
+ Grid,
+ Box,
+} from '@mui/material';
+import DialogCloseButton from "../components/DialogCloseButton";
+import StatusSelectInput from "../components/StatusSelectInput";
+import MemoInput from "../components/MemoInput";
+
+const ZoneCreate = (props) => {
+ const { open, setOpen } = props;
+
+ const translate = useTranslate();
+ const notify = useNotify();
+
+ const handleClose = (event, reason) => {
+ if (reason !== "backdropClick") {
+ setOpen(false);
+ }
+ };
+
+ const handleSuccess = async (data) => {
+ setOpen(false);
+ notify('common.response.success');
+ };
+
+ const handleError = async (data) => {
+ notify('common.response.fail');
+ };
+
+ return (
+ <>
+ <CreateBase
+ record={{}}
+ transform={(data) => {
+ return data;
+ }}
+ mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
+ >
+ <Dialog
+ open={open}
+ onClose={handleClose}
+ aria-labelledby="form-dialog-title"
+ fullWidth
+ disableRestoreFocus
+ maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
+ >
+ <Form>
+ <DialogTitle id="form-dialog-title" sx={{
+ position: 'sticky',
+ top: 0,
+ backgroundColor: 'background.paper',
+ zIndex: 1000
+ }}
+ >
+ {translate('create.title')}
+ <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
+ <DialogCloseButton onClose={handleClose} />
+ </Box>
+ </DialogTitle>
+ <DialogContent>
+ <Grid container rowSpacing={2} columnSpacing={2}>
+ <Grid item xs={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.zone.uuid"
+ source="uuid"
+ parse={v => v}
+ autoFocus
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.zone.name"
+ source="name"
+ parse={v => v}
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <NumberInput
+ label="table.field.zone.area"
+ source="area"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <NumberInput
+ label="table.field.zone.capacity"
+ source="capacity"
+ />
+ </Grid>
+
+ <Grid item xs={6} display="flex" gap={1}>
+ <StatusSelectInput />
+ </Grid>
+ <Grid item xs={12} display="flex" gap={1}>
+ <Stack direction="column" spacing={1} width={'100%'}>
+ <MemoInput />
+ </Stack>
+ </Grid>
+ </Grid>
+ </DialogContent>
+ <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
+ <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
+ <SaveButton />
+ </Toolbar>
+ </DialogActions>
+ </Form>
+ </Dialog>
+ </CreateBase>
+ </>
+ )
+}
+
+export default ZoneCreate;
diff --git a/zy-acs-flow/src/page/zone/ZoneEdit.jsx b/zy-acs-flow/src/page/zone/ZoneEdit.jsx
new file mode 100644
index 0000000..32d7a13
--- /dev/null
+++ b/zy-acs-flow/src/page/zone/ZoneEdit.jsx
@@ -0,0 +1,109 @@
+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 } 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 ZoneEdit = () => {
+ 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}>
+ <TextInput
+ label="table.field.zone.uuid"
+ source="uuid"
+ parse={v => v}
+ autoFocus
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.zone.name"
+ source="name"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.zone.area"
+ source="area"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.zone.capacity"
+ source="capacity"
+ />
+ </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 ZoneEdit;
diff --git a/zy-acs-flow/src/page/zone/ZoneList.jsx b/zy-acs-flow/src/page/zone/ZoneList.jsx
new file mode 100644
index 0000000..c1684d3
--- /dev/null
+++ b/zy-acs-flow/src/page/zone/ZoneList.jsx
@@ -0,0 +1,150 @@
+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,
+ useListContext,
+ useCreatePath,
+ 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 ZoneCreate from "./ZoneCreate";
+import ZonePanel from "./ZonePanel";
+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 } 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 />,
+
+ <TextInput source="uuid" label="table.field.zone.uuid" />,
+ <TextInput source="name" label="table.field.zone.name" />,
+ <NumberInput source="area" label="table.field.zone.area" />,
+ <NumberInput source="capacity" label="table.field.zone.capacity" />,
+
+ <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' },
+ ]}
+ />,
+]
+
+const ZoneList = () => {
+ 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.zone"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='zone' />
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={25}
+ >
+ <StyledDatagrid
+ preferenceKey='zone'
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ expand={() => <ZonePanel />}
+ expandSingle={true}
+ omit={['id', 'createTime', 'memo']}
+ >
+ <NumberField source="id" />
+ <TextField source="uuid" label="table.field.zone.uuid" />
+ <TextField source="name" label="table.field.zone.name" />
+ <NumberField source="area" label="table.field.zone.area" />
+ <NumberField source="capacity" label="table.field.zone.capacity" />
+
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <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>
+ <ZoneCreate
+ open={createDialog}
+ setOpen={setCreateDialog}
+ />
+ <PageDrawer
+ title='Zone Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
+ )
+}
+
+export default ZoneList;
diff --git a/zy-acs-flow/src/page/zone/ZonePanel.jsx b/zy-acs-flow/src/page/zone/ZonePanel.jsx
new file mode 100644
index 0000000..9284b3f
--- /dev/null
+++ b/zy-acs-flow/src/page/zone/ZonePanel.jsx
@@ -0,0 +1,75 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
+import {
+ useTranslate,
+ useRecordContext,
+} from 'react-admin';
+import PanelTypography from "../components/PanelTypography";
+import * as Common from '@/utils/common'
+
+const ZonePanel = () => {
+ const record = useRecordContext();
+ if (!record) return null;
+ const translate = useTranslate();
+ return (
+ <>
+ <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
+ <CardContent>
+ <Grid container spacing={2}>
+ <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
+ <Typography variant="h6" gutterBottom align="left" sx={{
+ maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
+ whiteSpace: 'nowrap',
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
+ }}>
+ {Common.camelToPascalWithSpaces(translate('table.field.zone.name'))}: {record.name}
+ </Typography>
+ {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
+ <Typography variant="h6" gutterBottom align="right" >
+ ID: {record.id}
+ </Typography>
+ </Grid>
+ </Grid>
+ <Grid container spacing={2}>
+ <Grid item xs={12} container alignContent="flex-end">
+ <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
+ {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
+ </Typography>
+ </Grid>
+ </Grid>
+ <Box height={20}> </Box>
+ <Grid container spacing={2}>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.zone.uuid"
+ property={record.uuid}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.zone.name"
+ property={record.name}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.zone.area"
+ property={record.area}
+ />
+ </Grid>
+ <Grid item xs={6}>
+ <PanelTypography
+ title="table.field.zone.capacity"
+ property={record.capacity}
+ />
+ </Grid>
+
+ </Grid>
+ </CardContent>
+ </Card >
+ </>
+ );
+};
+
+export default ZonePanel;
diff --git a/zy-acs-flow/src/page/zone/index.jsx b/zy-acs-flow/src/page/zone/index.jsx
new file mode 100644
index 0000000..766bfde
--- /dev/null
+++ b/zy-acs-flow/src/page/zone/index.jsx
@@ -0,0 +1,18 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ ListGuesser,
+ EditGuesser,
+ ShowGuesser,
+} from "react-admin";
+
+import ZoneList from "./ZoneList";
+import ZoneEdit from "./ZoneEdit";
+
+export default {
+ list: ZoneList,
+ edit: ZoneEdit,
+ show: ShowGuesser,
+ recordRepresentation: (record) => {
+ return `${record.name}`
+ }
+};
diff --git a/zy-acs-framework/src/main/resources/templates/react-admin/Controller.txt b/zy-acs-framework/src/main/resources/templates/react-admin/Controller.txt
index b0c2e31..40d55ba 100644
--- a/zy-acs-framework/src/main/resources/templates/react-admin/Controller.txt
+++ b/zy-acs-framework/src/main/resources/templates/react-admin/Controller.txt
@@ -11,6 +11,7 @@
import com.zy.acs.manager.common.domain.PageParam;
import @{COMPANYNAME}.entity.@{ENTITYNAME};
import @{COMPANYNAME}.service.@{ENTITYNAME}Service;
+import com.zy.acs.manager.system.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
diff --git a/zy-acs-framework/src/main/resources/templates/react-admin/Sql.txt b/zy-acs-framework/src/main/resources/templates/react-admin/Sql.txt
index df29889..9954776 100644
--- a/zy-acs-framework/src/main/resources/templates/react-admin/Sql.txt
+++ b/zy-acs-framework/src/main/resources/templates/react-admin/Sql.txt
@@ -2,10 +2,10 @@
-- mysql
insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.@{SIMPLEENTITYNAME}', '0', '/@{ITEMNAME}/@{SIMPLEENTITYNAME}', '@{SIMPLEENTITYNAME}', '0' , '0', '1' , '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( 'Query @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( 'Create @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( 'Update @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( 'Delete @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:remove', '3', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:list', '0', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:save', '1', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:update', '2', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete @{TABLEDESC}', '', '1', '@{ITEMNAME}:@{SIMPLEENTITYNAME}:remove', '3', '1', '1');
-- locale field
@{SIMPLEENTITYNAME}: @{REACTLOCALECONTENT}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java
index 3831362..730a272 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/CodeBuilder.java
@@ -24,7 +24,7 @@
generator.table="man_zone";
generator.tableDesc="Zone";
- generator.packagePath="com.zy.acs.manager.system";
+ generator.packagePath="com.zy.acs.manager.manager";
generator.build();
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/ZoneController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/ZoneController.java
new file mode 100644
index 0000000..8a94def
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/ZoneController.java
@@ -0,0 +1,111 @@
+package com.zy.acs.manager.manager.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.framework.common.R;
+import com.zy.acs.manager.common.utils.ExcelUtil;
+import com.zy.acs.manager.common.annotation.OperationLog;
+import com.zy.acs.manager.common.domain.BaseParam;
+import com.zy.acs.manager.common.domain.KeyValVo;
+import com.zy.acs.manager.common.domain.PageParam;
+import com.zy.acs.manager.manager.entity.Zone;
+import com.zy.acs.manager.manager.service.ZoneService;
+import com.zy.acs.manager.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
+@RequestMapping("/api")
+public class ZoneController extends BaseController {
+
+ @Autowired
+ private ZoneService zoneService;
+
+ @PreAuthorize("hasAuthority('manager:zone:list')")
+ @PostMapping("/zone/page")
+ public R page(@RequestBody Map<String, Object> map) {
+ BaseParam baseParam = buildParam(map, BaseParam.class);
+ PageParam<Zone, BaseParam> pageParam = new PageParam<>(baseParam, Zone.class);
+ return R.ok().add(zoneService.page(pageParam, pageParam.buildWrapper(true)));
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:list')")
+ @PostMapping("/zone/list")
+ public R list(@RequestBody Map<String, Object> map) {
+ return R.ok().add(zoneService.list());
+ }
+
+ @PreAuthorize("hasAuthority('system:zone:list')")
+ @PostMapping({"/zone/many/{ids}", "/zones/many/{ids}"})
+ public R many(@PathVariable Long[] ids) {
+ return R.ok().add(zoneService.listByIds(Arrays.asList(ids)));
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:list')")
+ @GetMapping("/zone/{id}")
+ public R get(@PathVariable("id") Long id) {
+ return R.ok().add(zoneService.getById(id));
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:save')")
+ @OperationLog("Create Zone")
+ @PostMapping("/zone/save")
+ public R save(@RequestBody Zone zone) {
+ zone.setCreateBy(getLoginUserId());
+ zone.setCreateTime(new Date());
+ zone.setUpdateBy(getLoginUserId());
+ zone.setUpdateTime(new Date());
+ if (!zoneService.save(zone)) {
+ return R.error("Save Fail");
+ }
+ return R.ok("Save Success").add(zone);
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:update')")
+ @OperationLog("Update Zone")
+ @PostMapping("/zone/update")
+ public R update(@RequestBody Zone zone) {
+ zone.setUpdateBy(getLoginUserId());
+ zone.setUpdateTime(new Date());
+ if (!zoneService.updateById(zone)) {
+ return R.error("Update Fail");
+ }
+ return R.ok("Update Success").add(zone);
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:remove')")
+ @OperationLog("Delete Zone")
+ @PostMapping("/zone/remove/{ids}")
+ public R remove(@PathVariable Long[] ids) {
+ if (!zoneService.removeByIds(Arrays.asList(ids))) {
+ return R.error("Delete Fail");
+ }
+ return R.ok("Delete Success").add(ids);
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:list')")
+ @PostMapping("/zone/query")
+ public R query(@RequestParam(required = false) String condition) {
+ List<KeyValVo> vos = new ArrayList<>();
+ LambdaQueryWrapper<Zone> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(Zone::getName, condition);
+ }
+ zoneService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+ item -> vos.add(new KeyValVo(item.getId(), item.getName()))
+ );
+ return R.ok().add(vos);
+ }
+
+ @PreAuthorize("hasAuthority('manager:zone:list')")
+ @PostMapping("/zone/export")
+ public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+ ExcelUtil.build(ExcelUtil.create(zoneService.list(), Zone.class), response);
+ }
+
+}
--
Gitblit v1.9.1