From 8bf17a90f86e88a0bd67f7bbdde6ab7acd12f683 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期三, 09 七月 2025 14:19:53 +0800 Subject: [PATCH] yys 修改导入导出bug --- src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 141 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java index 92ef336..5184b0c 100644 --- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java +++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java @@ -4,6 +4,7 @@ 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.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; @@ -13,7 +14,10 @@ import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; import com.ruoyi.procurementrecord.service.ProcurementRecordService; +import com.ruoyi.project.system.domain.SysUser; +import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; +import com.ruoyi.sales.pojo.SalesLedgerProduct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -22,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.stream.Collectors; @@ -120,8 +125,105 @@ @Override public void export(HttpServletResponse response) { List<ProcurementPageDto> list =procurementRecordMapper.list(); + // 璁$畻寰呭叆搴撴暟閲� + // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲� + List<Integer> collect = list.stream().map(ProcurementPageDto::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty( collect)){ + return; + } + LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); + procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); + List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); + if(CollectionUtils.isEmpty( procurementRecords)){ + return; + } + for (ProcurementPageDto dto : list) { + // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍 + List<ProcurementRecordOut> collect1 = procurementRecords.stream() + .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) + .collect(Collectors.toList()); + + // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁 + if(CollectionUtils.isEmpty(collect1)){ + dto.setInboundNum0(dto.getInboundNum()); + continue; + } + + // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲� + BigDecimal totalInboundNum = collect1.stream() + .map(ProcurementRecordOut::getInboundNum) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲� + dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); + } ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class); util.exportExcel(response, list, "鍏ュ簱鍙拌处"); + } + + private final SysUserMapper sysUserMapper; + + @Override + public int updateManagement(ProcurementManagementUpdateDto procurementDto) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + SysUser sysUser = sysUserMapper.selectUserById(procurementDto.getCreateUser()); + if(sysUser == null){ + throw new RuntimeException("鍏ュ簱浜轰笉瀛樺湪"); + } + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String entryDateStr = procurementDto.getEntryDate() + " 00:00:00"; + String createTimeStr = procurementDto.getCreateTime() + " 00:00:00"; + ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId()); + procurementRecordStorageById.setCreateBy(sysUser.getNickName()); + procurementRecordStorageById.setCreateUser(sysUser.getUserId()); + procurementRecordStorageById.setUpdateTime(LocalDateTime.parse(entryDateStr,df)); + procurementRecordStorageById.setUpdateUser(loginUser.getUserId()); + procurementRecordStorageById.setCreateTime(LocalDateTime.parse(createTimeStr,df)); + procurementRecordMapper.updateById(procurementRecordStorageById); + return 0; + } + + @Override + public void exportCopy(HttpServletResponse response) { + List<ProcurementPageDtoCopy> list =procurementRecordMapper.listCopy(); + // 璁$畻寰呭叆搴撴暟閲� + // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲� + List<Integer> collect = list.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty( collect)){ + ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class); + util.exportExcel(response, list, "搴撳瓨绠$悊"); + return; + } + LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); + procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); + List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); + if(CollectionUtils.isEmpty( procurementRecords)){ + ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class); + util.exportExcel(response, list, "搴撳瓨绠$悊"); + return; + } + for (ProcurementPageDtoCopy dto : list) { + // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍 + List<ProcurementRecordOut> collect1 = procurementRecords.stream() + .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) + .collect(Collectors.toList()); + + // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁 + if(CollectionUtils.isEmpty(collect1)){ + dto.setInboundNum0(dto.getInboundNum()); + continue; + } + + // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲� + BigDecimal totalInboundNum = collect1.stream() + .map(ProcurementRecordOut::getInboundNum) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲� + dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); + } + ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class); + util.exportExcel(response, list, "搴撳瓨绠$悊"); } @Override @@ -197,4 +299,43 @@ return procurementPageDtoIPage; } + @Override + public IPage<ProcurementPageDtoCopy> listPageCopy(Page page, ProcurementPageDto procurementDto) { + IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopy(page, procurementDto); + List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords(); + // 璁$畻寰呭叆搴撴暟閲� + // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲� + List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty( collect)){ + return procurementPageDtoCopyIPage; + } + LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); + procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); + List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); + if(CollectionUtils.isEmpty( procurementRecords)){ + return procurementPageDtoCopyIPage; + } + for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { + // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍 + List<ProcurementRecordOut> collect1 = procurementRecords.stream() + .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) + .collect(Collectors.toList()); + + // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁 + if(CollectionUtils.isEmpty(collect1)){ + dto.setInboundNum0(dto.getInboundNum()); + continue; + } + + // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲� + BigDecimal totalInboundNum = collect1.stream() + .map(ProcurementRecordOut::getInboundNum) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲� + dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); + } + return procurementPageDtoCopyIPage; + } + } -- Gitblit v1.9.3