skyouc
4 天以前 9d6170903806cb351975c9d68005837aec6a8578
即时库存功能优化
7个文件已修改
74 ■■■■ 已修改文件
rsf-admin/src/i18n/en.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/en.js
@@ -952,6 +952,7 @@
                unit: 'Unit',
                anfme: 'Stock Qty',
                matnrCode: "Matnr Code",
                warehouse: 'Warehouse',
                workQty: 'Work Qty',
                qty: 'Non Stock Qty',
                splrId: 'supplier',
rsf-admin/src/page/statistics/stockManage/WarehouseAside.jsx
@@ -15,9 +15,8 @@
const WarehouseAside = () => {
    const [isSelect, setIsSelect] = useState(false);
    const isSelected = (value, filters) => {
        const aggType = filters.aggType || [];
        const aggType = filters.aggType || ["matnr"];
        return aggType.includes(value.aggType);
    };
rsf-admin/src/page/statistics/stockManage/WarehouseStockInfo.jsx
@@ -235,7 +235,7 @@
    const [columns, setColumns] = useState([
        {
            field: 'warehouse',
            field: 'warehouse$',
            headerName: translate('table.field.warehouseStock.warehouse'),
            width: 130,
            editable: false,
rsf-admin/src/page/statistics/stockManage/WarehouseStockList.jsx
@@ -60,13 +60,11 @@
}));
const WarehouseStockList = () => {
    const translate = useTranslate();
    const [createDialog, setCreateDialog] = useState(false);
    const [select, setSelect] = useState({});
    const [drawerVal, setDrawerVal] = useState(false);
    const filters = [
    const [filters, setFilters] = useState([
        <SearchInput source="condition" alwaysOn />,
        <NumberInput source="locId" label="table.field.locItem.locId" />,
        <TextInput source="locCode" label="table.field.locItem.locCode" />,
@@ -85,8 +83,9 @@
        <TextInput source="spec" label="table.field.locItem.spec" />,
        <TextInput source="model" label="table.field.locItem.model" />,
        <TextInput source="fieldsIndex" label="table.field.locItem.fieldsIndex" />,
        <TextInput label="common.field.memo" source="memo" />,
    ]
        <TextInput label="common.field.memo" source="memo" />,]);
    const [select, setSelect] = useState({});
    const [drawerVal, setDrawerVal] = useState(false);
    return (
        <>
@@ -103,6 +102,7 @@
                    resource="warehouse/stock"
                    title={"common.button.detail"}
                    empty={false}
                    // filter={{aggType: "matnr"}}
                    filters={filters}
                    sort={{ field: "create_time", order: "desc" }}
                    actions={(
@@ -119,6 +119,7 @@
                        setDrawerVal={setDrawerVal}
                        setCreateDialog={setCreateDialog}
                        setSelect={setSelect}
                        filters={filters}
                    />
                </List>
                <WarehouseStockInfo
@@ -138,9 +139,19 @@
export default WarehouseStockList;
const PaginatedRowNumber = () => {
    const record = useRecordContext();
    const { page, perPage } = useListContext();
    const index = record.__tmp_index !== undefined ? record.__tmp_index : 0;
    //   const index = record.__tmp_index; // react-admin 内部使用的临时索引
    return <span>{(page - 1) * perPage + index + 1}</span>;
};
const DynamicFields = (props) => {
    const { setDrawerVal, setCreateDialog, setSelect } = props
    const index = 1;
    const { setDrawerVal, setCreateDialog, setSelect, filters } = props
    const translate = useTranslate();
    const notify = useNotify();
    const [columns, setColumns] = useState([]);
@@ -166,6 +177,7 @@
                <NumberField source="workQty" label="table.field.warehouseStock.qty" />,
                <TextField source="spec" label="table.field.warehouseStock.spec" />,
                <TextField source="model" label="table.field.warehouseStock.model" />,
                <TextField source="warehouse$" label="table.field.warehouseStock.warehouse" />,
                <TextField source="batch" label="table.field.warehouseStock.batch" />,
                <TextField source="unit" label="table.field.warehouseStock.unit" />,
                <TextField source="fieldsIndex" label="table.field.warehouseStock.fieldsIndex" />,
@@ -180,6 +192,18 @@
                </WrapperField>
            ]
            setColumns([...arr, ...fields, ...lastArr]);
            data.map(el => {
                var i = 0;
                filters.map((item) => {
                    if (item.key === el.fields) {
                        i = 1;
                    }
                })
                i === 0 && filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />)
            })
            // setFilters([...filters, ...inputFields])
        } else {
            notify(msg);
        }
@@ -216,7 +240,6 @@
const HistoriesButton = ({ setDrawerVal, setSelect }) => {
    const record = useRecordContext();
    const { filterValues } = useListContext();
    const historyClick = (event) => {
        event.stopPropagation();
        setDrawerVal(true)
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseStockController.java
@@ -11,6 +11,7 @@
import com.vincent.rsf.server.manager.controller.params.WarehouseStockParam;
import com.vincent.rsf.server.manager.entity.StockItem;
import com.vincent.rsf.server.manager.entity.ViewStockManage;
import com.vincent.rsf.server.manager.entity.WarehouseAreasItem;
import com.vincent.rsf.server.manager.enums.ViewStockType;
import com.vincent.rsf.server.manager.service.WarehouseStockService;
import com.vincent.rsf.server.system.controller.BaseController;
@@ -44,7 +45,7 @@
        BaseParam baseParam = buildParam(param, BaseParam.class);
        PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
        WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
        String type = stockParam.getAggType();
        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
        ViewStockManage stock = stockParam.getStock();
        QueryWrapper<ViewStockManage> wrapper = new QueryWrapper<>();
@@ -59,6 +60,9 @@
        } else {
            wrapper.groupBy("matnr_id");
        }
        FieldsUtils.setFieldsFilters(wrapper, pageParam, ViewStockManage.class);
        IPage<ViewStockManage> pageResult = warehouseStockService.pageByStock(pageParam, wrapper);
        List<ViewStockManage> records = pageResult.getRecords();
        for (ViewStockManage record : records) {
@@ -82,7 +86,7 @@
        BaseParam baseParam = buildParam(param, BaseParam.class);
        PageParam<StockItem, BaseParam> pageParam = new PageParam<>(baseParam, StockItem.class);
        WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
        String type = stockParam.getAggType();
        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
        ViewStockManage stock = stockParam.getStock();
        QueryWrapper<StockItem> wrapper = new QueryWrapper<>();
@@ -120,7 +124,7 @@
        BaseParam baseParam = buildParam(param, BaseParam.class);
        PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
        WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
        String type = stockParam.getAggType();
        String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
        if (Objects.isNull(type)) {
            return R.error("参数不能为空!!");
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
@@ -1,6 +1,10 @@
package com.vincent.rsf.server.manager.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.manager.service.MatnrService;
import com.vincent.rsf.server.manager.service.WarehouseService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -28,7 +32,6 @@
    private String locCode;
    @ApiModelProperty("仓库")
    @TableField(exist = false)
    private String warehouse;
    @ApiModelProperty("单据类型")
@@ -92,4 +95,17 @@
    @TableField(exist = false)
    private Map<String, String> extendFields;
    public String getWarehouse$(){
        WarehouseService service = SpringUtils.getBean(WarehouseService.class);
        Warehouse warehouse = service.getById(this.warehouse);
        if (!Cools.isEmpty(warehouse)){
            return String.valueOf(warehouse.getName());
}
        return null;
    }
}
rsf-server/src/main/resources/mapper/manager/WarehouseStockMapper.xml
@@ -5,6 +5,7 @@
        SELECT id,
               loc_id,
               loc_code,
               warehouse,
               type,
               order_item_id,
               wk_type,