87个文件已修改
590 ■■■■■ 已修改文件
rsf-admin/src/i18n/en.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/deviceSite/InitModal.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/InitButton.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/InitModal.jsx 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/LocItemList.jsx 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/LocList.jsx 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/stock/OrderItemList.jsx 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/stock/OrderList.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/task/TaskList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/work/components/StaSelect.jsx 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/work/outBound/OutBoundList.jsx 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/Test/ChineseMD5Util.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasDevice.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasStation.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BatchRegular.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Companys.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Container.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Contract.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Customer.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceBind.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocArea.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMat.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaRela.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/MatnrGroup.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyInspect.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Shipper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItemLog.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItemLog.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Warehouse.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Wave.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Dept.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/DictData.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Menu.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Role.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/SerialRuleItem.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/User.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/MatnrMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/WarehouseAreasItemMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/WarehouseMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/en.js
@@ -771,6 +771,8 @@
                deviceCode: "deviceCode",
                deviceSite: "deviceSite",
                flagInit: "flagInit",
                wcsCode: "wcsCode",
                channel: "channel",
            },
            waitPakin: {
                code: "code",
rsf-admin/src/i18n/zh.js
@@ -448,7 +448,7 @@
                row: "排",
                col: "列",
                lev: "层",
                channel: "通道",
                channel: "巷道",
                maxParts: "最大零件数",
                maxPack: "最大包装数",
                flagLabelMange: "标签管理",
@@ -791,7 +791,7 @@
            },
            deviceSite: {
                type: "入出库类型",
                site: "入库口",
                site: "作业站点",
                name: "名称",
                target: "目标站点",
                label: "站点标签",
@@ -800,6 +800,7 @@
                deviceSite: "设备站点",
                flagInit: "是否初始化",
                wcsCode: "wcs编号",
                channel: "巷道",
            },
            waitPakin: {
                code: "编码",
@@ -1162,7 +1163,7 @@
            stock: "库存不足,无法提交!!", 
            select_error_order: "请选择通知单",
            out_stock_qty: "出库数量不能大于库存数量",
            qty_not_negative: "数量不能小于等于0",
        }
    }
rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
@@ -157,7 +157,7 @@
                    <TextField source="target" label="table.field.deviceSite.target" />
                    <TextField source="label" label="table.field.deviceSite.label" />
                    <TextField source="device$" label="table.field.deviceSite.device" />
                    <TextField source="deviceCode" label="table.field.deviceSite.deviceCode" />
                    <TextField source="channel" label="table.field.deviceSite.channel" />
                    <TextField source="deviceSite" label="table.field.deviceSite.deviceSite" />
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
rsf-admin/src/page/basicInfo/deviceSite/InitModal.jsx
@@ -121,8 +121,8 @@
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.deviceSite.deviceCode")}
                                    name="deviceCode"
                                    label={translate("table.field.deviceSite.channel")}
                                    name="channel"
                                    size="small"
                                    type="number"
                                />
rsf-admin/src/page/basicInfo/loc/InitButton.jsx
@@ -54,7 +54,6 @@
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const [createDialog, setCreateDialog] = useState(false);
    return (
rsf-admin/src/page/basicInfo/loc/InitModal.jsx
@@ -58,8 +58,8 @@
const InitModal = ({ open, setOpen }) => {
    const refresh = useRefresh();
    const translate = useTranslate();
    const {filterValues} = useListContext(); // 获取列表上下文
    const { filterValues } = useListContext(); // 获取列表上下文
    const notify = useNotify();
    const [disabled, setDisabled] = useState(false)
@@ -149,10 +149,7 @@
                                        filterToQuery={(val) => ({ name: val })}
                                    />
                                </ReferenceInput>
                            </Grid>
                            <Grid item xs={4}>
                                <ReferenceArrayInput source="typeIds" reference="locType" >
                                    <SelectArrayInput label="table.field.loc.type" validate={[required()]} onChange={(e) => handleChange(e.target.value, 'typeIds')} />
@@ -161,31 +158,6 @@
                                    <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} validate={[required()]} />
                                </ReferenceArrayInput> */}
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.startBay")}
                                    name="startBay"
                                    value={formData.startBay}
                                    onChange={(e) => handleChange(+e.target.value, 'startBay')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.startLev")}
                                    name="startLev"
                                    value={formData.startLev}
                                    onChange={(e) => handleChange(+e.target.value, 'startLev')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.startRow")}
@@ -197,31 +169,28 @@
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.endBay")}
                                    name="endBay"
                                    value={formData.endBay}
                                    onChange={(e) => handleChange(+e.target.value, 'endBay')}
                                    label={translate("table.field.loc.startBay")}
                                    name="startBay"
                                    value={formData.startBay}
                                    onChange={(e) => handleChange(+e.target.value, 'startBay')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.endLev")}
                                    name="endLev"
                                    value={formData.endLev}
                                    onChange={(e) => handleChange(+e.target.value, 'endLev')}
                                    label={translate("table.field.loc.startLev")}
                                    name="startLev"
                                    value={formData.startLev}
                                    onChange={(e) => handleChange(+e.target.value, 'startLev')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.endRow")}
@@ -233,9 +202,40 @@
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.endBay")}
                                    name="endBay"
                                    value={formData.endBay}
                                    onChange={(e) => handleChange(+e.target.value, 'endBay')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={translate("table.field.loc.endLev")}
                                    name="endLev"
                                    value={formData.endLev}
                                    onChange={(e) => handleChange(+e.target.value, 'endLev')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <TextInput
                                    label={"table.field.loc.channel"}
                                    name="channel"
                                    value={formData.channel}
                                    onChange={(e) => handleChange(+e.target.value, 'channel')}
                                    size="small"
                                    type="number"
                                    validate={[required()]}
                                />
                            </Grid>
                        </Grid>
                    </Box>
                </DialogContent>
                <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
@@ -251,4 +251,6 @@
    );
}
export default InitModal;
rsf-admin/src/page/basicInfo/loc/LocItemList.jsx
@@ -58,8 +58,8 @@
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart"  />,
    <DateInput label='common.time.before' source="timeEnd"  />,
    <DateInput label='common.time.after' source="timeStart" />,
    <DateInput label='common.time.before' source="timeEnd" />,
    <NumberInput source="locId" label="table.field.locItem.locId" />,
    <NumberInput source="orderId" label="table.field.locItem.orderId" />,
    <TextInput source="type$" label="table.field.locItem.type" />,
@@ -98,7 +98,7 @@
        <Box display="flex">
            <List
                resource="locItem"
                filter={{locId: locId}}
                filter={{ locId: locId }}
                sx={{
                    flexGrow: 1,
                    transition: (theme) =>
@@ -116,7 +116,7 @@
                        <FilterButton />
                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                        <SelectColumnsButton preferenceKey='locItem' />
                        <MyExportButton />
                        {/* <MyExportButton /> */}
                    </TopToolbar>
                )}
                perPage={DEFAULT_ITEM_PAGE_SIZE}
@@ -127,21 +127,21 @@
                    rowClick={(id, resource, record) => false}
                    expand={false}
                    expandSingle={true}
                    omit={['id', 'locId', 'orderId', 'orderItemId', 'matnrId', 'createTime', 'createBy', 'memo']}
                    omit={['id', 'locId', 'orderId', 'orderItemId', 'matnrId', 'statusBool','trackCode', 'createTime', 'fieldsIndex','splrBatch', 'createBy', 'spec', 'model', 'memo']}
                >
                    <NumberField source="id" />
                    <NumberField source="locId" label="table.field.locItem.locId" />
                    <NumberField source="orderId" label="table.field.locItem.orderId" />
                    <TextField source="type" label="table.field.locItem.type" />
                    <TextField source="type$" label="table.field.locItem.type" />
                    <NumberField source="orderItemId" label="table.field.locItem.orderItemId" />
                    <NumberField source="wkType" label="table.field.locItem.wkType" />
                    <NumberField source="wkType$" label="table.field.locItem.wkType" />
                    <NumberField source="matnrId" label="table.field.locItem.matnrId" />
                    <TextField source="maktx" label="table.field.locItem.maktx" />
                    <TextField source="matnrCode" label="table.field.locItem.matnrCode" />
                    <TextField source="trackCode" label="table.field.locItem.trackCode" />
                    <TextField source="unit" label="table.field.locItem.unit" />
                    <NumberField source="anfme" label="table.field.locItem.anfme" />
                    <TextField source="maktx" label="table.field.locItem.maktx" />
                    <TextField source="batch" label="table.field.locItem.batch" />
                    <TextField source="trackCode" label="table.field.locItem.trackCode" />
                    <NumberField source="anfme" label="table.field.locItem.anfme" />
                    <TextField source="unit" label="table.field.locItem.unit" />
                    <TextField source="splrBatch" label="table.field.locItem.splrBatch" />
                    <TextField source="spec" label="table.field.locItem.spec" />
                    <TextField source="model" label="table.field.locItem.model" />
rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -221,23 +221,25 @@
                    {/* <TextField source="name" label="table.field.loc.name" /> */}
                    {/* <NumberField source="flagLogic" label="table.field.loc.flagLogic" />
                    <TextField source="fucAtrrs" label="table.field.loc.fucAtrrs" />
                    <TextField source="barcode" label="table.field.loc.barcode" /> */}
                    */}
                    {/* <TextField source="unit" label="table.field.loc.unit" /> */}
                    <TextField source="barcode" label="table.field.loc.barcode" />
                    <TextField source="length" label="table.field.loc.length" />
                    <TextField source="width" label="table.field.loc.width" />
                    <TextField source="height" label="table.field.loc.height" />
                    <NumberField source="row" label="table.field.loc.row" />
                    <NumberField source="col" label="table.field.loc.col" />
                    <NumberField source="lev" label="table.field.loc.lev" />
                    <NumberField source="channel" label="table.field.loc.channel" />
                    {/* <NumberField source="channel" label="table.field.loc.channel" />
                    <NumberField source="maxParts" label="table.field.loc.maxParts" />
                    <NumberField source="maxPack" label="table.field.loc.maxPack" />
                    <NumberField source="flagLabelMange" label="table.field.loc.flagLabelMange" />
                    <TextField source="locAttrs" label="table.field.loc.locAttrs" /> */}
                    <TextField source="useStatus$" label="table.field.loc.useStatus" />
                    <TextField source="updateBy$" label="common.field.updateBy"  />
                    <TextField source="updateBy$" label="common.field.updateBy" />
                    <DateField source="updateTime" label="common.field.updateTime" showTime align="left" />
                    <TextField source="createBy$" label="common.field.createBy"  />
                    <TextField source="createBy$" label="common.field.createBy" />
                    <DateField source="createTime" label="common.field.createTime" showTime align="left" />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} align="left" />
                    <TextField source="memo" label="common.field.memo" sortable={false} />
@@ -249,8 +251,8 @@
                </StyledDatagrid>
                <InitModal
                open={initDialog}
                setOpen={setInitDialog}
                    open={initDialog}
                    setOpen={setInitDialog}
                />
            </List>
            <LocCreate
@@ -263,8 +265,8 @@
                setDrawerVal={setDrawerVal}
            >
            </PageDrawer>
        </Box>
    )
}
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
@@ -191,10 +191,10 @@
        <TextField source="spec" label="table.field.asnOrderItem.spec" />,
        <TextField source="model" label="table.field.asnOrderItem.model" />,
        <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />,
        <NumberField source="qty" label="table.field.asnOrderItem.qty" />,
        <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />,
        <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />,
        <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />,
        <NumberField source="qty" label="table.field.asnOrderItem.qty" />,
        <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />,
        <TextField source="splrName" label="table.field.asnOrderItem.splrName" />,
        <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />,
@@ -238,7 +238,7 @@
          preferenceKey='asnOrderItem'
          bulkActionButtons={false}
          rowClick={(id, resource, record) => false}
          omit={['id', 'asnId', 'poDetlId', 'poDetlCode', 'matnrId', 'purQty', 'purUnit', 'qrcode', 'trackCode', 'splrCode', 'platWorkCode', 'projectCode']}
          omit={['id', 'asnId', 'asnCode', 'poDetlId', 'poDetlCode', 'matnrId', 'spec', 'model', 'purQty', 'purUnit', 'qrcode', 'trackCode', 'splrCode', 'platWorkCode', 'projectCode']}
        >
          {columns.map((column) => column)}
        </StyledDatagrid>}
rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
@@ -136,7 +136,7 @@
              setSelect(record)
              setEditDialog(true)
            }}
             omit={['id', 'createTime', 'createBy', 'memo', 'poDetlId', 'matnrId', 'asnId']}
             omit={['id', 'createTime', 'createBy', 'memo', 'poDetlId', 'purQty','purUnit','trackCode','packName','splrName','matnrId', 'asnId']}
          >
            <NumberField source="id" />
            <NumberField source="asnId" label="table.field.outStockItem.asnId" />
rsf-admin/src/page/orders/stock/OrderItemList.jsx
@@ -60,14 +60,16 @@
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart"  />,
    <DateInput label='common.time.before' source="timeEnd"  />,
    <DateInput label='common.time.after' source="timeStart" />,
    <DateInput label='common.time.before' source="timeEnd" />,
    <NumberInput source="orderId" label="table.field.stockItem.orderId" />,
    <TextInput source="orderCode" label="table.field.stockItem.orderCode" />,
    <TextInput source="sourceItemId" label="table.field.stockItem.sourceItemId" />,
    <TextInput source="matnrId" label="table.field.stockItem.matnrId" />,
    <TextInput source="matnrCode" label="table.field.stockItem.matnrCode" />,
    <TextInput source="maktx" label="table.field.stockItem.maktx" />,
    <TextInput source="locCode" label="table.field.loc.code" />,
    <TextInput source="barcode" label="table.field.task.barcode" />,
    <NumberInput source="anfme" label="table.field.stockItem.anfme" />,
    <TextInput source="stockUnit" label="table.field.stockItem.stockUnit" />,
    <NumberInput source="workQty" label="table.field.stockItem.workQty" />,
@@ -132,7 +134,7 @@
                    rowClick={(id, resource, record) => false}
                    expand={false}
                    expandSingle={true}
                    omit={['id', 'createTime', 'orderId', 'sourceItemId', 'matnrId', 'createBy','barcode', 'splrCode', 'splrBatch', 'updateBy$', 'createBy$', 'memo']}
                    omit={['id', 'createTime', 'orderId', 'sourceItemId', 'matnrId', 'purUnit','splrCode', 'purQty', 'createBy', 'packName', 'prodTime', 'splrName', 'splrCode', 'batch', 'packName', 'updateBy$', 'createBy$', 'memo']}
                >
                    <NumberField source="id" />
                    <NumberField source="orderId" label="table.field.stockItem.orderId" />
@@ -144,6 +146,8 @@
                    <NumberField source="anfme" label="table.field.stockItem.anfme" />
                    <TextField source="stockUnit" label="table.field.stockItem.stockUnit" />
                    <NumberField source="workQty" label="table.field.stockItem.workQty" />
                    <TextField source="locCode" label="table.field.loc.code" />,
                    <TextField source="barcode" label="table.field.task.barcode" />,
                    <NumberField source="purQty" label="table.field.stockItem.purQty" />
                    <TextField source="purUnit" label="table.field.stockItem.purUnit" />
                    <NumberField source="qty" label="table.field.stockItem.qty" />
@@ -152,7 +156,6 @@
                    <TextField source="splrBatch" label="table.field.stockItem.splrBatch" />
                    <TextField source="splrName" label="table.field.stockItem.splrName" />
                    <TextField source="trackCode" label="table.field.stockItem.trackCode" />
                    <TextField source="barcode" label="table.field.stockItem.barcode" />
                    <TextField source="prodTime" label="table.field.stockItem.prodTime" />
                    <TextField source="packName" label="table.field.stockItem.packName" />
                    <TextField source="updateBy$" label="common.field.updateBy" />
@@ -161,10 +164,6 @@
                    <DateField source="createTime" label="common.field.createTime" showTime />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    <TextField source="memo" label="common.field.memo" sortable={false} />
                    <WrapperField cellClassName="opt" label="common.field.opt">
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
                </StyledDatagrid>
            </List>
            <PageDrawer
