skyouc
2 天以前 5a92ae0d5b0de8c05d2605603f08b0a0228d6e56
盘点单下发功能优化
11个文件已修改
166 ■■■■■ 已修改文件
rsf-admin/src/page/basicInfo/matnrGroup/MatnrGroupCreate.jsx 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/check/CheckOrderPub.jsx 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/matnrGroup/MatnrGroupCreate.jsx
@@ -43,23 +43,16 @@
        }
    };
    const handleSuccess = async (data) => {
        setOpen(false);
        notify('common.response.success');
    };
    const handleError = async (error) => {
        notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
    };
    return (
        <>
            <CreateBase
                record={{}}
                transform={(data) => {
                    return data;
                }}
                mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
                // record={{}}
                // transform={(data) => {
                //     console.log('success========>');
                //     return data;
                // }}
                // mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
            >
                <Dialog
                    open={open}
rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -3,36 +3,14 @@
import {
    List,
    DatagridConfigurable,
    SearchInput,
    TopToolbar,
    Button,
    SelectColumnsButton,
    EditButton,
    FilterButton,
    CreateButton,
    ExportButton,
    BulkDeleteButton,
    WrapperField,
    useRecordContext,
    useTranslate,
    useNotify,
    useListContext,
    FunctionField,
    TextField,
    NumberField,
    DateField,
    BooleanField,
    ReferenceField,
    TextInput,
    DateTimeInput,
    DateInput,
    SelectInput,
    NumberInput,
    ReferenceInput,
    ReferenceArrayInput,
    AutocompleteInput,
    DeleteButton,
    SimpleForm,
    required,
    Form,
    useRefresh,
@@ -85,7 +63,16 @@
            setRows(fetchRows)
        } else {
            const mas = fetchRows.filter(item => selectedMatnr.includes(item.matnrCode));
            setRows(mas)
            console.log(mas);
            let ids =  mas.map(item => item.matnrCode);
            console.log(ids);
            const { data: { code, data, msg } } = request.get('/check/order/items/' + ids );
            if (code === 200) {
                setFetchRows(data)
            } else {
                notify(msg);
            }
            // setRows(mas)
        }
    }, [selectedMatnr])
@@ -139,7 +126,7 @@
        if (formData.waveId == null && formData.waveId == undefined) {
            return
        }
        const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData });
        const { data: { code, data, msg } } = await request.post('/check/order/items', { ...formData });
        if (code === 200) {
            setFetchRows(data)
        } else {
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
@@ -161,7 +161,6 @@
        return checkOrderService.saveCheckOrder(params, getLoginUserId());
    }
    @ApiOperation("盘点单信息修改")
    @PostMapping("/check/items/update")
    @PreAuthorize("hasAuthority('manager:check:update')")
