From 3e36f73770677e756826df1b5824c8e89769659c Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 23 七月 2025 15:27:10 +0800
Subject: [PATCH] 盘点功能优化

---
 rsf-admin/src/page/orders/check/SelectMatnrModal.jsx                              |   24 ++
 rsf-admin/src/page/orders/check/CheckOrderPub.jsx                                 |  192 -----------------------
 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java |    2 
 rsf-admin/src/page/orders/check/CheckOrderModal.jsx                               |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java       |   10 
 rsf-admin/src/i18n/zh.js                                                          |    1 
 rsf-admin/src/i18n/en.js                                                          |    1 
 rsf-admin/src/page/orders/check/CheckPreviewTable.jsx                             |  204 +++++++++++++++++++++++++
 rsf-admin/src/page/orders/check/CheckOrderList.jsx                                |   15 +
 9 files changed, 246 insertions(+), 205 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 0bc7bb3..e81adc6 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -1207,6 +1207,7 @@
         check: 'Check',
         confirm: 'confirm',
         cancel: "cancel",
+        delete: 'Delete',
         query: "Query",
         bulkExport: "Bulk Export",
         continue: 'Continue Receipt',
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 6137fab..8aaa64e 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -1221,6 +1221,7 @@
         selectSite: '閫夋嫨绔欑偣',
         confirmSelect: '纭閫夋嫨',
         cancel: "鍙栨秷",
+        delete: '鍒犻櫎',
         query: "鏌ヨ",
         top: "缃《",
         resort: "鎺掑簭",
diff --git a/rsf-admin/src/page/orders/check/CheckOrderList.jsx b/rsf-admin/src/page/orders/check/CheckOrderList.jsx
index d6945e1..766d057 100644
--- a/rsf-admin/src/page/orders/check/CheckOrderList.jsx
+++ b/rsf-admin/src/page/orders/check/CheckOrderList.jsx
@@ -24,7 +24,7 @@
   ReferenceInput,
   AutocompleteInput,
   Button,
-  BulkDeleteButton, 
+  BulkDeleteButton,
   useRedirect,
 } from 'react-admin';
 import { styled } from '@mui/material/styles';
@@ -73,7 +73,7 @@
     <AutocompleteInput label="table.field.checkOrder.type" optionValue="value" />
   </ReferenceInput>,
   <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_check_order_type' }} label="table.field.checkOrder.checkType" alwaysOn>
-    <AutocompleteInput label="table.field.checkOrder.checkType" optionValue="value"/>
+    <AutocompleteInput label="table.field.checkOrder.checkType" optionValue="value" />
   </ReferenceInput>,
   <TextInput source="logisNo" label="table.field.checkOrder.logisNo" />,
   <DateInput source="arrTime" label="table.field.checkOrder.arrTime" />,
@@ -141,15 +141,16 @@
       >
         <StyledDatagrid
           preferenceKey='check'
-          bulkActionButtons={() => <BulkDeleteButton mutationMode="pessimistic"/>}
+          bulkActionButtons={() => <BulkDeleteButton mutationMode="pessimistic" />}
           rowClick={false}
           expandSingle={true}
           omit={['id', 'createTime', 'createBy', 'memo', 'rleStatus$']}
         >
           <NumberField source="id" />
           <TextField source="code" label="table.field.checkOrder.code" />
-          <TextField source="type$" label="table.field.checkOrder.type" />
-          <TextField cellClassName="wkType" source="checkType$" label="table.field.checkOrder.checkType" />
+          {/* <TextField source="type$" label="table.field.checkOrder.type" /> */}
+          <TextField cellClassName="wkType" source="wkType$" label="table.field.checkOrder.type" />
+          <TextField  source="checkType$" label="table.field.checkOrder.checkType" />
           <NumberField source="anfme" label="table.field.checkOrder.anfme" />
           <NumberField source="workQty" label="table.field.checkOrder.workQty" />
           <NumberField source="qty" label="table.field.checkOrder.qty" />
@@ -181,8 +182,8 @@
         drawerVal={drawerVal}
         setDrawerVal={setDrawerVal}
       >
-        <CheckOrderPub record={select} open={drawerVal} setOpen={setDrawerVal}  />
-      </PageEditDrawer> 
+        <CheckOrderPub record={select} open={drawerVal} setOpen={setDrawerVal} />
+      </PageEditDrawer>
     </Box >
   )
 }
