施工产值导出
This commit is contained in:
@ -19,7 +19,6 @@ import org.dromara.common.core.utils.file.FileUtils;
|
|||||||
import org.dromara.common.excel.convert.ExcelBigNumberConvert;
|
import org.dromara.common.excel.convert.ExcelBigNumberConvert;
|
||||||
import org.dromara.common.excel.core.*;
|
import org.dromara.common.excel.core.*;
|
||||||
import org.dromara.common.excel.handler.DataWriteHandler;
|
import org.dromara.common.excel.handler.DataWriteHandler;
|
||||||
import org.springframework.http.HttpHeaders;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -208,12 +207,12 @@ public class ExcelUtil {
|
|||||||
/**
|
/**
|
||||||
* 导出多sheet excel(增强版,解决XML安全问题)
|
* 导出多sheet excel(增强版,解决XML安全问题)
|
||||||
*
|
*
|
||||||
* @param sheetData 多个sheet的数据
|
* @param sheetData 多个sheet的数据
|
||||||
* @param sheetNames 多个sheet的名称
|
* @param sheetNames 多个sheet的名称
|
||||||
* @param clazz 实体类
|
* @param clazz 实体类
|
||||||
* @param optionsList 级联下拉选内容列表
|
* @param optionsList 级联下拉选内容列表
|
||||||
*/
|
*/
|
||||||
public static <T> void exportMultiSheetExcelEnhanced(List<List<T>> sheetData, List<String> sheetNames, Class<T> clazz, List<List<DropDownOptions>> optionsList,HttpServletResponse response) throws IOException {
|
public static <T> void exportMultiSheetExcelEnhanced(List<List<T>> sheetData, List<String> sheetNames, Class<T> clazz, List<List<DropDownOptions>> optionsList, HttpServletResponse response) throws IOException {
|
||||||
resetResponse("file", response);
|
resetResponse("file", response);
|
||||||
ExcelWriter excelWriter = null;
|
ExcelWriter excelWriter = null;
|
||||||
ServletOutputStream os = response.getOutputStream();
|
ServletOutputStream os = response.getOutputStream();
|
||||||
@ -493,6 +492,4 @@ public class ExcelUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,15 @@
|
|||||||
package org.dromara.out.controller;
|
package org.dromara.out.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
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 lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
import org.dromara.common.core.validate.EditGroup;
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.excel.utils.ExcelUtil;
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
@ -15,14 +19,24 @@ import org.dromara.common.log.enums.BusinessType;
|
|||||||
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.common.web.core.BaseController;
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.out.domain.OutConstructionValue;
|
||||||
|
import org.dromara.out.domain.OutConstructionValueRange;
|
||||||
import org.dromara.out.domain.bo.OutConstructionValueRangeBo;
|
import org.dromara.out.domain.bo.OutConstructionValueRangeBo;
|
||||||
import org.dromara.out.domain.vo.OutConstructionAllValueRangeVo;
|
import org.dromara.out.domain.vo.OutConstructionAllValueRangeVo;
|
||||||
import org.dromara.out.domain.vo.OutConstructionValueRangeVo;
|
import org.dromara.out.domain.vo.OutConstructionValueRangeVo;
|
||||||
|
import org.dromara.out.domain.vo.OutConstructionValueVo;
|
||||||
import org.dromara.out.service.IOutConstructionValueRangeService;
|
import org.dromara.out.service.IOutConstructionValueRangeService;
|
||||||
|
import org.dromara.out.service.IOutConstructionValueService;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 施工产值范围
|
* 施工产值范围
|
||||||
@ -30,6 +44,7 @@ import java.util.List;
|
|||||||
* @author lilemy
|
* @author lilemy
|
||||||
* @date 2025-09-25
|
* @date 2025-09-25
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@ -38,6 +53,8 @@ public class OutConstructionValueRangeController extends BaseController {
|
|||||||
|
|
||||||
private final IOutConstructionValueRangeService outConstructionValueRangeService;
|
private final IOutConstructionValueRangeService outConstructionValueRangeService;
|
||||||
|
|
||||||
|
private final IOutConstructionValueService outConstructionValueService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询施工产值范围列表
|
* 查询施工产值范围列表
|
||||||
*/
|
*/
|
||||||
@ -54,8 +71,47 @@ public class OutConstructionValueRangeController extends BaseController {
|
|||||||
@Log(title = "施工产值范围", businessType = BusinessType.EXPORT)
|
@Log(title = "施工产值范围", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
public void export(OutConstructionValueRangeBo bo, HttpServletResponse response) {
|
public void export(OutConstructionValueRangeBo bo, HttpServletResponse response) {
|
||||||
List<OutConstructionValueRangeVo> list = outConstructionValueRangeService.queryList(bo);
|
LambdaQueryWrapper<OutConstructionValue> lqw = new LambdaQueryWrapper<>();
|
||||||
ExcelUtil.exportExcel(list, "施工产值范围", OutConstructionValueRangeVo.class, response);
|
lqw.eq(bo.getProjectId() != null, OutConstructionValue::getProjectId, bo.getProjectId());
|
||||||
|
if (bo.getStartDate() != null && bo.getEndDate() != null) {
|
||||||
|
lqw.between(OutConstructionValue::getReportDate, bo.getStartDate(), bo.getEndDate());
|
||||||
|
} else if (bo.getStartDate() != null) {
|
||||||
|
lqw.ge(OutConstructionValue::getReportDate, bo.getStartDate());
|
||||||
|
} else if (bo.getEndDate() != null) {
|
||||||
|
lqw.le(OutConstructionValue::getReportDate, bo.getEndDate());
|
||||||
|
}
|
||||||
|
List<OutConstructionValue> list = outConstructionValueService.list(lqw);
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<OutConstructionValueVo> valueVoList = new ArrayList<>(list.stream().map(value -> {
|
||||||
|
OutConstructionValueVo vo = new OutConstructionValueVo();
|
||||||
|
BeanUtils.copyProperties(value, vo);
|
||||||
|
return vo;
|
||||||
|
}).toList());
|
||||||
|
outConstructionValueService.supplementaryData(valueVoList);
|
||||||
|
Set<Long> weekIds = valueVoList.stream().map(OutConstructionValueVo::getRangeId).collect(Collectors.toSet());
|
||||||
|
List<OutConstructionValueRange> ranges = outConstructionValueRangeService.listByIds(weekIds);
|
||||||
|
Map<Long, List<OutConstructionValueRange>> rangeMap = ranges.stream()
|
||||||
|
.collect(Collectors.groupingBy(OutConstructionValueRange::getId));
|
||||||
|
Map<Long, List<OutConstructionValueVo>> map = valueVoList.stream()
|
||||||
|
.collect(Collectors.groupingBy(OutConstructionValueVo::getRangeId));
|
||||||
|
List<List<OutConstructionValueVo>> valueList = new ArrayList<>();
|
||||||
|
List<String> nameList = new ArrayList<>();
|
||||||
|
for (Map.Entry<Long, List<OutConstructionValueVo>> entry : map.entrySet()) {
|
||||||
|
List<OutConstructionValueVo> valueVos = entry.getValue();
|
||||||
|
valueList.add(valueVos);
|
||||||
|
if (rangeMap.containsKey(entry.getKey())) {
|
||||||
|
OutConstructionValueRange range = rangeMap.get(entry.getKey()).getFirst();
|
||||||
|
nameList.add(range.getStartDate() + " - " + range.getEndDate());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
ExcelUtil.exportMultiSheetExcelEnhanced(valueList, nameList, OutConstructionValueVo.class, null, response);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("导出失败", e);
|
||||||
|
throw new ServiceException("导出失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -103,4 +103,11 @@ public interface IOutConstructionValueService extends IService<OutConstructionVa
|
|||||||
* @return 删除设施设施详情
|
* @return 删除设施设施详情
|
||||||
*/
|
*/
|
||||||
Boolean removeFacilityDetail(OutConstructionValueFacilityReq req);
|
Boolean removeFacilityDetail(OutConstructionValueFacilityReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 补充数据
|
||||||
|
*
|
||||||
|
* @param list 列表
|
||||||
|
*/
|
||||||
|
void supplementaryData(List<OutConstructionValueVo> list);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -346,7 +346,11 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
|||||||
/**
|
/**
|
||||||
* 补充数据
|
* 补充数据
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void supplementaryData(List<OutConstructionValueVo> list) {
|
public void supplementaryData(List<OutConstructionValueVo> list) {
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (OutConstructionValueVo vo : list) {
|
for (OutConstructionValueVo vo : list) {
|
||||||
getName(vo);
|
getName(vo);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user