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