| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | private final ProductionOrderRoutingOperationParamMapper productionOrderRoutingOperationParamMapper; |
| | | private final ProductionOrderRoutingOperationMapper productionOrderRoutingOperationMapper; |
| | | private final ProductionOrderMapper productionOrderMapper; |
| | | private final TechnologyParamMapper technologyParamMapper; |
| | | private final TechnologyRoutingOperationParamMapper technologyRoutingOperationParamMapper; |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public boolean saveProductionOrderRoutingOperationParam(ProductionOrderRoutingOperationParam item) { |
| | | ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId()); |
| | | ProductionOrderRoutingOperation routingOperation = getRoutingOperation(item.getProductionOrderRoutingOperationId()); |
| | | fillFromSourceParam(item, routingOperation); |
| | | validateManualFields(item); |
| | | checkDuplicate(item); |
| | |
| | | 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.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, |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | 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()); |
| | |
| | | item.setIsRequired(sourceParam.getIsRequired()); |
| | | if (item.getRemark() == null || item.getRemark().trim().isEmpty()) { |
| | | item.setRemark(sourceParam.getRemark()); |
| | | } |
| | | if (item.getStandardValue() == null) { |
| | | item.setStandardValue(sourceParam.getStandardValue()); |
| | | } |
| | | } |
| | | |
| | |
| | | private void checkDuplicate(ProductionOrderRoutingOperationParam item) { |
| | | boolean duplicate = productionOrderRoutingOperationParamMapper.selectCount( |
| | | Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery() |
| | | .eq(ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationId, item.getTechnologyRoutingOperationId()) |
| | | .eq(ProductionOrderRoutingOperationParam::getProductionOrderRoutingOperationId, item.getProductionOrderRoutingOperationId()) |
| | | .eq(item.getTechnologyRoutingOperationParamId() != null, |
| | | ProductionOrderRoutingOperationParam::getTechnologyRoutingOperationParamId, item.getTechnologyRoutingOperationParamId()) |
| | | .eq(item.getTechnologyRoutingOperationParamId() == null && item.getParamCode() != null, |