lbq
昨天 8ce2fc9e420f68e07512b9addaf514a09effb4a7
优化出库明细界面
12个文件已修改
179 ■■■■■ 已修改文件
rsf-admin/src/i18n/zh.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/companys/CompanysCreate.jsx 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrderItem/AsnOrderItemList.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/config/orderItemColumns.jsx 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutOrderList.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStockItem/OutStockItemList.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WkOrderItemController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrderItem.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js
@@ -360,8 +360,8 @@
                areas: '可入库区',
            },
            basStation: {
                stationName: '站点名称',
                stationId: '站点编码',
                stationName: '站点编码',
                stationId: '站点名称',
                type: '站点类型',
                inAble: '能入',
                outAble: '能出',
@@ -799,9 +799,9 @@
                poId: "DO标识",
                type: "类型",
                wkType: "业务类型",
                anfme: "应出数量",
                workQty: '实出数量',
                qty: "完成数",
                anfme: "应发数量",
                workQty: '执行数量',
                qty: "实发数量",
                logisNo: "物流单号",
                arrTime: "预计到达时间",
                rleStatus: "释放状态",
@@ -812,6 +812,7 @@
                saleUserName: '销售员',
                customerId: '客户编码',
                customerName: '客户',
                stockOrgName: '发货组织',
            },
            checkOrder: {
                code: "盘点单号",
@@ -984,8 +985,9 @@
                platItemId: '行号',
                unit: '单位',
                targetWarehouseId: "仓库",
                sourceWarehouseId: "调出仓",
                platWorkCode: '计划跟踪号'
                sourceWarehouseId: "发货组织",
                platWorkCode: '计划跟踪号',
                spec: '规格',
            },
            asnOrderLog: {
                code: "单据编码",
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -199,7 +199,7 @@
                    <FunctionField
                        source="outAble"
                        label="table.field.basStation.outAble"
                        render={record => record.inAble === 1 ? '是' : '否'}
                        render={record => record.outAble === 1 ? '是' : '否'}
                    />
                    <NumberField source="area$" label="table.field.basStation.area" />
                    <FunctionField
rsf-admin/src/page/basicInfo/companys/CompanysCreate.jsx
@@ -90,7 +90,7 @@
                                        label="table.field.companys.code"
                                        source="code"
                                        parse={v => v}
                                        readOnly
                                        validate={[required()]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
@@ -98,15 +98,16 @@
                                        label="table.field.companys.name"
                                        source="name"
                                        parse={v => v}
                                        validate={[required()]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.companys.nameEn"
                                        source="nameEn"
                                        parse={v => v}
                                    />
                                </Grid>
                                </Grid> */}
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.companys.breifCode"
@@ -124,7 +125,7 @@
                                        parse={v => v}
                                        validate={[required()]} />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.companys.contact"
                                        source="contact"
@@ -165,15 +166,14 @@
                                        source="city"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                </Grid> */}
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.companys.address"
                                        source="address"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <StatusSelectInput />
                                </Grid>
@@ -181,7 +181,7 @@
                                    <Stack direction="column" spacing={1} width={'100%'}>
                                        <MemoInput />
                                    </Stack>
                                </Grid>
                                </Grid> */}
                            </Grid>
                        </DialogContent>
                        <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
