liyong
2026-04-23 d391cb25460566aac81548c28c673912048caff3
feat(production): 更新工艺路线数据结构并实现反向新增功能

- 将 ProcessRouteAnticlockwiseDto 中的数值字段从 BigDecimal 改为 String 类型
- 在 ProcessRouteAnticlockwiseDto 中新增 userIds 和 deviceId 字段
- 将 ProcessRouteItem 和 ProductProcessRouteItem 中的数值字段从 BigDecimal 改为 String 类型
- 将 ProductStructure 中的数值字段从 BigDecimal 改为 String 类型
- 在 ProcessRouteService 中新增 processRouteAnticlockwise 方法接口
- 实现工艺路线反向新增功能,支持新增 BOM、工艺路线、生产工艺路线及工单
- 在 ProductWorkOrder 中新增 userIds 和 deviceId 字段
- 移除 ProductWorkOrder 中的 Excel 注解导入
- 更新构建生产工艺路线子表的方法以同步创建生产工单
已修改7个文件
98 ■■■■ 文件已修改
src/main/java/com/ruoyi/production/dto/ProcessRouteAnticlockwiseDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProcessRouteItem.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductStructure.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProcessRouteService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProcessRouteAnticlockwiseDto.java
@@ -2,8 +2,6 @@
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ProcessRouteAnticlockwiseDto {
@@ -12,13 +10,18 @@
    //工序名称
    private String processRouteName;
    //工序开数
    private BigDecimal processRouteOpenNum;
    private String processRouteOpenNum;
    //工艺正数
    private BigDecimal processRouteNum;
    private String processRouteNum;
    //加放数
    private BigDecimal processRouteAddNum;
    private String processRouteAddNum;
    //工艺要求
    private String processRouteRequire;
    private Long productModelId;
    //人员ids
    private String  userIds;
    // 机台id
    private Long deviceId;
}
src/main/java/com/ruoyi/production/pojo/ProcessRouteItem.java
@@ -5,7 +5,6 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@@ -52,11 +51,11 @@
    //工序名称
    private String processRouteName;
    //工序开数
    private BigDecimal processRouteOpenNum;
    private String processRouteOpenNum;
    //工艺正数
    private BigDecimal processRouteNum;
    private String processRouteNum;
    //加放数
    private BigDecimal processRouteAddNum;
    private String processRouteAddNum;
    //工艺要求
    private String processRouteRequire;
src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
@@ -4,7 +4,6 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@@ -52,11 +51,11 @@
    //工序名称
    private String processRouteName;
    //工序开数
    private BigDecimal processRouteOpenNum;
    private String processRouteOpenNum;
    //工艺正数
    private BigDecimal processRouteNum;
    private String processRouteNum;
    //加放数
    private BigDecimal processRouteAddNum;
    private String processRouteAddNum;
    //工艺要求
    private String processRouteRequire;
src/main/java/com/ruoyi/production/pojo/ProductStructure.java
@@ -67,11 +67,11 @@
    //工序名称
    private String processRouteName;
    //工序开数
    private BigDecimal processRouteOpenNum;
    private String processRouteOpenNum;
    //工艺正数
    private BigDecimal processRouteNum;
    private String processRouteNum;
    //加放数
    private BigDecimal processRouteAddNum;
    private String processRouteAddNum;
    //工艺要求
    private String processRouteRequire;
