9 天以前 2e84a447af471fe5ada907c28849838a6bc3a340
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/sn/MesWmSnController.java
@@ -12,10 +12,12 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnGroupRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
import cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -31,6 +33,7 @@
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -45,9 +48,9 @@
    @Resource
    private MesWmSnService snService;
    @Resource
    private MesMdItemService itemService;
    private MdmItemApi mdmItemApi;
    @Resource
    private MesMdUnitMeasureService unitMeasureService;
    private MdmUnitMeasureApi mdmUnitMeasureApi;
    @PostMapping("/generate")
    @Operation(summary = "生成 SN 码")
@@ -65,8 +68,19 @@
        if (CollUtil.isEmpty(pageResult.getList())) {
            return success(PageResult.empty(pageResult.getTotal()));
        }
        buildGroupItemInfo(pageResult.getList());
        buildSnGroupItemVO(pageResult.getList());
        return success(pageResult);
    }
    @GetMapping("/list-by-uuid")
    @Operation(summary = "获得批次 SN 码明细列表")
    @Parameter(name = "uuid", description = "批次 UUID", required = true)
    @PreAuthorize("@ss.hasPermission('mes:wm-sn:query')")
    public CommonResult<List<MesWmSnRespVO>> getSnListByUuid(
            @RequestParam("uuid") @NotBlank(message = "批次 UUID 不能为空") String uuid) {
        List<MesWmSnRespVO> list = BeanUtils.toBean(snService.getSnListByUuid(uuid), MesWmSnRespVO.class);
        buildSnItemVO(list);
        return success(list);
    }
    @DeleteMapping("/delete-batch")
@@ -85,7 +99,7 @@
    public void exportSnGroupExcel(@Valid MesWmSnPageReqVO reqVO, HttpServletResponse response) throws IOException {
        reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
        List<MesWmSnGroupRespVO> list = snService.getSnGroupPage(reqVO).getList();
        buildGroupItemInfo(list);
        buildSnGroupItemVO(list);
        ExcelUtils.write(response, "SN码分组.xls", "数据", MesWmSnGroupRespVO.class, list);
    }
@@ -96,32 +110,34 @@
    @ApiAccessLog(operateType = EXPORT)
    public void exportSnExcel(@RequestParam("uuid") String uuid, HttpServletResponse response) throws IOException {
        List<MesWmSnRespVO> list = BeanUtils.toBean(snService.getSnListByUuid(uuid), MesWmSnRespVO.class);
        buildItemInfo(list);
        buildSnItemVO(list);
        ExcelUtils.write(response, "SN码明细.xls", "数据", MesWmSnRespVO.class, list);
    }
    // ==================== 拼接 VO ====================
    private void buildGroupItemInfo(List<MesWmSnGroupRespVO> list) {
    private void buildSnGroupItemVO(List<MesWmSnGroupRespVO> list) {
        if (CollUtil.isEmpty(list)) {
            return;
        }
        Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmSnGroupRespVO::getItemId));
        Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap(
                convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmSnGroupRespVO::getItemId));
        Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList(
                convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
                .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
        list.forEach(vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
            vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
            MapUtils.findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName()));
        }));
    }
    private void buildItemInfo(List<MesWmSnRespVO> list) {
    private void buildSnItemVO(List<MesWmSnRespVO> list) {
        if (CollUtil.isEmpty(list)) {
            return;
        }
        Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmSnRespVO::getItemId));
        Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap(
                convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
        Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmSnRespVO::getItemId));
        Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList(
                convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData()
                .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e));
        list.forEach(vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
            vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
            MapUtils.findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName()));