From bdaeaa452c0a17c045467578502867e6fa245dd4 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 22 六月 2026 13:34:48 +0800
Subject: [PATCH] 判断模板是否存在
---
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 52 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index 0de9c64..c9a7006 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -15,6 +15,7 @@
import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.security.LoginUser;
@@ -26,6 +27,7 @@
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.mapper.ShippingProductDetailMapper;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.pojo.ShippingProductDetail;
import com.ruoyi.sales.service.ShippingInfoService;
@@ -148,8 +150,12 @@
@Override
public boolean add(ShippingInfoDto req) {
+ String ledgerStockType = resolveLedgerStockType(req.getSalesLedgerProductId());
this.save(req);
- req.getBatchNoDetailList().forEach(item -> item.setShippingInfoId(req.getId()));
+ req.getBatchNoDetailList().forEach(item -> {
+ item.setShippingInfoId(req.getId());
+ item.setStockType(ledgerStockType);
+ });
shippingProductDetailMapper.insert(req.getBatchNoDetailList());
// 淇濆瓨鏂囦欢
fileUtil.saveStorageAttachment(ApplicationTypeEnum.IMAGE, RecordTypeEnum.SHIPPING_INFO, req.getId(), req.getStorageBlobDTOs());
@@ -182,9 +188,17 @@
req.setStatus("寰呭鏍�");
boolean save = this.add(req);
// 鍙戣揣瀹℃壒
+ ApprovalTemplate approvalTemplate = approvalTemplateMapper.selectOne(new LambdaQueryWrapper<ApprovalTemplate>()
+ .eq(ApprovalTemplate::getBusinessType, 7L)
+ .eq(ApprovalTemplate::getDeleted, 0)
+ .orderByDesc(ApprovalTemplate::getId)
+ .last("LIMIT 1"));
+ if (approvalTemplate == null) {
+ throw new ServiceException("璇峰厛閰嶇疆鍙戣揣瀹℃壒妯℃澘");
+ }
ApprovalInstanceDto approvalInstance = new ApprovalInstanceDto();
- approvalInstance.setTemplateId(approvalTemplateMapper.selectOne(new LambdaQueryWrapper<ApprovalTemplate>().eq(ApprovalTemplate::getBusinessType,7L).orderByDesc(ApprovalTemplate::getId).last("LIMIT 1")).getId());
- approvalInstance.setTemplateName(approvalTemplateMapper.selectOne(new LambdaQueryWrapper<ApprovalTemplate>().eq(ApprovalTemplate::getBusinessType,7L).orderByDesc(ApprovalTemplate::getId).last("LIMIT 1")).getTemplateName());
+ approvalInstance.setTemplateId(approvalTemplate.getId());
+ approvalInstance.setTemplateName(approvalTemplate.getTemplateName());
approvalInstance.setBusinessId(req.getId());
approvalInstance.setBusinessType(7L);
approvalInstance.setCurrentLevel(1);
@@ -197,11 +211,16 @@
}
private void addShippingStockOutRecord(ShippingProductDetail shippingProductDetail, Long shippingInfoId) {
- String stockType = shippingProductDetail.getStockType();
- if (stockType != null) {
- stockType = stockType.trim().toLowerCase();
+ ShippingInfo shippingInfo = this.getById(shippingInfoId);
+ String stockType = resolveLedgerStockType(shippingInfo != null ? shippingInfo.getSalesLedgerProductId() : null);
+ if (stockType == null) {
+ stockType = normalizeStockType(shippingProductDetail.getStockType());
}
- if ("waste".equals(stockType) || "unqualified".equals(stockType)) {
+ String detailStockType = normalizeStockType(shippingProductDetail.getStockType());
+ if (detailStockType != null && stockType != null && !stockType.equals(detailStockType)) {
+ throw new RuntimeException("鍙戣揣鏄庣粏搴撳瓨绫诲瀷涓庨攢鍞彴璐︿骇鍝佸簱瀛樼被鍨嬩笉涓�鑷�");
+ }
+ if ("waste".equals(stockType)) {
StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
stockUninventoryDto.setRecordId(shippingInfoId);
stockUninventoryDto.setRecordType(StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode());
@@ -231,4 +250,30 @@
String normalized = batchNo.trim();
return normalized.isEmpty() ? null : normalized;
}
+
+ private String normalizeStockType(String stockType) {
+ if (stockType == null) {
+ return null;
+ }
+ String normalized = stockType.trim().toLowerCase();
+ if (normalized.isEmpty()) {
+ return null;
+ }
+ if ("unqualified".equals(normalized)) {
+ return "waste";
+ }
+ return normalized;
+ }
+
+ private String resolveLedgerStockType(Long salesLedgerProductId) {
+ if (salesLedgerProductId == null) {
+ return null;
+ }
+ SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(salesLedgerProductId);
+ if (salesLedgerProduct == null) {
+ throw new RuntimeException("閿�鍞彴璐︿骇鍝佷笉瀛樺湪");
+ }
+ String stockType = normalizeStockType(salesLedgerProduct.getStockType());
+ return stockType == null ? "qualified" : stockType;
+ }
}
--
Gitblit v1.9.3