skyouc
2025-03-11 81298fe25b8b89e55998efc6ffdc9868b4702926
#新增
1. 获取收货区接口
2. 字段优化
35个文件已修改
1个文件已添加
319 ■■■■ 已修改文件
rsf-admin/src/i18n/en.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderList.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/matnr/MatnrCreate.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/matnr/MatnrPanel.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchase/PurchaseCreate.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchase/PurchaseEdit.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchase/PurchaseList.jsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchase/PurchasePanel.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchaseItem/PurchaseItemEdit.jsx 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/purchaseItem/PurchaseItemPanel.jsx 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/system/serialRule/SerialRuleCreate.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/system/serialRule/SerialRuleList.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/enums/WarehouseAreaType.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/matnr.sql 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/purchase.sql 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/en.js
@@ -254,7 +254,7 @@
                shipperId: "shipperId",
                groupId: "groupId",
                rglarId: "RegularId",
                erpCode: "erpCode",
                platCode: "platCode",
                spec: "spec",
                model: "model",
                weight: "weight",
@@ -435,7 +435,7 @@
            },
            purchase: {
                code: "code",
                erpId: "erpId",
                platId: "PlatId",
                type: "type",
                wkType: "wkType",
                source: "source",
@@ -444,7 +444,7 @@
                qty: "qty",
                workQty: "workQty",
                channel: "channel",
                erpCode: "erpCode",
                platCode: "platCode",
                project: "project",
                startTime: "startTime",
                endTime: "endTime",
rsf-admin/src/i18n/zh.js
@@ -253,7 +253,7 @@
                shipperId: "货主标识",
                groupId: "分组标识",
                rglarId: "批次规则标识",
                erpCode: "ERP编码",
                platCode: "ERP编码",
                spec: "规格",
                model: "型号",
                weight: "重量",
@@ -435,7 +435,7 @@
            },
            purchase: {
                code: "编码",
                erpId: "erp标识",
                platId: "平台标识",
                type: "单据类型",
                wkType: "业务类型",
                source: "来源",
@@ -444,7 +444,7 @@
                qty: "已完成数量",
                workQty: "执行中数量",
                channel: "收货通道",
                erpCode: "Erp编码",
                platCode: "Erp编码",
                project: "项目名称",
                startTime: "开始时间",
                endTime: "结束时间",
rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx
@@ -158,13 +158,6 @@
                                        ]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.asnOrder.name"
                                        source="name"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <StatusSelectInput />
rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx
@@ -138,13 +138,7 @@
                                validate={required()}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.asnOrder.name"
                                source="name"
                                parse={v => v}
                            />
                        </Stack>
                    </Grid>
                    <Grid item xs={12} md={4}>
rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -78,7 +78,6 @@
            { id:  1, name: ' 已释放' },
        ]}
    />,
    <TextInput source="name" label="table.field.asnOrder.name" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
@@ -16,22 +16,6 @@
            <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.asnOrder.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}
@@ -100,13 +84,6 @@
                                property={record.rleStatus$}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.asnOrder.name"
                                property={record.name}
                            />
                        </Grid>
                    </Grid>
                </CardContent>
            </Card >
rsf-admin/src/page/basicInfo/matnr/MatnrCreate.jsx
@@ -181,8 +181,8 @@
                                    </Grid>
                                    <Grid item xs={6} display="flex" gap={1}>
                                        <TextInput
                                            label="table.field.matnr.erpCode"
                                            source="erpCode"
                                            label="table.field.matnr.platCode"
                                            source="platCode"
                                            validate={[required()]}
                                            parse={v => v}
                                        />
rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx
@@ -164,8 +164,8 @@
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.matnr.erpCode"
                                        source="erpCode"
                                        label="table.field.matnr.platCode"
                                        source="platCode"
                                        parse={v => v}
                                    />
                                </Grid>
rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
@@ -76,7 +76,7 @@
    <ReferenceInput source="rglarId" label="table.field.matnr.rglarId" reference="rglarId">
        <AutocompleteInput label="table.field.matnr.rglarId" optionText="code" filterToQuery={(val) => ({ code: val })} />
    </ReferenceInput>,
    <TextInput source="erpCode" label="table.field.matnr.erpCode" />,
    <TextInput source="platCode" label="table.field.matnr.platCode" />,
    <TextInput source="spec" label="table.field.matnr.spec" />,
    <TextInput source="model" label="table.field.matnr.model" />,
    <NumberInput source="weight" label="table.field.matnr.weight" />,
@@ -143,7 +143,7 @@
                rowClick={(id, resource, record) => false}
                expand={() => <MatnrPanel />}
                expandSingle={true}
                omit={['id','shipperId','erpCode','spec','model','weight','color','size','describle'
                omit={['id','shipperId','platCode','spec','model','weight','color','size','describle'
                    ,'nromNum','unit','purchaseUnit','stockUnit','stockLeval','isLabelMange','safeQty'
                    ,'minQty','maxQty','stagn','valid','validWarn','flagCheck','updateTime', 'updateBy'
                    , 'createTime', 'createBy', 'memo']}
@@ -160,7 +160,7 @@
                <ReferenceField source="rglarId" label="table.field.matnr.rglarId" reference="batchRegular" link={false} sortable={false}>
                    <TextField source="code" />
                </ReferenceField>
                <TextField source="erpCode" label="table.field.matnr.erpCode" />
                <TextField source="platCode" label="table.field.matnr.platCode" />
                <TextField source="spec" label="table.field.matnr.spec" />
                <TextField source="model" label="table.field.matnr.model" />
                <NumberField source="weight" label="table.field.matnr.weight" />
rsf-admin/src/page/basicInfo/matnr/MatnrPanel.jsx
@@ -72,8 +72,8 @@
                        </Grid>
                        <Grid item xs={3}>
                            <PanelTypography
                                title="table.field.matnr.erpCode"
                                property={record.erpCode}
                                title="table.field.matnr.platCode"
                                property={record.platCode}
                            />
                        </Grid>
                        <Grid item xs={3}>
rsf-admin/src/page/purchase/PurchaseCreate.jsx
@@ -102,8 +102,8 @@
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.purchase.from"
                                        source="from"
                                        label="table.field.purchase.source"
                                        source="source"
                                        parse={v => v}
                                        validate={required()}
                                    />
@@ -144,8 +144,8 @@
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.purchase.erpCode"
                                        source="erpCode"
                                        label="table.field.purchase.platCode"
                                        source="platCode"
                                        parse={v => v}
                                    />
                                </Grid>
rsf-admin/src/page/purchase/PurchaseEdit.jsx
@@ -81,8 +81,8 @@
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.purchase.from"
                                source="from"
                                label="table.field.purchase.source"
                                source="source"
                                parse={v => v}
                                validate={required()}
                            />
@@ -123,8 +123,8 @@
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.purchase.erpCode"
                                source="erpCode"
                                label="table.field.purchase.platCode"
                                source="platCode"
                                parse={v => v}
                            />
                        </Stack>
rsf-admin/src/page/purchase/PurchaseList.jsx
@@ -62,20 +62,18 @@
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart" alwaysOn />,
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
    <TextInput source="code" label="table.field.purchase.code" />,
    <TextInput source="type" label="table.field.purchase.type" />,
    <TextInput source="from" label="table.field.purchase.from" />,
    <TextInput source="source" label="table.field.purchase.source" />,
    <DateInput source="preArr" label="table.field.purchase.preArr" />,
    <NumberInput source="anfme" label="table.field.purchase.anfme" />,
    <NumberInput source="qty" label="table.field.purchase.qty" />,
    <NumberInput source="workQty" label="table.field.purchase.workQty" />,
    <TextInput source="channel" label="table.field.purchase.channel" />,
    <TextInput source="erpCode" label="table.field.purchase.erpCode" />,
    <TextInput source="platCode" label="table.field.purchase.platCode" />,
    <DateInput source="startTime" label="table.field.purchase.startTime" />,
    <DateInput source="endTime" label="table.field.purchase.endTime" />,
    <TextInput source="project" label="table.field.purchase.project" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
        label="common.field.status"
@@ -130,13 +128,13 @@
                    <NumberField source="id" />
                    <TextField source="code" label="table.field.purchase.code" />
                    <TextField source="type" label="table.field.purchase.type" />
                    <TextField source="from" label="table.field.purchase.from" />
                    <TextField source="source" label="table.field.purchase.source" />
                    <DateField source="preArr" label="table.field.purchase.preArr" showTime />
                    <NumberField source="anfme" label="table.field.purchase.anfme" />
                    <NumberField source="qty" label="table.field.purchase.qty" />
                    <NumberField source="workQty" label="table.field.purchase.workQty" />
                    <TextField source="channel" label="table.field.purchase.channel" />
                    <TextField source="erpCode" label="table.field.purchase.erpCode" />
                    <TextField source="platCode" label="table.field.purchase.platCode" />
                    <DateField source="startTime" label="table.field.purchase.startTime" showTime />
                    <DateField source="endTime" label="table.field.purchase.endTime" showTime />
                    <TextField source="project" label="table.field.purchase.project" />
rsf-admin/src/page/purchase/PurchasePanel.jsx
@@ -54,8 +54,8 @@
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchase.from"
                                property={record.from}
                                title="table.field.purchase.source"
                                property={record.source}
                            />
                        </Grid>
                        <Grid item xs={6}>
@@ -90,8 +90,8 @@
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchase.erpCode"
                                property={record.erpCode}
                                title="table.field.purchase.platCode"
                                property={record.platCode}
                            />
                        </Grid>
                        <Grid item xs={6}>
rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx
@@ -93,8 +93,8 @@
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.purchaseItem.erpId"
                                        source="erpId"
                                        label="table.field.purchaseItem.platItemId"
                                        source="platItemId"
                                        parse={v => v}
                                    />
                                </Grid>
@@ -135,8 +135,8 @@
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <NumberInput
                                        label="table.field.purchaseItem.nomQty"
                                        source="nomQty"
                                        label="table.field.purchaseItem.nromQty"
                                        source="nromQty"
                                        validate={required()}
                                    />
                                </Grid>
@@ -156,22 +156,22 @@
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.purchaseItem.pulrName"
                                        source="pulrName"
                                        label="table.field.purchaseItem.splrName"
                                        source="splrName"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.purchaseItem.pulrCode"
                                        source="pulrCode"
                                        label="table.field.purchaseItem.splrCode"
                                        source="splrCode"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.purchaseItem.pulrBatch"
                                        source="pulrBatch"
                                        label="table.field.purchaseItem.splrBatch"
                                        source="splrBatch"
                                        parse={v => v}
                                    />
                                </Grid>
rsf-admin/src/page/purchaseItem/PurchaseItemEdit.jsx
@@ -72,8 +72,8 @@
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.purchaseItem.erpId"
                                source="erpId"
                                label="table.field.purchaseItem.platItemId"
                                source="platItemId"
                                parse={v => v}
                            />
                        </Stack>
@@ -114,8 +114,8 @@
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <NumberInput
                                label="table.field.purchaseItem.nomQty"
                                source="nomQty"
                                label="table.field.purchaseItem.nromQty"
                                source="nromQty"
                                validate={required()}
                            />
                        </Stack>
@@ -135,22 +135,22 @@
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.purchaseItem.pulrName"
                                source="pulrName"
                                label="table.field.purchaseItem.splrName"
                                source="splrName"
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.purchaseItem.pulrCode"
                                source="pulrCode"
                                label="table.field.purchaseItem.splrCode"
                                source="splrCode"
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.purchaseItem.pulrBatch"
                                source="pulrBatch"
                                label="table.field.purchaseItem.splrBatch"
                                source="splrBatch"
                                parse={v => v}
                            />
                        </Stack>
rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx
@@ -64,18 +64,18 @@
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
    <NumberInput source="purchaseId" label="table.field.purchaseItem.purchaseId" />,
    <TextInput source="erpId" label="table.field.purchaseItem.erpId" />,
    <TextInput source="platItemId" label="table.field.purchaseItem.platItemId" />,
    <TextInput source="matnrCode" label="table.field.purchaseItem.matnrCode" />,
    <TextInput source="matnrName" label="table.field.purchaseItem.matnrName" />,
    <TextInput source="unit" label="table.field.purchaseItem.unit" />,
    <NumberInput source="anfme" label="table.field.purchaseItem.anfme" />,
    <NumberInput source="qty" label="table.field.purchaseItem.qty" />,
    <NumberInput source="nomQty" label="table.field.purchaseItem.nomQty" />,
    <NumberInput source="nromQty" label="table.field.purchaseItem.nromQty" />,
    <NumberInput source="asnQty" label="table.field.purchaseItem.asnQty" />,
    <NumberInput source="printQty" label="table.field.purchaseItem.printQty" />,
    <TextInput source="pulrName" label="table.field.purchaseItem.pulrName" />,
    <TextInput source="pulrCode" label="table.field.purchaseItem.pulrCode" />,
    <TextInput source="pulrBatch" label="table.field.purchaseItem.pulrBatch" />,
    <TextInput source="splrName" label="table.field.purchaseItem.splrName" />,
    <TextInput source="splrCode" label="table.field.purchaseItem.splrCode" />,
    <TextInput source="splrBatch" label="table.field.purchaseItem.splrBatch" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
@@ -130,18 +130,18 @@
                >
                    <NumberField source="id" />
                    <NumberField source="purchaseId" label="table.field.purchaseItem.purchaseId" />
                    <TextField source="erpId" label="table.field.purchaseItem.erpId" />
                    <TextField source="platItemId" label="table.field.purchaseItem.platItemId" />
                    <TextField source="matnrCode" label="table.field.purchaseItem.matnrCode" />
                    <TextField source="matnrName" label="table.field.purchaseItem.matnrName" />
                    <TextField source="unit" label="table.field.purchaseItem.unit" />
                    <NumberField source="anfme" label="table.field.purchaseItem.anfme" />
                    <NumberField source="qty" label="table.field.purchaseItem.qty" />
                    <NumberField source="nomQty" label="table.field.purchaseItem.nomQty" />
                    <NumberField source="nromQty" label="table.field.purchaseItem.nromQty" />
                    <NumberField source="asnQty" label="table.field.purchaseItem.asnQty" />
                    <NumberField source="printQty" label="table.field.purchaseItem.printQty" />
                    <TextField source="pulrName" label="table.field.purchaseItem.pulrName" />
                    <TextField source="pulrCode" label="table.field.purchaseItem.pulrCode" />
                    <TextField source="pulrBatch" label="table.field.purchaseItem.pulrBatch" />
                    <TextField source="splrName" label="table.field.purchaseItem.splrName" />
                    <TextField source="splrCode" label="table.field.purchaseItem.splrCode" />
                    <TextField source="splrBatch" label="table.field.purchaseItem.splrBatch" />
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
rsf-admin/src/page/purchaseItem/PurchaseItemPanel.jsx
@@ -48,8 +48,8 @@
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchaseItem.erpId"
                                property={record.erpId}
                                title="table.field.purchaseItem.platItemId"
                                property={record.platItemId}
                            />
                        </Grid>
                        <Grid item xs={6}>
@@ -84,8 +84,8 @@
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchaseItem.nomQty"
                                property={record.nomQty}
                                title="table.field.purchaseItem.nromQty"
                                property={record.nromQty}
                            />
                        </Grid>
                        <Grid item xs={6}>
@@ -102,20 +102,20 @@
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchaseItem.pulrName"
                                property={record.pulrName}
                                title="table.field.purchaseItem.splrName"
                                property={record.splrName}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchaseItem.pulrCode"
                                property={record.pulrCode}
                                title="table.field.purchaseItem.splrCode"
                                property={record.splrCode}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.purchaseItem.pulrBatch"
                                property={record.pulrBatch}
                                title="table.field.purchaseItem.splrBatch"
                                property={record.splrBatch}
                            />
                        </Grid>
rsf-admin/src/page/system/serialRule/SerialRuleCreate.jsx
@@ -27,9 +27,9 @@
  Grid,
  Box,
} from "@mui/material";
import DialogCloseButton from "../components/DialogCloseButton";
import StatusSelectInput from "../components/StatusSelectInput";
import MemoInput from "../components/MemoInput";
import DialogCloseButton from "../../components/DialogCloseButton";
import StatusSelectInput from "../../components/StatusSelectInput";
import MemoInput from "../../components/MemoInput";
const SerialRuleCreate = (props) => {
  const { open, setOpen } = props;
rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
@@ -27,7 +27,7 @@
  Grid,
  Box,
} from "@mui/material";
import DialogCloseButton from "../components/DialogCloseButton";
import DialogCloseButton from "../../components/DialogCloseButton";
import SerialRuleItem from "../serialRuleItem/index";
const SerialRuleDetail = (props) => {
rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
@@ -43,11 +43,11 @@
import SerialRuleCreate from "./SerialRuleCreate";
import SerialRuleDetail from "./SerialRuleDetail";
import SerialRulePanel from "./SerialRulePanel";
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 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,
rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx
@@ -42,18 +42,18 @@
import { styled } from "@mui/material/styles";
import SerialRuleItemCreate from "./SerialRuleItemCreate";
import SerialRuleItemPanel from "./SerialRuleItemPanel";
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 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 CustomerTopToolBar from "../components/EditTopToolBar";
import CustomerTopToolBar from "../../components/EditTopToolBar";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
  "& .css-1vooibu-MuiSvgIcon-root": {
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -101,6 +101,13 @@
        return mobileService.otherReceipt(params);
    }
    @PreAuthorize("hasAuthority('manager:warehouseAreas:list')")
    @ApiOperation("获取收货区")
    @GetMapping("/areas/receipt")
    public R getReceiptAreas() {
        return mobileService.getReceiptAreas();
    }
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @GetMapping("/orders/asn")
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -27,4 +27,6 @@
    R otherReceipt(OtherReceiptParams params);
    List<AsnOrder> getAllAsnOrders();
    R getReceiptAreas();
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java
@@ -123,8 +123,8 @@
            ErpInspectParams params = new ErpInspectParams();
            List<ErpInspectItem> inspectItems = new ArrayList<>();
            //赋值erp主单编码,编号
            params.setPoId(purchase.getErpId())
                    .setPoCode(purchase.getErpCode());
            params.setPoId(purchase.getPlatId())
                    .setPoCode(purchase.getPlatCode());
            List<PoItemsDto> dtos = listMap.get(key);
            if (dtos.isEmpty()) {
                throw new CoolException("单据信息错误!!");
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -10,11 +10,13 @@
import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
import com.vincent.rsf.server.api.service.MobileService;
import com.vincent.rsf.server.common.config.ConfigProperties;
import com.vincent.rsf.server.common.enums.WarehouseAreaType;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.WarehouseAreasItemService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.constant.CodeRes;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import com.vincent.rsf.server.system.controller.result.LoginResult;
@@ -24,6 +26,7 @@
import com.vincent.rsf.server.system.mapper.TenantMapper;
import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.UserLoginService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.tika.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -56,6 +59,8 @@
    private UserLoginService userLoginService;
    @Autowired
    private WarehouseAreasItemService warehouseAreasItemService;
    @Autowired
    private WarehouseAreasService warehouseAreasService;
    @Resource
    private AsnOrderItemMapper asnOrderItemMapper;
    @Resource
@@ -154,19 +159,18 @@
                    .setAreaName(areasItem.getAreaName())
                    .setAreaId(areasItem.getAreaId())
                    .setStockUnit(dto.getStockUnit())
                    //TODO 编码规则生成批次 (物料号+日期)
                    .setBatch(null)
                    .setBatch(SerialRuleUtils.generateRuleCode("sys_receipt_batch", dto))
                    .setAnfme(dto.getReceiptQty())
                    .setSplrBtch(dto.getSplrBatch())
                    .setMatnrCode(matnr.getCode())
                    .setMatnrId(matnr.getId())
                    .setMatnrName(matnr.getName())
                    //TODO 入库单位换算
                    //库存单位为最小单位
                    .setUnit(dto.getStockUnit())
                    .setStockUnit(dto.getStockUnit())
                    .setWeight(matnr.getWeight())
                    .setShipperId(matnr.getShipperId());
                    //TODO 供应商标识未设置
                    //TODO 供应商标识未设置,标识由PO单供应商编码转换
            allOrders.add(item);
        });
@@ -217,6 +221,18 @@
    }
    /**
     * @author Ryan
     * @description 获取收货区
     * @param
     * @return
     * @time 2025/3/11 10:12
     */
    @Override
    public R getReceiptAreas() {
        return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)));
    }
    /**
     * 获取ReceiptDetlsDto
     */
    private R getAsnOrderItem(AsnOrderItem asnOrderItem) {
rsf-server/src/main/java/com/vincent/rsf/server/common/enums/WarehouseAreaType.java
New file
@@ -0,0 +1,24 @@
package com.vincent.rsf.server.common.enums;
/**
 * @author Ryan
 * @version 1.0
 * @title WarehouseAreaType
 * @description
 * @create 2025/3/11 10:26
 */
public enum WarehouseAreaType {
    //订单类型
    WAREHOUSE_AREA_RECEIPT("receipt", "收货区"),
    WAREHOUSE_AREA_COLLECTION("collection", "集货区"),
    WAREHOUSE_AREA_DELIVERY("delivery", "发货区"),
    ;
    WarehouseAreaType(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
    public String type;
    public String desc;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -13,6 +13,7 @@
import com.vincent.rsf.server.manager.service.AsnOrderService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
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.*;
@@ -56,6 +57,7 @@
    @PreAuthorize("hasAuthority('manager:asnOrder:save')")
    @OperationLog("Create ASN单据")
    @PostMapping("/asnOrder/save")
    @ApiOperation("保存")
    public R save(@RequestBody AsnOrder asnOrder) {
        asnOrder.setCreateBy(getLoginUserId());
        asnOrder.setCreateTime(new Date());
@@ -70,6 +72,7 @@
    @PreAuthorize("hasAuthority('manager:asnOrder:update')")
    @OperationLog("Update ASN单据")
    @PostMapping("/asnOrder/update")
    @ApiOperation("更新")
    public R update(@RequestBody AsnOrder asnOrder) {
        asnOrder.setUpdateBy(getLoginUserId());
        asnOrder.setUpdateTime(new Date());
@@ -91,6 +94,7 @@
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @PostMapping("/asnOrder/query")
    @ApiOperation("查询")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<AsnOrder> wrapper = new LambdaQueryWrapper<>();
@@ -105,6 +109,7 @@
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @PostMapping("/asnOrder/export")
    @ApiOperation("导出")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        ExcelUtil.build(ExcelUtil.create(asnOrderService.list(), AsnOrder.class), response);
    }
@@ -115,6 +120,7 @@
     * @return
     */
    @PostMapping("/asnOrder/inspect")
    @ApiOperation("质检上报")
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    public R notifyInspect(@RequestBody List<AsnOrder> orders) {
        if (orders.isEmpty()) {
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java
@@ -93,10 +93,10 @@
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<WarehouseAreas> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(WarehouseAreas::getUuid, condition);
            wrapper.like(WarehouseAreas::getType, condition);
        }
        warehouseAreasService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getUuid()))
                item -> vos.add(new KeyValVo(item.getId(), item.getType()))
        );
        return R.ok().add(vos);
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
@@ -76,7 +76,7 @@
     * ERP编码
     */
    @ApiModelProperty(value= "ERP编码")
    private String erpCode;
    private String platCode;
    /**
     * 规格
@@ -258,13 +258,13 @@
    public Matnr() {}
    public Matnr(String name,String code,Long shipperId,Long groupId,Long rglarId,String erpCode,String spec,String model,Double weight,String color,String size,String describle,Integer nromNum,String unit,String purUnit,String stockUnit,Short stockLevel,Short flagLabelMange,Double safeQty,Double minQty,Double maxQty,Integer stagn,Integer valid,Integer validWarn,Short flagCheck,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
    public Matnr(String name,String code,Long shipperId,Long groupId,Long rglarId,String platCode,String spec,String model,Double weight,String color,String size,String describle,Integer nromNum,String unit,String purUnit,String stockUnit,Short stockLevel,Short flagLabelMange,Double safeQty,Double minQty,Double maxQty,Integer stagn,Integer valid,Integer validWarn,Short flagCheck,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.name = name;
        this.code = code;
        this.shipperId = shipperId;
        this.groupId = groupId;
        this.rglarId = rglarId;
        this.erpCode = erpCode;
        this.platCode = platCode;
        this.spec = spec;
        this.model = model;
        this.weight = weight;
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java
@@ -57,7 +57,7 @@
    @ApiModelProperty(value = "erp主单标识")
    private String erpId;
    private String platId;
    /**
     * 单据来源
@@ -100,7 +100,7 @@
     * erp单号
     */
    @ApiModelProperty(value= "erp单号")
    private String erpCode;
    private String platCode;
    /**
     * 计划收货时间
@@ -175,17 +175,17 @@
    public Purchase() {}
    public Purchase(String code,String type,String source,String erpId ,Date preArr,Double anfme,Double qty,Double workQty,String channel,String erpCode,Date startTime,Date endTime,String project,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
    public Purchase(String code,String type,String source,String platId ,Date preArr,Double anfme,Double qty,Double workQty,String channel,String platCode,Date startTime,Date endTime,String project,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.code = code;
        this.type = type;
        this.source = source;
        this.erpId = erpId;
        this.platId = platId;
        this.preArr = preArr;
        this.anfme = anfme;
        this.qty = qty;
        this.workQty = workQty;
        this.channel = channel;
        this.erpCode = erpCode;
        this.platCode = platCode;
        this.startTime = startTime;
        this.endTime = endTime;
        this.project = project;
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java
@@ -354,8 +354,8 @@
    }
    public String getShipperId$(){
        ShipperService service = SpringUtils.getBean(ShipperService.class);
        Shipper shipper = service.getById(this.shipperId);
        CompanysService service = SpringUtils.getBean(CompanysService.class);
        Companys shipper = service.getById(this.shipperId);
        if (!Cools.isEmpty(shipper)){
            return String.valueOf(shipper.getName());
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java
@@ -4,6 +4,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import com.vincent.rsf.server.manager.service.CompanysService;
import com.vincent.rsf.server.manager.service.ShipperService;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
@@ -40,7 +41,7 @@
     * 编号
     */
    @ApiModelProperty(value= "编号")
    private String uuid;
    private String type;
    /**
     * 名称
@@ -138,7 +139,7 @@
    public WarehouseAreas() {}
    public WarehouseAreas(String uuid,String name,String code,Long shipperId,Short supplierId,Short flagMinus,Short flagLabelMange,Short flagMix,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.uuid = uuid;
        this.type = uuid;
        this.name = name;
        this.code = code;
        this.shipperId = shipperId;
@@ -176,8 +177,8 @@
//    );
    public String getShipperId$(){
        ShipperService service = SpringUtils.getBean(ShipperService.class);
        Shipper shipper = service.getById(this.shipperId);
        CompanysService service = SpringUtils.getBean(CompanysService.class);
        Companys shipper = service.getById(this.shipperId);
        if (!Cools.isEmpty(shipper)){
            return String.valueOf(shipper.getName());
        }
rsf-server/src/main/java/matnr.sql
@@ -17,7 +17,7 @@
    shipperId: "shipperId",
    groupId: "groupId",
    batchRegularId: "batchRegularId",
    erpCode: "erpCode",
    platCode: "platCode",
    spec: "spec",
    model: "model",
    weight: "weight",
rsf-server/src/main/java/purchase.sql
@@ -22,7 +22,7 @@
    qty: "qty",
    workQty: "workQty",
    channel: "channel",
    erpCode: "erpCode",
    platCode: "platCode",
    project: "project",
    startTime: "startTime",
    endTime: "endTime",
rsf-server/src/main/resources/application.yml
@@ -23,7 +23,7 @@
  #  global-config:
  #    field-strategy: 0
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
    cache-enabled: true
  global-config: