1
4 天以前 eba3ce4a22ea7bd74c6ad4a9114039c3ce43f476
Merge remote-tracking branch 'origin/devlop-phyz' into devlop-phyz

# Conflicts:
# rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
9个文件已修改
1个文件已添加
353 ■■■■ 已修改文件
rsf-admin/src/i18n/zh.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrderItem/AsnOrderItemList.jsx 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/config/orderItemColumns.jsx 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStockItem/OutStockItemList.jsx 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/InBoundController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js
@@ -720,7 +720,7 @@
                orderCode: "单号",
                matnrId: "物料标识",
                platOrderCode: '客户单号',
                platWorkCode: '工单号',
                platWorkCode: '计划跟踪号',
                projectCode: '项目号',
                maktx: "物料名称",
                spec: "规格",
@@ -778,7 +778,7 @@
                model: "型号",
                fieldsIndex: "字段索引",
                platOrderCode: "客单号",
                platWorkCode: "工单号",
                platWorkCode: "计划跟踪号",
                projectCode: "项目单号",
            },
@@ -815,7 +815,7 @@
                platItemId: '行号',
                matnrId: "物料标识",
                platOrderCode: '客户单号',
                platWorkCode: '工单号',
                platWorkCode: '计划跟踪号',
                projectCode: '项目号',
                maktx: "物料名称",
                spec: "规格",
rsf-admin/src/page/orders/asnOrderItem/AsnOrderItemList.jsx
@@ -39,8 +39,8 @@
import { styled } from '@mui/material/styles';
import PageDrawer from "../../components/PageDrawer";
import request from '@/utils/request';
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import { fetchInOrderItemColumns } from '../config/orderItemColumns';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -147,50 +147,11 @@
    }, []);
    const getDynamicFields = async () => {
        const { data: { code, data, msg }, } = await request.get("/fields/enable/list");
        if (code == 200) {
            const arr = [
                <NumberField source="id" />,
                <NumberField source="orderId" label="table.field.asnOrderItem.orderId" />,
                <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" />,
                // <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />,
                // <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />,
                <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />,
                <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />,
                <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />,
                <TextField source="maktx" label="table.field.asnOrderItem.maktx" />,
                <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />,
                <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />,
                <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />,
                <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />,
                <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" />,
                <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />,
                <TextField source="splrName" label="table.field.asnOrderItem.splrName" />,
                <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />,
                <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />,
                <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />,
                <TextField source="packName" label="table.field.asnOrderItem.packName" />,
            ]
            const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />)
            const lastArr = [
                <DateField source="updateTime" label="common.field.updateTime" showTime />,
                <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                    <TextField source="nickname" />
                </ReferenceField>,
                <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
                    <TextField source="nickname" />
                </ReferenceField>,
                <DateField source="createTime" label="common.field.createTime" showTime />,
            ]
            setColumns([...arr, ...fields, ...lastArr]);
        const result = await fetchInOrderItemColumns();
        if (result.success) {
            setColumns(result.columns);
        } else {
            notify(msg);
            notify(result.msg);
        }
    }
rsf-admin/src/page/orders/config/orderItemColumns.jsx
New file
@@ -0,0 +1,138 @@
import React from "react";
import {
    TextField,
    NumberField,
    DateField,
    ReferenceField,
} from 'react-admin';
import request from '@/utils/request';
/**
 * 获取出库订单明细的基础列配置
 * @returns {Array} 基础列数组
 */
export const getOutOrderItemBaseColumns = () => [
    <NumberField source="id" key="id" />, // id
    <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" key="orderCode" />, // 订单号
    <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" key="platWorkCode" />, //计划跟踪号
    <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" key="splrCode" />, //供应商编码
    <TextField source="splrName" label="table.field.asnOrderItem.splrName" key="splrName" />, //供应商名称
    <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" key="platItemId" />, //行号
    <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" key="matnrCode" />, //物料编码
    <TextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" />, //物料名称
    <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" key="splrBatch" />, //批次
    <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格
    <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量
    <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量
    <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" key="stockUnit" />, //单位
];
/**
 * 获取入库订单明细的基础列配置
 * @returns {Array} 基础列数组
 */
export const getInOrderItemBaseColumns = () => [
    <NumberField source="id" key="id" />, // id
    <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" key="orderCode" />, // 订单号
    <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" key="platWorkCode" />, //计划跟踪号
    <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" key="splrCode" />, //供应商编码
    <TextField source="splrName" label="table.field.asnOrderItem.splrName" key="splrName" />, //供应商名称
    <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" key="platItemId" />, //行号
    <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" key="matnrCode" />, //物料编码
    <TextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" />, //物料名称
    <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" key="splrBatch" />, //批次
    <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格
    <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量
    <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量
    <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" key="stockUnit" />, //单位
];
/**
 * 获取动态扩展字段列
 * @param {Array} fieldsData - 动态字段数据
 * @returns {Array} 动态字段列数组
 */
export const getExtendFieldColumns = (fieldsData) => {
    return fieldsData.map(el => (
        <TextField
            key={el.fields}
            source={`extendFields.[${el.fields}]`}
            label={el.fieldsAlise}
        />
    ));
};
/**
 * 获取订单明细的尾部列配置(时间和操作人信息)
 * @returns {Array} 尾部列数组
 */
export const getLastColumns = () => [
    <DateField source="updateTime" label="common.field.updateTime" showTime key="updateTime" />,
    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false} key="updateBy">
        <TextField source="nickname" />
    </ReferenceField>,
    <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false} key="createBy">
        <TextField source="nickname" />
    </ReferenceField>,
    <DateField source="createTime" label="common.field.createTime" showTime key="createTime" />,
];
/**
 * 组合入库订单明细所有列配置
 * @param {Array} extendFieldsData - 动态扩展字段数据
 * @returns {Array} 完整的列配置数组
 */
export const buildInOrderItemColumns = (extendFieldsData = []) => {
    return [
        ...getInOrderItemBaseColumns(),
        ...getExtendFieldColumns(extendFieldsData),
        ...getLastColumns()
    ];
};
/**
 * 组合出库订单明细所有列配置
 * @param {Array} extendFieldsData - 动态扩展字段数据
 * @returns {Array} 完整的列配置数组
 */
export const buildOutOrderItemColumns = (extendFieldsData = []) => {
    return [
        ...getOutOrderItemBaseColumns(),
        ...getExtendFieldColumns(extendFieldsData),
        ...getLastColumns()
    ];
};
/**
 * 获取动态字段并构建完整列配置
 * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>}
 */
export const fetchInOrderItemColumns = async () => {
    try {
        const { data: { code, data, msg } } = await request.get("/fields/enable/list");
        if (code == 200) {
            return { success: true, columns: buildInOrderItemColumns(data) };
        } else {
            return { success: false, msg };
        }
    } catch (error) {
        return { success: false, msg: error.message };
    }
};
/**
 * 获取动态字段并构建完整列配置
 * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>}
 */