diff --git a/rsf-admin/src/page/orders/check/CheckOrderModal.jsx b/rsf-admin/src/page/orders/check/CheckOrderModal.jsx
index 2136fbb..98089a6 100644
--- a/rsf-admin/src/page/orders/check/CheckOrderModal.jsx
+++ b/rsf-admin/src/page/orders/check/CheckOrderModal.jsx
@@ -1,4 +1,4 @@
-import { Dialog, DialogActions, DialogContent, DialogTitle, Box, LinearProgress } from "@mui/material";
+import { Dialog, DialogActions, DialogContent, DialogTitle, Box, TextField ,LinearProgress } from "@mui/material";
 import React, { useState, useRef, useEffect, useMemo } from "react";
 import {
     List,
diff --git a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
index 1a0c75a..1947840 100644
--- a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
+++ b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -15,6 +15,7 @@
     Form,
     useRefresh,
     useRedirect,
+    TextInput,
 } from 'react-admin';
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE, DEFAULT_TYPE } from '@/config/setting';
 import { styled } from '@mui/material/styles';
@@ -25,7 +26,7 @@
 import ConfirmButton from '../../components/ConfirmButton';
 import { Delete, Edit, Add } from '@mui/icons-material';
 import CheckOrderSiteDialog from "./CheckOrderSiteDialog";
-import { map } from "lodash";
+import CheckPreviewTable from "./CheckPreviewTable";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -37,12 +38,7 @@
     '& .column-maktx': {
         width: 200
     },
-
     mt: '60px'