rsf-admin/src/page/orders/asnOrderItem/AsnOrderItemList.jsx
@@ -98,7 +98,7 @@
                    title={"menu.asnOrderItem"}
                    empty={false}
                    filters={filters}
                    // sort={{ field: "mo.create_time", order: "desc" }}
                    sort={{ field: "id", order: "desc" }}
                    actions={(
                        <TopToolbar>
                            <FilterButton />
@@ -142,7 +142,7 @@
        const result = await fetchInOrderItemFullColumns();
        if (result.success) {
            const hiddenSources = [
                'splrName',
                'splrName', 'spec', 'createBy', 'createTime', 'createBy$',
                'type', 'extendFields.[type]',
            ];
            const columns = result.columns.filter(col => !hiddenSources.includes(col.props.source));
rsf-admin/src/page/orders/config/orderItemColumns.jsx
@@ -30,14 +30,44 @@
export const getInOrderItemFullBaseColumns = () => [
    <TextField source="poCode" label="table.field.asnOrder.poCode" key="poCode" />,
    <TextField source="wkType$" label="table.field.asnOrder.wkType" key="wkType$" />,
    <TextField source="purchaseOrgName" label="table.field.asnOrder.purchaseOrgName" key="purchaseOrgName" />,
    <TextField source="purchaseUserName" label="table.field.asnOrder.purchaseUserName" key="purchaseUserName" />,
    <DateField source="businessTime" label="table.field.asnOrder.businessTime" key="businessTime" />,
    <TextField source="supplierId" label="table.field.asnOrder.supplierId" key="supplierId" />,
    <TextField source="supplierName" label="table.field.asnOrder.supplierName" key="supplierName" />,
    //  <TextField source="batch" label="table.field.asnOrder.batch" key="batch" />
];
/**
 * 获取入库订单明细的基础列配置
 * @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" />, //物料编码
    <TruncatedTextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" maxLength={20} />, //物料名称
    <TextField source="batch" label="table.field.asnOrderItem.splrBatch" key="batch" />, //批次
    <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格
    <TextField source="stockUnit" label="table.field.asnOrderItem.unit" key="stockUnit" />, //单位
    <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量
    <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量
    <TextField source="targetWarehouseId" label="table.field.asnOrderItem.targetWarehouseId" key="targetWarehouseId" />, //建议目标仓
];
export const getOutOrderItemFullBaseColumns = () => [
    <TextField source="poCode" label="table.field.asnOrder.poCode" key="poCode" />,
    <TextField source="wkType$" label="table.field.asnOrder.wkType" key="wkType$" />,
    <TextField source="saleOrgName" label="销售组织" key="saleOrgName" />,
    <TextField source="saleUserName" label="销售员" key="saleUserName" />,
    <DateField source="businessTime" label="出库日期" key="businessTime" />,
    <TextField source="customerId" label="客户编码" key="customerId" />,
    <TextField source="customerName" label="客户" key="customerName" />,
    // <TextField source="stockOrgName" label="table.field.outStock.stockOrgName" key="saleOrgName" />,
];
/**
@@ -46,10 +76,10 @@
 */
export const getOutOrderItemBaseColumns = () => [
    <NumberField source="id" key="id" />, // id
    <TextField source="orderCode" label="table.field.outStockItem.orderCode" key="orderCode" />, // 订单号
    // <TextField source="orderCode" label="table.field.outStockItem.orderCode" key="orderCode" />, // 订单号
    <TextField source="platWorkCode" label="table.field.outStockItem.platWorkCode" key="platWorkCode" />, //计划跟踪号
    <TextField source="splrCode" label="table.field.outStockItem.splrCode" key="splrCode" />, //供应商编码
    <TextField source="splrName" label="table.field.outStockItem.splrName" key="splrName" />, //供应商名称
    // <TextField source="splrCode" label="table.field.outStockItem.splrCode" key="splrCode" />, //供应商编码
    // <TextField source="splrName" label="table.field.outStockItem.splrName" key="splrName" />, //供应商名称
    <TextField source="platItemId" label="table.field.outStockItem.platItemId" key="platItemId" />, //行号
    <TextField source="matnrCode" label="table.field.outStockItem.matnrCode" key="matnrCode" />, //物料编码
    <TruncatedTextField source="maktx" label="table.field.outStockItem.maktx" key="maktx" maxLength={20} />, //物料名称
@@ -61,26 +91,7 @@
    <TextField source="sourceWarehouseId" label="table.field.outStockItem.sourceWarehouseId" key="sourceWarehouseId" />, //调出仓
];
/**
 * 获取入库订单明细的基础列配置
 * @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" />, //物料编码
    <TruncatedTextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" maxLength={20} />, //物料名称
    <TextField source="batch" label="table.field.asnOrderItem.splrBatch" key="batch" />, //批次
    <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格
    <TextField source="stockUnit" label="table.field.asnOrderItem.unit" key="stockUnit" />, //单位
    <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量
    <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量
    <TextField source="targetWarehouseId" label="table.field.asnOrderItem.targetWarehouseId" key="targetWarehouseId" />, //建议目标仓
];
@@ -129,6 +140,14 @@
    ];
};
export const buildOutOrderItemFullColumns = () => {
    return [
        ...getOutOrderItemFullBaseColumns(),
        ...getOutOrderItemBaseColumns(),
        ...getLastColumns()
    ];
};
/**
 * 获取动态字段并构建完整列配置
 * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>}
@@ -160,3 +179,11 @@
        return { success: false, msg: error.message };
    }
};
export const fetchOutOrderItemFullColumns = async () => {
    try {
        return { success: true, columns: buildOutOrderItemFullColumns() };
    } catch (error) {
        return { success: false, msg: error.message };
    }
};
rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx
@@ -141,14 +141,19 @@
                                    source="customerName"
                                    readOnly
                                    parse={v => v}
                                />
                                />
                                <TextInput
                                    label="table.field.outStock.stockOrgName"
                                    source="stockOrgName"
                                    readOnly
                                    parse={v => v}
                                />
                                {/* <TextInput
                                    label="table.field.outStock.logisNo"
                                    source="logisNo"
                                    readOnly
                                    parse={v => v}
                                /> */}
                                {/* <DateInput
                                    label="table.field.outStock.arrTime"
                                    source="arrTime"
rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -174,7 +174,7 @@
          bulkActionButtons={<PublicTaskButton setWaveRule={setWaveRule} setSelectIds={setSelectIds} />}
          rowClick={false}
          expandSingle={true}
          omit={['id', 'code', 'createTime', 'createBy$', 'memo', 'rleStatus$', 'logisNo', 'updateBy$', 'workQty', 'updateTime']}
          omit={['id', 'code', 'createTime', 'createBy$', 'memo', 'rleStatus$', 'logisNo', 'updateBy$', 'workQty', 'updateTime', 'type$']}
        >
          <NumberField source="id" />
          <TextField source="code" label="table.field.outStock.code" />
@@ -197,11 +197,12 @@
          <TextField source="saleUserName" label="销售员" />
          <DateField source="businessTime" label="出库日期" />
          <TextField source="customerId" label="客户编码" />
          <TextField source="customerName" label="客户" />
          <TextField source="customerName" label="客户" />
          <TextField source="stockOrgName" label="table.field.outStock.stockOrgName" />
          <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" />
          <WrapperField cellClassName="opt" label="common.field.opt" >
            <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} />
            {/* <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} /> */}
            <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton>
            <CancelButton />
            <CompleteButton />
rsf-admin/src/page/orders/outStockItem/OutStockItemList.jsx
@@ -40,7 +40,7 @@
import PageDrawer from "../../components/PageDrawer";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import { fetchOutOrderItemColumns } from '../config/orderItemColumns';
import { fetchOutOrderItemFullColumns } from '../config/orderItemColumns';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -98,7 +98,7 @@
        <>
            <Box display="flex">
                <List
                    resource="asnOrderItem/out"
                    resource="asnOrderItemFull/out"
                    sx={{
                        flexGrow: 1,
                        transition: (theme) =>
@@ -110,7 +110,7 @@
                    title={"menu.asnOrderItem"}
                    empty={false}
                    filters={filters}
                    sort={{ field: "create_time", order: "desc" }}
                    sort={{ field: "id", order: "desc" }}
                    actions={(
                        <TopToolbar>
                            <FilterButton />
@@ -147,7 +147,7 @@
    }, []);
    const getDynamicFields = async () => {
        const result = await fetchOutOrderItemColumns();
        const result = await fetchOutOrderItemFullColumns();
        if (result.success) {
            setColumns(result.columns);
        } else {
@@ -173,7 +173,7 @@
                    preferenceKey='asnOrderItem'
                    bulkActionButtons={false}
                    rowClick={(id, resource, record) => false}
                    omit={['id', 'orderId', 'poDetlId', 'matnrId', 'spec', 'model', 'purQty', 'purUnit', 'qrcode', 'trackCode', 'splrCode', 'platWorkCode', 'projectCode', 'createBy', 'createTime']}
                    omit={['id', 'orderId', 'poDetlId', 'matnrId', 'spec', 'model', 'purQty', 'purUnit', 'qrcode', 'trackCode', 'splrCode', 'projectCode', 'createBy', 'createTime']}
                >
                    {columns.map((column) => column)}
                </StyledDatagrid>}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WkOrderItemController.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
@@ -15,10 +16,7 @@
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.entity.InOrderAndItem;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.entity.Companys;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.enums.OrderType;
@@ -157,6 +155,19 @@
    }
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @ApiOperation("分页获取出库列表")
    @PostMapping("/asnOrderItemFull/out/page")
    public R pageOutFull(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<WkOrderItem, BaseParam> pageParam = new PageParam<>(baseParam, WkOrderItem.class);
        QueryWrapper<WkOrderItem> wrapper = pageParam.buildWrapper(true, null, "create_time", "mi");
        wrapper.eq("mo.type", OrderType.ORDER_OUT.type);
        IPage<OutOrderAndItem> page = asnOrderItemMapper.queryFullOutOrderWithPaging(pageParam, wrapper);
        return R.ok(page);
    }
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @PostMapping("/asnOrderItem/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(asnOrderItemService.list());
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WkOrderItem.java
@@ -325,7 +325,7 @@
    //
    public WkOrderItem() {}
    public WkOrderItem(Long asnId, String asnCode, Long poDetlId, String matnrCode, String poCode, Long matnrId, String matnk, Double anfme, String stockUnit, Double purQty, String purUnit, Double qty, String splrCode, String splrName, String qrcode, String barcode, String packName, Integer status, Integer ntyStatus, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
    public WkOrderItem(Long asnId, String asnCode, Long poDetlId, String matnrCode, String poCode, Long matnrId, String matnk, Double anfme, String stockUnit, Double purQty, String purUnit, Double qty, String splrCode, String splrName, String qrcode, String barcode, String packName, Integer status, Integer ntyStatus, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, String sourceWarehouseId) {
        this.orderId = asnId;
        this.orderCode = asnCode;
        this.poDetlId = poDetlId;
@@ -352,6 +352,7 @@
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
        this.sourceWarehouseId = sourceWarehouseId;
    }
//    AsnOrderItem asnOrderItem = new AsnOrderItem(
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java
@@ -7,6 +7,7 @@
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.InOrderAndItem;
import com.vincent.rsf.server.manager.entity.OutOrderAndItem;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@@ -27,4 +28,6 @@
    List<InOrderAndItem> queryFullOrder();
    IPage<InOrderAndItem> queryFullOrderWithPaging(PageParam<WkOrderItem, BaseParam> pageParam, @Param(Constants.WRAPPER) QueryWrapper<WkOrderItem> wrapper);
    IPage<OutOrderAndItem> queryFullOutOrderWithPaging(PageParam<WkOrderItem, BaseParam> pageParam, @Param(Constants.WRAPPER) QueryWrapper<WkOrderItem> wrapper);
}
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
@@ -44,6 +44,7 @@
                    aoi.pack_name,
                    aoi.nty_status,
                    aoi.`status`,
                    aoi.source_warehouse_id,
                    CASE
                        aoi.ispt_result
                        WHEN 0 THEN
@@ -153,6 +154,16 @@
        FROM man_asn_order_item mi
                 LEFT JOIN man_asn_order mo ON mi.order_id = mo.id AND mo.tenant_id = mi.tenant_id
                 LEFT JOIN sys_dict_data sd ON sd.dict_type_id = 27 and mo.wk_type = sd.`value` AND sd.tenant_id = mo.tenant_id
        ${ew.customSqlSegment}
            ${ew.customSqlSegment}
    </select>
    <select id="queryFullOutOrderWithPaging" resultType="com.vincent.rsf.server.manager.entity.OutOrderAndItem">
        SELECT mi.id, mo.po_code, mo.type, sd.label as wkType$, sale_org_name, sale_user_name, business_time,
            customer_id, customer_name, plat_work_code, plat_item_id, matnr_code, maktx, batch, stock_unit,
               mi.anfme, mi.qty, source_warehouse_id, mi.update_by, mi.update_time
        FROM man_asn_order_item mi
                 LEFT JOIN man_asn_order mo ON mi.order_id = mo.id AND mo.tenant_id = mi.tenant_id
                 LEFT JOIN sys_dict_data sd ON sd.dict_type_id = 27 and mo.wk_type = sd.`value` AND sd.tenant_id = mo.tenant_id
            ${ew.customSqlSegment}
    </select>
</mapper>