rsf-admin/src/page/orders/stock/OrderList.jsx
@@ -116,18 +116,20 @@
                    bulkActionButtons={false}
                    rowClick='edit'
                    expandSingle={false}
                    omit={['id', 'createTime','sourceId', 'createBy', 'memo']}
                    omit={['id', 'createTime', 'sourceId', 'createBy', 'memo']}
                >
                    <NumberField source="id" />
                    <TextField source="code" label="table.field.stock.code" />
                    <TextField source="sourceCode" label="table.field.stock.sourceCode" />
                    <NumberField source="sourceId" label="table.field.stock.sourceId" />
                    <TextField source="locCode" label="table.field.locArea.locId" />,
                    <TextField source="barcode" label="table.field.task.barcode" />,
                    <TextField source="type$" label="table.field.stock.type" />
                    <TextField source="wkType$" label="table.field.stock.wkType" />
                    <NumberField source="anfme" label="table.field.stock.anfme" />
                    <TextField source="updateBy$" label="common.field.updateBy" />
                    <DateField source="updateTime" label="common.field.updateTime" showTime />
                    <TextField source="createBy$" label="common.field.createBy"  />
                    <TextField source="createBy$" label="common.field.createBy" />
                    <DateField source="createTime" label="common.field.createTime" showTime />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    <TextField source="memo" label="common.field.memo" sortable={false} />
