From 4c33acfe648e9b008f91c5e2cf446550e6b0174d Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期二, 22 七月 2025 17:35:57 +0800 Subject: [PATCH] 1.正式库导出优化 2.销售导出 3.设备使用状态优化 4.定时任务优化 --- main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java | 67 ++++++++++++++++++++++++++++++++- 1 files changed, 65 insertions(+), 2 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 01c3e54..1a9c849 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 @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 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.entity.Supply; import com.ruoyi.basic.mapper.CoalInfoMapper; import com.ruoyi.basic.mapper.CustomerMapper; import com.ruoyi.business.dto.SalesRecordDto; @@ -17,12 +19,16 @@ import com.ruoyi.business.mapper.OfficialInventoryMapper; import com.ruoyi.business.mapper.SalesRecordMapper; import com.ruoyi.business.service.SalesRecordService; +import com.ruoyi.business.vo.SalesRecordExportVo; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.mapper.SysUserMapper; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,6 +57,7 @@ * @since 2025-06-11 */ @Service +@Slf4j @RequiredArgsConstructor public class SalesRecordServiceImpl extends ServiceImpl<SalesRecordMapper, SalesRecord> implements SalesRecordService { @@ -155,7 +162,10 @@ throw new BaseException("閿�鍞暟閲忎笉鑳藉ぇ浜庡簱瀛樻暟閲�"); } officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(salesRecordDto.getSaleQuantity())); - officialInventory.setPendingReplenishment(salesRecordDto.getSaleQuantity()); + + if (salesRecordDto.isAdd()){ + officialInventory.setPendingReplenishment(salesRecordDto.getSaleQuantity()); + } officialInventoryMapper.updateById(officialInventory); // 鏋勫缓閿�鍞褰曞疄浣� @@ -193,7 +203,7 @@ if (registrant == null) { throw new BaseException("鐧昏浜轰俊鎭笉瀛樺湪"); } - record.setRegistrant(registrant.getUserName()); + record.setRegistrant(registrant.getNickName()); // 璁剧疆瀹㈡埛淇℃伅 Customer customer = customerMapper.selectById(dto.getCustomerId()); @@ -255,6 +265,59 @@ } @Override + public void salesRecordExport(HttpServletResponse response, SalesRecordDto salesRecordDto) { + List<Long> ids = salesRecordDto.getExportIds(); + List<SalesRecord> list; + if (ids != null && !ids.isEmpty()) { + list = salesRecordMapper.selectByIds(ids); + } else { + list = salesRecordMapper.selectList(null); + } + List<SalesRecordExportVo> exportData = convertToExportVo(list); + ExcelUtil<SalesRecordExportVo> util = new ExcelUtil<>(SalesRecordExportVo.class); + util.exportExcel(response, exportData, "閿�鍞嚭搴撴暟鎹�"); + } + + private List<SalesRecordExportVo> convertToExportVo(List<SalesRecord> list) { + // 1. 鎻愬墠鏀堕泦鎵�鏈夐渶瑕佹煡璇㈢殑coalId锛岄伩鍏峃+1鏌ヨ闂 + Set<Long> coalIds = list.stream() + .filter(Objects::nonNull) + .map(SalesRecord::getCoalId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 2. 鎵归噺鏌ヨcoalInfo鏁版嵁 + Map<Long, CoalInfo> coalInfoMap = CollectionUtils.isEmpty(coalIds) + ? Collections.emptyMap() + : coalInfoMapper.selectByIds(coalIds).stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(CoalInfo::getId, Function.identity())); + + // 3. 杞崲鏁版嵁 + return list.stream() + .filter(Objects::nonNull) + .map(record -> { + try { + SalesRecordExportVo vo = new SalesRecordExportVo(); + + // 鎷疯礉鍩虹灞炴�� + BeanUtils.copyProperties(record, vo); + + // 璁剧疆鍏宠仈鐨刢oal淇℃伅 + Optional.ofNullable(record.getCoalId()) + .map(coalInfoMap::get) + .ifPresent(coalInfo -> vo.setCoal(coalInfo.getCoal())); + return vo; + } catch (Exception e) { + log.error("杞崲閿�鍞褰昖O寮傚父锛岃褰旾D: {}", record.getId(), e); + return null; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + } + + @Override public Map<String, Object> getYearlyMonthlySales(YearlyQueryDto query) { // 1. 澶勭悊榛樿鏌ヨ锛堜笉浼犲弬鏁版椂锛� if (query == null || query.getTimeRange() == null || query.getTimeRange().length == 0) { -- Gitblit v1.9.3