export const fetchOutOrderItemColumns = async () => {
    try {
        const { data: { code, data, msg } } = await request.get("/fields/enable/list");
        if (code == 200) {
            return { success: true, columns: buildOutOrderItemColumns(data) };
        } else {
            return { success: false, msg };
        }
    } catch (error) {
        return { success: false, msg: error.message };
    }
};
rsf-admin/src/page/orders/outStockItem/OutStockItemList.jsx
@@ -39,8 +39,8 @@
import { styled } from '@mui/material/styles';
import PageDrawer from "../../components/PageDrawer";
import request from '@/utils/request';
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import { fetchOutOrderItemColumns } from '../config/orderItemColumns';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -147,50 +147,11 @@
    }, []);
    const getDynamicFields = async () => {
        const { data: { code, data, msg }, } = await request.get("/fields/enable/list");
        if (code == 200) {
            const arr = [
                <NumberField source="id" />,
                <NumberField source="orderId" label="table.field.asnOrderItem.orderId" />,
                <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" />,
                // <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />,
                // <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />,
                <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />,
                <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />,
                <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />,
                <TextField source="maktx" label="table.field.asnOrderItem.maktx" />,
                <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />,
                <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />,
                <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />,
                <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />,
                <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" />,
                <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />,
                <TextField source="splrName" label="table.field.asnOrderItem.splrName" />,
                <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />,
                <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />,
                <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />,
                <TextField source="packName" label="table.field.asnOrderItem.packName" />,
            ]
            const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />)
            const lastArr = [
                <DateField source="updateTime" label="common.field.updateTime" showTime />,
                <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                    <TextField source="nickname" />
                </ReferenceField>,
                <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
                    <TextField source="nickname" />
                </ReferenceField>,
                <DateField source="createTime" label="common.field.createTime" showTime />,
            ]
            setColumns([...arr, ...fields, ...lastArr]);
        const result = await fetchOutOrderItemColumns();
        if (result.success) {
            setColumns(result.columns);
        } else {
            notify(msg);
            notify(result.msg);
        }
    }
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java
@@ -25,7 +25,6 @@
    private AgvService agvService;
    @ApiOperation("站点绑定查询")
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @PostMapping("/staBind/list")
    public R getStaBindList(@RequestBody Map<String, Object> params) {
        if (Objects.isNull(params)) {
@@ -35,7 +34,6 @@
    }
    @ApiOperation("站点查询")
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @PostMapping("/staMsg/select")
    public R getStaMsgSelect(@RequestBody Map<String, Object> params) {
        if (Objects.isNull(params)) {
@@ -44,7 +42,6 @@
        return agvService.getStaMsgSelect(params);
    }
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @ApiOperation("站点绑定")
    @PostMapping("/AGV/staBind")
    public R getAGVStaBind(@RequestBody WaitPakinParam waitPakinPda) {
@@ -54,7 +51,6 @@
        return agvService.getAGVStaBind(waitPakinPda);
    }
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @ApiOperation("站点解绑")
    @PostMapping("/AGV/staUnBind")
    public R getAGVStaUnBind(@RequestBody Map<String, Object> params) {
@@ -64,7 +60,6 @@
        return agvService.AGVStaUnBind(params);
    }
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @ApiOperation("AGV启动入库")
    @PostMapping("/AGV/task/start")
    public R AGVInTaskStart(@RequestBody WaitPakinParam waitPakinPda) {
@@ -74,7 +69,6 @@
        return agvService.AGVInTaskStart(waitPakinPda, getLoginUserId());
    }
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @ApiOperation("AGV绑定&入库")
    @PostMapping("/AGV/bindAndIn/start")
    public R AGVBindAndInTaskStart(@RequestBody WaitPakinParam waitPakinPda) {
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/InBoundController.java
@@ -23,7 +23,6 @@
    @Autowired
    private InBoundService inBoundService;
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/in/emptyContainer/warehousing")
    @ApiOperation("空容器入库")
    public R emptyContainerWarehousing(@RequestBody PdaGeneralParam param) {
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java
@@ -49,8 +49,10 @@
    private WaitPakinService waitPakinService;
    @Autowired
    private AgvService agvService;
    /**
     * PDA用户登录
     *
     * @param param
     * @param request
     * @return
@@ -71,13 +73,12 @@
        return mobileService.login(param, request);
    }
    /**
     * 标准扫码收货信息
     *
     * @param trackCode
     * @return
     */
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @GetMapping("/orders/{trackCode}")
    @ApiOperation("标准扫码收货")
    public R  getOrderBybarcode(@PathVariable String trackCode) {
@@ -89,10 +90,10 @@
    /**
     * 确认收货信息
     *
     * @param params
     * @return
     */
    @PreAuthorize("hasAuthority('manager:warehouseAreas:save')")
    @PostMapping("/orders/confirm")
    @ApiOperation("确认收货")
    public R confirmReceipt(@RequestBody Map<String, Object> params) {
@@ -102,7 +103,6 @@
        return mobileService.receiptToWarehouse(params, getLoginUserId());
    }
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @PostMapping("/orders/other")
    @ApiOperation("其它扫码收货")
    public R getOtherReceipt(@RequestBody OtherReceiptParams params) {
@@ -112,38 +112,30 @@
        return mobileService.otherReceipt(params);
    }
    @PreAuthorize("hasAuthority('manager:warehouseAreas:list')")
    @ApiOperation("获取收货区")
    @GetMapping("/areas/receipt")
    public R getReceiptAreas() {
        return mobileService.getReceiptAreas(getLoginUser());
    }
    @PreAuthorize("hasAuthority('manager:warehouseAreas:list')")
    @ApiOperation("获取可用库区")
    @GetMapping("/areas/user/all")
    public R getAreasUserAll() {
        return mobileService.getAreasUserAll(getLoginUser());
    }
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @GetMapping("/orders/asn")
    @ApiOperation("获取通知单")
    public R getAllAsnOrders() {
        return R.ok(mobileService.getAllAsnOrders());
    }
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @GetMapping("/dynamic/fields")
    @ApiOperation("获取动态字段")
    public R getDynamicFields() {
        return R.ok(mobileService.getDynamicFields());
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
    @ApiOperation("获取订单物料明细")
    @PostMapping("/asnOrderItem/trackCode")
    public R getItemByTrackCode(@RequestBody Map<String, Object> params) {
@@ -153,7 +145,6 @@
        return mobileService.getDeltByCode(params);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
    @ApiOperation("获取拖盘明细")
    @PostMapping("/asnOrderItem/container")
    public R getItemByContainer(@RequestBody Map<String, Object> params) {
@@ -167,7 +158,6 @@
        }
    }
    @PreAuthorize("hasAuthority('manager:waitPakin:update')")
    @ApiOperation("组托")
    @PostMapping("/waitPakin/merge")
    public R pikinOrder(@RequestBody WaitPakinParam waitPakin) {
@@ -189,7 +179,6 @@
        return R.ok();
    }
    @PreAuthorize("hasAuthority('manager:waitPakin:update')")
    @ApiOperation("组拖解绑")
    @PostMapping("/waitPakin/unbind")
    public R pakinUnBind(@RequestBody WaitPakinParam param) {
@@ -207,7 +196,7 @@
    @ApiOperation("报检")
    @GetMapping("/asnOrder/inspect/{code}")
    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
    public R getAsnOdrers(@PathVariable String code) {
        if (Objects.isNull(code)) {
            throw new CoolException("参数不能为空!!");
@@ -217,7 +206,7 @@
    @ApiOperation("提交报检")
    @GetMapping("/inspect/confirm/{id}")
    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
    public R confirmInspect(@PathVariable String id) {
        if (Objects.isNull(id)) {
            throw new CoolException("参数不能为空!");
@@ -226,7 +215,7 @@
    }
    @ApiOperation("快速质检信息")
    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
//    @PostMapping("/inspect/query")
    public R checkObjs(@RequestBody CheckObjParams params) {
        if (Objects.isNull(params)) {
@@ -235,9 +224,8 @@
        return mobileService.checkObjs(params);
    }
    @ApiOperation("快速质检")
    @PreAuthorize("hasAuthority('manager:qlyInspect:update')")
    @PostMapping("/inspect/check/update")
    public R checkUpdate(@RequestBody List<QlyIsptItem> params) {
        if (Objects.isNull(params) || params.isEmpty()) {
@@ -247,7 +235,7 @@
    }
    @ApiOperation("获取上架信息")
    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
    @PostMapping("/stock/operate/list")
    public R operateToStock(@RequestBody OpStockParams params) {
        if (Objects.isNull(params)) {
@@ -257,21 +245,22 @@
    }
    @ApiOperation("人工上架")
    @PreAuthorize("hasAuthority('manager:qlyInspect:update')")
    @PostMapping("/stock/operate")
    public R publicToStock(@RequestBody ManualShelvingParams params) {
        if (Cools.isEmpty(params.getItemList()) || Cools.isEmpty(params.getLocCode()) || Cools.isEmpty(params.getBarcode())) {
        if (Cools.isEmpty(params.getItemList()) || Cools.isEmpty(params.getLocCode())
                || Cools.isEmpty(params.getBarcode())) {
            return R.error("参数不能为空!!");
        }
        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode()));
        WaitPakin waitPakin = waitPakinService
                .getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode()));
        return taskService.generateFlatWarehouseTasks(waitPakin, params.getLocCode(), getLoginUserId());
//        return mobileService.publicToStock(params, getLoginUserId());
    }
    @ApiOperation("获取任务信息")
    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
    @PostMapping("/task/stock/{code}")
    public R taskToStock(@PathVariable String code) {
        if (Objects.isNull(code)) {
@@ -281,7 +270,7 @@
    }
    @ApiOperation("任务上架")
    @PreAuthorize("hasAuthority('manager:qlyInspect:update')")
    @PostMapping("/task/public/{code}")
    public R taskToLocs(@PathVariable String code) throws Exception {
        if (Objects.isNull(code)) {
@@ -292,7 +281,7 @@
    @ApiOperation("一键收货")
    @PostMapping("/complete/{id}")
    @PreAuthorize("hasAuthority('manager:asnOrder:update')")
    public R completeOrder(@PathVariable Long id) {
        if (Objects.isNull(id)) {
            return R.error("参数不能为空!!");
@@ -300,10 +289,9 @@
        return mobileService.completeOrder(id, getLoginUserId());
    }
    @ApiOperation("获取不良托盘物料")
    @PostMapping("/defect/matnrs")
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    public R getAsnDefectItemByCode(@RequestBody Map<String, Object> map) {
        if (Objects.isNull(map)) {
            return R.error("参数不能为空!!");
@@ -313,7 +301,7 @@
    @ApiOperation("获取订单不良物料")
    @PostMapping("/defect/{trackCode}")
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    public R defectProducts(@PathVariable String trackCode) {
        if (Objects.isNull(trackCode)) {
            return R.error("参数不能为空!!");
@@ -323,7 +311,7 @@
    @ApiOperation("获取组拖入库信息")
    @PostMapping("/pakin/info/{barcode}")
    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
    public R getPakinInStock(@PathVariable String barcode) {
        if (Objects.isNull(barcode)) {
            return R.error("参数不能为空!!");
@@ -333,21 +321,21 @@
    @ApiOperation("获取上架站点信息")
    @GetMapping("/inStock/sites")
    @PreAuthorize("hasAuthority('manager:deviceSite:list')")
    public R getTarSite() {
        return mobileService.getDeviceSites();
    }
    @ApiOperation("获取推荐库位列表信息")
    @GetMapping("/locs/list")
    @PreAuthorize("hasAuthority('manager:deviceSite:list')")
    public R getLocs() {
        return mobileService.getRecommondLocs();
    }
    @ApiOperation("生成任务列表")
    @PostMapping("/pakin/task")
    @PreAuthorize("hasAuthority('manager:deviceSite:list')")
    public R pakinToTask(@RequestBody Map<String, Object> map) {
        if (Objects.isNull(map)) {
            return R.error("参数不能为空!!");
@@ -355,4 +343,3 @@
        return mobileService.generateTask(map, getLoginUserId());
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java
@@ -20,7 +20,6 @@
    @Autowired
    private PdaCheckOrderService pdaCheckOrderService;
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getCheckList")
    @ApiOperation("查询盘点差异单列表")
    public R getCheckList(@RequestBody Map<String, String> map) {
@@ -28,7 +27,6 @@
        return pdaCheckOrderService.getCheckList(map.get("code"));
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getCheckTaskItemList")
    @ApiOperation("查询盘点任务列表")
    public R getCheckTaskItemList(@RequestBody Map<String, String> map) {
@@ -36,7 +34,6 @@
        return pdaCheckOrderService.getCheckTaskItemList(map.get("barcode"),map.get("checkCode"));
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getCheckTaskItemList2")
    @ApiOperation("查询盘点任务列表,直接扫容器码")
    public R getCheckTaskItemList2(@RequestBody Map<String, String> map) {
@@ -44,7 +41,6 @@
        return pdaCheckOrderService.getCheckTaskItemList2(map.get("barcode"));
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @GetMapping("/getCheckDiffReasonList")
    @ApiOperation("查询盘点差异原因")
    public R getCheckDiffReasonList() {
@@ -52,14 +48,12 @@
        return pdaCheckOrderService.getCheckDiffReasonList();
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/saveCheckDiff")
    @ApiOperation("保存盘点数据")
    public R saveCheckDiff(@RequestBody SaveCheckDiffParams saveCheckDiffParams) {
        return pdaCheckOrderService.saveCheckDiff(saveCheckDiffParams,getLoginUserId());
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/selectAddMatnr")
    @ApiOperation("查询需要添加的物料")
    public R selectAddMatnr(@RequestBody Map<String, String> map) {
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
@@ -9,7 +9,6 @@
import com.vincent.rsf.server.api.entity.params.ContainerWaveParam;
import com.vincent.rsf.server.api.entity.params.OrderOutGeneralParam;
import com.vincent.rsf.server.api.service.PdaOutStockService;
import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.enums.OrderType;
@@ -43,7 +42,6 @@
    @Autowired
    private DictDataService dictDataService;
    @PreAuthorize("hasAuthority('manager:task:list')")
    @GetMapping("/outStockTaskItem/{barcode}")
    @ApiOperation("快速拣货查询")
    public R getOutStockTaskItem(@PathVariable String barcode) {
@@ -51,7 +49,6 @@
        return pdaOutStockService.getOutStockTaskItem(barcode);
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @GetMapping("/saveOutTaskSts/{barcode}")
    @ApiOperation("快速拣货")
    public R saveOutTaskSts(@PathVariable String barcode) {
@@ -59,7 +56,6 @@
        return pdaOutStockService.saveOutTaskSts(barcode);
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getWaveList")
    @ApiOperation("查询波次列表")
    public R getWaveListItem(@RequestBody Map<String, String> map) {
@@ -67,7 +63,6 @@
        return pdaOutStockService.getWaveListItem(map.get("barcode"));
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getContainerWaveList")
    @ApiOperation("根据容器码查询波次及出库单")
    public R getContainerWaveList(@RequestBody Map<String, String> map) {
@@ -75,7 +70,6 @@
        return pdaOutStockService.getContainerWaveList(map);
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/saveWavePick")
    @ApiOperation("根据容器码查询波次及出库单")
    public R saveWavePick(@RequestBody ContainerWaveParam containerWaveParam) {
@@ -83,7 +77,6 @@
        return pdaOutStockService.saveWavePick(containerWaveParam,getLoginUserId());
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/callForEmptyContainers")
    @ApiOperation("呼叫空容器")
    public R callForEmptyContainers(@RequestBody CallForEmptyContainersParam containerWaveParam) {
@@ -95,7 +88,8 @@
    @PostMapping("/outStockItem/page")
    public R page(@RequestBody JSONObject param) {
        return R.ok().add(outStockItemService.list(new LambdaQueryWrapper<>(WkOrderItem.class).eq(WkOrderItem::getDeleted, 0)
        return R.ok()
                .add(outStockItemService.list(new LambdaQueryWrapper<>(WkOrderItem.class).eq(WkOrderItem::getDeleted, 0)
                .eq(WkOrderItem::getOrderCode, param.getString("orderId"))));
    }
@@ -107,8 +101,7 @@
        List<DictData> dictData = dictDataService.list(new LambdaQueryWrapper<DictData>()
                .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE)
                .in(DictData::getValue, param.getType())
        );
                .in(DictData::getValue, param.getType()));
        return R.ok(dictData);
    }
@@ -143,25 +136,15 @@
    @PostMapping("/orderOut/getOutLocView")
    public R orderOutGetOutLocView(@RequestBody OrderOutGeneralParam param) {
        //参数 param.getOrderItemId()//出库预览
        if (Cools.isEmpty(param)) {
            return R.error("参数不能为空");
        }
        OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam();
        orderOutTaskParam.setOrderId(param.getOrderItemId());
        orderOutTaskParam.setWaveId(param.getWaveId());
        return outStockService.getOrderOutTaskItem(orderOutTaskParam);
//        return R.ok();
    }
//
    @PostMapping("/orderOut/getOutLocRun")
    public R orderOutGetOutLocRun(@RequestBody OrderOutGeneralParam param) {
        //参数 param.getOrderItemId()//出库执行
        return R.ok();
    }
    //
    // @PostMapping("/orderOut/getOutLocRun")
    // public R orderOutGetOutLocView(@RequestBody OrderOutGeneralParam param) {
    // //参数 param.getOrderItemId()//出库执行
    //
    // return R.ok();
    // }
}
rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
@@ -39,7 +39,7 @@
            "/system/info",
            "/tenant/list",
            "/email/code",
            "/pda/login",
            "/pda/**",
            "/erp/**",
            "/base/**",
            "/order/**",