-    // '& .RaBulkActionsToolbar-toolbar': {
-    //     display: 'none'
-    // }
-
 }));
 
 const CheckOrderPub = (props) => {
@@ -73,8 +69,6 @@
     const getLocs = async (ids) => {
         const { data: { code, data, msg } } = await request.post('/check/locs/' + ids);
         if (code === 200) {
-            console.log('----->');
-            console.log(data);
             setRows(data)
             const matnrs = selectedMatnr.filter(item => data.some(bigData => bigData.matnrCode === item));
             // setSelectedMatnr(matnrs)
@@ -213,7 +207,7 @@
                     <Grid item xl={6.3} gap={2}>
                         <Card sx={{ minHeight: 1050, height: 'calc(100% - 10px)', width: '100%' }}>
                             <Box>
-                                <PreviewTable
+                                <CheckPreviewTable
                                     rows={rows}
                                     gridRef={gridRef}
                                     setRows={setRows}
@@ -242,186 +236,6 @@
         </>
     );
 }
-
-const PreviewTable = ({ rows, gridRef, setRows, record, selectedIds, setSelectedIds, setDialog, formData }) => {
-    gridRef.current = useGridApiRef();
-    const translate = useTranslate();
-
-    useEffect(() => {
-        if (selectedIds.length > 0) {
-            console.log(selectedIds);
-        }
-    }, [selectedIds])
-
-    const baseColumns = [
-        { field: 'locCode', headerName: '搴撲綅', width: 110 },
-        { field: 'barcode', headerName: '瀹瑰櫒', width: 120 },
-        { field: 'matnrCode', headerName: '鐗╂枡缂栫爜', width: 120 },
-        { field: 'batch', headerName: '鎵规', width: 90 },
-        { field: 'unit', headerName: '鍗曚綅', width: 60 },
-        {
-            field: 'anfme', headerName: '搴撳瓨鏁伴噺', width: 110,
-            renderCell: (params) => (
-                <OutStockAnfme value={params.value} />
-            )
-        },
-        {
-            field: 'siteNo',
-            headerName: '鍑哄簱鍙�',
-            width: 90,
-            type: 'singleSelect',
-            editable: true,
-            renderCell: (params) => (
-                <OutStockSiteNo value={params.value} />
-            ),
-            renderEditCell: (params) => (
-                <OutStockSite {...params} />
-            ),
-        },
-    ]
-
-    const optAction = {
-        field: 'actions',
-        type: 'actions',
-        headerName: translate('common.field.opt'),
-        with: 120,
-        getActions: (params) => [
-            <GridActionsCellItem
-                icon={<Delete />}
-                label="Delete"
-                onClick={() => handleDelete(params.row, rows, setRows)}
-            />,
-        ]
-    }
-
-    const columns = (formData.waveId == 15 || formData.waveId == 16) ? [...baseColumns] : [...baseColumns, optAction];
-
-    /**
-     * 鍒犻櫎浜嬩欢
-     * @param {*} params 
-     */
-    const handleDelete = (params, rows, setRows) => {
-        const outRows = rows.filter(row => {
-            return row.id !== params.id
-        })
-        setRows(outRows)
-    }
-
-    const OutStockAnfme = React.memo(function OutStockAnfme(props) {
-        const { value } = props;
-        return (
-            value > 0 ?
-                <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
-                    <span>{value}</span>
-                </Box>
-                :
-                <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
-                    <span style={{ color: 'red' }}>{translate('common.edit.title.insuffInventory')}</span>
-                </Box>
-        );
-    });
-
-    const OutStockSiteNo = React.memo(function OutStockSiteNo(props) {
-        const { value } = props;
-        if (!value) {
-            return null;
-        }
-        return (
-            <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
-                <span>{value}</span>
-            </Box>
-        );
-    });
-
-    const CustomToolBar = () => {
-        const selectSiteNo = () => {
-            setDialog(true)
-        }
-        return (
-            <Box sx={{
-                p: 1,
-                display: 'flex',
-                justifyContent: 'flex-end',
-                borderTop: '1px solid rgba(224, 224, 224, 1)'
-            }}>
-                <Button
-                    onClick={selectSiteNo}
-                    variant="outlined"
-                    label="toolbar.modiftySite"
-                    size="medium"
-                    sx={{ mr: 1 }} />
-            </Box>
-        );
-    }
-
-    const OutStockSite = (params) => {
-        const { id, field, siteNo, row: { staNos } } = params;
-        const apiRef = useGridApiContext();
-        const handleChange = async (event) => {
-            await apiRef.current.setEditCellValue(
-                { id, field, value: event.target.value },
-                event,
-            );
-            apiRef.current.stopCellEditMode({ id, field });
-        };
-
-        const handleClose = (event, reason) => {
-            if (reason === 'backdropClick') {
-                apiRef.current.stopCellEditMode({ id, field });
-            }
-        };
-
-        return (
-            <Select
-                value={siteNo}
-                onChange={handleChange}
-                MenuProps={{
-                    onClose: handleClose,
-                }}
-                sx={{
-                    height: '100%',
-                    '& .MuiSelect-select': {
-                        display: 'flex',
-                        alignItems: 'center',
-                        pl: 1,
-                    },
-                }}
-                autoFocus
-                fullWidth
-                open
-            >
-                {staNos.map((option) => {
-                    return (
-                        <MenuItem
-                            key={option}
-                            value={option.staNo}
-                        >
-                            <ListItemText sx={{ overflow: 'hidden' }} primary={option.staNo} />
-                        </MenuItem>
-                    );
-                })}
-            </Select >
-        )
-    }
-
-    return (
-        <DataGrid
-            storeKey={"locItemPreview"}
-            rows={rows}
-            columns={columns}
-            slots={{ toolbar: CustomToolBar }}
-            apiRef={gridRef}
-            checkboxSelection
-            disableRowSelectionOnClick
-            hideFooterPagination={true}  // 闅愯棌鍒嗛〉鎺т欢
-            hideFooter={false}
-            onRowSelectionModelChange={(ids) => {
-                setSelectedIds(ids)
-            }}
-        />
-    )
-}
-
 
 //鎻愪氦鎸夐挳
 const SubmitButton = ({ selectedIds, setSelectedIds, rowSelectedIds, gridRef, record, setOpen, selectedMatnr }) => {
diff --git a/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx b/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
new file mode 100644
index 0000000..3fee942
--- /dev/null
+++ b/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
@@ -0,0 +1,204 @@
+
+import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText } from "@mui/material";
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import { DataGrid, useGridApiContext, GridActionsCellItem, useGridApiRef } from '@mui/x-data-grid';
+import {
+    List,
+    Button,
+    useTranslate,
+    useNotify,
+    useListContext,
+    NumberField,
+    ReferenceInput,
+    AutocompleteInput,
+    required,
+    Form,
+    useRefresh,
+    useRedirect,
+    TextInput,
+} from 'react-admin';
+
+const CheckPreviewTable = (props) => {
+    const { rows, gridRef, setRows, record, selectedIds, setSelectedIds, setDialog, formData } = props;
+    // const translate = useTranslate();
+    // const refresh = useRefresh();
+    // const notify = useNotify();
+    gridRef.current = useGridApiRef();
+    const translate = useTranslate();
+
+    useEffect(() => {
+        if (selectedIds.length > 0) {
+            console.log(selectedIds);
+        }
+    }, [selectedIds])
+
+    const baseColumns = [
+        { field: 'locCode', headerName: '搴撲綅', width: 110 },
+        { field: 'barcode', headerName: '瀹瑰櫒', width: 120 },
+        { field: 'matnrCode', headerName: '鐗╂枡缂栫爜', width: 120 },
+        { field: 'batch', headerName: '鎵规', width: 90 },
+        { field: 'unit', headerName: '鍗曚綅', width: 60 },
+        {
+            field: 'anfme', headerName: '搴撳瓨鏁伴噺', width: 110,
+            renderCell: (params) => (
+                <OutStockAnfme value={params.value} />
+            )
+        },
+        {
+            field: 'siteNo',
+            headerName: '鍑哄簱鍙�',
+            width: 90,
+            type: 'singleSelect',
+            editable: true,
+            renderCell: (params) => (
+                <OutStockSiteNo value={params.value} />
+            ),
+            renderEditCell: (params) => (
+                <OutStockSite {...params} />
+            ),
+        },
+    ]
+
+    const optAction = {
+        field: 'actions',
+        type: 'actions',
+        headerName: translate('common.field.opt'),
+        with: 120,
+        getActions: (params) => [
+            <GridActionsCellItem
+                icon={<Delete />}
+                label="Delete"
+                onClick={() => handleDelete(params.row, rows, setRows)}
+            />,
+        ]
+    }
+
+    const columns = (formData.waveId == 15 || formData.waveId == 16) ? [...baseColumns] : [...baseColumns, optAction];
+
+    /**
+     * 鍒犻櫎浜嬩欢
+     * @param {*} params 
+     */
+    const handleDelete = (params, rows, setRows) => {
+        const outRows = rows.filter(row => {
+            return row.id !== params.id
+        })
+        setRows(outRows)
+    }
+
+    const OutStockAnfme = React.memo(function OutStockAnfme(props) {
+        const { value } = props;
+        return (
+            value > 0 ?
+                <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
+                    <span>{value}</span>
+                </Box>
+                :
+                <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
+                    <span style={{ color: 'red' }}>{translate('common.edit.title.insuffInventory')}</span>
+                </Box>
+        );
+    });
+
+    const OutStockSiteNo = React.memo(function OutStockSiteNo(props) {
+        const { value } = props;
+        if (!value) {
+            return null;
+        }
+        return (
+            <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
+                <span>{value}</span>
+            </Box>
+        );
+    });
+
+    const CustomToolBar = () => {
+        const selectSiteNo = () => {
+            setDialog(true)
+        }
+        return (
+            <Box sx={{
+                p: 1,
+                display: 'flex',
+                justifyContent: 'flex-end',
+                borderTop: '1px solid rgba(224, 224, 224, 1)'
+            }}>
+                <Button
+                    onClick={selectSiteNo}
+                    variant="outlined"
+                    label="toolbar.modiftySite"
+                    size="medium"
+                    sx={{ mr: 1 }} />
+            </Box>
+        );
+    }
+
+    const OutStockSite = (params) => {
+        const { id, field, siteNo, row: { staNos } } = params;
+        const apiRef = useGridApiContext();
+        const handleChange = async (event) => {
+            await apiRef.current.setEditCellValue(
+                { id, field, value: event.target.value },
+                event,
+            );
+            apiRef.current.stopCellEditMode({ id, field });
+        };
+
+        const handleClose = (event, reason) => {
+            if (reason === 'backdropClick') {
+                apiRef.current.stopCellEditMode({ id, field });
+            }
+        };
+
+        return (
+            <Select
+                value={siteNo}
+                onChange={handleChange}
+                MenuProps={{
+                    onClose: handleClose,
+                }}
+                sx={{
+                    height: '100%',
+                    '& .MuiSelect-select': {
+                        display: 'flex',
+                        alignItems: 'center',
+                        pl: 1,
+                    },
+                }}
+                autoFocus
+                fullWidth
+                open
+            >
+                {staNos.map((option) => {
+                    return (
+                        <MenuItem
+                            key={option}
+                            value={option.staNo}
+                        >
+                            <ListItemText sx={{ overflow: 'hidden' }} primary={option.staNo} />
+                        </MenuItem>
+                    );
+                })}
+            </Select >
+        )
+    }
+
+    return (
+        <DataGrid
+            storeKey={"locItemPreview"}
+            rows={rows}
+            columns={columns}
+            slots={{ toolbar: CustomToolBar }}
+            apiRef={gridRef}
+            checkboxSelection
+            disableRowSelectionOnClick
+            hideFooterPagination={true}  // 闅愯棌鍒嗛〉鎺т欢
+            hideFooter={false}
+            onRowSelectionModelChange={(ids) => {
+                setSelectedIds(ids)
+            }}
+        />
+    )
+}
+
+export default CheckPreviewTable;
diff --git a/rsf-admin/src/page/orders/check/SelectMatnrModal.jsx b/rsf-admin/src/page/orders/check/SelectMatnrModal.jsx
index fae5476..b91f92f 100644
--- a/rsf-admin/src/page/orders/check/SelectMatnrModal.jsx
+++ b/rsf-admin/src/page/orders/check/SelectMatnrModal.jsx
@@ -83,7 +83,8 @@
 
     const [formData, setFormData] = useState({
         type: '',
-        wkType: '',
+        wkType: '7',
+        checkType: '0',
         poCode: '',
         logisNo: '',
         arrTime: ''
@@ -101,7 +102,8 @@
     const resetData = () => {
         setFormData({
             type: '',
-            wkType: '',
+            wkType: '7',
+            checkType: '0',
             poCode: '',
             logisNo: '',
             arrTime: ''
@@ -217,11 +219,21 @@
                             <Grid container spacing={2}>
                                 <Grid item md={2}>
                                     <DictSelect
-                                        label={translate("table.field.checkOrder.checkType")}
+                                        label={translate("table.field.checkOrder.type")}
                                         value={formData.wkType}
                                         variant="filled"
                                         onChange={(e) => handleChange(e.target.value, 'wkType')}
                                         dictTypeCode="sys_check_order_type"
+                                        required
+                                    />
+                                </Grid>
+                                <Grid item md={2}>
+                                    <DictSelect
+                                        label={translate("table.field.checkOrder.checkType")}
+                                        value={formData.checkType}
+                                        variant="filled"
+                                        onChange={(e) => handleChange(e.target.value, 'checkType')}
+                                        dictTypeCode="sys_check_type"
                                         required
                                     />
                                 </Grid>
@@ -240,8 +252,10 @@
                     </Box>
                     <Box sx={{ mt: 2 }}>
                         <Stack direction="row" spacing={2}>
-                            <Button variant="contained" onClick={() => setCreateDialog(true)}>鏂板鐗╂枡</Button>
-                            <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} />
+                            <Button variant="contained" onClick={() => setCreateDialog(true)} >
+                                {translate('common.action.newAddMats')}
+                            </Button>
+                            <ConfirmButton label={"toolbar.delete"} variant="outlined" color="error" onConfirm={handleDeleteItem} />
                         </Stack>
                     </Box>
                     <Box sx={{ mt: 2 }}>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
index 3da396a..6474f6e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrder.java
@@ -231,11 +231,15 @@
     }
 
     public String getWkType$(){
+        String typeCode = DictTypeCode.DICT_SYS_BUSINESS_TYPE;
+        if (type.equals(OrderType.ORDER_CHECK.type)) {
+            typeCode = DictTypeCode.SYS_CHECK_ORDER_TYPE;
+        }
         if (Cools.isEmpty(this.wkType)){
             return "";
         }
         DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
-        DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE).eq(DictData::getValue, this.wkType));
+        DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, typeCode).eq(DictData::getValue, this.wkType));
         if (Objects.isNull(dictData)) {
             return null;
         }
@@ -243,11 +247,11 @@
     }
 
     public String getCheckType$(){
-        if (Cools.isEmpty(this.wkType)){
+        if (Cools.isEmpty(this.checkType)){
             return "";
         }
         DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
-        DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_ORDER_TYPE).eq(DictData::getValue, this.wkType));
+        DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_TYPE).eq(DictData::getValue, this.checkType));
         if (Objects.isNull(dictData)) {
             return null;
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
index 4e51070..92ccf21 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -89,4 +89,6 @@
     public final static String SYS_CHECK_DIFF_EXCE_STATUS =  "sys_check_diff_exce_status";
 
     public final static String SYS_CHECK_DIFF_REASON =  "sys_check_diff_reason";
+
+    public final static String SYS_CHECK_TYPE = "sys_check_type";
 }

--
Gitblit v1.9.1