BUG修改
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.bidding.domain.bo;
|
package org.dromara.bidding.domain.bo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import org.dromara.bidding.domain.BusBiddingLimitList;
|
import org.dromara.bidding.domain.BusBiddingLimitList;
|
||||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
@ -91,4 +92,6 @@ public class BusBiddingLimitListBo extends BaseEntity {
|
|||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
private Long type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl<BusBiddingLimitL
|
|||||||
@Override
|
@Override
|
||||||
public List<BusBiddingLimitListVo> getTree(BusBiddingLimitListBo bo) {
|
public List<BusBiddingLimitListVo> getTree(BusBiddingLimitListBo bo) {
|
||||||
BusBiddingLimitVersions biddingLimitVersions = busBiddingLimitVersionsService.queryByProjectId(bo.getVersions(),bo.getProjectId());
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
//获取所有数据
|
//获取所有数据
|
||||||
@ -248,7 +248,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl<BusBiddingLimitL
|
|||||||
file, // 上传的文件
|
file, // 上传的文件
|
||||||
1, // 跳过1行(表头)
|
1, // 跳过1行(表头)
|
||||||
0, // 从第0列开始
|
0, // 从第0列开始
|
||||||
12, // 到第12列结束
|
13, // 到第12列结束
|
||||||
BusBiddingLimitListBo.class // 目标实体类
|
BusBiddingLimitListBo.class // 目标实体类
|
||||||
);
|
);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -3,6 +3,7 @@ package org.dromara.design.controller;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
@ -155,6 +156,17 @@ public class DesVolumeCatalogController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收资清单模板导出
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("design:collect:exportExcel")
|
||||||
|
@Log(title = "收资清单", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/exportExcel")
|
||||||
|
public void exportExcelByProjectId(@RequestParam("projectId") Long projectId, HttpServletResponse response){
|
||||||
|
desVolumeCatalogService.exportExcelByProjectId(projectId, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入卷册目录
|
* 导入卷册目录
|
||||||
|
@ -3,6 +3,7 @@ package org.dromara.design.service;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.design.domain.DesVolumeCatalog;
|
import org.dromara.design.domain.DesVolumeCatalog;
|
||||||
@ -120,4 +121,5 @@ public interface IDesVolumeCatalogService extends IService<DesVolumeCatalog> {
|
|||||||
*/
|
*/
|
||||||
List<DesVolumeCatalogVo> catalogList(Long projectId);
|
List<DesVolumeCatalogVo> catalogList(Long projectId);
|
||||||
|
|
||||||
|
void exportExcelByProjectId(Long projectId, HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ import org.dromara.common.oss.factory.OssFactory;
|
|||||||
import org.dromara.common.utils.DocumentUtil;
|
import org.dromara.common.utils.DocumentUtil;
|
||||||
import org.dromara.design.constant.DesDesignConstant;
|
import org.dromara.design.constant.DesDesignConstant;
|
||||||
import org.dromara.design.domain.DesDesignChange;
|
import org.dromara.design.domain.DesDesignChange;
|
||||||
import org.dromara.design.domain.DesDrawing;
|
|
||||||
import org.dromara.design.domain.DesVolumeCatalog;
|
import org.dromara.design.domain.DesVolumeCatalog;
|
||||||
import org.dromara.design.domain.DesVolumeFile;
|
import org.dromara.design.domain.DesVolumeFile;
|
||||||
import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq;
|
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.dto.designchange.DesDesignExtendDetailDto;
|
||||||
import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo;
|
import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo;
|
||||||
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
|
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.mapper.DesDesignChangeMapper;
|
||||||
import org.dromara.design.service.*;
|
import org.dromara.design.service.*;
|
||||||
import org.dromara.facility.domain.FacMatrix;
|
|
||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
import org.dromara.system.domain.vo.SysOssVo;
|
import org.dromara.system.domain.vo.SysOssVo;
|
||||||
import org.dromara.system.service.ISysOssService;
|
import org.dromara.system.service.ISysOssService;
|
||||||
@ -117,7 +114,7 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
|||||||
vo.setExtendDetail(JSONUtil.toBean(designChange.getDetail(), DesDesignExtendDetailDto.class));
|
vo.setExtendDetail(JSONUtil.toBean(designChange.getDetail(), DesDesignExtendDetailDto.class));
|
||||||
|
|
||||||
BusDrawingreviewReceiptsVo infoByReviewId = drawingreviewReceiptsService.getInfoByReviewId(designChange.getId());
|
BusDrawingreviewReceiptsVo infoByReviewId = drawingreviewReceiptsService.getInfoByReviewId(designChange.getId());
|
||||||
if(infoByReviewId != null && infoByReviewId.getApproveId()!=null){
|
if (infoByReviewId != null && infoByReviewId.getApproveId() != null) {
|
||||||
vo.setIsWindow(false);
|
vo.setIsWindow(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,15 +472,15 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
|||||||
List<DesDesignChangeVo> designChangeVoList = designChangeList.stream().map(designChange -> {
|
List<DesDesignChangeVo> designChangeVoList = designChangeList.stream().map(designChange -> {
|
||||||
DesDesignChangeVo designChangeVo = new DesDesignChangeVo();
|
DesDesignChangeVo designChangeVo = new DesDesignChangeVo();
|
||||||
BeanUtils.copyProperties(designChange, designChangeVo);
|
BeanUtils.copyProperties(designChange, designChangeVo);
|
||||||
String fileId = designChangeVo.getFileId();
|
String fileId = designChangeVo.getFileId();
|
||||||
if (fileId != null) {
|
if (fileId != null) {
|
||||||
String[] split = fileId.split(",");
|
String[] split = fileId.split(",");
|
||||||
List<Long> fileIds = Arrays.stream(split)
|
List<Long> fileIds = Arrays.stream(split)
|
||||||
.map(Long::valueOf)
|
.map(Long::valueOf)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<SysOssVo> ossVoList1 = ossService.listByIds(fileIds);
|
List<SysOssVo> ossVoList1 = ossService.listByIds(fileIds);
|
||||||
designChangeVo.setOssVoList(ossVoList1);
|
designChangeVo.setOssVoList(ossVoList1);
|
||||||
}
|
}
|
||||||
return designChangeVo;
|
return designChangeVo;
|
||||||
}).toList();
|
}).toList();
|
||||||
designChangeVoPage.setRecords(designChangeVoList);
|
designChangeVoPage.setRecords(designChangeVoList);
|
||||||
@ -615,25 +612,25 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
|||||||
if (processEvent.getSubmit()) {
|
if (processEvent.getSubmit()) {
|
||||||
designChange.setAuditStatus(BusinessStatusEnum.WAITING.getStatus());
|
designChange.setAuditStatus(BusinessStatusEnum.WAITING.getStatus());
|
||||||
}
|
}
|
||||||
if(BusinessStatusEnum.FINISH.getStatus().equals(processEvent.getStatus())){
|
if (BusinessStatusEnum.FINISH.getStatus().equals(processEvent.getStatus())) {
|
||||||
DesDesignExtendDetailDto bean = JSONUtil.toBean(designChange.getDetail(), DesDesignExtendDetailDto.class);
|
DesDesignExtendDetailDto bean = JSONUtil.toBean(designChange.getDetail(), DesDesignExtendDetailDto.class);
|
||||||
DesVolumeCatalog volumeCatalog = volumeCatalogService.getOne(Wrappers.<DesVolumeCatalog>lambdaQuery()
|
DesVolumeCatalog volumeCatalog = volumeCatalogService.getOne(Wrappers.<DesVolumeCatalog>lambdaQuery()
|
||||||
.eq(DesVolumeCatalog::getVolumeNumber, designChange.getVolumeNo())
|
.eq(DesVolumeCatalog::getVolumeNumber, designChange.getVolumeNo())
|
||||||
.eq(DesVolumeCatalog::getProjectId, designChange.getProjectId())
|
.eq(DesVolumeCatalog::getProjectId, designChange.getProjectId())
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
|
|
||||||
if("1".equals(bean.getDesignDisposal())){
|
if ("1".equals(bean.getDesignDisposal())) {
|
||||||
volumeFileService.lambdaUpdate()
|
volumeFileService.lambdaUpdate()
|
||||||
.set(DesVolumeFile::getType, DesVolumeFile.WASTE)
|
.set(DesVolumeFile::getType, DesVolumeFile.WASTE)
|
||||||
.eq(DesVolumeFile::getType,DesVolumeFile.BLUEPRINT)
|
.eq(DesVolumeFile::getType, DesVolumeFile.BLUEPRINT)
|
||||||
.eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign())
|
.eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign())
|
||||||
.update();
|
.update();
|
||||||
}else if("2".equals(bean.getDesignDisposal())){
|
} else if ("2".equals(bean.getDesignDisposal())) {
|
||||||
LambdaUpdateWrapper<DesVolumeFile> wrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<DesVolumeFile> wrapper = new LambdaUpdateWrapper<>();
|
||||||
wrapper.set(DesVolumeFile::getType, DesVolumeFile.WASTE)
|
wrapper.set(DesVolumeFile::getType, DesVolumeFile.WASTE)
|
||||||
.eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign());
|
.eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign());
|
||||||
String saveFile = designChange.getSaveFile();
|
String saveFile = designChange.getSaveFile();
|
||||||
if(StringUtils.isNotBlank(saveFile)){
|
if (StringUtils.isNotBlank(saveFile)) {
|
||||||
String[] split = saveFile.split(",");
|
String[] split = saveFile.split(",");
|
||||||
List<Long> fileIds = Arrays.stream(split)
|
List<Long> fileIds = Arrays.stream(split)
|
||||||
.map(Long::valueOf)
|
.map(Long::valueOf)
|
||||||
@ -655,10 +652,12 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
|||||||
.eq(DesVolumeFile::getType, DesVolumeFile.BLUEPRINT)
|
.eq(DesVolumeFile::getType, DesVolumeFile.BLUEPRINT)
|
||||||
.orderByDesc(DesVolumeFile::getVersion)
|
.orderByDesc(DesVolumeFile::getVersion)
|
||||||
);
|
);
|
||||||
|
String version = "1.0";
|
||||||
String lastVersion = list.getFirst().getVersion();
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
int majorVersion = (int) Math.floor(Double.parseDouble(lastVersion)) + 1;
|
String lastVersion = list.getFirst().getVersion();
|
||||||
String version = majorVersion + ".0";
|
int majorVersion = (int) Math.floor(Double.parseDouble(lastVersion)) + 1;
|
||||||
|
version = majorVersion + ".0";
|
||||||
|
}
|
||||||
|
|
||||||
for (SysOssVo ossVo : ossVoList1) {
|
for (SysOssVo ossVo : ossVoList1) {
|
||||||
DesVolumeFile desVolumeFile = new DesVolumeFile();
|
DesVolumeFile desVolumeFile = new DesVolumeFile();
|
||||||
@ -673,7 +672,7 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
|||||||
volumeFileService.save(desVolumeFile);
|
volumeFileService.save(desVolumeFile);
|
||||||
|
|
||||||
//异步处理二维码
|
//异步处理二维码
|
||||||
self.addQRCodeToPDF(desVolumeFile.getId(),true)
|
self.addQRCodeToPDF(desVolumeFile.getId(), true)
|
||||||
.thenAccept(result -> log.info("图纸[{}-{} ]添加二维码成功", desVolumeFile.getFileName(), desVolumeFile.getId()))
|
.thenAccept(result -> log.info("图纸[{}-{} ]添加二维码成功", desVolumeFile.getFileName(), desVolumeFile.getId()))
|
||||||
.exceptionally(ex -> {
|
.exceptionally(ex -> {
|
||||||
log.error("图纸[{}-{}]添加二维码失败", desVolumeFile.getFileName(), desVolumeFile.getId(), ex);
|
log.error("图纸[{}-{}]添加二维码失败", desVolumeFile.getFileName(), desVolumeFile.getId(), ex);
|
||||||
@ -721,7 +720,6 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
|
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
|
||||||
* 正常使用只需#processEvent.flowCode=='leave1'
|
* 正常使用只需#processEvent.flowCode=='leave1'
|
||||||
|
@ -6,7 +6,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
|
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
|
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
|
||||||
import org.dromara.common.core.constant.HttpStatus;
|
import org.dromara.common.core.constant.HttpStatus;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
@ -21,16 +25,16 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.design.domain.*;
|
import org.dromara.design.domain.*;
|
||||||
|
import org.dromara.design.domain.bo.DesUserBo;
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogCreateReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogCreateReq;
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
|
||||||
|
import org.dromara.design.domain.vo.DesUserVo;
|
||||||
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
|
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
|
||||||
import org.dromara.design.mapper.DesVolumeCatalogMapper;
|
import org.dromara.design.mapper.DesVolumeCatalogMapper;
|
||||||
import org.dromara.design.service.IDesDrawingService;
|
import org.dromara.design.service.*;
|
||||||
import org.dromara.design.service.IDesVolumeCatalogService;
|
|
||||||
import org.dromara.design.service.IDesVolumeFileService;
|
|
||||||
import org.dromara.design.service.IDesVolumeFileViewerService;
|
|
||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
|
import org.dromara.system.domain.SysUser;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.service.ISysUserService;
|
import org.dromara.system.service.ISysUserService;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@ -39,6 +43,9 @@ import org.springframework.context.event.EventListener;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -70,6 +77,9 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
|
|||||||
@Resource
|
@Resource
|
||||||
protected IDesDrawingService drawingService;
|
protected IDesDrawingService drawingService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IDesUserService desUserService;
|
||||||
|
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Resource
|
@Resource
|
||||||
@ -354,6 +364,93 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exportExcelByProjectId(Long projectId, HttpServletResponse response) {
|
||||||
|
DesUserBo desUserBo = new DesUserBo();
|
||||||
|
desUserBo.setProjectId(projectId);
|
||||||
|
Map<String, List<String>> majorToNames = new HashMap<>();
|
||||||
|
List<DesUserVo> desUserVos = desUserService.queryList(desUserBo);
|
||||||
|
List<DesUserVo> uniqueMajors = new ArrayList<>(desUserVos.stream()
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
DesUserVo::getUserMajor,
|
||||||
|
user -> user,
|
||||||
|
(existing, replacement) -> existing
|
||||||
|
))
|
||||||
|
.values());
|
||||||
|
uniqueMajors.forEach(desUserVo -> {
|
||||||
|
desUserBo.setUserMajor(desUserVo.getUserMajor());
|
||||||
|
List<DesUserVo> desUserVos1 = desUserService.queryList(desUserBo);
|
||||||
|
List<String> 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<Long, String> 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'
|
* 正常使用只需#processEvent.flowCode=='leave1'
|
||||||
|
@ -375,6 +375,9 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
|
|||||||
// 为每个子节点递归设置其下一级子节点
|
// 为每个子节点递归设置其下一级子节点
|
||||||
for (BusBillofquantitiesLimitListVo child : children) {
|
for (BusBillofquantitiesLimitListVo child : children) {
|
||||||
// 递归查询当前子节点的子节点,设置为它的子树
|
// 递归查询当前子节点的子节点,设置为它的子树
|
||||||
|
if ("0".equals(child.getSid()) && "0".equals(child.getPid())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<BusBillofquantitiesLimitListVo> subChildren = buildTree(child.getSid(), parentMap);
|
List<BusBillofquantitiesLimitListVo> subChildren = buildTree(child.getSid(), parentMap);
|
||||||
// 注意:需要在Vo中添加子节点列表字段,用于存储子树
|
// 注意:需要在Vo中添加子节点列表字段,用于存储子树
|
||||||
child.setChildren(subChildren);
|
child.setChildren(subChildren);
|
||||||
|
@ -245,7 +245,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
|||||||
file, // 上传的文件
|
file, // 上传的文件
|
||||||
1, // 跳过1行(表头)
|
1, // 跳过1行(表头)
|
||||||
0, // 从第0列开始
|
0, // 从第0列开始
|
||||||
13, // 到第5列结束
|
14, // 到第5列结束
|
||||||
BusBillofquantitiesLimitListBo.class // 目标实体类
|
BusBillofquantitiesLimitListBo.class // 目标实体类
|
||||||
);
|
);
|
||||||
List<BusBillofquantitiesLimitList> busBillofquantities = new ArrayList<BusBillofquantitiesLimitList>();
|
List<BusBillofquantitiesLimitList> busBillofquantities = new ArrayList<BusBillofquantitiesLimitList>();
|
||||||
|
Reference in New Issue
Block a user