| | |
| | | |
| | | @Override |
| | | public IPage<TechnologyRoutingOperationParamVo> pageTechnologyRoutingOperationParam(Page<TechnologyRoutingOperationParamDto> page, |
| | | TechnologyRoutingOperationParamDto dto) { |
| | | TechnologyRoutingOperationParamDto dto) { |
| | | Page<TechnologyRoutingOperationParam> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); |
| | | return this.page(entityPage, buildQueryWrapper(dto)) |
| | | .convert(item -> BeanUtil.copyProperties(item, TechnologyRoutingOperationParamVo.class)); |
| | |
| | | public boolean saveTechnologyRoutingOperationParam(TechnologyRoutingOperationParam item) { |
| | | TechnologyRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId()); |
| | | fillFromOperationParam(item, routingOperation); |
| | | validateManualFields(item); |
| | | checkDuplicate(item); |
| | | return this.saveOrUpdate(item); |
| | | } |
| | |
| | | @Override |
| | | public int syncTechnologyRoutingOperationParam(TechnologyRoutingOperationParamSyncDto syncDto) { |
| | | if (syncDto == null || syncDto.getTechnologyRoutingOperationId() == null) { |
| | | throw new ServiceException("technologyRoutingOperationId is required"); |
| | | throw new ServiceException("工艺路线工序ID不能为空"); |
| | | } |
| | | TechnologyRoutingOperation routingOperation = getRoutingOperation(syncDto.getTechnologyRoutingOperationId()); |
| | | List<TechnologyOperationParam> operationParamList = technologyOperationParamMapper.selectList( |
| | |
| | | |
| | | private TechnologyRoutingOperation getRoutingOperation(Long technologyRoutingOperationId) { |
| | | if (technologyRoutingOperationId == null) { |
| | | throw new ServiceException("technologyRoutingOperationId is required"); |
| | | throw new ServiceException("工艺路线工序ID不能为空"); |
| | | } |
| | | TechnologyRoutingOperation routingOperation = technologyRoutingOperationMapper.selectById(technologyRoutingOperationId); |
| | | if (routingOperation == null) { |
| | | throw new ServiceException("Technology routing operation not found"); |
| | | throw new ServiceException("工艺路线工序不存在"); |
| | | } |
| | | return routingOperation; |
| | | } |
| | |
| | | if (item.getTechnologyOperationId() == null) { |
| | | item.setTechnologyOperationId(routingOperation.getTechnologyOperationId()); |
| | | } else if (!item.getTechnologyOperationId().equals(routingOperation.getTechnologyOperationId())) { |
| | | throw new ServiceException("technologyOperationId does not match routing operation"); |
| | | throw new ServiceException("工序ID与工艺路线工序不匹配"); |
| | | } |
| | | if (item.getTechnologyOperationParamId() == null) { |
| | | |
| | | if (item.getTechnologyOperationParamId() != null) { |
| | | TechnologyOperationParam operationParam = technologyOperationParamMapper.selectById(item.getTechnologyOperationParamId()); |
| | | if (operationParam == null) { |
| | | throw new ServiceException("工序参数不存在"); |
| | | } |
| | | if (!routingOperation.getTechnologyOperationId().equals(operationParam.getTechnologyOperationId())) { |
| | | throw new ServiceException("工序参数不属于当前工艺路线工序"); |
| | | } |
| | | TechnologyParam technologyParam = technologyParamMapper.selectById(operationParam.getTechnologyParamId()); |
| | | if (technologyParam == null) { |
| | | throw new ServiceException("基础参数不存在"); |
| | | } |
| | | fillFromTechnologyParam(item, technologyParam); |
| | | if (item.getStandardValue() == null) { |
| | | item.setStandardValue(operationParam.getStandardValue()); |
| | | } |
| | | return; |
| | | } |
| | | TechnologyOperationParam operationParam = technologyOperationParamMapper.selectById(item.getTechnologyOperationParamId()); |
| | | if (operationParam == null) { |
| | | throw new ServiceException("Technology operation param not found"); |
| | | |
| | | if (item.getParamId() != null) { |
| | | TechnologyParam technologyParam = technologyParamMapper.selectById(item.getParamId()); |
| | | if (technologyParam == null) { |
| | | throw new ServiceException("基础参数不存在"); |
| | | } |
| | | fillFromTechnologyParam(item, technologyParam); |
| | | TechnologyOperationParam operationParam = technologyOperationParamMapper.selectOne( |
| | | Wrappers.<TechnologyOperationParam>lambdaQuery() |
| | | .eq(TechnologyOperationParam::getTechnologyOperationId, routingOperation.getTechnologyOperationId()) |
| | | .eq(TechnologyOperationParam::getTechnologyParamId, item.getParamId()) |
| | | .orderByAsc(TechnologyOperationParam::getId) |
| | | .last("limit 1") |
| | | ); |
| | | if (operationParam != null) { |
| | | item.setTechnologyOperationParamId(operationParam.getId()); |
| | | if (item.getStandardValue() == null) { |
| | | item.setStandardValue(operationParam.getStandardValue()); |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | if (!routingOperation.getTechnologyOperationId().equals(operationParam.getTechnologyOperationId())) { |
| | | throw new ServiceException("Operation param does not belong to routing operation"); |
| | | } |
| | | TechnologyParam technologyParam = technologyParamMapper.selectById(operationParam.getTechnologyParamId()); |
| | | if (technologyParam == null) { |
| | | throw new ServiceException("Technology param not found"); |
| | | } |
| | | |
| | | throw new ServiceException("paramId或technologyOperationParamId不能为空"); |
| | | } |
| | | |
| | | private void fillFromTechnologyParam(TechnologyRoutingOperationParam item, TechnologyParam technologyParam) { |
| | | item.setParamId(technologyParam.getId()); |
| | | item.setParamCode(technologyParam.getParamCode()); |
| | | item.setParamName(technologyParam.getParamName()); |
| | |
| | | if (item.getRemark() == null || item.getRemark().trim().isEmpty()) { |
| | | item.setRemark(technologyParam.getRemark()); |
| | | } |
| | | if (item.getStandardValue() == null) { |
| | | item.setStandardValue(operationParam.getStandardValue()); |
| | | } |
| | | } |
| | | |
| | | private void validateManualFields(TechnologyRoutingOperationParam 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(TechnologyRoutingOperationParam item) { |
| | |
| | | .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, item.getTechnologyRoutingOperationId()) |
| | | .eq(item.getTechnologyOperationParamId() != null, |
| | | TechnologyRoutingOperationParam::getTechnologyOperationParamId, item.getTechnologyOperationParamId()) |
| | | .eq(item.getTechnologyOperationParamId() == null && item.getParamCode() != null, |
| | | .eq(item.getTechnologyOperationParamId() == null && item.getParamId() != null, |
| | | TechnologyRoutingOperationParam::getParamId, item.getParamId()) |
| | | .eq(item.getTechnologyOperationParamId() == null && item.getParamId() == null && item.getParamCode() != null, |
| | | TechnologyRoutingOperationParam::getParamCode, item.getParamCode()) |
| | | .ne(item.getId() != null, TechnologyRoutingOperationParam::getId, item.getId()) |
| | | ) > 0; |
| | | if (duplicate) { |
| | | throw new ServiceException("Duplicate routing operation param"); |
| | | throw new ServiceException("工艺路线工序参数重复"); |
| | | } |
| | | } |
| | | } |