@@ -172,18 +171,15 @@
        return checkOrderService.updateOrderItem(params, getLoginUserId());
    }
    @PostMapping("/outStock/order/getOutTaskItems")
    @PostMapping("/check/order/items")
    @ApiOperation("盘点出库预览")
    @PreAuthorize("hasAuthority('manager:outStock:list')")
    @PreAuthorize("hasAuthority('manager:check:list')")
    public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) {
        if (Cools.isEmpty(param)) {
            return R.error("参数不能为空");
        }
        return checkOrderService.genCheckPreview(param);
    }
    /**
     * 获取出库站点
@@ -197,6 +193,17 @@
    }
    @ApiOperation("获取在库物料列表")
    @GetMapping("/check/order/locs/{matnr}")
    @PreAuthorize("hasAuthority('manager:check:list')")
    public R getAllLocByMatnr(@PathVariable String[] matnrs) {
        if (Objects.isNull(matnrs)) {
            return R.error("参数不能为空!!");
        }
        return checkOrderService.getAllLocByMatnr(Arrays.asList(matnrs));
    }
    /**
     * @author Ryan
     * @description 下载模板
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
@@ -1,6 +1,10 @@
package com.vincent.rsf.server.manager.enums;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.framework.exception.CoolException;
public enum LocStsType {
    //空板
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java
@@ -1,20 +1,18 @@
package com.vincent.rsf.server.manager.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.LocItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vincent.rsf.server.manager.entity.ViewStockManage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface LocItemMapper extends BaseMapper<LocItem> {
    IPage<ViewStockManage> pageByStock(PageParam<ViewStockManage, BaseParam> pageParam, @Param(Constants.WRAPPER) QueryWrapper<ViewStockManage> queryWrapper);
    List<LocItem> listByMatnr(@Param("type") String type, @Param(Constants.WRAPPER) LambdaQueryWrapper<LocItem> matnr);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
@@ -8,6 +8,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.List;
public interface CheckOrderService extends IService<WkOrder> {
@@ -22,4 +23,6 @@
    R getSiteNos();
    R genCheckPreview(OrderOutTaskParam param);
    R getAllLocByMatnr(List<String> matnrs);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
@@ -5,10 +5,13 @@
import com.vincent.rsf.server.manager.entity.LocItem;
import com.vincent.rsf.server.manager.entity.Task;
import java.util.List;
public interface LocItemService extends IService<LocItem> {
    void generateTask(Short resouce, LocToTaskParams map, Long loginUserId) throws Exception;
    Task genMoveTask(LocToTaskParams map, Long loginUserId);
    List<LocItem> listByMatnr(List<String> matnrs);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -10,10 +10,7 @@
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.OrderOutTaskParam;
import com.vincent.rsf.server.manager.entity.DeviceSite;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.entity.Matnr;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.mapper.CheckOrderMapper;
@@ -41,6 +38,8 @@
    private AsnOrderItemService asnOrderItemService;
    @Autowired
    private DeviceSiteService deviceSiteService;
    @Autowired
    private LocItemService locItemService;
    /**
     * @author Ryan
@@ -216,6 +215,27 @@
     */
    @Override
    public R genCheckPreview(OrderOutTaskParam param) {
        List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, param.getOrderId()));
        if (orderItems.isEmpty()) {
            throw new CoolException("数据错误:盘点单明细不存在!!");
        }
        return R.ok().add(orderItems);
    }
    /**
     * @author Ryan
     * @date 2025/7/16
     * @description: 根据物料码获取所有在库明细
     * @version 1.0
     */
    @Override
    public R getAllLocByMatnr(List<String> matnrs) {
        List<LocItem> locItems = locItemService.listByMatnr(matnrs);
        if (locItems.isEmpty()) {
            return R.ok();
        }
        return null;
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -363,4 +363,17 @@
        }
        return task;
    }
    /**
     * @author Ryan
     * @date 2025/7/16
     * @description: 获取当前物料所有库存信息
     * @version 1.0
     */
    @Override
    public List<LocItem> listByMatnr(List<String> matnr) {
        LambdaQueryWrapper<LocItem> wrapper = new LambdaQueryWrapper<LocItem>()
                .in(!matnr.isEmpty(), LocItem::getMatnrCode, matnr);
        return  this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, wrapper);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java
@@ -68,7 +68,6 @@
            List<PurchaseTemplate> list = listMap.get(key);
            Purchase serviceOne = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, key));
            if (!Objects.isNull(serviceOne)) {
//                return R.error(serviceOne.getCode() +  "单据已存在!!");
                throw new CoolException(serviceOne.getCode() +  "单据已存在!!");
            }
            PurchaseTemplate template = list.stream().findFirst().get();
rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
@@ -1,5 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vincent.rsf.server.manager.mapper.LocItemMapper">
    <select id="listByMatnr" resultType="com.vincent.rsf.server.manager.entity.LocItem">
        SELECT
            *
        FROM
            (
                SELECT
                    li.id,
                    li.loc_id,
                    li.loc_code,
                    l.barcode,
                    li.matnr_id,
                    li.matnr_code,
                    li.maktx,
                    li.batch,
                    SUM( li.anfme ) anfme,
                    li.fields_index
                FROM
                    man_loc_item li
                        INNER JOIN man_loc l ON l.id = li.loc_id
                    WHERE l.use_status = #{type}
                GROUP BY
                    loc_id,
                    matnr_id,
                    batch,
                    fields_index
            )t
            ${ew.customSqlSegment}
    </select>
</mapper>