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/controller/SalesRecordController.java                    |    4 
 main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java                                  |    5 -
 main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java            |   32 +++++++
 main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java                     |    1 
 main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java                                  |    2 
 main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java              |    1 
 main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java            |    1 
 main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java           |   28 +++++++
 main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java                 |   65 +++++++++++++++-
 /dev/null                                                                                               |   32 --------
 main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java                            |    5 +
 main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java                             |    5 +
 main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java                          |    4 
 main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java                              |    1 
 main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql |    2 
 15 files changed, 137 insertions(+), 51 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/controller/FileController.java b/main-business/src/main/java/com/ruoyi/business/controller/FileController.java
deleted file mode 100644
index 1282a8c..0000000
--- a/main-business/src/main/java/com/ruoyi/business/controller/FileController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.ruoyi.business.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import lombok.AllArgsConstructor;
-    import org.springframework.web.bind.annotation.RestController;
-
-/**
-* <p>
-    * 涓婁紶鏂囦欢鐨勫熀鏈俊鎭� 鍓嶇鎺у埗鍣�
-    * </p>
-*
-* @author ruoyi
-* @since 2025-06-10
-*/
-
-@RestController
-@AllArgsConstructor
-@RequestMapping("/business/file")
-        public class FileController {
-
-    }
diff --git a/main-business/src/main/java/com/ruoyi/business/controller/SalesRecordController.java b/main-business/src/main/java/com/ruoyi/business/controller/SalesRecordController.java
index 753ee0e..75f43aa 100644
--- a/main-business/src/main/java/com/ruoyi/business/controller/SalesRecordController.java
+++ b/main-business/src/main/java/com/ruoyi/business/controller/SalesRecordController.java
@@ -29,8 +29,8 @@
      * 閿�鍞褰曡〃鏌ヨ
      */
     @GetMapping("/list")
-    public R<IPage<SalesRecord>> list(Page page, SalesRecordDto salesRecordDto) {
-        IPage<SalesRecord> list = salesRecordService.selectSalesRecordList(page,salesRecordDto);
+    public R<IPage<SalesRecordDto>> list(Page<SalesRecord> page, SalesRecordDto salesRecordDto) {
+        IPage<SalesRecordDto> list = salesRecordService.selectSalesRecordList(page,salesRecordDto);
         return R.ok(list);
     }
 
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java b/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
index 066257f..f21ce91 100644
--- a/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
+++ b/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
@@ -13,4 +13,9 @@
 
     private List<Long> ids;
 
+    /**
+     * 鐓ょ
+     */
+    private String coal;
+
 }
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java b/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
index e26af63..663d58c 100644
--- a/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
+++ b/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
@@ -38,4 +38,9 @@
      * 瀛楁鍚�
      */
     private Integer type;
+
+    /**
+     * 鐓ょ
+     */
+    private String coal;
 }
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java b/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java
index c32a713..32560a2 100644
--- a/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java
+++ b/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java
@@ -5,4 +5,6 @@
 
 @Data
 public class SalesRecordDto extends SalesRecord {
+
+    private String coal;
 }
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/File.java b/main-business/src/main/java/com/ruoyi/business/entity/File.java
deleted file mode 100644
index 6b64336..0000000
--- a/main-business/src/main/java/com/ruoyi/business/entity/File.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.ruoyi.business.entity;
-
-import com.baomidou.mybatisplus.annotation.*;
-import lombok.Data;
-import com.ruoyi.common.core.domain.MyBaseEntity;
-
-/**
- * 涓婁紶鏂囦欢鐨勫熀鏈俊鎭� 瀹炰綋绫�
- *
- * @author ruoyi
- * @date 2025-06-10
- */
-@Data
-@TableName("file")
-public class File extends MyBaseEntity {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 涓婚敭ID
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-    /**
-     * 鍏宠仈鐨勬。妗圛D锛屽閿紩鐢� archive.id
-     */
-    @TableField(value = "archive_id")
-    private Long archiveId;
-    /**
-     * 鍘熷鏂囦欢鍚嶏紙鐢ㄦ埛涓婁紶鏃剁殑鍚嶇О锛�
-     */
-    @TableField(value = "original_name")
-    private String originalName;
-    /**
-     * 棰勮鍦板潃
-     */
-    @TableField(value = "preview_url")
-    private String previewUrl;
-    /**
-     * 绯荤粺瀛樺偍鐨勫敮涓�鏂囦欢鍚�
-     */
-    @TableField(value = "file_name")
-    private String fileName;
-    /**
-     * 鏂囦欢鍦ㄦ湇鍔″櫒涓婄殑瀛樺偍璺緞鎴栬闂甎RL
-     */
-    @TableField(value = "file_path")
-    private String filePath;
-    /**
-     * 鏂囦欢MIME绫诲瀷锛屼緥濡� image/png銆乤pplication/pdf
-     */
-    @TableField(value = "file_type")
-    private String fileType;
-    /**
-     * 鏂囦欢澶у皬锛屽崟浣嶄负瀛楄妭
-     */
-    @TableField(value = "file_size")
-    private String fileSize;
-}
\ No newline at end of file
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java b/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
index 703bd29..33620d6 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
@@ -48,11 +48,6 @@
     @TableField(value = "coal_id")
     private Long coalId;
     /**
-     * 鐓ょ
-     */
-    @TableField(value = "coal")
-    private String coal;
-    /**
      * 鍗曚环锛堝惈绋庯級
      */
     @TableField(value = "price_including_tax")
