liyong
2026-04-23 66a7e9eed2705534e66fa48a2f0bd4e777a362dc
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -82,19 +82,20 @@
    }
    /**
     * 工艺路线反向新增  只新增了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)
    public Long processRouteAnticlockwise(List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos, Long productModelId, Long productOrderId) {
    @Override
    public Long processRouteAnticlockwise(List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos, Long productModelId, Long productOrderId,String uuid) {
        ProductOrder byId = productOrderService.getById(productOrderId);
        // 1. 新增BOM
        ProductBom productBom = createProductBom(productModelId);
        ProductBom productBom = createProductBom(productModelId,uuid);
        // 2. 新增BOM子表
        List<ProductStructure> productStructures = buildProductStructures(processRouteAnticlockwiseDtos, productBom.getId());
@@ -107,34 +108,22 @@
        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();
    }
    /**
     * 创建产品BOM
     */
    private ProductBom createProductBom(Long productModelId) {
    private ProductBom createProductBom(Long productModelId,String uuid) {
        ProductBom productBom = new ProductBom();
        productBom.setProductModelId(productModelId);
        productBom.setVersion("1.0.0");
        productBom.setUuid(uuid);
        productBomService.save(productBom);
        productBom.setBomNo("BM." + String.format("%05d", productBom.getId()));
@@ -216,8 +205,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 +217,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;
    }
}