gongchunyi
4 小时以前 7f7993e0fde1e08bfd37982ab6eb9e5a08545b2d
src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
ÎļþÃû´Ó src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java ÐÞ¸Ä
@@ -1,10 +1,6 @@
package com.ruoyi.appendix.service.impl;
package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
import com.ruoyi.appendix.pojo.ProductStructureInstance;
import com.ruoyi.appendix.service.*;
import com.ruoyi.basic.service.BaseParamService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
@@ -23,25 +19,25 @@
/**
 * <br>
 * BOM-工艺路线附表Service接口实现类
 *
 * </br>
 *
 * @author deslrey
 * @version 1.0
 * @since 2026/03/18 14:45
 * @since 2026/03/20
 */
@Slf4j
@Service
public class AppendixServiceImpl implements AppendixService {
public class ProductionOrderAppendixServiceImpl implements IProductionOrderAppendixService {
    @Resource
    private ProcessRouteItemInstanceService processRouteItemInstanceService;
    private IProductionOrderRouteItemService productionOrderRouteItemService;
    @Resource
    private ProcessRouteItemParamInstanceService processRouteItemParamInstanceService;
    private IProductionOrderRouteItemParamService productionOrderRouteItemParamService;
    @Resource
    private ProductStructureInstanceService productStructureInstanceService;
    private IProductionOrderStructureService productionOrderStructureService;
    @Resource
    private BaseParamService baseParamService;
@@ -114,20 +110,20 @@
    @Override
    public void deleteData(Long orderId, Long processRouteId) {
        //  åˆ é™¤å·¥è‰ºè·¯çº¿å·¥åºå‚数附表
        processRouteItemParamInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemParamInstance>()
                .eq(ProcessRouteItemParamInstance::getOrderId, orderId));
        productionOrderRouteItemParamService.remove(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
                .eq(ProductionOrderRouteItemParam::getOrderId, orderId));
        //  åˆ é™¤å·¥è‰ºè·¯çº¿å­é›†é™„表
        processRouteItemInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemInstance>()
                .eq(ProcessRouteItemInstance::getOrderId, orderId)
                .eq(ProcessRouteItemInstance::getRouteId, processRouteId));
        productionOrderRouteItemService.remove(new LambdaQueryWrapper<ProductionOrderRouteItem>()
                .eq(ProductionOrderRouteItem::getOrderId, orderId)
                .eq(ProductionOrderRouteItem::getRouteId, processRouteId));
        //  åˆ é™¤BOM子集附表
        ProcessRoute processRoute = processRouteService.getById(processRouteId);
        if (processRoute != null && processRoute.getBomId() != null) {
            productStructureInstanceService.remove(new LambdaQueryWrapper<ProductStructureInstance>()
                    .eq(ProductStructureInstance::getOrderId, orderId)
                    .eq(ProductStructureInstance::getBomId, processRoute.getBomId()));
            productionOrderStructureService.remove(new LambdaQueryWrapper<ProductionOrderStructure>()
                    .eq(ProductionOrderStructure::getOrderId, orderId)
                    .eq(ProductionOrderStructure::getBomId, processRoute.getBomId()));
        }
    }