diff --git a/main-business/src/main/java/com/ruoyi/business/mapper/FileMapper.java b/main-business/src/main/java/com/ruoyi/business/mapper/FileMapper.java
deleted file mode 100644
index 268c7d7..0000000
--- a/main-business/src/main/java/com/ruoyi/business/mapper/FileMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.business.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.business.entity.File;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * <p>
- * 涓婁紶鏂囦欢鐨勫熀鏈俊鎭� Mapper 鎺ュ彛
- * </p>
- *
- * @author ruoyi
- * @since 2025-06-10
- */
-@Mapper
-public interface FileMapper extends BaseMapper<File> {
-
-}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/FileService.java b/main-business/src/main/java/com/ruoyi/business/service/FileService.java
deleted file mode 100644
index 87a300f..0000000
--- a/main-business/src/main/java/com/ruoyi/business/service/FileService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.business.service;
-
-import com.ruoyi.business.entity.File;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- * 涓婁紶鏂囦欢鐨勫熀鏈俊鎭� 鏈嶅姟绫�
- * </p>
- *
- * @author ruoyi
- * @since 2025-06-10
- */
-public interface FileService extends IService<File> {
-
-}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java b/main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java
index 8440766..7786086 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java
@@ -2,9 +2,9 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.business.dto.SalesRecordDto;
 import com.ruoyi.business.entity.SalesRecord;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>
@@ -16,7 +16,7 @@
  */
 public interface SalesRecordService extends IService<SalesRecord> {
 
-    IPage<SalesRecord> selectSalesRecordList(Page page, SalesRecordDto salesRecordDto);
+    IPage<SalesRecordDto> selectSalesRecordList(Page<SalesRecord> page, SalesRecordDto salesRecordDto);
 
     int addOrEditSalesRecord(SalesRecordDto salesRecordDto);
 
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java
index d0638f9..9075267 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java
@@ -137,6 +137,7 @@
 
         // 7. 鏋勫缓杩斿洖鍒嗛〉瀵硅薄
         IPage<ArchiveDto> resultPage = new Page<>();
+        BeanUtils.copyProperties(archivePage, resultPage);
         resultPage.setRecords(dtoList);
         return resultPage;
     }
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/FileServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/FileServiceImpl.java
deleted file mode 100644
index 8508288..0000000
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/FileServiceImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ruoyi.business.service.impl;
-
-import com.ruoyi.business.entity.File;
-import com.ruoyi.business.mapper.FileMapper;
-import com.ruoyi.business.service.FileService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import lombok.RequiredArgsConstructor;
-
-/**
- * <p>
- * 涓婁紶鏂囦欢鐨勫熀鏈俊鎭� 鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author ruoyi
- * @since 2025-06-10
- */
-@Service
-@RequiredArgsConstructor
-public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements FileService {
-
-}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java
index 72f00bf..414e3f7 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java
@@ -120,6 +120,7 @@
 
         // 7. 鏋勫缓杩斿洖鍒嗛〉瀵硅薄
         IPage<InspectionTaskDto> resultPage = new Page<>();