src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -140,4 +139,11 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endProductTime;
    @ApiModelProperty(value = "报工用户ids")
    private String userIds;
    @ApiModelProperty("机台id")
    private Long deviceId;
}
src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -3,9 +3,9 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.production.dto.ProcessRouteAnticlockwiseDto;
import com.ruoyi.production.dto.ProcessRouteDto;
import com.ruoyi.production.pojo.ProcessRoute;
import io.swagger.models.auth.In;
import java.util.List;
@@ -16,4 +16,6 @@
    Integer saveProcessRoute(ProcessRoute processRoute);
    int batchDelete(List<Long> ids);
    Long processRouteAnticlockwise(List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos, Long productModelId, Long productOrderId);
}
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -82,15 +82,16 @@
    }
    /**
     * 工艺路线反向新增  只新增了bom bom子表  工艺路线  工艺路线子表
     * @param processRouteAnticlockwiseDtos  工艺子表
     * @param productModelId 成品规格型号id
     * @param productOrderId 生产订单id
     * 工艺路线反向新增  新增了bom bom子表  工艺路线  工艺路线子表 生产工艺路线主表  生产工艺路线子表 工单表
     *
     * @param processRouteAnticlockwiseDtos 工艺子表
     * @param productModelId                成品规格型号id
     * @param productOrderId                生产订单id
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Long processRouteAnticlockwise(List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos, Long productModelId, Long productOrderId) {
        ProductOrder byId = productOrderService.getById(productOrderId);
        // 1. 新增BOM
@@ -107,24 +108,11 @@
        List<ProcessRouteItem> processRouteItems = buildProcessRouteItems(processRouteAnticlockwiseDtos, processRoute.getId(), productModelId);
        processRouteItemService.saveBatch(processRouteItems);
//        // 5. 新增生产工艺路线
//        ProductProcessRoute productProcessRoute = createProductProcessRoute(productModelId, productOrderId, productBom.getId(), processRoute.getProcessRouteCode());
//
//        // 6. 新增生产工艺路线子表
//        List<ProductProcessRouteItem> productProcessRouteItems = buildProductProcessRouteItems(processRouteAnticlockwiseDtos, productProcessRoute.getId(), productModelId);
//        productProcessRouteItemService.saveBatch(productProcessRouteItems);
//        for (ProductProcessRouteItem item : productProcessRouteItems) {
//            ProductProcess productProcess = productProcessService.getById(item.getProcessId());
//            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
//            productWorkOrder.setProductProcessRouteItemId(item.getId());
//            productWorkOrder.setProductOrderId(productOrderId);
//            ProductOrder order = productOrderMapper.selectById(productOrderId);
//            productWorkOrder.setPlanQuantity(order.getQuantity());
//            productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(null, productProcess.getName(), byId.getNpsNo()));
//            productWorkOrder.setStatus(1);
//            productWorkOrderService.save(productWorkOrder);
//        }
        // 5. 新增生产工艺路线
        ProductProcessRoute productProcessRoute = createProductProcessRoute(productModelId, productOrderId, productBom.getId(), processRoute.getProcessRouteCode());
        // 6. 新增生产工艺路线子表
        buildProductProcessRouteItems(processRouteAnticlockwiseDtos, productProcessRoute.getId(), productModelId,productOrderId);
        return processRoute.getId();
    }
@@ -216,8 +204,8 @@
    /**
     * 构建生产工艺路线子项列表
     */
    private List<ProductProcessRouteItem> buildProductProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long productRouteId, Long productModelId) {
        List<ProductProcessRouteItem> items = new ArrayList<>(dtos.size());
    private void buildProductProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long productRouteId, Long productModelId,Long productOrderId) {
        ProductOrder byId = productOrderService.getById(productOrderId);
        for (ProcessRouteAnticlockwiseDto dto : dtos) {
            ProductProcessRouteItem item = new ProductProcessRouteItem();
            item.setProductRouteId(productRouteId);
@@ -228,10 +216,19 @@
            item.setProcessRouteNum(dto.getProcessRouteNum());
            item.setProcessRouteAddNum(dto.getProcessRouteAddNum());
            item.setProcessRouteRequire(dto.getProcessRouteRequire());
            items.add(item);
            productProcessRouteItemService.save(item);
            ProductProcess productProcess = productProcessService.getById(item.getProcessId());
            //同步新增生产工单
            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
            productWorkOrder.setProductProcessRouteItemId(item.getId());
            productWorkOrder.setProductOrderId(productOrderId);
            ProductOrder order = productOrderMapper.selectById(productOrderId);
            productWorkOrder.setPlanQuantity(order.getQuantity());
            productWorkOrder.setDeviceId(dto.getDeviceId());
            productWorkOrder.setUserIds(dto.getUserIds());
            productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(null, productProcess.getName(), byId.getNpsNo()));
            productWorkOrder.setStatus(1);
            productWorkOrderService.save(productWorkOrder);
        }
        return items;
    }
}