From 0ca7d78f0e8e8a6984314803aba21ab1d25472b3 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期五, 24 四月 2026 15:06:21 +0800
Subject: [PATCH] feat(production): 新增印刷定印单实体及相关接口和分页信息完善
---
src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java | 6 ++
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 25 ++++++++
src/main/resources/mapper/production/ProductOrderMapper.xml | 2
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java | 53 ++++++++++++++---
src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java | 21 +++++++
src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java | 22 +++++++
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java | 4 +
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 4 +
src/main/java/com/ruoyi/production/pojo/ProductOrder.java | 8 --
9 files changed, 129 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
index d5dd777..1d7d48b 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
+++ b/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;
+
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
index 50de3a0..699110e 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
+++ b/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;
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java
index 6965945..58c7ce4 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java
+++ b/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;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java b/src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java
index add8018..aa51f0c 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java
+++ b/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 閽堝琛ㄣ�恜roduction_print_order(鍗板埛瀹氬嵃鍗�)銆戠殑鏁版嵁搴撴搷浣淪ervice
@@ -24,4 +27,7 @@
* @return
*/
ProductionPrintOrderDto getByProductWordId(Long id);
+
+
+ List<ProductionPrintOrder> getListByOrders(@Nullable List<Long> orderIds);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
index 886e9a0..3df9df2 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/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());
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 343f790..5eed99f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/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
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java
index 0b5008a..24de514 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java
+++ b/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);
+ // 鍘婚櫎閲嶅鐨刼rderIds鐨勮褰曞彧淇濈暀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())
+ ));
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index 55de9e3..0a0aa28 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/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;
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 6f99253..956fe89 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/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
--
Gitblit v1.9.3