2 天以前 69dc6b16ef04bdfbfa65f77c169c0847dc7e65c2
src/main/java/com/ruoyi/production/service/impl/ProductionOrderRoutingOperationParamServiceImpl.java
@@ -8,7 +8,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamDto;
import com.ruoyi.production.bean.dto.ProductionOrderRoutingOperationParamSyncDto;
import com.ruoyi.production.bean.vo.ProductionOrderRoutingOperationParamVo;
import com.ruoyi.production.mapper.ProductionOrderMapper;
import com.ruoyi.production.mapper.ProductionOrderRoutingOperationMapper;
@@ -17,7 +16,9 @@
import com.ruoyi.production.pojo.ProductionOrderRoutingOperation;
import com.ruoyi.production.pojo.ProductionOrderRoutingOperationParam;
import com.ruoyi.production.service.ProductionOrderRoutingOperationParamService;
import com.ruoyi.technology.mapper.TechnologyParamMapper;
import com.ruoyi.technology.mapper.TechnologyRoutingOperationParamMapper;
import com.ruoyi.technology.pojo.TechnologyParam;
import com.ruoyi.technology.pojo.TechnologyRoutingOperationParam;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -34,6 +35,7 @@
    private final ProductionOrderRoutingOperationParamMapper productionOrderRoutingOperationParamMapper;
    private final ProductionOrderRoutingOperationMapper productionOrderRoutingOperationMapper;
    private final ProductionOrderMapper productionOrderMapper;
    private final TechnologyParamMapper technologyParamMapper;
    private final TechnologyRoutingOperationParamMapper technologyRoutingOperationParamMapper;
    @Override
@@ -57,7 +59,7 @@
    @Override
    public boolean saveProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParam item) {
        ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId());
        ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getProductionOrderRoutingOperationId());
        fillFromSourceParam(item, routingOperation);
        validateManualFields(item);
        checkDuplicate(item);
@@ -69,62 +71,16 @@
        return this.removeById(id);
    }
    @Override
    public int syncProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParamSyncDto syncDto) {
        if (syncDto == null || syncDto.getProductionOrderRoutingOperationId() == null) {
            throw new ServiceException("productionOrderRoutingOperationId is required");
        }
        ProductionOrderRoutingOperation routingOperation = getRoutingOperation(syncDto.getProductionOrderRoutingOperationId());
        List<TechnologyRoutingOperationParam> sourceParamList = technologyRoutingOperationParamMapper.selectList(
                Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
                        .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getTechnologyRoutingOperationId())
                        .orderByAsc(TechnologyRoutingOperationParam::getId)
        );
        boolean replaceExisting = syncDto.getReplaceExisting() == null || syncDto.getReplaceExisting();
        if (replaceExisting) {
            productionOrderRoutingOperationParamMapper.delete(
                    Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
                            .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
            );
        }
        int successCount = 0;
        for (TechnologyRoutingOperationParam sourceParam : sourceParamList) {
            boolean exists = productionOrderRoutingOperationParamMapper.selectCount(
                    Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
                            .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
                            .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, sourceParam.getId())
            ) > 0;
            if (!replaceExisting && exists) {
                continue;
            }
            ProductionOrderRoutingOperationParam target = new ProductionOrderRoutingOperationParam();
            target.setTechnologyRoutingOperationId(routingOperation.getId());
            target.setTechnologyRoutingOperationParamId(sourceParam.getId());
            target.setProductionOrderId(routingOperation.getProductionOrderId());
            target.setTechnologyOperationId(sourceParam.getTechnologyOperationId());
            target.setTechnologyOperationParamId(sourceParam.getTechnologyOperationParamId());
            target.setParamId(sourceParam.getParamId());
            target.setParamCode(sourceParam.getParamCode());
            target.setParamName(sourceParam.getParamName());
            target.setParamType(sourceParam.getParamType());
            target.setParamFormat(sourceParam.getParamFormat());
            target.setUnit(sourceParam.getUnit());
            target.setIsRequired(sourceParam.getIsRequired());
            target.setRemark(sourceParam.getRemark());
            target.setStandardValue(sourceParam.getStandardValue());
            productionOrderRoutingOperationParamMapper.insert(target);
            successCount++;
        }
        return successCount;
    }
    private LambdaQueryWrapper<ProductionOrderRoutingOperationParam> buildQueryWrapper(ProductionOrderRoutingOperationParamDto dto) {
        ProductionOrderRoutingOperationParam query = dto == null ? new ProductionOrderRoutingOperationParam() : dto;
        return Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
                .eq(query.getId() != null, ProductionOrderRoutingOperationParam::getId, query.getId())
                .eq(query.getProductionProductMainId() != null,
                        ProductionOrderRoutingOperationParam::getProductionProductMainId, query.getProductionProductMainId())
                .isNull(query.getProductionProductMainId() == null,
                        ProductionOrderRoutingOperationParam::getProductionProductMainId)
                .eq(query.getProductionOrderId() != null, ProductionOrderRoutingOperationParam::getProductionOrderId, query.getProductionOrderId())
                .eq(query.getTechnologyRoutingOperationId() != null,
                        ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, query.getTechnologyRoutingOperationId())
                .eq(query.getProductionOrderRoutingOperationId() != null, ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, query.getProductionOrderRoutingOperationId())
                .eq(query.getTechnologyOperationId() != null,
                        ProductionOrderRoutingOperationParam::getTechnologyOperationId, query.getTechnologyOperationId())
                .eq(query.getTechnologyRoutingOperationParamId() != null,
@@ -135,7 +91,7 @@
                        ProductionOrderRoutingOperationParam::getParamCode, query.getParamCode())
                .like(query.getParamName() != null && !query.getParamName().trim().isEmpty(),
                        ProductionOrderRoutingOperationParam::getParamName, query.getParamName())
                .orderByAsc(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId)
                .orderByAsc(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId)
                .orderByAsc(ProductionOrderRoutingOperationParam::getId);
    }