+        BeanUtils.copyProperties(entityPage, resultPage);
         resultPage.setRecords(dtoList);
         return resultPage;
     }
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
index ba427bd..6e1f4d6 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
@@ -7,8 +7,10 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.entity.CoalField;
+import com.ruoyi.basic.entity.CoalInfo;
 import com.ruoyi.basic.entity.CoalValue;
 import com.ruoyi.basic.mapper.CoalFieldMapper;
+import com.ruoyi.basic.mapper.CoalInfoMapper;
 import com.ruoyi.basic.mapper.CoalValueMapper;
 import com.ruoyi.business.dto.OfficialInventoryDto;
 import com.ruoyi.business.entity.OfficialInventory;
@@ -23,6 +25,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -42,6 +45,8 @@
     private final CoalValueMapper coalValueMapper;
 
     private final CoalFieldMapper coalFieldMapper;
+
+    private final CoalInfoMapper coalInfoMapper;
 
 
     @Override
@@ -63,6 +68,21 @@
                 .map(CoalField::getFields)
                 .distinct()
                 .collect(Collectors.toList());
+
+        //鏌ヨ鐓ょids
+        List<Long> coalIds = entityPage.getRecords().stream()
+                .map(OfficialInventory::getCoalId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        // 鎵归噺鏌ヨCoalInfo
+        Map<Long, CoalInfo> coalInfoMap;
+        if (!coalIds.isEmpty()) {
+            List<CoalInfo> coalInfos = coalInfoMapper.selectList(new LambdaQueryWrapper<CoalInfo>().in(CoalInfo::getId, coalIds));
+            coalInfoMap = coalInfos.stream().collect(Collectors.toMap(CoalInfo::getId, Function.identity()));
+        } else {
+            coalInfoMap = new HashMap<>();
+        }
 
         //  閬嶅巻姣忔潯璁板綍锛岃繘琛岃浆鎹㈠苟濉厖 fields
         for (OfficialInventory entity : entityPage.getRecords()) {
@@ -97,6 +117,12 @@
                 fields.add(fieldMap);
             }
 
+            // 璁剧疆Coal淇℃伅
+            CoalInfo coalInfo = coalInfoMap.get(entity.getCoalId());
+            if (coalInfo != null) {
+                dto.setCoal(coalInfo.getCoal());
+            }
+
             // 璁剧疆鍒� DTO 涓�
             dto.setFields(fields);
             dtoList.add(dto);
@@ -120,6 +146,8 @@
                 .map(OI -> {
                     OfficialInventoryVo vo = new OfficialInventoryVo();
                     BeanUtils.copyProperties(OI, vo);
+                    CoalInfo coalInfo = coalInfoMapper.selectById(OI.getCoalId());
+                    vo.setCoal(coalInfo.getCoal());
                     return vo;
                 })
                 .collect(Collectors.toList());
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
index af85197..a38e13b 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
@@ -7,8 +7,10 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.entity.CoalField;
+import com.ruoyi.basic.entity.CoalInfo;
 import com.ruoyi.basic.entity.CoalValue;
 import com.ruoyi.basic.mapper.CoalFieldMapper;
+import com.ruoyi.basic.mapper.CoalInfoMapper;
 import com.ruoyi.basic.mapper.CoalValueMapper;
 import com.ruoyi.business.dto.PendingInventoryDto;
 import com.ruoyi.business.entity.OfficialInventory;
@@ -26,6 +28,7 @@
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -47,6 +50,8 @@
     private final CoalValueMapper coalValueMapper;
 
     private final CoalFieldMapper coalFieldMapper;
+
+    private final CoalInfoMapper coalInfoMapper;
 
     private final InputInventoryRecordService inputInventoryRecordService;
 
@@ -71,20 +76,43 @@
                 .map(PendingInventory::getId)
                 .collect(Collectors.toList());
 
-        // 5. 鎵归噺鏌ヨ鍏宠仈鐨勬寮忓簱瀛樹俊鎭�
+        // 5. 鎵归噺鏌ヨ鍏宠仈鐨勭叅鐐俊鎭拰姝e紡搴撳瓨淇℃伅
+        List<Long> coalIds = pendingInventoryPage.getRecords().stream()
+                .map(PendingInventory::getCoalId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        // 鎵归噺鏌ヨCoalInfo
+        Map<Long, CoalInfo> coalInfoMap;
+        if (!coalIds.isEmpty()) {
+            List<CoalInfo> coalInfos = coalInfoMapper.selectList(new LambdaQueryWrapper<CoalInfo>().in(CoalInfo::getId, coalIds));
+            coalInfoMap = coalInfos.stream().collect(Collectors.toMap(CoalInfo::getId, Function.identity()));
+        } else {
+            coalInfoMap = new HashMap<>();
+        }
+
+        // 鎵归噺鏌ヨ姝e紡搴撳瓨淇℃伅
         Map<Long, Long> pendingToOfficialMap = getOfficialInventoryMap(pendingIds);
 
-        // 6. 浣跨敤MyBatis-Plus鐨刢onvert鏂规硶杞崲DTO
+        // 6. 杞崲DTO骞惰缃浉鍏冲瓧娈�
         return pendingInventoryPage.convert(record -> {
             PendingInventoryDto dto = new PendingInventoryDto();
             BeanUtils.copyProperties(record, dto);
 
+            // 璁剧疆Coal淇℃伅
+            CoalInfo coalInfo = coalInfoMap.get(record.getCoalId());
+            if (coalInfo != null) {
+                dto.setCoal(coalInfo.getCoal());
+            }
+
             // 浠庨鍔犺浇鐨凪ap涓幏鍙杘fficialId
             dto.setOfficialId(pendingToOfficialMap.getOrDefault(record.getId(), null));
+
             return dto;
         });
     }
 
+
     // 鎵归噺鑾峰彇寰呭鐞嗗簱瀛樹笌姝e紡搴撳瓨鐨勬槧灏勫叧绯�
     private Map<Long, Long> getOfficialInventoryMap(List<Long> pendingIds) {
         if (CollectionUtils.isEmpty(pendingIds)) {
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
index a10f889..bb958f0 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
@@ -77,7 +77,6 @@
         IPage<ProductionMasterDto> dtoPage = new Page<>();
         BeanUtils.copyProperties(entityPage, dtoPage, "records");
         dtoPage.setRecords(dtoList);
-
         return dtoPage;
     }
 
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);
 
diff --git a/main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java b/main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java
index 67526a4..1784d18 100644
--- a/main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java
+++ b/main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java
@@ -8,6 +8,7 @@
 public class OfficialInventoryVo {
 
     private Long id;  // 涓婚敭ID
+    private Long coalId;   // 鐓ょid
     private String coal;   // 鐓ょ
     private String unit;   // 鍗曚綅
     private BigDecimal inventoryQuantity;  // 搴撳瓨鏁伴噺
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql b/main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql
deleted file mode 100644
index 4611ab6..0000000
--- a/main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql
+++ /dev/null
@@ -1,37 +0,0 @@
--- 鍒涘缓鏂囦欢琛�
-CREATE TABLE file
-(
-    id            BIGSERIAL PRIMARY KEY,                              -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
-
-    archive_id    BIGINT,                                             -- 鍏宠仈妗f琛� archive.id锛堝彲閫夛級
-    original_name VARCHAR(255) NOT NULL,                              -- 鍘熷鏂囦欢鍚嶏紙鐢ㄦ埛涓婁紶鏃剁殑鍚嶇О锛�
-    preview_url   TEXT,                                               -- 棰勮鍦板潃
-    file_name     VARCHAR(255) NOT NULL,                              -- 瀛樺偍绯荤粺涓殑鍞竴鏂囦欢鍚嶏紙濡� uuid.png锛�
-    file_path     TEXT         NOT NULL,                              -- 鏂囦欢瀛樺偍璺緞鎴朥RL
-    file_type     VARCHAR(50),                                        -- 鏂囦欢绫诲瀷锛堝锛歩mage/png, application/pdf锛�
-    file_size     VARCHAR(50),                                              -- 鏂囦欢澶у皬锛堝崟浣嶏細瀛楄妭锛�
-
-    create_time   TIMESTAMP WITHOUT TIME ZONE, -- 涓婁紶鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
-    update_time   TIMESTAMP WITHOUT TIME ZONE, -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
-    create_by     VARCHAR(255),                                       -- 涓婁紶浜虹敤鎴峰悕
-    update_by     VARCHAR(255),                                       -- 鏈�鍚庝慨鏀逛汉鐢ㄦ埛鍚�
-    deleted       INT          NOT NULL    DEFAULT 0                  -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
-);
-
--- 琛ㄦ敞閲�
-COMMENT ON TABLE file IS '涓婁紶鏂囦欢鐨勫熀鏈俊鎭�';
-
--- 瀛楁娉ㄩ噴
-COMMENT ON COLUMN file.id IS '涓婚敭ID';
-COMMENT ON COLUMN file.archive_id IS '鍏宠仈鐨勬。妗圛D锛屽閿紩鐢� archive.id';
-COMMENT ON COLUMN file.original_name IS '鍘熷鏂囦欢鍚嶏紙鐢ㄦ埛涓婁紶鏃剁殑鍚嶇О锛�';
-COMMENT ON COLUMN file.preview_url IS '棰勮鍦板潃';
-COMMENT ON COLUMN file.file_name IS '绯荤粺瀛樺偍鐨勫敮涓�鏂囦欢鍚�';
-COMMENT ON COLUMN file.file_path IS '鏂囦欢鍦ㄦ湇鍔″櫒涓婄殑瀛樺偍璺緞鎴栬闂甎RL';
-COMMENT ON COLUMN file.file_type IS '鏂囦欢MIME绫诲瀷锛屼緥濡� image/png銆乤pplication/pdf';
-COMMENT ON COLUMN file.file_size IS '鏂囦欢澶у皬锛屽崟浣嶄负瀛楄妭';
-COMMENT ON COLUMN file.create_time IS '鏂囦欢涓婁紶鏃堕棿';
-COMMENT ON COLUMN file.update_time IS '鏂囦欢鏈�鍚庢洿鏂版椂闂�';
-COMMENT ON COLUMN file.create_by IS '涓婁紶璇ユ枃浠剁殑鐢ㄦ埛';
-COMMENT ON COLUMN file.update_by IS '鏈�鍚庝慨鏀硅鏂囦欢鐨勭敤鎴�';
-COMMENT ON COLUMN file.deleted IS '杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�';
\ No newline at end of file
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql b/main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql
index 082816e..4f0fe0e 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql
@@ -6,7 +6,6 @@
     customer_id         BIGINT,                           -- 瀹㈡埛id
     customer            VARCHAR(255)   NOT NULL,          -- 瀹㈡埛
     coal_id             VARCHAR(255)   NOT NULL,          -- 鐓ょ id
-    coal                VARCHAR(255)   NOT NULL,          -- 鐓ょ
     price_including_tax DECIMAL(10, 2) NOT NULL,          -- 鍗曚环锛堝惈绋庯級
     inventory_quantity  DECIMAL(10, 0) NOT NULL,          -- 搴撳瓨鏁伴噺
     unit                VARCHAR(100)   NOT NULL,          -- 鍗曚綅
@@ -37,7 +36,6 @@
 COMMENT ON COLUMN sales_record.sale_date IS '閿�鍞棩鏈�';
 COMMENT ON COLUMN sales_record.customer IS '瀹㈡埛';
 COMMENT ON COLUMN sales_record.customer_id IS '瀹㈡埛id';
-COMMENT ON COLUMN sales_record.coal IS '鐓ょ';
 COMMENT ON COLUMN sales_record.coal_id IS '鐓ょid';
 COMMENT ON COLUMN sales_record.unit IS '鍗曚綅';
 COMMENT ON COLUMN sales_record.price_including_tax IS '鍗曚环锛堝惈绋庯級';
diff --git a/main-business/src/main/resources/mapper/FileMapper.xml b/main-business/src/main/resources/mapper/FileMapper.xml
deleted file mode 100644
index f6cc606..0000000
--- a/main-business/src/main/resources/mapper/FileMapper.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.business.mapper.FileMapper">
-
-        <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-        <resultMap id="BaseResultMap" type="com.ruoyi.business.entity.File">
-                    <id column="id" property="id" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                <result column="deleted" property="deleted" />
-                    <result column="archive_id" property="archiveId" />
-                    <result column="original_name" property="originalName" />
-                    <result column="preview_url" property="previewUrl" />
-                    <result column="file_name" property="fileName" />
-                    <result column="file_path" property="filePath" />
-                    <result column="file_type" property="fileType" />
-                    <result column="file_size" property="fileSize" />
-        </resultMap>
-
-        <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
-        <sql id="Base_Column_List">
-                create_time,
-                update_time,
-                create_by,
-                update_by,
-                deleted,
-            id, archive_id, original_name, preview_url, file_name, file_path, file_type, file_size
-        </sql>
-
-</mapper>
\ No newline at end of file

--
Gitblit v1.9.3