| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | |
| | | |
| | | @Override |
| | | public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) { |
| | | |
| | | return processRouteMapper.pageProcessRouteDto(page, processRouteDto); |
| | | } |
| | | |
| | | @Override |
| | | public Integer saveProcessRoute(ProcessRoute processRoute) { |
| | | normalizeProductModelIds(processRoute); |
| | | this.save(processRoute); |
| | | |
| | | String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); |
| | | String idStr = String.format("%06d", processRoute.getId()); |
| | | String newProductCode = "GYLX" + dateStr + idStr; |
| | | // 更新数据库中的productCode |
| | | processRoute.setProcessRouteCode(newProductCode); |
| | | // 查询bom清单 |
| | | String routeCode = "GYLX" + dateStr + idStr; |
| | | processRoute.setProcessRouteCode(routeCode); |
| | | |
| | | List<ProductStructureDto> productStructureDtos = productStructureService.listDetailBybomId(processRoute.getBomId()); |
| | | if(CollectionUtils.isNotEmpty(productStructureDtos)){ |
| | | if (CollectionUtils.isNotEmpty(productStructureDtos)) { |
| | | AtomicInteger i = new AtomicInteger(1); |
| | | productStructureDtos.forEach(productStructureDto -> { |
| | | ProcessRouteItem processRouteItem = new ProcessRouteItem(); |
| | | processRouteItem.setRouteId(processRoute.getId()); |
| | | processRouteItem.setProcessId(productStructureDto.getProcessId()); |
| | | processRouteItem.setProductModelId(processRoute.getProductModelId()); |
| | | processRouteItem.setProductModelIds(processRoute.getProductModelIds()); |
| | | processRouteItem.setDragSort(i.get()); |
| | | processRouteItem.setIsQuality(false); |
| | | processRouteItemMapper.insert(processRouteItem); |
| | |
| | | |
| | | @Override |
| | | public int batchDelete(List<Long> ids) { |
| | | //先判断是否已经引用了 |
| | | List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids)); |
| | | if (productOrders.size()>0){ |
| | | throw new RuntimeException("该工艺路线生产已引用,不能删除"); |
| | | List<ProductOrder> productOrders = productOrderMapper.selectList( |
| | | Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids) |
| | | ); |
| | | if (!productOrders.isEmpty()) { |
| | | throw new RuntimeException("该工艺路线已被生产订单引用,不能删除"); |
| | | } |
| | | //删除工艺路线详情 |
| | | processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids)); |
| | | return processRouteMapper.deleteBatchIds(ids); |
| | | } |
| | | |
| | | private void normalizeProductModelIds(ProcessRoute processRoute) { |
| | | if (processRoute == null) { |
| | | return; |
| | | } |
| | | String ids = joinProductModelIds( |
| | | processRoute.getProductModelIdList(), |
| | | processRoute.getProductModelIds(), |
| | | processRoute.getProductModelId() |
| | | ); |
| | | processRoute.setProductModelIds(ids); |
| | | processRoute.setProductModelId(firstProductModelId(ids, processRoute.getProductModelId())); |
| | | } |
| | | |
| | | private String joinProductModelIds(List<Long> idList, String ids, Long fallbackId) { |
| | | if (CollectionUtils.isNotEmpty(idList)) { |
| | | return idList.stream() |
| | | .filter(item -> item != null && item > 0) |
| | | .distinct() |
| | | .map(String::valueOf) |
| | | .collect(Collectors.joining(",")); |
| | | } |
| | | if (StringUtils.hasText(ids)) { |
| | | return Arrays.stream(ids.split(",")) |
| | | .map(String::trim) |
| | | .filter(StringUtils::hasText) |
| | | .distinct() |
| | | .collect(Collectors.joining(",")); |
| | | } |
| | | return fallbackId == null ? null : String.valueOf(fallbackId); |
| | | } |
| | | |
| | | private Long firstProductModelId(String ids, Long fallbackId) { |
| | | if (!StringUtils.hasText(ids)) { |
| | | return fallbackId; |
| | | } |
| | | String first = ids.split(",")[0].trim(); |
| | | if (!StringUtils.hasText(first)) { |
| | | return fallbackId; |
| | | } |
| | | try { |
| | | return Long.parseLong(first); |
| | | } catch (NumberFormatException ignore) { |
| | | return fallbackId; |
| | | } |
| | | } |
| | | } |