@@ -138,12 +134,12 @@
        //  è¿ç§»å·¥è‰ºè·¯çº¿å­é›†è¡¨æ•°æ®ï¼Œè¿”回旧id->新instance映射
        List<ProcessRouteItem> processRouteItemList = processRouteItemService.list(
                new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
        Map<Long, ProcessRouteItemInstance> routeItemOldIdMap = migrationProcessRouteItem(orderId, processRouteItemList);
        Map<Long, ProductionOrderRouteItem> routeItemOldIdMap = migrationProcessRouteItem(orderId, processRouteItemList);
        //  è¿ç§»å·¥è‰ºè·¯çº¿å†…绑定的工序参数
        if (processRouteItemList != null && !processRouteItemList.isEmpty()) {
            for (ProcessRouteItem item : processRouteItemList) {
                ProcessRouteItemInstance newInstance = routeItemOldIdMap.get(item.getId());
                ProductionOrderRouteItem newInstance = routeItemOldIdMap.get(item.getId());
                Long newRouteItemInstanceId = newInstance != null ? newInstance.getId() : item.getId();
                List<ProcessRouteItemParam> paramList = processRouteItemParamService.list(
@@ -160,13 +156,13 @@
        }
    }
    private Map<Long, ProcessRouteItemInstance> migrationProcessRouteItem(Long orderId, List<ProcessRouteItem> list) {
        Map<Long, ProcessRouteItemInstance> oldIdMap = new HashMap<>();
    private Map<Long, ProductionOrderRouteItem> migrationProcessRouteItem(Long orderId, List<ProcessRouteItem> list) {
        Map<Long, ProductionOrderRouteItem> oldIdMap = new HashMap<>();
        if (list == null || list.isEmpty()) {
            return oldIdMap;
        }
        List<ProcessRouteItemInstance> instances = list.stream().map(item -> {
            ProcessRouteItemInstance instance = new ProcessRouteItemInstance();
        List<ProductionOrderRouteItem> instances = list.stream().map(item -> {
            ProductionOrderRouteItem instance = new ProductionOrderRouteItem();
            BeanUtils.copyProperties(item, instance, "id");
            instance.setIsQuality(item.getIsQuality() != null && item.getIsQuality() ? 1 : 0);
            instance.setOrderId(orderId);
@@ -175,7 +171,7 @@
            }
            return instance;
        }).collect(Collectors.toList());
        processRouteItemInstanceService.saveBatch(instances);
        productionOrderRouteItemService.saveBatch(instances);
        return oldIdMap;
    }
@@ -183,23 +179,23 @@
        if (list == null || list.isEmpty()) {
            return;
        }
        List<ProcessRouteItemParamInstance> instances = list.stream().map(item -> {
            ProcessRouteItemParamInstance instance = new ProcessRouteItemParamInstance();
        List<ProductionOrderRouteItemParam> instances = list.stream().map(item -> {
            ProductionOrderRouteItemParam instance = new ProductionOrderRouteItemParam();
            BeanUtils.copyProperties(item, instance, "id");
            instance.setOrderId(orderId);
            instance.setRouteItemId(newRouteItemInstanceId);
            return instance;
        }).collect(Collectors.toList());
        processRouteItemParamInstanceService.saveBatch(instances);
        productionOrderRouteItemParamService.saveBatch(instances);
    }
    private void migrationProductStructure(Long orderId, List<ProductStructure> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
        Map<Long, ProductStructureInstance> oldIdMap = new HashMap<>();
        List<ProductStructureInstance> instances = list.stream().map(item -> {
            ProductStructureInstance instance = new ProductStructureInstance();
        Map<Long, ProductionOrderStructure> oldIdMap = new HashMap<>();
        List<ProductionOrderStructure> instances = list.stream().map(item -> {
            ProductionOrderStructure instance = new ProductionOrderStructure();
            BeanUtils.copyProperties(item, instance, "id");
            instance.setBomId(item.getBomId() != null ? item.getBomId().longValue() : null);
            instance.setOrderId(orderId);
@@ -208,7 +204,7 @@
            }
            return instance;
        }).collect(Collectors.toList());
        productStructureInstanceService.saveBatch(instances);
        productionOrderStructureService.saveBatch(instances);
        //  æ–°å¢žåŽæœ‰id,旧id->新id,修正parentId
        Map<Long, Long> oldToNewId = new HashMap<>();
@@ -218,12 +214,12 @@
            }
        });
        List<ProductStructureInstance> toUpdate = instances.stream()
        List<ProductionOrderStructure> toUpdate = instances.stream()
                .filter(i -> i.getParentId() != null && oldToNewId.containsKey(i.getParentId()))
                .peek(i -> i.setParentId(oldToNewId.get(i.getParentId())))
                .collect(Collectors.toList());
        if (!toUpdate.isEmpty()) {
            productStructureInstanceService.updateBatchById(toUpdate);
            productionOrderStructureService.updateBatchById(toUpdate);
        }
    }
}