From 2f0b548f20ec39ef5006f68bd8e886f00969c743 Mon Sep 17 00:00:00 2001 From: dfdg <2710245601@qq.com> Date: Wed, 3 Sep 2025 20:36:55 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/bo/BusBiddingLimitListBo.java | 3 + .../impl/BusBiddingLimitListServiceImpl.java | 4 +- .../DesVolumeCatalogController.java | 12 ++ .../service/IDesVolumeCatalogService.java | 2 + .../impl/DesDesignChangeServiceImpl.java | 48 ++++---- .../impl/DesVolumeCatalogServiceImpl.java | 105 +++++++++++++++++- .../impl/BusBiddingPlanServiceImpl.java | 3 + ...sBillofquantitiesLimitListServiceImpl.java | 2 +- 8 files changed, 147 insertions(+), 32 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java index 0e5fb771..f4bb21b4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/domain/bo/BusBiddingLimitListBo.java @@ -1,5 +1,6 @@ package org.dromara.bidding.domain.bo; +import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.bidding.domain.BusBiddingLimitList; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -91,4 +92,6 @@ public class BusBiddingLimitListBo extends BaseEntity { private String remark; + private Long type; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java index eefe1f8d..921b0804 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitListServiceImpl.java @@ -182,7 +182,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl getTree(BusBiddingLimitListBo bo) { BusBiddingLimitVersions biddingLimitVersions = busBiddingLimitVersionsService.queryByProjectId(bo.getVersions(),bo.getProjectId()); - if (biddingLimitVersions == null || !BusinessStatusEnum.FINISH.getStatus().equals(biddingLimitVersions.getStatus())) { + if (biddingLimitVersions == null || (bo.getType() == 1L && !BusinessStatusEnum.FINISH.getStatus().equals(biddingLimitVersions.getStatus()))) { return null; } //获取所有数据 @@ -248,7 +248,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl { */ List catalogList(Long projectId); + void exportExcelByProjectId(Long projectId, HttpServletResponse response); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java index d7b69cea..2311b6d0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java @@ -33,7 +33,6 @@ import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.utils.DocumentUtil; import org.dromara.design.constant.DesDesignConstant; import org.dromara.design.domain.DesDesignChange; -import org.dromara.design.domain.DesDrawing; import org.dromara.design.domain.DesVolumeCatalog; import org.dromara.design.domain.DesVolumeFile; import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq; @@ -42,10 +41,8 @@ import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq; import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto; import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo; import org.dromara.design.domain.vo.designchange.DesDesignChangeVo; -import org.dromara.design.domain.vo.volumefile.DesVolumeFileVo; import org.dromara.design.mapper.DesDesignChangeMapper; import org.dromara.design.service.*; -import org.dromara.facility.domain.FacMatrix; import org.dromara.project.service.IBusProjectService; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; @@ -117,7 +114,7 @@ public class DesDesignChangeServiceImpl extends ServiceImpl designChangeVoList = designChangeList.stream().map(designChange -> { DesDesignChangeVo designChangeVo = new DesDesignChangeVo(); BeanUtils.copyProperties(designChange, designChangeVo); - String fileId = designChangeVo.getFileId(); - if (fileId != null) { - String[] split = fileId.split(","); - List fileIds = Arrays.stream(split) - .map(Long::valueOf) - .collect(Collectors.toList()); - List ossVoList1 = ossService.listByIds(fileIds); - designChangeVo.setOssVoList(ossVoList1); - } + String fileId = designChangeVo.getFileId(); + if (fileId != null) { + String[] split = fileId.split(","); + List fileIds = Arrays.stream(split) + .map(Long::valueOf) + .collect(Collectors.toList()); + List ossVoList1 = ossService.listByIds(fileIds); + designChangeVo.setOssVoList(ossVoList1); + } return designChangeVo; }).toList(); designChangeVoPage.setRecords(designChangeVoList); @@ -615,25 +612,25 @@ public class DesDesignChangeServiceImpl extends ServiceImpllambdaQuery() .eq(DesVolumeCatalog::getVolumeNumber, designChange.getVolumeNo()) .eq(DesVolumeCatalog::getProjectId, designChange.getProjectId()) .last("limit 1")); - if("1".equals(bean.getDesignDisposal())){ + if ("1".equals(bean.getDesignDisposal())) { volumeFileService.lambdaUpdate() .set(DesVolumeFile::getType, DesVolumeFile.WASTE) - .eq(DesVolumeFile::getType,DesVolumeFile.BLUEPRINT) + .eq(DesVolumeFile::getType, DesVolumeFile.BLUEPRINT) .eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign()) .update(); - }else if("2".equals(bean.getDesignDisposal())){ - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + } else if ("2".equals(bean.getDesignDisposal())) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.set(DesVolumeFile::getType, DesVolumeFile.WASTE) .eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign()); String saveFile = designChange.getSaveFile(); - if(StringUtils.isNotBlank(saveFile)){ + if (StringUtils.isNotBlank(saveFile)) { String[] split = saveFile.split(","); List fileIds = Arrays.stream(split) .map(Long::valueOf) @@ -655,10 +652,12 @@ public class DesDesignChangeServiceImpl extends ServiceImpl log.info("图纸[{}-{} ]添加二维码成功", desVolumeFile.getFileName(), desVolumeFile.getId())) .exceptionally(ex -> { log.error("图纸[{}-{}]添加二维码失败", desVolumeFile.getFileName(), desVolumeFile.getId(), ex); @@ -721,7 +720,6 @@ public class DesDesignChangeServiceImpl extends ServiceImpl> majorToNames = new HashMap<>(); + List desUserVos = desUserService.queryList(desUserBo); + List uniqueMajors = new ArrayList<>(desUserVos.stream() + .collect(Collectors.toMap( + DesUserVo::getUserMajor, + user -> user, + (existing, replacement) -> existing + )) + .values()); + uniqueMajors.forEach(desUserVo -> { + desUserBo.setUserMajor(desUserVo.getUserMajor()); + List desUserVos1 = desUserService.queryList(desUserBo); + List names = desUserVos1.stream() + .map(DesUserVo::getUserName) + .collect(Collectors.toList()); + majorToNames.put(desUserVo.getUserMajorName(), names); + }); + //TODO 数据绑定下拉 +// String[] namesArray = names.toArray(String[]::new); + + + // 2. 设置响应头 + // 设置响应头,指定Excel格式和下载文件名 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode("收资清单模板.xlsx", StandardCharsets.UTF_8)); + + Workbook workbook = new XSSFWorkbook(); + // 创建主 Sheet 和隐藏 Sheet + Sheet mainSheet = workbook.createSheet("收资清单模板"); + Sheet dropdownSheet = workbook.createSheet("DropdownData"); + workbook.setSheetHidden(workbook.getSheetIndex(dropdownSheet), true); + + + //设置下拉列表数据 +// for (int i = 0; i < namesArray.length; i++) { +// dropdownSheet.createRow(i).createCell(1).setCellValue(namesArray[i]); // 存到B列 +// } +// int rowIdx = 0; +// for (Map.Entry entry : userIdToNameMapByDept.entrySet()) { +// Row row = dropdownSheet.createRow(rowIdx++); +// row.createCell(0).setCellValue(entry.getKey().toString()); +// row.createCell(1).setCellValue(entry.getValue()); +// } + + // 主 Sheet 设置表头 + Row sheetRow = mainSheet.createRow(0); + sheetRow.createCell(0).setCellValue("子项名称"); + sheetRow.createCell(1).setCellValue("卷册号"); + sheetRow.createCell(2).setCellValue("资料名称"); + sheetRow.createCell(3).setCellValue("计划出图时间"); + sheetRow.createCell(4).setCellValue("专业"); + sheetRow.createCell(5).setCellValue("人员"); + + // 核心:锁定表头(第1行)和前1列(包含ID列) + mainSheet.createFreezePane(0, 1, 0, 0); + + // 绑定下拉列表(关联隐藏 Sheet) + DataValidationHelper helper = mainSheet.getDataValidationHelper(); //为主Sheet第二列设置下拉列表(关联隐藏Sheet的B列) +// String range = "DropdownData!$B$1:$B$" + namesArray.length; //引用隐藏Sheet的B列数据范围:DropdownData!$B$1:$B$ +// DataValidationConstraint constraint = helper.createFormulaListConstraint(range); //创建下拉约束 + CellRangeAddressList addressList = new CellRangeAddressList(1, 300, 1, 1); // 支持100行数据 + //添加验证规则 +// DataValidation validation = helper.createValidation(constraint, addressList); +// validation.setShowErrorBox(true); +// mainSheet.addValidationData(validation); + + // 调整列宽 + mainSheet.setColumnWidth(0, 20 * 256); + mainSheet.setColumnWidth(1, 20 * 100); + mainSheet.setColumnWidth(2, 20 * 200); + mainSheet.setColumnWidth(3, 20 * 200); + + // 直接写入响应输出流 + try { + workbook.write(response.getOutputStream()); + workbook.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + /** * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 正常使用只需#processEvent.flowCode=='leave1' diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java index d4b37875..1464fb17 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java @@ -375,6 +375,9 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl subChildren = buildTree(child.getSid(), parentMap); // 注意:需要在Vo中添加子节点列表字段,用于存储子树 child.setChildren(subChildren); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java index 9db81e28..a5e594c2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBillofquantitiesLimitListServiceImpl.java @@ -245,7 +245,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl busBillofquantities = new ArrayList();