From 1d2d3760bef94013f80cae555bdcbfb2268929a2 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 15 四月 2026 11:22:17 +0800
Subject: [PATCH] fix:生产-质量-仓储(合格,不合格),批号,供应商
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 6 +-
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java | 27 ++++++++-----
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 14 ++++---
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | 1
src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml | 2
src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java | 2 +
src/main/resources/mapper/stock/StockUninventoryMapper.xml | 4 ++
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java | 5 ++
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java | 4 ++
9 files changed, 44 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 2ded4f0..88e6159 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -38,12 +38,15 @@
* @param recordType
* @param recordId
*/
- public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
+ public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId, String batchNo, String customer, LocalDate productionDate) {
StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
stockUninventoryDto.setRecordId(recordId);
stockUninventoryDto.setRecordType(String.valueOf(recordType));
stockUninventoryDto.setQualitity(quantity);
stockUninventoryDto.setProductModelId(productModelId);
+ stockUninventoryDto.setBatchNo(batchNo);
+ stockUninventoryDto.setCustomer(customer);
+ stockUninventoryDto.setProductionDate(productionDate);
stockUninventoryService.addStockUninventory(stockUninventoryDto);
}
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 8b2b427..18b9f06 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -223,7 +223,7 @@
order.setDrawMaterials(JSON.toJSONString(existingMaterialList));
productOrderMapper.updateById(order);
}
- }else {
+ } else {
throw new RuntimeException("璇烽鍙栨姇鍏ユ潗鏂�");
}
/*鏂板鎶ュ伐浜у嚭琛�*/
@@ -237,6 +237,8 @@
//鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺
BigDecimal productQty = productionProductOutput.getQuantity();
//鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
+ ProductWorkOrder pwo = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
+ String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
if (productQty.compareTo(BigDecimal.ZERO) > 0) {
/*鏂板璐ㄦ*/
List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
@@ -249,8 +251,7 @@
inspectType = 2;
process = null;
}
- ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
- ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
+ ProductOrder productOrder = productOrderMapper.selectById(pwo.getProductOrderId());
if (productOrder == null) {
throw new RuntimeException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
}
@@ -269,6 +270,7 @@
qualityInspect.setProductModelId(productModel.getId());
qualityInspect.setBatchNo(productOrder.getBatchNo());
qualityInspect.setManufacturingTeam(productOrder.getManufacturingTeam());
+ qualityInspect.setProductionDate(pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now());
qualityInspectMapper.insert(qualityInspect);
List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
if (qualityTestStandard.size() > 0) {
@@ -286,9 +288,8 @@
}
} else {
//鐩存帴鍏ュ簱
- String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty()),
- StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(),order.getBatchNo(),customer,null
+ StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), order.getBatchNo(), customer, pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now()
);
}
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
@@ -335,7 +336,8 @@
//濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
- stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId(),
+ order.getBatchNo(), customer, pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now());
}
}
return true;
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index a128dd3..95249fd 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -131,13 +131,13 @@
String text = inspectParams.stream().map(QualityInspectParam::getParameterItem).collect(Collectors.joining(","));
qualityUnqualified.setDefectivePhenomena(text + "杩欎簺鎸囨爣涓瓨鍦ㄤ笉鍚堟牸");//涓嶅悎鏍肩幇璞�
qualityUnqualified.setInspectId(qualityInspect.getId());
- qualityUnqualified.setProductionDate(inspect.getProductionDate());
- qualityUnqualified.setBatchNo(inspect.getBatchNo());
+ qualityUnqualified.setProductionDate(qualityInspect.getProductionDate());
+ qualityUnqualified.setBatchNo(batchNo);
qualityUnqualifiedMapper.insert(qualityUnqualified);
} else {
//鍚堟牸鐩存帴鍏ュ簱
stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(),
- qualityInspect.getId(), batchNo, customer,inspect.getProductionDate()
+ qualityInspect.getId(), batchNo, customer != null ? customer : "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�", inspect.getProductionDate()
);
}
qualityInspect.setInspectState(1);//宸叉彁浜�
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index d24a1bf..7cf0307 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -66,9 +66,16 @@
public int deal(QualityUnqualified qualityUnqualified) {
QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
- ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
- ProductWorkOrder workOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
- ProductOrder orders = productOrderMapper.selectById(workOrder.getProductOrderId());
+ String batchNo;
+ if (qualityInspect.getProductMainId() != null) {
+ ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
+ ProductWorkOrder workOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
+ ProductOrder orders = productOrderMapper.selectById(workOrder.getProductOrderId());
+ batchNo = orders.getBatchNo();
+ } else {
+ batchNo = qualityInspect.getBatchNo();
+ }
+ String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType() != 0) {
switch (qualityUnqualified.getDealResult()) {
case "杩斾慨":
@@ -131,13 +138,13 @@
break;
case "鎶ュ簾":
//璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
- stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(),
+ batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
break;
case "璁╂鏀捐":
//璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
- String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(),
- orders.getBatchNo(), customer,null
+ batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now()
);
break;
case "杩斿伐":
@@ -150,17 +157,17 @@
switch (qualityUnqualified.getDealResult()) {
case "鎶ュ簾":
//璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
- stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(),
+ batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
break;
case "璁╂鏀捐":
//璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
- String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
- stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(), orders.getBatchNo(), customer,null);
+ customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
+ stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(), batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
break;
default:
break;
}
-
}
qualityUnqualified.setInspectState(1);//宸插鐞�
return qualityUnqualifiedMapper.updateById(qualityUnqualified);
diff --git a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
index 404c58a..1475d88 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
@@ -19,4 +19,6 @@
private Long recordId;
private BigDecimal unLockedQuantity;
+
+ private String uidNo;
}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
index 0d6f83b..46bd54c 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -12,6 +12,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@@ -65,4 +66,7 @@
@ApiModelProperty("渚涘簲鍟嗗悕绉�")
private String customer;
+ @ApiModelProperty("鐢熶骇鏃ユ湡")
+ private LocalDate productionDate;
+
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 14372dc..9daa034 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -70,6 +70,7 @@
newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
newStockUnInventory.setBatchNo(stockUninventoryDto.getBatchNo());
newStockUnInventory.setCustomer(stockUninventoryDto.getCustomer());
+ newStockUnInventory.setProductionDate(stockUninventoryDto.getProductionDate());
stockUninventoryMapper.insert(newStockUnInventory);
}else {
stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
diff --git a/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml b/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
index 52ca178..519275a 100644
--- a/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
+++ b/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
@@ -18,7 +18,7 @@
qu.deal_time,
qu.production_date,
pm.uid_no,
- pm.batch_no,
+ qu.batch_no,
CASE
WHEN qu.model = pm.id THEN pm.model
ELSE qu.model
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 11d1819..1e6e434 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -51,6 +51,9 @@
<if test="ew.customer != null and ew.customer !=''">
customer = #{ew.customer},
</if>
+ <if test="ew.productionDate != null">
+ production_date = #{ew.productionDate},
+ </if>
update_time = now()
</set>
where product_model_id = #{ew.productModelId}
@@ -67,6 +70,7 @@
(su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
pm.model,
pm.unit,
+ pm.uid_no,
p.product_name,
su.batch_no,
su.customer
--
Gitblit v1.9.3