rsf-admin/src/page/task/TaskList.jsx
@@ -218,7 +218,7 @@
    }
    return (
        record?.taskStatus == 198 && record?.taskType == 103 ? <ConfirmButton label={"toolbar.pick"} startIcon={<ColorizeOutlinedIcon />} onConfirm={pickClick} /> : <></>
        record?.taskStatus == 199 && record?.taskType == 103 ? <ConfirmButton label={"toolbar.pick"} startIcon={<ColorizeOutlinedIcon />} onConfirm={pickClick} /> : <></>
    )
}
rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx
@@ -335,7 +335,7 @@
                }}
                pageSizeOptions={[15, 25, 50, 100]}
                editMode="row"
                checkboxSelection
                checkboxSelection = {false}
                onRowSelectionModelChange={handleSelectionChange}
                selectionModel={selectedRows}
                sx={{
rsf-admin/src/page/work/components/StaSelect.jsx
@@ -29,19 +29,27 @@
    const http = async () => {
        setLoading(true);
        try {
            const res = await request.post('/selectStaList/page', {
                type: type,
                current: page,
                pageSize: perPage
            const res = await request.post('/selectStaList/list', {
                type: type
            });
            
            if (res?.data?.code === 200) {
                setList(res.data.data.records.map((item) => {
                    return {
                        id: item.site,
                        name: item.site
                    }
                }));
                // 使用Set来过滤重复的site值
                const uniqueSites = new Set();
                setList(res.data.data
                    .filter(item => {
                        if (uniqueSites.has(item.site)) {
                            return false;
                        }
                        uniqueSites.add(item.site);
                        return true;
                    })
                    .map((item) => {
                        return {
                            id: item.site,
                            name: item.site
                        }
                    }));
            } else {
                notify(res.data.msg);
            }
rsf-admin/src/page/work/outBound/OutBoundList.jsx
@@ -183,9 +183,9 @@
    }
    const http = async (sta, items) => {
        console.log(items);
        const filZores = items.filter(item => item.outQty  <= 0.0);
        const filter = items.filter(item => (item.outQty + item.workQty) > item.anfme);
        if (filter.length > 0) {
        if (filter.length > 0 || filZores.length > 0) {
            notify(translate('toolbar.request.error.out_stock_qty'))
            return
        }
@@ -222,7 +222,8 @@
            width: 100,
            type: 'number',
            editable: true,
            headerClassName: "custom",
            headerClassName: "custom",
        },
        {
            field: 'anfme',
@@ -315,6 +316,12 @@
    const processRowUpdate = (newRow, oldRow) => {
        // 确保outQty不小于0
        if (newRow.outQty <= 0) {
            notify(translate('request.error.qty_not_negative'), { type: 'error', messageArgs: { _: translate('request.error.qty_not_negative') } });
            return oldRow; // 如果小于0,保持原值不变
        }
        const rows = tabelData.map((r) =>
            r.id === newRow.id ? { ...newRow } : r
        )
@@ -350,7 +357,7 @@
                }}
                pageSizeOptions={[15, 25, 50, 100]}
                editMode="row"
                checkboxSelection
                checkboxSelection = {false}
                onRowSelectionModelChange={handleSelectionChange}
                selectionModel={selectedRows}
                sx={{
rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx
@@ -75,19 +75,47 @@
    tableRef.current = useGridApiRef();
    const translate = useTranslate();
    const [orgLoc, setOrgLoc] = useState([]);
    const [tarLoc, setTarLoc] = useState([]);
    const [orgLoc, setOrgLoc] = useState("");
    const [tarLoc, setTarLoc] = useState("");
    const [tarLocList, setTarLocList] = useState([]);
    useEffect(() => {
        selectAreaNoUse();
        if (orgLoc === "" || orgLoc.length < 7) {
            return;
        }
        selectLocItem().then((is) => {
            if (is) {
                selectAreaNoUse();
            }
        });
    },[orgLoc])
    const selectLocItem = async() =>{
        const {
            data: { code, data, msg },
        } = await request.post("/locItem/useO/page",{
            locCode: orgLoc,
            current: 1,
            pageSize: 100,
            orderBy: "create_time desc"
        });
        if (code === 200) {
            if(data.total !== 0) {
                setTableData(data.records);
                return true;
            }
        }
        return false;
    }
    const selectAreaNoUse = async() =>{
        const {
            data: { code, data, msg },
        } = await request.post("/loc/areaNoUse/list",{
            locCode: orgLoc
        });
        if (code === 200) {
            const newData = data.map((item) => {
@@ -154,7 +182,8 @@
                                <Stack direction='row' spacing={2} minWidth={200}>
                                    <SubmitButton
                                        orgLoc={orgLoc}
                                        tarLoc={tarLoc}
                                        tarLoc={tarLoc}
                                        tabelData={tabelData}
                                    />
                                </Stack>
                            </Box>
@@ -185,17 +214,21 @@
    const notify = useNotify();
    const redirect = useRedirect();
    const refresh = useRefresh();
    const { orgLoc, tarLoc } = props;
    const { orgLoc, tarLoc, tabelData } = props;
    const move = () => {
        console.log(orgLoc, tarLoc);
        if (orgLoc === "" || orgLoc === undefined || orgLoc === null) {
            notify("请选择站点");
            notify("请输入源库位");
            return;
        }
        if (tarLoc === "" || tarLoc === undefined || tarLoc === null) {
            notify("请选择站点");
            notify("请输入目标库位");
            return;
        }
        }
        if (tabelData.length === 0) {
            notify("源库位明细无,请检查库位状态");
            return;
        }
        http(orgLoc, tarLoc?.id)
    }
    const http = async (orgLoc, tarLoc) => {
@@ -308,7 +341,7 @@
                flex: 1,
                editable: false
            }))
            setColumns([...columns, ...cols, action])
            setColumns([...columns, ...cols])
        } else {
            notify(msg);
        }
@@ -340,7 +373,8 @@
            <DataGrid
                apiRef={tableRef}
                rows={tabelData}
                columns={columns}
                columns={columns}
                checkboxSelection = {false}
                disableRowSelectionOnClick
                getRowId={(row) => row.matnrId ? row.matnrId : row.id}
                disableColumnFilter
@@ -356,8 +390,7 @@
                    },
                }}
                pageSizeOptions={[10, 25, 50, 100]}
                editMode="row"
                checkboxSelection
                editMode="row"
                onRowSelectionModelChange={handleSelectionChange}
                selectionModel={selectedRows}
                sx={{
rsf-server/src/main/Test/ChineseMD5Util.java
@@ -1,70 +1,38 @@
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
public class ChineseMD5Util {
    /**
     * 对汉字字符串进行MD5加密
     * @param input 要加密的汉字字符串
     * @return 32位小写MD5哈希值
     * @throws NoSuchAlgorithmException
     */
    public static String md5Chinese(String input) throws NoSuchAlgorithmException {
        if (input == null) {
            return null;
    public static List<Integer> getSelectedIndices(int[] arr) {
        List<Integer> indices = new ArrayList<>();
        int index = 0;
        int step = 3;
        while (index < arr.length) {
            indices.add(index);
            index += step;
            step = (step == 3) ? 1 : 3;
        }
        // 统一使用UTF-8编码
        byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8);
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] digest = md.digest(inputBytes);
        // 将字节数组转换为16进制字符串
        StringBuilder sb = new StringBuilder();
        for (byte b : digest) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
        return indices;
    }
    /**
     * 验证汉字字符串与MD5哈希是否匹配
     * @param input 要验证的汉字字符串
     * @param md5Hash 存储的MD5哈希值
     * @return 如果匹配返回true,否则false
     */
    public static boolean verifyChinese(String input, String md5Hash) {
        try {
            String computedHash = md5Chinese(input);
            return computedHash.equals(md5Hash.toLowerCase());
        } catch (NoSuchAlgorithmException e) {
            // 理论上不会发生,因为MD5是Java标准库支持的
            return false;
    public static Integer getNextSelectedValue(int[] arr, int inputIndex) {
        List<Integer> selectedIndices = getSelectedIndices(arr);
        int currentPos = selectedIndices.indexOf(inputIndex);
        if (currentPos != -1 && currentPos + 1 < selectedIndices.size()) {
            return arr[selectedIndices.get(currentPos + 1)];
        }
        return null; // 或按需处理
    }
    public static void main(String[] args) {
        try {
            String chineseText = "你好,世界!";
        int[] arr = {2, 5, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 15, 40, 32, 48};
        System.out.println("输入 0,输出: " + getNextSelectedValue(arr, 0)); // 10
        System.out.println("输入 3,输出: " + getNextSelectedValue(arr, 3)); // 15
        System.out.println("输入 4,输出: " + getNextSelectedValue(arr, 4)); // 30
        System.out.println("输入 4,输出: " + getNextSelectedValue(arr, 5)); // 30
            // 加密
            String md5Hash = md5Chinese(chineseText);
            System.out.println("原文: " + chineseText);
            System.out.println("MD5哈希: " + md5Hash);
            // 验证
            boolean isValid = verifyChinese(chineseText, md5Hash);
            System.out.println("验证结果: " + (isValid ? "匹配" : "不匹配"));
            // 错误验证示例
            boolean isWrongValid = verifyChinese("你好,世界!", md5Hash);
            System.out.println("错误文本验证: " + (isWrongValid ? "匹配" : "不匹配"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -84,8 +84,6 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public InTaskMsgDto createInTask(TaskInParam param) {
        // 获取库位号
        InTaskMsgDto locNo = getLocNo(param);
        // 验证设备站点
        DeviceSite deviceSite = validateDeviceSite(param);
@@ -95,6 +93,9 @@
        // 生成任务编码
        String ruleCode = generateTaskCode();
        // 获取库位号
        InTaskMsgDto locNo = getLocNo(param);
        // 创建并保存任务
        Task task = createTask(ruleCode, locNo.getLocNo(), waitPakin.getBarcode(),
@@ -492,7 +493,7 @@
                if ((ioType == 1 && deviceBind.getBeSimilar().equals("1"))) {
                    //相似物料打开,判断深库位有没有货,没货就放深库位,有货就不操作
                    Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
                            .eq(Loc::getRow, shallowLoc)
                            .eq(Loc::getCode, shallowLoc)
                            .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                            .eq(Loc::getAreaId, area)
                    );
@@ -561,7 +562,7 @@
        //查询当前库位类型空库位 小于5个则locmast = null
        List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>()
                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                .eq(Loc::getDeviceNo, deviceNo)
                .eq(Loc::getChannel, deviceNo)
                .eq(Loc::getType, locTypeDto.getLocType1())
                .eq(Loc::getAreaId, area)
        );
rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
@@ -9,6 +9,7 @@
import com.vincent.rsf.server.manager.entity.DeviceBind;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.service.DeviceBindService;
import com.vincent.rsf.server.manager.service.LocService;
import java.util.List;
@@ -19,27 +20,54 @@
     * 获取 浅库位对应的深库位号
     */
    public static String getDeepLoc(SlaveProperties slaveProperties, String shallowLoc) {
        int row = getRow(shallowLoc);
        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
        int targetRow;
        if (remainder == 2) {
            targetRow = row - 1;
        } else if (remainder == 3) {
            targetRow = row + 1;
        } else {
            throw new CoolException(shallowLoc + "不是浅库位,系统繁忙");
        LocService locService = SpringUtils.getBean(LocService.class);
        Loc shaLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
        int row = shaLoc.getRow()-1;
        boolean contains = slaveProperties.getDoubleLocs().contains(row);
        Loc deepLoc = null;
        if (contains) {
            deepLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
                    .eq(Loc::getAreaId, shaLoc.getAreaId())
                    .eq(Loc::getRow, row)
                    .eq(Loc::getCol, shaLoc.getCol())
                    .eq(Loc::getLev, shaLoc.getLev())
            );
        }else {
            deepLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
                    .eq(Loc::getAreaId, shaLoc.getAreaId())
                    .eq(Loc::getRow, shaLoc.getRow()+1)
                    .eq(Loc::getCol, shaLoc.getCol())
                    .eq(Loc::getLev, shaLoc.getLev())
            );
        }
        return zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2);
        return deepLoc.getCode();
    }
    /**
     * 获取 深库位对应的浅库位号
     */
    public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
        int row = getRow(deepLoc);
        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
        int shallowRow = remainder == 1 ? (row + 1) : (row - 1);
        return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2);
        LocService locService = SpringUtils.getBean(LocService.class);
        Loc depLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, deepLoc));
        int row = depLoc.getRow()-1;
        boolean contains = slaveProperties.getDoubleLocs().contains(row);
        Loc shallowLoc = null;
        if (!contains) {
            shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
                    .eq(Loc::getAreaId, depLoc.getAreaId())
                    .eq(Loc::getRow, row)
                    .eq(Loc::getCol, depLoc.getCol())
                    .eq(Loc::getLev, depLoc.getLev())
            );
        }else {
            shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
                    .eq(Loc::getAreaId, depLoc.getAreaId())
                    .eq(Loc::getRow, depLoc.getRow()+1)
                    .eq(Loc::getCol, depLoc.getCol())
                    .eq(Loc::getLev, depLoc.getLev())
            );
        }
        return shallowLoc.getCode();
    }
    /**
@@ -117,7 +145,12 @@
     */
    public static int getRow(String locNo) {
        if (!Cools.isEmpty(locNo)) {
            return Integer.parseInt(locNo.substring(0, 2));
            LocService locService = SpringUtils.getBean(LocService.class);
            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locNo));
            if (null == loc) {
                throw new RuntimeException("库位解析异常");
            }
            return loc.getRow();
        }
        throw new RuntimeException("库位解析异常");
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java
@@ -42,20 +42,15 @@
    @PreAuthorize("hasAuthority('manager:deviceSite:list')")
    @PostMapping("/selectStaList/page")
    @PostMapping("/selectStaList/list")
    public R selectStaList(@RequestBody Map<String, Object> map) {
        List<String> longs = null;
        if (map.get("type") != null) {
            longs = JSONArray.parseArray(map.get("type").toString(), String.class);
            map.entrySet().removeIf(next -> next.getKey().equals("type"));
        }
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<DeviceSite, BaseParam> pageParam = new PageParam<>(baseParam, DeviceSite.class);
        QueryWrapper<DeviceSite> queryWrapper = pageParam.buildWrapper(true);
        queryWrapper.lambda().in(DeviceSite::getType, longs);
        PageParam<DeviceSite, BaseParam> page = deviceSiteService.page(pageParam, queryWrapper);
        return R.ok().add(page );
        List<DeviceSite> list = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>().in(DeviceSite::getType, longs));
        return R.ok().add(list);
    }
    @PreAuthorize("hasAuthority('manager:deviceSite:list')")
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java
@@ -15,6 +15,7 @@
import com.vincent.rsf.server.manager.controller.params.LocMastInitParam;
import com.vincent.rsf.server.manager.controller.params.LocModifyParams;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.manager.service.LocService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
@@ -61,7 +62,13 @@
    @PreAuthorize("hasAuthority('manager:loc:list')")
    @PostMapping("/loc/areaNoUse/list")
    public R areaNoUselist(@RequestBody Map<String, Object> map) {
        List<Loc> list = locService.list();
        String locCode = map.get("locCode").toString();
        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locCode),false);
        List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>()
                .eq(Loc::getAreaId, loc.getAreaId())
                .eq(Loc::getChannel,loc.getChannel())
                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
        );
        List<String> list1 = list.stream().map(obj -> obj.getCode()).collect(Collectors.toList());
        return R.ok(list1);
    }
@@ -220,6 +227,10 @@
        if (Objects.isNull(param.getEndLev())) {
            return R.error("终止层不能为空!!");
        }
        if (Objects.isNull(param.getChannel())) {
            return R.error("巷道不能为空!!");
        }
        return locService.initLocs(param, getLoginUserId());
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
@@ -31,4 +31,7 @@
    @ApiModelProperty("目标站点")
    private String target;
    @ApiModelProperty("巷道")
    private Integer channel;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java
@@ -50,5 +50,9 @@
    @NotBlank(message = "库位类型")
    private List<Long> typeIds;
    @ApiModelProperty("巷道")
    @NotBlank(message = "巷道")
    private Integer channel;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java
@@ -129,6 +129,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -234,6 +234,7 @@
     * 是否删除 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java
@@ -185,6 +185,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
@@ -126,6 +126,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasDevice.java
@@ -65,6 +65,10 @@
    @ApiModelProperty(value= "源数据")
    private String origin;
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
     * 创建人
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasStation.java
@@ -118,6 +118,10 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
     * 创建人
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BatchRegular.java
@@ -64,6 +64,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Companys.java
@@ -122,6 +122,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Container.java
@@ -138,6 +138,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Contract.java
@@ -64,6 +64,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Customer.java
@@ -52,6 +52,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java
@@ -122,6 +122,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
@@ -147,6 +147,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceBind.java
@@ -88,6 +88,10 @@
    @ApiModelProperty(value= "空板靠近开关")
    private String emptySimilar;
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    public DeviceBind() {}
    public DeviceBind(Integer currentRow,Integer startRow,Integer endRow,Integer deviceQty,Integer startDeviceNo,Integer endDeviceNo,String staList,Integer typeId,String beSimilar,String emptySimilar) {
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
@@ -102,8 +102,13 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    @ApiModelProperty(value= "巷道")
    private Integer channel;
    /**
     * 租户
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java
@@ -70,6 +70,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java
@@ -181,6 +181,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocArea.java
@@ -66,6 +66,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMat.java
@@ -66,6 +66,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java
@@ -91,6 +91,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaRela.java
@@ -60,6 +60,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -182,6 +182,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
@@ -197,6 +197,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java
@@ -70,6 +70,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
@@ -224,6 +224,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    @ApiModelProperty("动态扩展字段")
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/MatnrGroup.java
@@ -70,6 +70,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java
@@ -147,6 +147,7 @@
     * 是否删除 1: 是  0: 否
     */
    @ApiModelProperty(value = "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java
@@ -132,6 +132,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyInspect.java
@@ -98,6 +98,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java
@@ -151,6 +151,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Shipper.java
@@ -59,6 +59,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java
@@ -79,6 +79,12 @@
    @ApiModelProperty(value= "库存数量")
    private Double anfme;
    @ApiModelProperty(value= "条形码")
    private String barcode;
    @ApiModelProperty("库位")
    private String locCode;
    /**
     * 状态 1: 正常  0: 冻结  
     */
@@ -89,6 +95,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java
@@ -191,6 +191,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -152,6 +152,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -3,7 +3,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.vincent.rsf.server.system.constant.DictTypeCode;
@@ -12,9 +12,6 @@
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -167,6 +164,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItemLog.java
@@ -130,6 +130,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
@@ -142,6 +142,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
@@ -83,6 +83,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
@@ -158,6 +158,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItemLog.java
@@ -140,6 +140,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java
@@ -78,6 +78,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Warehouse.java
@@ -100,6 +100,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java
@@ -108,6 +108,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java
@@ -182,6 +182,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Wave.java
@@ -124,6 +124,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java
@@ -142,6 +142,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
@@ -60,7 +60,9 @@
                                .setDevice(param.getDeviceType())
                                .setDeviceSite(deviceSite)
                                .setTarget(target)
                                .setDeviceCode(param.getDeviceCode());
                                .setDeviceCode(param.getDeviceCode())
                                .setChannel(param.getChannel())
                                ;
                        deviceSites.add(site1);
                    }
                }
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -138,6 +138,10 @@
                    throw new CoolException("库存信息不存在!");
                }
                if (locItem.getOutQty().compareTo(0.0) < 0) {
                    throw new CoolException("出库数里不能小于0!!");
                }
                if (locItem.getAnfme().compareTo(qty) < 0) {
                    Double minusQty = Math.round((locItem.getAnfme() - locItem.getWorkQty()) * 10000) / 10000.0;
                    item.setWorkQty(minusQty);
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
@@ -17,6 +17,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -103,7 +104,11 @@
        }
        List<Loc> list = new ArrayList<>();
        Integer chanl = 0; //默认第一巷道
        for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
            if (r % param.getChannel() == 1) {
                chanl ++;
            }
            for (int b = param.getStartBay(); b <= param.getEndBay(); b++) {
                for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
                    // 获取库位号
@@ -114,6 +119,7 @@
                            .setRow(r)
                            .setCol(b)
                            .setLev(l)
                            .setChannel(chanl)
                            .setType(join)
                            .setAreaId(param.getAreaId())
                            .setUpdateBy(loginUserId)
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -545,7 +545,7 @@
        TaskItem taskItem = taskItems.stream().findFirst().get();
        //保存入出库流水
        saveStockItems(taskItems, null, null, taskItem.getWkType(), taskItem.getOrderType());
        saveStockItems(taskItems, task, null, null, taskItem.getWkType(), taskItem.getOrderType());
        if (!locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId()))) {
@@ -780,6 +780,7 @@
        /**修改为库位状态为O.空库*/
        if (!locService.update(new LambdaUpdateWrapper<Loc>()
                .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                .set(Loc::getBarcode, null)
                .eq(Loc::getId, loc.getId()))) {
            throw new CoolException("库位状态修改失败!!");
        }
@@ -900,7 +901,7 @@
            List<TaskItem> items = orderMap.get(key);
            try {
                //保存库存明细
                saveStockItems(items, pakinItem.getId(), pakinItem.getAsnCode(), pakinItem.getWkType(), pakinItem.getType());
                saveStockItems(items, task,  pakinItem.getId(), pakinItem.getAsnCode(), pakinItem.getWkType(), pakinItem.getType());
                //移出收货区库存, 修改组托状态
                removeReceiptStock(pakinItem);
            } catch (Exception e) {
@@ -988,7 +989,7 @@
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveStockItems(List<TaskItem> items, Long id, String code, Short wkType, String type) throws
    public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type) throws
            Exception {
        Stock stock = new Stock();
        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
@@ -1001,7 +1002,17 @@
                .setSourceCode(code)
                .setAnfme(sum)
                .setWkType(wkType)
                .setBarcode(task.getBarcode())
                .setType(type);
        if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) ||
                task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type) ||
                task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type) ||
                task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type) ||
                task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) ) {
            stock.setLocCode(task.getTargLoc());
        } else {
            stock.setLocCode(task.getOrgLoc());
        }
        if (!stockService.save(stock)) {
            throw new CoolException("库存保存失败!!");
        }
