skyouc
1 天以前 0b190d8a9aad67aa521ec163b437c59f6e63c400
盘点单下发功能优化
4个文件已修改
2个文件已添加
178 ■■■■■ 已修改文件
rsf-admin/src/page/orders/check/CheckOrderPub.jsx 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderItemParams.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderParams.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -25,6 +25,7 @@
import ConfirmButton from '../../components/ConfirmButton';
import { Delete, Edit, Add } from '@mui/icons-material';
import CheckOrderSiteDialog from "./CheckOrderSiteDialog";
import { map } from "lodash";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -81,12 +82,12 @@
    const ComfirmButton = () => {
        const { selectedIds, data, onUnselectItems } = useListContext();
        const handleRowClick = () => {
            const ids = data.filter(item => selectedIds.includes(item.id)).map(item => item.id);
            const ids = data.filter(item => selectedIds.includes(item.id));
            setRowSelectedIds(ids);
            const mas = data.filter(item => selectedIds.includes(item.id)).map(item => item.matnrCode);
            //设置库位信息筛选条件
            setSelectedMatnr(mas);
            onUnselectItems()
            // onUnselectItems()
        }
        return (
@@ -222,7 +223,7 @@
                            </Box>
                            <Box sx={{ textAlign: 'center' }}>
                                <CloseButton setOpen={setOpen} />
                                <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} gridRef={gridRef} record={record} />
                                <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} rowSelectedIds={rowSelectedIds} gridRef={gridRef} record={record} />
                            </Box>
                        </Card>
                    </Grid>
@@ -420,23 +421,32 @@
//提交按钮
const SubmitButton = ({ selectedIds, setSelectedIds, gridRef, record }) => {
const SubmitButton = ({ selectedIds, setSelectedIds, rowSelectedIds, gridRef, record }) => {
    const notify = useNotify();
    const refresh = useRefresh();
    const redirect = useRedirect();
    const submit = async () => {
        const items = gridRef.current?.getSortedRows();
        const { data: { code, data, msg } } = await request.post('/outStock/generate/tasks', { items, outId: record?.id });
        if (code == 200) {
            refresh();
            redirect("/task")
        } else {
            notify(msg);
        }
        let selctRecord = items.filter(item => selectedIds.includes(item?.id));
        const records = rowSelectedIds.map(map =>{
            return {
                ...map,
                items: selctRecord.filter(item => item.matnrCode == map.matnrCode)
            }
        })
        console.log(records);
        // const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records);
        // if (code == 200) {
        //     refresh();
        //     redirect("/task")
        // } else {
        //     notify(msg);
        // }
    }
    return (
        <ConfirmButton
            label="toolbar.allComfirm"
            label="toolbar.confirmSelect"
            variant="contained"
            size="medium"
            onConfirm={submit}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
@@ -1,5 +1,6 @@
package com.vincent.rsf.server.manager.controller;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,8 +12,11 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
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.entity.excel.CheckOrderTemplate;
import com.vincent.rsf.server.manager.enums.CheckExceStatus;
import com.vincent.rsf.server.manager.enums.OrderType;
@@ -181,6 +185,23 @@
        return checkOrderService.genCheckPreview(param);
    }
    /**
     * 盘点单生成出库任务
     * @param params
     * @return
     */
    @PostMapping("/check/generate/tasks")
    @ApiOperation("生成盘点出库任务")
    @PreAuthorize("hasAuthority('manager:outStock:list')")
    public R genCheckOutTask( @RequestBody List<CheckOrderParams> params) {
        if (Cools.isEmpty()) {
            return R.error("参数不能为空!!");
        }
        return  checkOrderService.genCheckOutTask(params, getLoginUserId());
    }
    /**
     * 获取出库站点
     * @return
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderItemParams.java
New file
@@ -0,0 +1,44 @@
package com.vincent.rsf.server.manager.controller.params;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel(value = "CheckOrderParams", description = "盘点单参数")
public class CheckOrderItemParams {
    @ApiModelProperty("库位")
    private String locCode;
    @ApiModelProperty("库位明细ID")
    private Long id;
    @ApiModelProperty("托盘码")
    private String barcode;
    @ApiModelProperty("批次")
    private String batch;
    @ApiModelProperty("单位")
    private String unit;
    @ApiModelProperty("客单号")
    private String platOrderCode;
    @ApiModelProperty("字段索引")
    private String fieldsIndex;
    @ApiModelProperty("数量")
    private Double anfme;
    @ApiModelProperty("站点")
    private String siteNo;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckOrderParams.java
New file
@@ -0,0 +1,56 @@
package com.vincent.rsf.server.manager.controller.params;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
@ApiModel(value = "CheckOrderParams", description = "盘点单参数")
public class CheckOrderParams {
    @ApiModelProperty("盘点单明细ID")
    private Long id;
    @ApiModelProperty(value= "秀点单ID")
    private Long orderId;
    @ApiModelProperty(value= "ASN单号")
    private String orderCode;
    @ApiModelProperty(value= "物料标识")
    private Long matnrId;
    @ApiModelProperty(value = "物料编码")
    private String matnrCode;
    @ApiModelProperty(value= "物料名称")
    private String maktx;
    @ApiModelProperty("规格")
    private String spec;
    @ApiModelProperty("型号")
    private String model;
    @ApiModelProperty(value= "送货数量")
    private Double anfme;
    @ApiModelProperty(value= "库存单位")
    private String stockUnit;
    @ApiModelProperty("库存批次")
    private String batch;
    @ApiModelProperty(value= "已收数量")
    private Double qty;
    @ApiModelProperty(value= "条形码")
    private String barcode;
    @ApiModelProperty("库位明细")
    private List<CheckOrderItemParams> items;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
import com.vincent.rsf.server.manager.entity.WkOrder;
import org.springframework.web.multipart.MultipartFile;
@@ -25,4 +27,6 @@
    R genCheckPreview(OrderOutTaskParam param);
    R getAllLocByMatnr(List<String> matnrs);
    R genCheckOutTask(List<CheckOrderParams> checkParams, Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -9,6 +9,8 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate;
@@ -249,6 +251,23 @@
    /**
     * @author Ryan
     * @date 2025/7/17
     * @description: 生成盘点任务
     * @version 1.0
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R genCheckOutTask(List<CheckOrderParams> checkParams, Long loginUserId) {
        if (checkParams.isEmpty()) {
            throw new CoolException("参数不能为空!!");
        }
        return null;
    }
    /**
     * @author Ryan
     * @date 2025/7/16
     * @description: 取消盘点单据
     * @version 1.0