src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -1,6 +1,7 @@ package com.ruoyi.production.dto; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.production.pojo.ProductOrder; @@ -10,53 +11,87 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @Data @ExcelIgnoreUnannotated public class ProductOrderDto extends ProductOrder { @ApiModelProperty(value = "销售合同号") @Excel(name = "销售合同号") @Excel(name = "单号",sort = 2) private String salesContractNo; @ApiModelProperty(value = "项目名") @Excel(name = "项目名") private String projectName; @ApiModelProperty(value = "客户名称") @Excel(name = "客户名称") @Excel(name = "厂家",sort = 3) private String customerName; @ApiModelProperty(value = "产品名称") @Excel(name = "产品名称") @Excel(name = "产品名称",sort = 4) private String productCategory; @ApiModelProperty(value = "规格") @Excel(name = "规格") @Excel(name = "纸张规格",sort = 5) private String specificationModel; @ApiModelProperty(value = "工艺路线编号") @Excel(name = "工艺路线编号") private String processRouteCode; @ApiModelProperty(value = "完成进度") @Excel(name = "完成进度", suffix = "%") private BigDecimal completionStatus; @ApiModelProperty(value = "BOM编号") @Excel(name = "BOM编号") private String bomNo; @ApiModelProperty(value = "交期偏差") private Integer deliveryDaysDiff; @ApiModelProperty(value = "交期") @ApiModelProperty(value = "计划交货日期") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "计划交货日期",sort = 10) private LocalDate deliveryDate; @ApiModelProperty(value = "实际交货日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "实际交货日期",sort = 11) private LocalDateTime actuallyDeliveryDate; @ApiModelProperty(value = "签订日期") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "下单日期",sort = 1) private LocalDate executionDate; //是否发货(台账页面颜色控制) private Boolean isFh; private Long saleLedgerId; /** * 尺寸 */ private String cutSize; /** * 小盒数量 */ @Excel(name = "小盒数量",sort = 7) private String smallBoxQty; /** * 中盒数量 */ @Excel(name = "小盒数量",sort = 8) private String mediumBoxQty; /** * 色数 */ @Excel(name = "色数",sort = 9) private String printColorCount; } src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -49,7 +49,6 @@ * 生产订单号 */ @ApiModelProperty(value = "生产订单号") @Excel(name = "生产订单号") private String npsNo; /** @@ -64,7 +63,6 @@ @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "创建时间") private LocalDateTime createTime; //修改时间 @@ -79,24 +77,21 @@ * 需求数量 */ @ApiModelProperty(value = "需求数量") @Excel(name = "需求数量") @Excel(name = "印刷数量",sort = 6) private BigDecimal quantity; /** * 完成数量 */ @ApiModelProperty(value = "完成数量") @Excel(name = "完成数量") private BigDecimal completeQuantity; @Excel(name = "开始时间") @ApiModelProperty(value = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startTime; @ApiModelProperty(value = "结束时间") @Excel(name = "结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; @@ -114,6 +109,7 @@ * 备注 */ @TableField(value = "remark") @Excel(name = "备注",sort = 12) private String remark; } src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java
@@ -1,5 +1,7 @@ package com.ruoyi.production.pojo; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; @@ -11,9 +13,12 @@ import com.ruoyi.production.dto.MaterialInfoDto; import com.ruoyi.production.dto.PlateMakingDto; import com.ruoyi.production.dto.ProcessContentDto; import com.ruoyi.production.dto.ProductOrderDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; /** * 印刷定印单 @@ -256,4 +261,21 @@ */ @TableField(value = "client_name") private String clientName; public ProductOrderDto convertProductOrderDto(@NotNull ProductOrderDto dto) { dto.setCutSize(this.getCutSize()); dto.setSmallBoxQty(this.getSmallBoxQty()); dto.setMediumBoxQty(this.getMediumBoxQty()); // 色数 为工序开数第一个 if(CollUtil.isNotEmpty(this.processContent)){ ProcessContentDto processContentDto = BeanUtil.toBean( processContent.get(0), ProcessContentDto.class ); dto.setPrintColorCount(processContentDto.getOpenCount()); } // 备注已经填充到了 ProductOrderDto中无需关心 return dto; } } src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java
@@ -5,6 +5,9 @@ import com.ruoyi.production.pojo.ProductionPrintOrder; import com.baomidou.mybatisplus.extension.service.IService; import javax.annotation.Nullable; import java.util.List; /** * @author buhuazhen * @description 针对表【production_print_order(印刷定印单)】的数据库操作Service @@ -24,4 +27,7 @@ * @return */ ProductionPrintOrderDto getByProductWordId(Long id); List<ProductionPrintOrder> getListByOrders(@Nullable List<Long> orderIds); } src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -174,6 +174,7 @@ */ private List<ProcessRouteItem> buildProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long routeId, Long productModelId) { List<ProcessRouteItem> items = new ArrayList<>(dtos.size()); Integer num = 0; for (ProcessRouteAnticlockwiseDto dto : dtos) { ProcessRouteItem item = new ProcessRouteItem(); item.setRouteId(routeId); @@ -184,6 +185,7 @@ item.setProcessRouteNum(dto.getProcessRouteNum()); item.setProcessRouteAddNum(dto.getProcessRouteAddNum()); item.setProcessRouteRequire(dto.getProcessRouteRequire()); item.setDragSort(num++); items.add(item); } return items; @@ -208,6 +210,7 @@ */ private void buildProductProcessRouteItems(List<ProcessRouteAnticlockwiseDto> dtos, Long productRouteId, Long productModelId,Long productOrderId) { ProductOrder byId = productOrderService.getById(productOrderId); Integer num = 0; for (ProcessRouteAnticlockwiseDto dto : dtos) { ProductProcessRouteItem item = new ProductProcessRouteItem(); item.setProductRouteId(productRouteId); @@ -218,6 +221,7 @@ item.setProcessRouteNum(dto.getProcessRouteNum()); item.setProcessRouteAddNum(dto.getProcessRouteAddNum()); item.setProcessRouteRequire(dto.getProcessRouteRequire()); item.setDragSort(num++); item.setUuid(dto.getUuid()); productProcessRouteItemService.save(item); ProductProcess productProcess = productProcessService.getById(item.getProcessId()); src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -17,9 +17,11 @@ 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; @@ -29,6 +31,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @Service @@ -37,6 +40,10 @@ private final ProductWorkOrderService productWorkOrderService; private final ProductProcessService productProcessService; @Autowired @Lazy private ProductionPrintOrderService productionPrintOrderService; @Autowired private ProductOrderMapper productOrderMapper; @Autowired @@ -64,7 +71,23 @@ @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 src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java
@@ -1,6 +1,7 @@ package com.ruoyi.production.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -20,6 +21,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -91,6 +93,25 @@ return productionPrintOrderDto; } @Override public List<ProductionPrintOrder> getListByOrders(List<Long> orderIds) { if(CollUtil.isEmpty(orderIds)){ return new ArrayList<>(); } LambdaQueryWrapper<ProductionPrintOrder> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(ProductionPrintOrder::getProductOrderId, orderIds); List<ProductionPrintOrder> productionPrintOrders = productionPrintOrderMapper.selectList(queryWrapper); // 去除重复的orderIds的记录只保留id最大的一个 return productionPrintOrders.stream().collect(Collectors.collectingAndThen( Collectors.toMap( ProductionPrintOrder::getProductOrderId, productionPrintOrder -> productionPrintOrder, (existing, replacement) -> existing.getId() > replacement.getId() ? existing : replacement ), map -> new ArrayList<>(map.values()) )); } } src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -136,6 +136,10 @@ @TableField(value = "delivery_date") private LocalDate deliveryDate; @ApiModelProperty(value = "实际交货日期") @TableField(value = "actually_delivery_date") private LocalDate actuallyDeliveryDate; @TableField(exist = false) @ApiModelProperty(value = "交货天数差") private Integer deliveryDaysDiff; src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -26,6 +26,8 @@ ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus, DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff, sl.delivery_date, sl.actually_delivery_date, sl.execution_date, CASE WHEN shipping_status_counts.total_count = 0 THEN false WHEN shipping_status_counts.unshipped_count = 0 THEN true