From 194185b94f161530292e65143cea1bb7c8a1d802 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 29 一月 2026 11:41:58 +0800
Subject: [PATCH] refactor(sales): 添加交货日期字段 ,添加采购审核通过才进行质检或者直接入库逻辑
---
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | 27 +++++++++++--
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 3 +
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 39 ++++++++++---------
src/main/resources/mapper/production/ProductOrderMapper.xml | 3 +
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java | 3 +
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 9 ++++
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 4 ++
7 files changed, 64 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 5ff767c..a47c49b 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.approve.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -12,20 +13,21 @@
import com.ruoyi.approve.service.IApproveNodeService;
import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.common.enums.FileNameType;
+import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.mapper.DeviceRepairMapper;
import com.ruoyi.device.pojo.DeviceRepair;
import com.ruoyi.other.service.impl.TempFileServiceImpl;
+import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.project.system.service.ISysNoticeService;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
-import com.ruoyi.sales.mapper.CommonFileMapper;
-import com.ruoyi.sales.mapper.SalesQuotationMapper;
-import com.ruoyi.sales.mapper.SalesQuotationProductMapper;
-import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.purchase.service.impl.PurchaseLedgerServiceImpl;
+import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.CommonFile;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.SalesQuotation;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
@@ -73,7 +75,13 @@
@Autowired
private CommonFileServiceImpl commonFileService;
+ @Autowired
+ private StockUtils stockUtils;
+ @Autowired
+ private SalesLedgerProductMapper salesLedgerProductMapper;
+ @Autowired
+ private PurchaseLedgerServiceImpl purchaseLedgerServiceImpl;
public ApproveProcess getApproveById(String id) {
@@ -186,6 +194,17 @@
if (status.equals(2)) {
// 鍚屾剰
purchaseLedger.setApprovalStatus(3);
+ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>()
+ .lambda().eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()).eq(SalesLedgerProduct::getType, 2));
+ for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) {
+ // 璐ㄦ
+ if (salesLedgerProduct.getIsChecked()) {
+ purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
+ }else {
+ //鐩存帴鍏ュ簱
+ stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
+ }
+ }
} else if (status.equals(3)) {
// 鎷掔粷
purchaseLedger.setApprovalStatus(4);
diff --git a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
index b12803d..fe989ba 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -43,4 +43,7 @@
@ApiModelProperty(value = "BOM缂栧彿")
@Excel(name = "BOM缂栧彿")
private String bomNo;
+
+ @ApiModelProperty(value = "浜ゆ湡鍋忓樊")
+ private Integer deliveryDaysDiff;
}
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index e5942a2..320b286 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -205,7 +205,8 @@
return 1;
}
- private void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) {
+
+ public void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) {
QualityInspect qualityInspect = new QualityInspect();
qualityInspect.setInspectType(0);
qualityInspect.setSupplier(purchaseLedger.getSupplierName());
@@ -400,6 +401,12 @@
if (ids == null || ids.length == 0) {
throw new BaseException("璇烽�変腑鑷冲皯涓�鏉℃暟鎹�");
}
+ for (Long id : ids) {
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id);
+ if (purchaseLedger.getApprovalStatus().equals(3)) {
+ throw new BaseException(purchaseLedger.getPurchaseContractNumber()+"宸茬粡瀹℃壒閫氳繃锛屼笉鍏佽鍒犻櫎");
+ }
+ }
// 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐叆搴撹褰�
LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductQueryWrapper = new LambdaQueryWrapper<>();
salesLedgerProductQueryWrapper.in(SalesLedgerProduct::getSalesLedgerId, ids)
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index bd19d51..78169a0 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -54,4 +54,7 @@
@ApiModelProperty(value = "浠樻鏂瑰紡")
private String paymentMethod;
+
+ @ApiModelProperty(value = "浜よ揣鏃ユ湡")
+ private LocalDate deliveryDate;
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index c44082a..30097b4 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -135,5 +135,9 @@
@ApiModelProperty(value = "浜よ揣鏃ユ湡")
@TableField(value = "delivery_date")
private LocalDate deliveryDate;
+
+ @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 28e03b5..70ce815 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -21,7 +21,8 @@
slp.specification_model,
ppr.process_route_code,
pb.bom_no,
- ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus
+ ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus,
+ DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff
from product_order po
left join sales_ledger sl on po.sales_ledger_id = sl.id
left join sales_ledger_product slp on po.product_model_id = slp.id
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 552b83d..7bc2d2d 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -15,24 +15,25 @@
<select id="selectSalesLedgerList" resultType="com.ruoyi.sales.pojo.SalesLedger">
SELECT
- T1.id,
- T1.sales_contract_no,
- T1.customer_contract_no,
- T1.project_name,
- T1.entry_date,
- T1.salesman,
- T1.customer_id,
- T1.customer_name,
- T1.entry_person,
- T1.remarks,
- T1.attachment_materials,
- T1.tenant_id,
- T1.contract_amount,
- T1.execution_date,
- T2.nick_name AS entry_person_name,
- T1.payment_method
+ T1.id,
+ T1.sales_contract_no,
+ T1.customer_contract_no,
+ T1.project_name,
+ T1.entry_date,
+ T1.salesman,
+ T1.customer_id,
+ T1.customer_name,
+ T1.entry_person,
+ T1.remarks,
+ T1.attachment_materials,
+ T1.tenant_id,
+ T1.contract_amount,
+ T1.execution_date,
+ T2.nick_name AS entry_person_name,
+ T1.payment_method,
+ DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff
FROM
- sales_ledger T1
+ sales_ledger T1
LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
<where>
<if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
@@ -59,7 +60,9 @@
T1.contract_amount as noInvoiceAmountTotal,
T1.execution_date,
T2.nick_name AS entry_person_name,
- T1.payment_method
+ T1.payment_method,
+ T1.delivery_date,
+ DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff
FROM
sales_ledger T1
LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
--
Gitblit v1.9.3