| | |
| | | package com.ruoyi.production.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.lang.Assert; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | import com.ruoyi.production.service.ProductOrderService; |
| | | import com.ruoyi.production.service.ProductProcessService; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import com.ruoyi.production.service.ProductionPrintOrderService; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | |
| | | |
| | | private final ProductWorkOrderService productWorkOrderService; |
| | | private final ProductProcessService productProcessService; |
| | | |
| | | @Autowired |
| | | @Lazy |
| | | private ProductionPrintOrderService productionPrintOrderService; |
| | | @Autowired |
| | | private ProductOrderMapper productOrderMapper; |
| | | @Autowired |
| | |
| | | |
| | | @Override |
| | | public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) { |
| | | return productOrderMapper.pageProductOrder(page, productOrder); |
| | | IPage<ProductOrderDto> productOrderDtoIPage = productOrderMapper.pageProductOrder(page, productOrder); |
| | | // 填充印刷单信息 |
| | | List<ProductOrderDto> records = productOrderDtoIPage.getRecords(); |
| | | if (CollUtil.isNotEmpty(records)) { |
| | | List<Long> orderIds = records.stream().map(ProductOrderDto::getId).collect(Collectors.toList()); |
| | | Map<Long, ProductionPrintOrder> collect = productionPrintOrderService.getListByOrders(orderIds).stream().collect(Collectors.toMap(ProductionPrintOrder::getProductOrderId, Function.identity())); |
| | | records.forEach(record -> { |
| | | ProductionPrintOrder productionPrintOrder = collect.get(record.getId()); |
| | | if (productionPrintOrder != null) { |
| | | productionPrintOrder.convertProductOrderDto(record); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | return productOrderDtoIPage; |
| | | } |
| | | |
| | | @Override |
| | |
| | | productProcessRouteMapper.insert(productProcessRoute); |
| | | //新增生产订单下的工艺路线子表 |
| | | List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); |
| | | Map<Long, ProductProcess> productProcessMap = productProcessService |
| | | .list(new LambdaQueryWrapper<ProductProcess>().in(ProductProcess::getId, processRouteItems.stream().map(ProcessRouteItem::getProcessId).collect(Collectors.toList()))) |
| | | .stream() |
| | | .collect(Collectors.toMap(ProductProcess::getId, productProcess -> productProcess)); |
| | | Map<Long, ProductProcess> productProcessMap = new HashMap<>(); |
| | | if(CollUtil.isNotEmpty(processRouteItems)){ |
| | | productProcessMap = productProcessService |
| | | .list(new LambdaQueryWrapper<ProductProcess>().in(ProductProcess::getId, processRouteItems.stream().map(ProcessRouteItem::getProcessId).collect(Collectors.toList()))) |
| | | .stream() |
| | | .collect(Collectors.toMap(ProductProcess::getId, productProcess -> productProcess)); |
| | | |
| | | } |
| | | // 生成当前日期的前缀:年月日 |
| | | for (ProcessRouteItem processRouteItem : processRouteItems) { |
| | | ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); |
| | |
| | | productWorkOrder.setProductOrderId(productOrder.getId()); |
| | | ProductOrder order = productOrderMapper.selectById(productOrder.getId()); |
| | | productWorkOrder.setPlanQuantity(order.getQuantity()); |
| | | productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder(null, productProcessMap.getOrDefault(productProcessRouteItem.getProcessId(), new ProductProcess()).getName(), productOrder.getNpsNo())); |
| | | productWorkOrder.setWorkOrderNo(productWorkOrderService.generateProductWorkOrder( productProcessMap.getOrDefault(productProcessRouteItem.getProcessId(), new ProductProcess()).getName(), productOrder.getNpsNo())); |
| | | productWorkOrder.setStatus(1); |
| | | productWorkOrderMapper.insert(productWorkOrder); |
| | | } |
| | |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public ProductWorkOrder startProduction(Long id) { |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(id); |
| | | productWorkOrder.setStartProductTime(now); |
| | | Assert.notNull(productWorkOrder, "工单不存在"); |
| | | |
| | | |
| | | ProductWorkOrder needUpdate = new ProductWorkOrder(); |
| | | needUpdate.setId(id); |
| | | needUpdate.setStartProductTime(now); |
| | | productWorkOrderMapper.updateById(needUpdate); |
| | | |
| | | return productWorkOrder; |
| | | } |
| | | |
| | | //获取当前生产订单号 |
| | | public String getMaxOrderNoByDate(String datePrefix) { |
| | | QueryWrapper<ProductOrder> queryWrapper = new QueryWrapper<>(); |