BUG修改
This commit is contained in:
@ -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;
|
||||
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl<BusBiddingLimitL
|
||||
@Override
|
||||
public List<BusBiddingLimitListVo> 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<BusBiddingLimitL
|
||||
file, // 上传的文件
|
||||
1, // 跳过1行(表头)
|
||||
0, // 从第0列开始
|
||||
12, // 到第12列结束
|
||||
13, // 到第12列结束
|
||||
BusBiddingLimitListBo.class // 目标实体类
|
||||
);
|
||||
} catch (Exception e) {
|
||||
|
@ -3,6 +3,7 @@ package org.dromara.design.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
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.extension.plugins.pagination.Page;
|
||||
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.TableDataInfo;
|
||||
import org.dromara.design.domain.DesVolumeCatalog;
|
||||
@ -120,4 +121,5 @@ public interface IDesVolumeCatalogService extends IService<DesVolumeCatalog> {
|
||||
*/
|
||||
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.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<DesDesignChangeMappe
|
||||
vo.setExtendDetail(JSONUtil.toBean(designChange.getDetail(), DesDesignExtendDetailDto.class));
|
||||
|
||||
BusDrawingreviewReceiptsVo infoByReviewId = drawingreviewReceiptsService.getInfoByReviewId(designChange.getId());
|
||||
if(infoByReviewId != null && infoByReviewId.getApproveId()!=null){
|
||||
if (infoByReviewId != null && infoByReviewId.getApproveId() != null) {
|
||||
vo.setIsWindow(false);
|
||||
}
|
||||
|
||||
@ -615,25 +612,25 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
||||
if (processEvent.getSubmit()) {
|
||||
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);
|
||||
DesVolumeCatalog volumeCatalog = volumeCatalogService.getOne(Wrappers.<DesVolumeCatalog>lambdaQuery()
|
||||
.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())){
|
||||
} else if ("2".equals(bean.getDesignDisposal())) {
|
||||
LambdaUpdateWrapper<DesVolumeFile> 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<Long> fileIds = Arrays.stream(split)
|
||||
.map(Long::valueOf)
|
||||
@ -655,10 +652,12 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
||||
.eq(DesVolumeFile::getType, DesVolumeFile.BLUEPRINT)
|
||||
.orderByDesc(DesVolumeFile::getVersion)
|
||||
);
|
||||
|
||||
String version = "1.0";
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
String lastVersion = list.getFirst().getVersion();
|
||||
int majorVersion = (int) Math.floor(Double.parseDouble(lastVersion)) + 1;
|
||||
String version = majorVersion + ".0";
|
||||
version = majorVersion + ".0";
|
||||
}
|
||||
|
||||
for (SysOssVo ossVo : ossVoList1) {
|
||||
DesVolumeFile desVolumeFile = new DesVolumeFile();
|
||||
@ -673,7 +672,7 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
||||
volumeFileService.save(desVolumeFile);
|
||||
|
||||
//异步处理二维码
|
||||
self.addQRCodeToPDF(desVolumeFile.getId(),true)
|
||||
self.addQRCodeToPDF(desVolumeFile.getId(), true)
|
||||
.thenAccept(result -> log.info("图纸[{}-{} ]添加二维码成功", desVolumeFile.getFileName(), desVolumeFile.getId()))
|
||||
.exceptionally(ex -> {
|
||||
log.error("图纸[{}-{}]添加二维码失败", desVolumeFile.getFileName(), desVolumeFile.getId(), ex);
|
||||
@ -721,7 +720,6 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
|
||||
* 正常使用只需#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.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
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.common.core.constant.HttpStatus;
|
||||
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.satoken.utils.LoginHelper;
|
||||
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.DesVolumeCatalogQueryReq;
|
||||
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.mapper.DesVolumeCatalogMapper;
|
||||
import org.dromara.design.service.IDesDrawingService;
|
||||
import org.dromara.design.service.IDesVolumeCatalogService;
|
||||
import org.dromara.design.service.IDesVolumeFileService;
|
||||
import org.dromara.design.service.IDesVolumeFileViewerService;
|
||||
import org.dromara.design.service.*;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.system.domain.SysUser;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@ -39,6 +43,9 @@ import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
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.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@ -70,6 +77,9 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
|
||||
@Resource
|
||||
protected IDesDrawingService drawingService;
|
||||
|
||||
@Resource
|
||||
private IDesUserService desUserService;
|
||||
|
||||
|
||||
@Lazy
|
||||
@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'
|
||||
|
@ -375,6 +375,9 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
|
||||
// 为每个子节点递归设置其下一级子节点
|
||||
for (BusBillofquantitiesLimitListVo child : children) {
|
||||
// 递归查询当前子节点的子节点,设置为它的子树
|
||||
if ("0".equals(child.getSid()) && "0".equals(child.getPid())){
|
||||
continue;
|
||||
}
|
||||
List<BusBillofquantitiesLimitListVo> subChildren = buildTree(child.getSid(), parentMap);
|
||||
// 注意:需要在Vo中添加子节点列表字段,用于存储子树
|
||||
child.setChildren(subChildren);
|
||||
|
@ -245,7 +245,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
file, // 上传的文件
|
||||
1, // 跳过1行(表头)
|
||||
0, // 从第0列开始
|
||||
13, // 到第5列结束
|
||||
14, // 到第5列结束
|
||||
BusBillofquantitiesLimitListBo.class // 目标实体类
|
||||
);
|
||||
List<BusBillofquantitiesLimitList> busBillofquantities = new ArrayList<BusBillofquantitiesLimitList>();
|
||||
|
Reference in New Issue
Block a user