@@ -151,25 +107,28 @@
    }
    private void fillFromSourceParam(ProductionOrderRoutingOperationParam item, ProductionOrderRoutingOperation routingOperation) {
        item.setTechnologyRoutingOperationId(routingOperation.getId());
        item.setProductionOrderId(routingOperation.getProductionOrderId());
        item.setProductionOrderRoutingOperationId(routingOperation.getId());
        ProductionOrder productionOrder = productionOrderMapper.selectById(routingOperation.getProductionOrderId());
        if (productionOrder == null) {
            throw new ServiceException("Production order not found");
        }
        if (item.getTechnologyRoutingOperationParamId() == null) {
        if (item.getParamId() == null) {
            return;
        }
        TechnologyRoutingOperationParam sourceParam = technologyRoutingOperationParamMapper.selectById(item.getTechnologyRoutingOperationParamId());
        TechnologyParam sourceParam = technologyParamMapper.selectById(item.getParamId());
        if (sourceParam == null) {
            throw new ServiceException("Technology routing operation param not found");
            throw new ServiceException("Technology  param not found");
        }
        if (!routingOperation.getTechnologyRoutingOperationId().equals(sourceParam.getTechnologyRoutingOperationId())) {
            throw new ServiceException("Source param does not belong to routing operation");
        if (item.getTechnologyOperationParamId() != null) {
            TechnologyRoutingOperationParam sourceRoutingOperationParam = technologyRoutingOperationParamMapper.selectById(item.getTechnologyOperationParamId());
            item.setTechnologyOperationId(sourceRoutingOperationParam.getTechnologyOperationId());
            item.setTechnologyOperationParamId(sourceRoutingOperationParam.getTechnologyOperationParamId());
            if (item.getStandardValue() == null) {
                item.setStandardValue(sourceRoutingOperationParam.getStandardValue());
            }
        }
        item.setTechnologyOperationId(sourceParam.getTechnologyOperationId());
        item.setTechnologyOperationParamId(sourceParam.getTechnologyOperationParamId());
        item.setParamId(sourceParam.getParamId());
        item.setParamId(sourceParam.getId());
        item.setParamCode(sourceParam.getParamCode());
        item.setParamName(sourceParam.getParamName());
        item.setParamType(sourceParam.getParamType());
@@ -178,9 +137,6 @@
        item.setIsRequired(sourceParam.getIsRequired());
        if (item.getRemark() == null || item.getRemark().trim().isEmpty()) {
            item.setRemark(sourceParam.getRemark());
        }
        if (item.getStandardValue() == null) {
            item.setStandardValue(sourceParam.getStandardValue());
        }
    }
@@ -196,7 +152,8 @@
    private void checkDuplicate(ProductionOrderRoutingOperationParam item) {
        boolean duplicate = productionOrderRoutingOperationParamMapper.selectCount(
                Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
                        .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, item.getTechnologyRoutingOperationId())
                        .isNull(ProductionOrderRoutingOperationParam::getProductionProductMainId)
                        .eq(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, item.getProductionOrderRoutingOperationId())
                        .eq(item.getTechnologyRoutingOperationParamId() != null,
                                ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, item.getTechnologyRoutingOperationParamId())
                        .eq(item.getTechnologyRoutingOperationParamId() == null && item.getParamCode() != null,