From 8d5e82d82c37c1c9236e0c679f199db53585c1ad Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 15 四月 2026 13:05:35 +0800
Subject: [PATCH] feat: 销售订单产品入库
---
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 3 +
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 3 +
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 7 +++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 41 ++++++++++++++++++++
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 6 +++
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | 2 +
src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java | 7 +--
doc/河南鹤壁天沐钢化玻璃厂.sql | 5 ++
8 files changed, 69 insertions(+), 5 deletions(-)
diff --git "a/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql" "b/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
index 190bcec..b315b4e 100644
--- "a/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
+++ "b/doc/\346\262\263\345\215\227\351\271\244\345\243\201\345\244\251\346\262\220\351\222\242\345\214\226\347\216\273\347\222\203\345\216\202.sql"
@@ -97,4 +97,7 @@
MODIFY COLUMN `tax_rate` decimal(5, 0) NULL COMMENT '绋庣巼' AFTER `min_stock`,
MODIFY COLUMN `tax_inclusive_unit_price` decimal(18, 2) NULL COMMENT '鍚◣鍗曚环' AFTER `tax_rate`,
MODIFY COLUMN `tax_inclusive_total_price` decimal(18, 2) NULL COMMENT '鍚◣鎬讳环' AFTER `tax_inclusive_unit_price`,
- MODIFY COLUMN `tax_exclusive_total_price` decimal(18, 2) NULL COMMENT '涓嶅惈绋庢�讳环' AFTER `tax_inclusive_total_price`;
\ No newline at end of file
+ MODIFY COLUMN `tax_exclusive_total_price` decimal(18, 2) NULL COMMENT '涓嶅惈绋庢�讳环' AFTER `tax_inclusive_total_price`;
+
+ALTER TABLE `sales_ledger`
+ ADD COLUMN `stock_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '鍏ュ簱鐘舵�侊細0-鏈叆搴擄紝1-宸插叆搴�' AFTER `delivery_status`;
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
index df0d011..3b9bee6 100644
--- a/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
+++ b/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
@@ -6,13 +6,13 @@
@Getter
public enum StockInQualifiedRecordTypeEnum implements BaseEnum<String> {
-
CUSTOMIZATION_STOCK_IN("0", "鍚堟牸鑷畾涔夊叆搴�"),
PRODUCTION_REPORT_STOCK_IN("2", "鐢熶骇鎶ュ伐-鍏ュ簱"),
PURCHASE_STOCK_IN("7", "閲囪喘-鍏ュ簱"),
QUALITYINSPECT_STOCK_IN("6", "璐ㄦ-鍚堟牸鍏ュ簱"),
DEFECTIVE_PASS("11", "涓嶅悎鏍�-璁╂鏀捐"),
- RETURN_HE_IN("14", "閿�鍞��璐�-鍚堟牸鍏ュ簱");
+ RETURN_HE_IN("14", "閿�鍞��璐�-鍚堟牸鍏ュ簱"),
+ SALE_STOCK_IN("15", "閿�鍞�-鍚堟牸鍏ュ簱");
private final String code;
@@ -22,5 +22,4 @@
this.code = code;
this.value = value;
}
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index 09d9c23..01c2c96 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -395,4 +395,11 @@
return AjaxResult.success(list);
}
+ @PostMapping("/salesStock")
+ @ApiOperation("閿�鍞彴璐︿骇鍝佸叆搴�")
+ public AjaxResult salesStock(@RequestBody SalesLedger salesLedger) {
+ salesLedgerService.salesStock(salesLedger);
+ return AjaxResult.success();
+ }
+
}
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index 06c0a40..19e872b 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -62,4 +62,7 @@
@ApiModelProperty(value = "鏄惁鍙戣揣")
private Integer deliveryStatus;
+
+ @ApiModelProperty(value = "鍏ュ簱鐘舵��")
+ private Integer stockStatus;
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index deda7c8..e77e4f7 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -148,6 +148,12 @@
@ApiModelProperty("鍙戣揣鐘舵�侊細1-鏈彂璐э紝2-瀹℃壒涓紝3-瀹℃壒涓嶉�氳繃锛�4-瀹℃壒閫氳繃锛�5-宸插彂璐�")
private Integer deliveryStatus;
+ /**
+ * 鍏ュ簱鐘舵�侊細0-鏈叆搴擄紝1-宸插叆搴�
+ */
+ @ApiModelProperty("鍏ュ簱鐘舵�侊細0-鏈叆搴擄紝1-宸插叆搴�")
+ private Integer stockStatus;
+
@TableField(exist = false)
@ApiModelProperty(value = "浜よ揣澶╂暟宸�")
private Integer deliveryDaysDiff;
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index e8440af..444be9d 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -66,4 +66,6 @@
SalesInvoicesDto salesInvoices(List<Long> salesLedgerIds);
List<SalesLabelDto> salesLabel(Long salesLedgerId);
+
+ void salesStock(SalesLedger salesLedger);
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 0ed7d6e..88d6432 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.basic.service.ICustomerRegionsService;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SaleEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
@@ -47,6 +48,8 @@
import com.ruoyi.sales.service.ISalesLedgerProductProcessBindService;
import com.ruoyi.sales.service.ISalesLedgerProductProcessService;
import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.service.StockInventoryService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -125,6 +128,8 @@
private final ISalesLedgerProductProcessBindService salesLedgerProductProcessBindService;
private final ISalesLedgerProcessRouteService salesLedgerProcessRouteService;
+
+ private final StockInventoryService stockInventoryService;
@Autowired
private SysDeptMapper sysDeptMapper;
@@ -732,6 +737,7 @@
String contractNo = generateSalesContractNo();
salesLedger.setSalesContractNo(contractNo);
salesLedger.setDeliveryStatus(1);
+ salesLedger.setStockStatus(0);
salesLedgerMapper.insert(salesLedger);
} else {
if (salesLedger.getDeliveryStatus() == 5) {
@@ -1500,4 +1506,39 @@
return totalAmount;
}
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void salesStock(SalesLedger salesLedger) {
+ if (salesLedger == null || salesLedger.getId() == null) {
+ throw new NullPointerException("鍏ュ簱澶辫触,璇烽�夋嫨闇�瑕佸叆搴撶殑閿�鍞鍗�");
+ }
+ // 鏌ヨ閿�鍞鍗曟槸鍚﹀瓨鍦�
+ SalesLedger ledger = baseMapper.selectById(salesLedger.getId());
+ if (ledger == null) {
+ throw new ServiceException("鍏ュ簱澶辫触,閿�鍞鍗曚笉瀛樺湪");
+ }
+ if (ledger.getStockStatus() == null) {
+ throw new ServiceException("鍏ュ簱澶辫触,閿�鍞鍗曞叆搴撶姸鎬佸紓甯�");
+ }
+ if (ledger.getStockStatus() == 1) {
+ throw new ServiceException("鍏ュ簱澶辫触,璇ラ攢鍞鍗曞凡鍏ュ簱,璇峰嬁閲嶅鍏ュ簱");
+ }
+ // 鏌ヨ閿�鍞鍗曠殑浜у搧
+ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(Wrappers.<SalesLedgerProduct>lambdaQuery().eq(SalesLedgerProduct::getSalesLedgerId, ledger.getId()));
+ if (salesLedgerProducts == null || salesLedgerProducts.isEmpty()) {
+ throw new ServiceException("鍏ュ簱澶辫触,鏈煡璇㈠埌璇ラ攢鍞鍗曠殑閿�鍞骇鍝�");
+ }
+ for (SalesLedgerProduct product : salesLedgerProducts) {
+ if (product.getProductModelId() == null) {
+ continue;
+ }
+ StockInventoryDto dto = new StockInventoryDto();
+ dto.setRecordId(product.getId());
+ dto.setRecordType(StockInQualifiedRecordTypeEnum.SALE_STOCK_IN.getCode());
+ dto.setQualitity(product.getQuantity());
+ dto.setProductModelId(product.getProductModelId());
+ stockInventoryService.addstockInventory(dto);
+ }
+ }
}
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 7612cda..70b4bd4 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -90,6 +90,9 @@
<if test="salesLedgerDto.deliveryStatus != null">
AND T1.delivery_status = #{salesLedgerDto.deliveryStatus}
</if>
+ <if test="salesLedgerDto.stockStatus != null">
+ AND T1.stock_status = #{salesLedgerDto.stockStatus}
+ </if>
</where>
ORDER BY T1.entry_date DESC
</select>
--
Gitblit v1.9.3