liu
21 小时以前 a532a0f9edfdfee9577fa36a7ecc5edbe249cd12
feat(生产工单): 工单列表返回产品大类

- ProductionOperationTaskVo 增加 majorCategory 字段
- 分页/列表查询后按产品名称用 MajorCategoryEnum 统一归集大类
- 供生产工单、生产排产等页面按大类展示与区分(非乐器如红木保持为空)

Co-Authored-By: Claude <noreply@anthropic.com>
已修改2个文件
22 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java
@@ -20,6 +20,9 @@
    @Schema(description = "规格型号")
    private String model;
    @Schema(description = "产品大类:小提琴/中提琴/大提琴/贝斯,非乐器(如红木等原料)为空")
    private String majorCategory;
    @Schema(description = "单位")
    private String unit;
src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
@@ -22,6 +22,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.production.bean.dto.ProductionOperationTaskDto;
import com.ruoyi.production.bean.vo.ProductionOperationTaskVo;
import com.ruoyi.production.enums.MajorCategoryEnum;
import com.ruoyi.production.mapper.ProductionOrderMapper;
import com.ruoyi.production.mapper.ProductionOrderRoutingOperationMapper;
import com.ruoyi.production.mapper.ProductionOperationTaskMapper;
@@ -66,6 +67,7 @@
        IPage<ProductionOperationTaskVo> result = baseMapper.pageProductionOperationTask(voPage, dto);
        fillOperationTypes(result.getRecords());
        fillUserNames(result.getRecords());
        fillMajorCategories(result.getRecords());
        return result;
    }
@@ -75,9 +77,26 @@
        List<ProductionOperationTaskVo> result = BeanUtil.copyToList(this.list(buildQueryWrapper(dto)), ProductionOperationTaskVo.class);
        fillOperationTypes(result);
        fillUserNames(result);
        fillMajorCategories(result);
        return result;
    }
    /**
     * 填充产品大类。工单本身不存大类,按产品名称用统一的 {@link MajorCategoryEnum} 规则推导,
     * 与报工写入时的判定口径保持一致;非乐器(如红木等原料)保持为空。
     */
    private void fillMajorCategories(List<ProductionOperationTaskVo> records) {
        if (CollectionUtils.isEmpty(records)) {
            return;
        }
        for (ProductionOperationTaskVo vo : records) {
            if (vo == null) {
                continue;
            }
            vo.setMajorCategory(MajorCategoryEnum.match(vo.getProductName()));
        }
    }
    @Override
    public ProductionOperationTaskVo getProductionOperationTaskInfo(Long id) {
        // 获取生产工序任务详情