From e02dcb551f00acff083f7241cd815ac4016c01c7 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期六, 25 四月 2026 11:22:29 +0800
Subject: [PATCH] 修改销售台账关联附件
---
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 3 +
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 2
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 37 +++++++-----
src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java | 3
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 83 ++++++++++++++-------------
src/main/java/com/ruoyi/sales/vo/SalesLedgerVo.java | 13 ++++
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | 3
src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java | 5 +
8 files changed, 89 insertions(+), 60 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java b/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
index aa75bce..cca8977 100644
--- a/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
+++ b/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
@@ -3,7 +3,10 @@
public enum RecordTypeEnum {
SHIPPING_INFO("shipping_info"),
INSPECTION_TASK("inspection_task"),
- PDA_VERSION("pda_version");
+ PDA_VERSION("pda_version"),
+ SALES_LEDGER("sales_ledger"),
+ SUPPLIER_MANAGE("supplier_manage"),
+ APPROVAL_PROCESS("approval_process");
private final String type;
RecordTypeEnum(String type) { this.type = type; }
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index 05d2505..ceb3702 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
@@ -19,6 +21,7 @@
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.service.ICommonFileService;
import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.sales.vo.SalesLedgerVo;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.annotations.ApiParam;
@@ -28,6 +31,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import com.ruoyi.basic.utils.FileUtil;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -55,6 +59,7 @@
private ICommonFileService commonFileService;
private InvoiceLedgerMapper invoiceLedgerMapper;
private ReceiptPaymentMapper receiptPaymentMapper;
+ private final FileUtil fileUtil;
/**
* 瀵煎叆閿�鍞彴璐�
@@ -149,13 +154,13 @@
@PostMapping("/export")
public void export(HttpServletResponse response, SalesLedgerDto salesLedgerDto) {
Page page = new Page(-1,-1);
- IPage<SalesLedger> salesLedgerIPage = listPage(page, salesLedgerDto);
- ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
+ IPage<SalesLedgerVo> salesLedgerIPage = listPage(page, salesLedgerDto);
+ ExcelUtil<SalesLedgerVo> util = new ExcelUtil<SalesLedgerVo>(SalesLedgerVo.class);
if(salesLedgerIPage == null){
util.exportExcel(response, new ArrayList<>(), "閿�鍞彴璐︽暟鎹�");
return;
}
- List<SalesLedger> list = salesLedgerIPage.getRecords();
+ List<SalesLedgerVo> list = salesLedgerIPage.getRecords();
util.exportExcel(response, list, "閿�鍞彴璐︽暟鎹�");
}
@@ -168,8 +173,8 @@
Page page = new Page();
page.setCurrent(-1);
page.setSize(-1);
- IPage<SalesLedger> salesLedgerIPage = listPage(page, salesLedgerDto);
- ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
+ IPage<SalesLedgerVo> salesLedgerIPage = listPage(page, salesLedgerDto);
+ ExcelUtil<SalesLedgerVo> util = new ExcelUtil<SalesLedgerVo>(SalesLedgerVo.class);
util.exportExcel(response, salesLedgerIPage == null ? new ArrayList<>() : salesLedgerIPage.getRecords(), "瀵煎嚭寮�绁ㄧ櫥璁板垪琛�");
}
@@ -251,8 +256,8 @@
* 鏌ヨ閿�鍞彴璐﹀垪琛�
*/
@GetMapping("/listPage")
- public IPage<SalesLedger> listPage(Page page, SalesLedgerDto salesLedgerDto) {
- IPage<SalesLedger> iPage = salesLedgerService.selectSalesLedgerListPage(page, salesLedgerDto);
+ public IPage<SalesLedgerVo> listPage(Page page, SalesLedgerDto salesLedgerDto) {
+ IPage<SalesLedgerVo> iPage = salesLedgerService.selectSalesLedgerListPage(page, salesLedgerDto);
// 鏌ヨ缁撴灉涓虹┖,鐩存帴杩斿洖
if (CollectionUtils.isEmpty(iPage.getRecords())) {
@@ -295,10 +300,10 @@
}
}
- for (SalesLedger salesLedger : iPage.getRecords()) {
- Long ledgerId = salesLedger.getId();
+ for (SalesLedgerVo salesLedgerVo : iPage.getRecords()) {
+ Long ledgerId = salesLedgerVo.getId();
// 鍚堝悓鎬婚噾棰�
- BigDecimal contractAmount = salesLedger.getContractAmount() == null ? BigDecimal.ZERO : salesLedger.getContractAmount();
+ BigDecimal contractAmount = salesLedgerVo.getContractAmount() == null ? BigDecimal.ZERO : salesLedgerVo.getContractAmount();
// 寮�绁ㄦ�婚鍜屽洖娆炬�婚
BigDecimal invoiceTotal = invoiceTotals.getOrDefault(ledgerId, BigDecimal.ZERO);
BigDecimal receiptPaymentAmountTotal = receiptTotals.getOrDefault(ledgerId, BigDecimal.ZERO);
@@ -315,15 +320,17 @@
noReceiptPaymentAmountTotal = BigDecimal.ZERO;
}
- salesLedger.setNoInvoiceAmountTotal(noInvoiceAmountTotal);
- salesLedger.setInvoiceTotal(invoiceTotal);
- salesLedger.setReceiptPaymentAmountTotal(receiptPaymentAmountTotal);
- salesLedger.setNoReceiptAmount(noReceiptPaymentAmountTotal);
+ salesLedgerVo.setNoInvoiceAmountTotal(noInvoiceAmountTotal);
+ salesLedgerVo.setInvoiceTotal(invoiceTotal);
+ salesLedgerVo.setReceiptPaymentAmountTotal(receiptPaymentAmountTotal);
+ salesLedgerVo.setNoReceiptAmount(noReceiptPaymentAmountTotal);
// 濡傛灉宸茬粡鏈夎繃寮�绁ㄦ垨鍥炴鎿嶄綔,鍒欎笉鍏佽缂栬緫
boolean hasInvoiceOperation = invoiceTotal.compareTo(BigDecimal.ZERO) > 0;
boolean hasReceiptOperation = receiptPaymentAmountTotal.compareTo(BigDecimal.ZERO) > 0;
- salesLedger.setIsEdit(!(hasInvoiceOperation || hasReceiptOperation));
+ salesLedgerVo.setIsEdit(!(hasInvoiceOperation || hasReceiptOperation));
+
+ salesLedgerVo.setStorageBlobVOs(fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.FILE, RecordTypeEnum.SALES_LEDGER, ledgerId));
}
if (ObjectUtils.isNotEmpty(salesLedgerDto.getStatus())) {
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index 204f688..61773c2 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.basic.dto.StorageBlobDTO;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -58,4 +59,6 @@
@Schema(description = "浜よ揣鏃ユ湡")
private LocalDate deliveryDate;
+
+ private List<StorageBlobDTO> storageBlobDTOs;
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
index 69140f3..9f49265 100644
--- a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
@@ -10,6 +10,7 @@
import com.ruoyi.sales.dto.SalesTrendDto;
import com.ruoyi.sales.dto.StatisticsTableDto;
import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.vo.SalesLedgerVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -52,7 +53,7 @@
* @param salesLedgerDto
* @return
*/
- IPage<SalesLedger> selectSalesLedgerListPage(Page page, @Param("salesLedgerDto") SalesLedgerDto salesLedgerDto);
+ IPage<SalesLedgerVo> selectSalesLedgerListPage(Page page, @Param("salesLedgerDto") SalesLedgerDto salesLedgerDto);
/**
* 鎸夋湀浠界粺璁¤鍗曟暟銆侀攢鍞锛堟敮鎸佷骇鍝佸ぇ绫汇�佸鎴峰悕绉扮瓫閫夛級
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index 0ed193b..539e67c 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -11,6 +11,7 @@
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.vo.SalesLedgerVo;
import org.springframework.web.multipart.MultipartFile;
import jakarta.annotation.Nullable;
@@ -47,7 +48,7 @@
List<MonthlyAmountDto> getAmountHalfYear(Integer type);
- IPage<SalesLedger> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto);
+ IPage<SalesLedgerVo> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto);
AjaxResult importData(MultipartFile file);
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 32d6069..9ba0e6f 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -10,10 +10,13 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.basic.dto.CustomerPrivatePoolDto;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.mapper.CustomerPrivatePoolMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SaleEnum;
import com.ruoyi.common.exception.base.BaseException;
@@ -41,6 +44,7 @@
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.sales.vo.SalesLedgerVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -111,6 +115,7 @@
private final PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
private final SysUserMapper sysUserMapper;
private final CustomerPrivatePoolMapper customerPrivatePoolMapper;
+ private final FileUtil fileUtil;
@Override
public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
@@ -317,7 +322,7 @@
}
@Override
- public IPage<SalesLedger> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto) {
+ public IPage<SalesLedgerVo> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto) {
return salesLedgerMapper.selectSalesLedgerListPage(page, salesLedgerDto);
}
@@ -575,47 +580,43 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) {
- try {
- // 1. 鏍¢獙瀹㈡埛淇℃伅
- CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
- if (customer == null) {
- throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
- }
-
- // 2. DTO杞珽ntity
- SalesLedger salesLedger = convertToEntity(salesLedgerDto);
- salesLedger.setCustomerName(customer.getCustomerName());
- salesLedger.setTenantId(customer.getTenantId());
- // 3. 鏂板鎴栨洿鏂颁富琛�
- if (salesLedger.getId() == null) {
- String contractNo = generateSalesContractNo();
- salesLedger.setSalesContractNo(contractNo);
- salesLedgerMapper.insert(salesLedger);
- } else {
- salesLedgerMapper.updateById(salesLedger);
- }
-
- // 4. 澶勭悊瀛愯〃鏁版嵁
- List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
- if (productList != null && !productList.isEmpty()) {
- handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
- updateMainContractAmount(
- salesLedger.getId(),
- productList,
- SalesLedgerProduct::getTaxInclusiveTotalPrice,
- salesLedgerMapper,
- SalesLedger.class
- );
- }
-
- // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
- if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) {
- migrateTempFilesToFormal(salesLedger.getId(), salesLedgerDto.getTempFileIds());
- }
- return 1;
- } catch (IOException e) {
- throw new BaseException("鏂囦欢杩佺Щ澶辫触: " + e.getMessage());
+ // 1. 鏍¢獙瀹㈡埛淇℃伅
+ CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
+ if (customer == null) {
+ throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
}
+
+ // 2. DTO杞珽ntity
+ SalesLedger salesLedger = convertToEntity(salesLedgerDto);
+ salesLedger.setCustomerName(customer.getCustomerName());
+ salesLedger.setTenantId(customer.getTenantId());
+ // 3. 鏂板鎴栨洿鏂颁富琛�
+ if (salesLedger.getId() == null) {
+ String contractNo = generateSalesContractNo();
+ salesLedger.setSalesContractNo(contractNo);
+ salesLedgerMapper.insert(salesLedger);
+ } else {
+ salesLedgerMapper.updateById(salesLedger);
+ }
+
+ // 4. 澶勭悊瀛愯〃鏁版嵁
+ List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
+ if (productList != null && !productList.isEmpty()) {
+ handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
+ updateMainContractAmount(
+ salesLedger.getId(),
+ productList,
+ SalesLedgerProduct::getTaxInclusiveTotalPrice,
+ salesLedgerMapper,
+ SalesLedger.class
+ );
+ }
+
+ // 5. 淇濆瓨鏂囦欢
+ if (salesLedgerDto.getStorageBlobDTOs() != null && !salesLedgerDto.getStorageBlobDTOs().isEmpty()) {
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.SALES_LEDGER, salesLedger.getId(), salesLedgerDto.getStorageBlobDTOs());
+ }
+ return 1;
}
/**
diff --git a/src/main/java/com/ruoyi/sales/vo/SalesLedgerVo.java b/src/main/java/com/ruoyi/sales/vo/SalesLedgerVo.java
new file mode 100644
index 0000000..fb932f8
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/vo/SalesLedgerVo.java
@@ -0,0 +1,13 @@
+package com.ruoyi.sales.vo;
+
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.sales.pojo.SalesLedger;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SalesLedgerVo extends SalesLedger {
+
+ private List<StorageBlobVO> storageBlobVOs;
+}
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index 84e1673..e08632a 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -42,7 +42,7 @@
</where>
</select>
- <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.pojo.SalesLedger">
+ <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.vo.SalesLedgerVo">
SELECT T1.id,
T1.sales_contract_no,
T1.customer_contract_no,
--
Gitblit v1.9.3