@@ -1013,6 +1024,7 @@
            BeanUtils.copyProperties(item, stockItem);
            stockItem.setSourceItemId(item.getOrderItemId())
                    .setStockCode(stock.getCode())
                    .setBarcode(task.getBarcode())
                    .setSourceItemId(item.getOrderItemId())
                    .setId(null)
                    .setStockId(stock.getId());
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Dept.java
@@ -116,6 +116,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/DictData.java
@@ -86,6 +86,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Menu.java
@@ -132,6 +132,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Role.java
@@ -57,6 +57,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/SerialRuleItem.java
@@ -84,6 +84,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/User.java
@@ -132,6 +132,7 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/resources/application.yml
@@ -29,10 +29,10 @@
    call-setters-on-nulls: true
  global-config:
    :banner: false
#    db-config:
#      id-type: auto
#      logic-delete-value: 1
#      logic-not-delete-value: 0
    db-config:
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
super:
  pwd: xltys1995
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
@@ -57,6 +57,7 @@
                    aoi.memo
                FROM
                    man_asn_order_item aoi
                where aoi.deleted = 0
--                         LEFT JOIN man_qly_ispt_item qii ON aoi.id = qii.asn_item_id
            ) t
        ${ew.customSqlSegment}
@@ -117,6 +118,7 @@
                    aoi.memo
                FROM
                    man_asn_order_item aoi
                where aoi.deleted = 0
