| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | 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.vo.ProductionOrderRoutingOperationParamVo; |
| | | import com.ruoyi.production.mapper.ProductionOrderMapper; |
| | | import com.ruoyi.production.mapper.ProductionOrderRoutingOperationMapper; |
| | | import com.ruoyi.production.mapper.ProductionOrderRoutingOperationParamMapper; |
| | | import com.ruoyi.production.pojo.ProductionOrder; |
| | | 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; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | /** |
| | | * <p> |
| | | * 生产订单工艺路线工序参数表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author 芯导软件(江苏)有限公司 |
| | | * @since 2026-04-21 03:55:52 |
| | | */ |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class ProductionOrderRoutingOperationParamServiceImpl extends ServiceImpl<ProductionOrderRoutingOperationParamMapper, ProductionOrderRoutingOperationParam> implements ProductionOrderRoutingOperationParamService { |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @RequiredArgsConstructor |
| | | public class ProductionOrderRoutingOperationParamServiceImpl extends ServiceImpl<ProductionOrderRoutingOperationParamMapper, ProductionOrderRoutingOperationParam> |
| | | implements ProductionOrderRoutingOperationParamService { |
| | | |
| | | private final ProductionOrderRoutingOperationParamMapper productionOrderRoutingOperationParamMapper; |
| | | private final ProductionOrderRoutingOperationMapper productionOrderRoutingOperationMapper; |
| | | private final ProductionOrderMapper productionOrderMapper; |
| | | private final TechnologyParamMapper technologyParamMapper; |
| | | private final TechnologyRoutingOperationParamMapper technologyRoutingOperationParamMapper; |
| | | |
| | | @Override |
| | | public IPage<ProductionOrderRoutingOperationParamVo> pageProductionOrderRoutingOperationParam(Page<ProductionOrderRoutingOperationParamDto> page, |
| | | ProductionOrderRoutingOperationParamDto dto) { |
| | | Page<ProductionOrderRoutingOperationParam> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); |
| | | return this.page(entityPage, buildQueryWrapper(dto)) |
| | | .convert(item -> BeanUtil.copyProperties(item, ProductionOrderRoutingOperationParamVo.class)); |
| | | } |
| | | |
| | | @Override |
| | | public List<ProductionOrderRoutingOperationParamVo> listProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParamDto dto) { |
| | | return BeanUtil.copyToList(this.list(buildQueryWrapper(dto)), ProductionOrderRoutingOperationParamVo.class); |
| | | } |
| | | |
| | | @Override |
| | | public ProductionOrderRoutingOperationParamVo getProductionOrderRoutingOperationParamInfo(Long id) { |
| | | ProductionOrderRoutingOperationParam item = this.getById(id); |
| | | return item == null ? null : BeanUtil.copyProperties(item, ProductionOrderRoutingOperationParamVo.class); |
| | | } |
| | | |
| | | @Override |
| | | public boolean saveProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParam item) { |
| | | ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getProductionOrderRoutingOperationId()); |
| | | fillFromSourceParam(item, routingOperation); |
| | | validateManualFields(item); |
| | | checkDuplicate(item); |
| | | return this.saveOrUpdate(item); |
| | | } |
| | | |
| | | @Override |
| | | public boolean removeProductionOrderRoutingOperationParam(Long id) { |
| | | return this.removeById(id); |
| | | } |
| | | |
| | | 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.getProductionOrderRoutingOperationId() != null, ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, query.getProductionOrderRoutingOperationId()) |
| | | .eq(query.getTechnologyOperationId() != null, |
| | | ProductionOrderRoutingOperationParam::getTechnologyOperationId, query.getTechnologyOperationId()) |
| | | .eq(query.getTechnologyRoutingOperationParamId() != null, |
| | | ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, query.getTechnologyRoutingOperationParamId()) |
| | | .eq(query.getTechnologyOperationParamId() != null, |
| | | ProductionOrderRoutingOperationParam::getTechnologyOperationParamId, query.getTechnologyOperationParamId()) |
| | | .like(query.getParamCode() != null && !query.getParamCode().trim().isEmpty(), |
| | | ProductionOrderRoutingOperationParam::getParamCode, query.getParamCode()) |
| | | .like(query.getParamName() != null && !query.getParamName().trim().isEmpty(), |
| | | ProductionOrderRoutingOperationParam::getParamName, query.getParamName()) |
| | | .orderByAsc(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId) |
| | | .orderByAsc(ProductionOrderRoutingOperationParam::getId); |
| | | } |
| | | |
| | | private ProductionOrderRoutingOperation getRoutingOperation(Long productionOrderRoutingOperationId) { |
| | | if (productionOrderRoutingOperationId == null) { |
| | | throw new ServiceException("productionOrderRoutingOperationId is required"); |
| | | } |
| | | ProductionOrderRoutingOperation routingOperation = productionOrderRoutingOperationMapper.selectById(productionOrderRoutingOperationId); |
| | | if (routingOperation == null) { |
| | | throw new ServiceException("Production order routing operation not found"); |
| | | } |
| | | return routingOperation; |
| | | } |
| | | |
| | | private void fillFromSourceParam(ProductionOrderRoutingOperationParam item, ProductionOrderRoutingOperation routingOperation) { |
| | | 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.getParamId() == null) { |
| | | return; |
| | | } |
| | | TechnologyParam sourceParam = technologyParamMapper.selectById(item.getParamId()); |
| | | if (sourceParam == null) { |
| | | throw new ServiceException("Technology param not found"); |
| | | } |
| | | 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.setParamId(sourceParam.getId()); |
| | | item.setParamCode(sourceParam.getParamCode()); |
| | | item.setParamName(sourceParam.getParamName()); |
| | | item.setParamType(sourceParam.getParamType()); |
| | | item.setParamFormat(sourceParam.getParamFormat()); |
| | | item.setUnit(sourceParam.getUnit()); |
| | | item.setIsRequired(sourceParam.getIsRequired()); |
| | | if (item.getRemark() == null || item.getRemark().trim().isEmpty()) { |
| | | item.setRemark(sourceParam.getRemark()); |
| | | } |
| | | } |
| | | |
| | | private void validateManualFields(ProductionOrderRoutingOperationParam item) { |
| | | if (item.getParamCode() == null || item.getParamCode().trim().isEmpty()) { |
| | | throw new ServiceException("paramCode is required"); |
| | | } |
| | | if (item.getParamName() == null || item.getParamName().trim().isEmpty()) { |
| | | throw new ServiceException("paramName is required"); |
| | | } |
| | | } |
| | | |
| | | private void checkDuplicate(ProductionOrderRoutingOperationParam item) { |
| | | boolean duplicate = productionOrderRoutingOperationParamMapper.selectCount( |
| | | Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery() |
| | | .isNull(ProductionOrderRoutingOperationParam::getProductionProductMainId) |
| | | .eq(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, item.getProductionOrderRoutingOperationId()) |
| | | .eq(item.getTechnologyRoutingOperationParamId() != null, |
| | | ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, item.getTechnologyRoutingOperationParamId()) |
| | | .eq(item.getTechnologyRoutingOperationParamId() == null && item.getParamCode() != null, |
| | | ProductionOrderRoutingOperationParam::getParamCode, item.getParamCode()) |
| | | .ne(item.getId() != null, ProductionOrderRoutingOperationParam::getId, item.getId()) |
| | | ) > 0; |
| | | if (duplicate) { |
| | | throw new ServiceException("Duplicate production order routing operation param"); |
| | | } |
| | | } |
| | | } |