From 4fedbed9949c6160dcfa216d6660bd3c625f7bce Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 25 六月 2025 11:49:55 +0800
Subject: [PATCH] 优化

---
 main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java |   65 ++++++++++++++++++++++++++++++--
 1 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
index 8d2899c..46d6e5b 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
@@ -5,7 +5,9 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.entity.CoalInfo;
 import com.ruoyi.basic.entity.Customer;
+import com.ruoyi.basic.mapper.CoalInfoMapper;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.business.dto.SalesRecordDto;
 import com.ruoyi.business.entity.OfficialInventory;
@@ -22,6 +24,11 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -43,12 +50,60 @@
 
     private final OfficialInventoryMapper officialInventoryMapper;
 
+    private final CoalInfoMapper coalInfoMapper;
+
     @Override
-    public IPage<SalesRecord> selectSalesRecordList(Page page, SalesRecordDto salesRecordDto) {
+    public IPage<SalesRecordDto> selectSalesRecordList(Page<SalesRecord> page, SalesRecordDto salesRecordDto) {
+        // 1. 鍒涘缓鏌ヨ鏉′欢锛屾寜鍒涘缓鏃堕棿鍊掑簭鎺掑簭
         LambdaQueryWrapper<SalesRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.orderByDesc(SalesRecord::getCreateTime);
-        return salesRecordMapper.selectPage(page, queryWrapper);
+
+        // 2. 鑾峰彇鍒嗛〉鐨勯攢鍞褰�
+        IPage<SalesRecord> salesRecordPage = salesRecordMapper.selectPage(page, queryWrapper);
+
+        // 3. 鎵归噺鏌ヨ鎵�鏈塁oalInfo
+        List<Long> coalIds = salesRecordPage.getRecords().stream()
+                .map(SalesRecord::getCoalId)  // 鑾峰彇鎵�鏈塖alesRecord鐨刢oalId
+                .collect(Collectors.toList());
+        Map<Long, CoalInfo> coalInfoMap;
+
+        // 濡傛灉鏈夌叅鐐璉D锛屾墽琛屾壒閲忔煡璇�
+        if (!coalIds.isEmpty()) {
+            // 浣跨敤selectList杩涜鎵归噺鏌ヨ
+            LambdaQueryWrapper<CoalInfo> coalInfoQueryWrapper = new LambdaQueryWrapper<>();
+            coalInfoQueryWrapper.in(CoalInfo::getId, coalIds);
+            List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalInfoQueryWrapper);
+
+            // 灏嗘煡璇㈢粨鏋滄斁鍏ap涓紝鐓ょ偔ID涓洪敭锛孋oalInfo涓哄��
+            coalInfoMap = coalInfos.stream()
+                    .collect(Collectors.toMap(CoalInfo::getId, Function.identity()));
+        } else {
+            coalInfoMap = new HashMap<>();
+        }
+
+        // 4. 鍒涘缓杩斿洖缁撴灉椤碉紝浣跨敤BeanUtils杩涜灞炴�у鍒�
+        Page<SalesRecordDto> resultPage = new Page<>();
+        BeanUtils.copyProperties(salesRecordPage, resultPage);  // 澶嶅埗鍒嗛〉淇℃伅
+
+        // 5. 杞崲SalesRecord涓篠alesRecordDto锛屽苟璁剧疆姣忔潯閿�鍞褰曠殑鐓ょ偔淇℃伅
+        List<SalesRecordDto> dtoList = salesRecordPage.getRecords().stream().map(salesRecord -> {
+            SalesRecordDto dto = new SalesRecordDto();
+            BeanUtils.copyProperties(salesRecord, dto);  // 灏哠alesRecord鐨勫睘鎬у鍒跺埌SalesRecordDto涓�
+
+            // 璁剧疆Coal淇℃伅
+            CoalInfo coalInfo = coalInfoMap.get(salesRecord.getCoalId());
+            if (coalInfo != null) {
+                dto.setCoal(coalInfo.getCoal());
+            }
+
+            return dto;
+        }).collect(Collectors.toList());
+
+        resultPage.setRecords(dtoList);  // 璁剧疆杞崲鍚庣殑DTO鍒楄〃
+
+        return resultPage;
     }
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -61,7 +116,7 @@
         if (officialInventory == null) {
             throw new BaseException("姝e紡搴撶叅绉嶄俊鎭笉瀛樺湪");
         }
-        if (salesRecordDto.getSaleQuantity().compareTo(officialInventory.getInventoryQuantity()) > 0){
+        if (salesRecordDto.getSaleQuantity().compareTo(officialInventory.getInventoryQuantity()) > 0) {
             throw new BaseException("閿�鍞暟閲忎笉鑳藉ぇ浜庡簱瀛樻暟閲�");
         }
         officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(salesRecordDto.getSaleQuantity()));
@@ -69,7 +124,7 @@
         officialInventoryMapper.updateById(officialInventory);
 
         // 鏋勫缓閿�鍞褰曞疄浣�
-        SalesRecord salesRecord = buildSalesRecord(salesRecordDto,officialInventory.getCoalId());
+        SalesRecord salesRecord = buildSalesRecord(salesRecordDto, officialInventory.getCoalId());
 
         // 澶勭悊鏂板/鏇存柊閫昏緫
         if (salesRecordDto.getId() == null) {
@@ -94,7 +149,7 @@
         }
     }
 
-    private SalesRecord buildSalesRecord(SalesRecordDto dto,Long coalId) {
+    private SalesRecord buildSalesRecord(SalesRecordDto dto, Long coalId) {
         SalesRecord record = new SalesRecord();
         BeanUtils.copyProperties(dto, record);
 

--
Gitblit v1.9.3