--                         LEFT JOIN man_qly_ispt_item qii ON aoi.id = qii.asn_item_id
            ) t
            ${ew.customSqlSegment}
rsf-server/src/main/resources/mapper/manager/MatnrMapper.xml
@@ -32,6 +32,7 @@
            `valid_warn`,
            `flag_check`
        from man_matnr
        where deleted = 0
        ${ew.customSqlSegment}
    </select>
</mapper>
rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml
@@ -14,6 +14,7 @@
        FROM
            man_purchase_item mpi
        WHERE
            deleted = 0 and
            id IN ( SELECT po_detl_id FROM man_asn_order_item
            <where>
                1 = 1
rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml
@@ -26,7 +26,10 @@
                     update_time,
                     memo
              FROM man_qly_ispt_item qii
                       LEFT JOIN man_qly_inspect_result qir ON qii.id = qir.ispt_item_id) t
                       LEFT JOIN man_qly_inspect_result qir ON qii.id = qir.ispt_item_id
              where qii.deleted = 0
              ) t
            ${ew.customSqlSegment}
    </select>
    <select id="selectIsptResult" resultType="com.vincent.rsf.server.manager.entity.QlyIsptItem">
@@ -53,7 +56,10 @@
                     update_by,
                     update_time,
                     memo
              FROM man_qly_ispt_item qii) t
              FROM man_qly_ispt_item qii
              where qii.deleted = 0
              ) t
            ${ew.customSqlSegment}
    </select>
rsf-server/src/main/resources/mapper/manager/WarehouseAreasItemMapper.xml
@@ -37,7 +37,9 @@
                     update_time,
                     memo
              FROM man_warehouse_areas_item qai
                       LEFT JOIN man_qly_inspect_result qir ON qai.id = qir.rcpt_id) t
                       LEFT JOIN man_qly_inspect_result qir ON qai.id = qir.rcpt_id
              where qai.deleted = 0
              ) t
            ${ew.customSqlSegment}
    </select>
</mapper>
rsf-server/src/main/resources/mapper/manager/WarehouseMapper.xml
@@ -4,6 +4,6 @@
    <select id="selectByName" resultType="com.vincent.rsf.server.manager.entity.Warehouse">
        SELECT wh.id AS id FROM man_warehouse wh LEFT JOIN man_warehouse_areas wa on wh.id = wa.warehouse_id
        WHERE wh.`name` LIKE CONCAT('%',#{name},'%') OR wa.`name` LIKE CONCAT('%',#{name},'%')
        WHERE wh.`name` LIKE CONCAT('%',#{name},'%') OR wa.`name` LIKE CONCAT('%',#{name},'%') and wh.deleted = 0 and wa.deleted = 0
    </select>
</mapper>