From 4a5cb2b06edf986c54892d08afe196aed96ee93f Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 18 三月 2026 11:43:54 +0800
Subject: [PATCH] 若上一个工序没有报工,则无法报工
---
src/main/resources/mapper/production/ProductWorkOrderMapper.xml | 2 +
src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java | 37 ++++++++++++++++++
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 21 ++++++++++
src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java | 9 ++++
4 files changed, 68 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
index 6e2ca95..7853428 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -43,4 +43,13 @@
@ApiModelProperty(value = "宸ュ崟绫诲瀷 姝e父 /杩斿伐杩斾慨")
private String workOrderType;
+
+ @ApiModelProperty(value = "宸ュ簭鎺掑簭")
+ private Integer dragSort;
+
+ @ApiModelProperty(value = "宸ヨ壓璺嚎ID")
+ private Long productRouteId;
+
+ @ApiModelProperty(value = "鏄惁鍙互鎶ュ伐")
+ private Boolean isCanReport;
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
index 4a68ce8..6bbb940 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -13,10 +13,14 @@
import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
import com.ruoyi.common.utils.MatrixToImageWriter;
import com.ruoyi.production.dto.ProductWorkOrderDto;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
import com.ruoyi.production.mapper.ProductWorkOrderFileMapper;
import com.ruoyi.production.mapper.ProductWorkOrderMapper;
+import com.ruoyi.production.mapper.ProductionProductMainMapper;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.production.pojo.ProductWorkOrderFile;
+import com.ruoyi.production.pojo.ProductionProductMain;
import com.ruoyi.production.service.ProductWorkOrderService;
import com.ruoyi.quality.pojo.QualityInspectParam;
import lombok.AllArgsConstructor;
@@ -28,6 +32,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
+import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
@@ -42,13 +47,43 @@
private ProductWorkOrderMapper productWorkOrdermapper;
@Autowired
private ProductWorkOrderFileMapper productWorkOrderFileMapper;
+ @Autowired
+ private ProductProcessRouteItemMapper productProcessRouteItemMapper;
+ @Autowired
+ private ProductionProductMainMapper productionProductMainMapper;
@Value("${file.temp-dir}")
private String tempDir;
@Override
public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) {
- return productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder);
+ IPage<ProductWorkOrderDto> productWorkOrderDtoIPage = productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder);
+ productWorkOrderDtoIPage.getRecords().forEach(record -> {
+ //妫�鏌ヤ笂涓�涓伐搴忔槸鍚﹀凡鎶ュ伐
+ Integer currentDragSort = record.getDragSort();
+ if (currentDragSort == null || currentDragSort == 1) {
+ record.setIsCanReport(true);
+ } else {
+ //鏌ユ壘涓婁竴涓伐搴�
+ ProductProcessRouteItem previousItem = productProcessRouteItemMapper.selectOne(
+ Wrappers.<ProductProcessRouteItem>lambdaQuery()
+ .eq(ProductProcessRouteItem::getProductRouteId, record.getProductRouteId())
+ .eq(ProductProcessRouteItem::getDragSort, currentDragSort - 1)
+ );
+
+ if (previousItem != null) {
+ //妫�鏌ヤ笂涓�涓伐搴忔槸鍚︽湁鎶ュ伐璁板綍
+ Long count = productionProductMainMapper.selectCount(
+ Wrappers.<ProductionProductMain>lambdaQuery()
+ .eq(ProductionProductMain::getProductProcessRouteItemId, previousItem.getId())
+ );
+ record.setIsCanReport(count > 0);
+ } else {
+ record.setIsCanReport(true);
+ }
+ }
+ });
+ return productWorkOrderDtoIPage;
}
@Override
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 2f943e2..96e7f7e 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -99,6 +99,27 @@
if (productProcessRouteItem == null) {
throw new RuntimeException("宸ヨ壓璺嚎椤逛笉瀛樺湪");
}
+ //妫�鏌ヤ笂涓�涓伐搴忔槸鍚﹀凡鎶ュ伐
+ Integer currentDragSort = productProcessRouteItem.getDragSort();
+ if (currentDragSort != null && currentDragSort > 1) {
+ ProductProcessRouteItem previousItem = productProcessRouteItemMapper.selectOne(
+ Wrappers.<ProductProcessRouteItem>lambdaQuery()
+ .eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())
+ .eq(ProductProcessRouteItem::getDragSort, currentDragSort - 1)
+ );
+
+ if (previousItem != null) {
+ //妫�鏌ヤ笂涓�涓伐搴忔槸鍚︽湁鎶ュ伐璁板綍
+ Long count = productionProductMainMapper.selectCount(
+ Wrappers.<ProductionProductMain>lambdaQuery()
+ .eq(ProductionProductMain::getProductProcessRouteItemId, previousItem.getId())
+ );
+
+ if (count == 0) {
+ throw new RuntimeException("涓婁竴涓伐搴忓皻鏈姤宸ワ紝涓嶈兘杩涜褰撳墠宸ュ簭鎶ュ伐");
+ }
+ }
+ }
//褰撳墠鍏蜂綋宸ュ簭
ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
//宸ヨ壓璺嚎涓綋鍓嶅伐搴忓搴旂殑浜у嚭瑙勬牸鍨嬪彿
diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index 6d2daa7..afd2bde 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -26,6 +26,8 @@
pm.unit,
p.product_name AS productName,
po.nps_no AS productOrderNpsNo,
+ ppri.drag_sort,
+ ppri.product_route_id,
ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
CASE
WHEN pwo.work_order_no LIKE 'FG%' THEN '杩斿伐杩斾慨'
--
Gitblit v1.9.3