liding
14 小时以前 4fedbed9949c6160dcfa216d6660bd3c625f7bce
优化
已修改14个文件
已删除7个文件
361 ■■■■■ 文件已修改
main-business/src/main/java/com/ruoyi/business/controller/FileController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/controller/SalesRecordController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/entity/File.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/mapper/FileMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/FileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/FileServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/resources/mapper/FileMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/controller/FileController.java
ÎļþÒÑɾ³ý
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);
    }
main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
@@ -13,4 +13,9 @@
    private List<Long> ids;
    /**
     * ç…¤ç§
     */
    private String coal;
}
main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
@@ -38,4 +38,9 @@
     * å­—段名
     */
    private Integer type;
    /**
     * ç…¤ç§
     */
    private String coal;
}
main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java
@@ -5,4 +5,6 @@
@Data
public class SalesRecordDto extends SalesRecord {
    private String coal;
}
main-business/src/main/java/com/ruoyi/business/entity/File.java
ÎļþÒÑɾ³ý
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")
main-business/src/main/java/com/ruoyi/business/mapper/FileMapper.java
ÎļþÒÑɾ³ý
main-business/src/main/java/com/ruoyi/business/service/FileService.java
ÎļþÒÑɾ³ý
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);
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;
    }
main-business/src/main/java/com/ruoyi/business/service/impl/FileServiceImpl.java
ÎļþÒÑɾ³ý
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;
    }
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());
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. æ‰¹é‡æŸ¥è¯¢å…³è”的煤炭信息和正式库存信息
        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<>();
        }
        // æ‰¹é‡æŸ¥è¯¢æ­£å¼åº“存信息
        Map<Long, Long> pendingToOfficialMap = getOfficialInventoryMap(pendingIds);
        // 6. ä½¿ç”¨MyBatis-Plus的convert方法转换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());
            }
            // ä»Žé¢„加载的Map中获取officialId
            dto.setOfficialId(pendingToOfficialMap.getOrDefault(record.getId(), null));
            return dto;
        });
    }
    // æ‰¹é‡èŽ·å–å¾…å¤„ç†åº“å­˜ä¸Žæ­£å¼åº“å­˜çš„æ˜ å°„å…³ç³»
    private Map<Long, Long> getOfficialInventoryMap(List<Long> pendingIds) {
        if (CollectionUtils.isEmpty(pendingIds)) {
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;
    }
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. æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰CoalInfo
        List<Long> coalIds = salesRecordPage.getRecords().stream()
                .map(SalesRecord::getCoalId)  // èŽ·å–æ‰€æœ‰SalesRecord的coalId
                .collect(Collectors.toList());
        Map<Long, CoalInfo> coalInfoMap;
        // å¦‚果有煤炭ID,执行批量查询
        if (!coalIds.isEmpty()) {
            // ä½¿ç”¨selectList进行批量查询
            LambdaQueryWrapper<CoalInfo> coalInfoQueryWrapper = new LambdaQueryWrapper<>();
            coalInfoQueryWrapper.in(CoalInfo::getId, coalIds);
            List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalInfoQueryWrapper);
            // å°†æŸ¥è¯¢ç»“果放入Map中,煤炭ID为键,CoalInfo为值
            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为SalesRecordDto,并设置每条销售记录的煤炭信息
        List<SalesRecordDto> dtoList = salesRecordPage.getRecords().stream().map(salesRecord -> {
            SalesRecordDto dto = new SalesRecordDto();
            BeanUtils.copyProperties(salesRecord, dto);  // å°†SalesRecord的属性复制到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("正式库煤种信息不存在");
        }
        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);
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;  // åº“存数量
main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql
ÎļþÒÑɾ³ý
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 '单价(含税)';
main-business/src/main/resources/mapper/FileMapper.xml
ÎļþÒÑɾ³ý