feat: 导入相关

This commit is contained in:
2024-09-13 19:21:41 +08:00
parent 9a971e2066
commit d6467388f6
12 changed files with 129 additions and 52 deletions
@@ -240,7 +240,7 @@ public class ProcessStandardComplianceCheckDetail implements Serializable, Compa
@ApiModelProperty(value = "佐证材料")
@ExcelCollection(name = "", orderNum = "16")
@TableField(exist = false)
private List<ExcelExportUtilPro.FileDetails> fileList = Collections.emptyList();
private List<ExcelExportUtilPro.MaterialFile> fileList = Collections.emptyList();
public List<String> obtainFileIds() {
return material != null ? Arrays.asList(material.split(",")) : Collections.emptyList();
@@ -252,7 +252,7 @@ public class ProcessStandardComplianceCheckDetail implements Serializable, Compa
@ApiModelProperty(value = "辅助说明材料")
@ExcelCollection(name = "", orderNum = "17")
@TableField(exist = false)
private List<ExcelExportUtilPro.FileDetails> fileListTwo = Collections.emptyList();
private List<ExcelExportUtilPro.UnsatisfiedRequireAttachFile> fileListTwo = Collections.emptyList();
public List<String> obtainFileTwoIds() {
return unsatisfiedRequireAttach != null ? Arrays.asList(unsatisfiedRequireAttach.split(",")) : Collections.emptyList();
@@ -546,6 +546,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
@Override
public void exportXls(String taskId, HttpServletResponse response) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
ProcessSccVO businessInfoDTO = handleData.getBusinessInfoDTO();
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
@@ -565,9 +566,13 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
}
try (FileOutputStream fos = new FileOutputStream(url + File.separator + fileName + ".xls")) {
// 获取数据
excelExportUtilPro.settleDocuments(url, "附件", detailInfoList,
excelExportUtilPro.settleDocuments(url, "佐证材料", detailInfoList,
ProcessStandardComplianceCheckDetail::obtainFileIds,
ProcessStandardComplianceCheckDetail::setFileList);
ProcessStandardComplianceCheckDetail::setFileList, ExcelExportUtilPro.MaterialFile.class);
// 获取数据
excelExportUtilPro.settleDocuments(url, "辅助说明材料", detailInfoList,
ProcessStandardComplianceCheckDetail::obtainFileTwoIds,
ProcessStandardComplianceCheckDetail::setFileListTwo, ExcelExportUtilPro.UnsatisfiedRequireAttachFile.class);
// 生成excel
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.HSSF);
@@ -584,9 +589,17 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
newRecordsExport.sort(new ProcessStandardComplianceCheckDetail());
Workbook workbook = ExcelExportUtil
.exportExcel(exportParams, ProcessStandardComplianceCheckDetail.class, detailInfoList);
// 生成超链接
excelExportUtilPro.generateHyperlink("附件", newRecordsExport, workbook,
ProcessStandardComplianceCheckDetail::getFileList, 15);
// 翻译评估结果和佐证材料字段
newRecordsExport.parallelStream().forEach(item -> {
String material = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getMaterial(), listDict);
if (StrUtil.isNotBlank(material)) {
item.setMaterial("佐证材料/" + material);
}
String unsatisfiedRequireAttach = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getUnsatisfiedRequireAttach(), listDict);
if (StrUtil.isNotBlank(unsatisfiedRequireAttach)) {
item.setUnsatisfiedRequireAttach("辅助说明材料/" + unsatisfiedRequireAttach);
}
});
// 导出excel
workbook.write(fos);
// 生成并导出zip
@@ -626,11 +639,11 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 获取数据
excelExportUtilPro.settleDocuments(url, "佐证材料", detailInfoList,
ProcessStandardComplianceCheckDetail::obtainFileIds,
ProcessStandardComplianceCheckDetail::setFileList);
ProcessStandardComplianceCheckDetail::setFileList, ExcelExportUtilPro.MaterialFile.class);
// 获取数据
excelExportUtilPro.settleDocuments(url, "辅助说明材料", detailInfoList,
ProcessStandardComplianceCheckDetail::obtainFileTwoIds,
ProcessStandardComplianceCheckDetail::setFileListTwo);
ProcessStandardComplianceCheckDetail::setFileListTwo, ExcelExportUtilPro.UnsatisfiedRequireAttachFile.class);
// 去除文本的<p>
String regex = "<[^>]*>";
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibrary;
import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibraryDetail;
import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryService;
@@ -42,6 +43,7 @@ public class LawsConformityAssessmentController {
@GetMapping(value = "/page")
@ApiOperationSupport(order = 1)
@RequiresPermissions("lawsConformityAssessment:search")
@Translation
public Result<IPage<LawsConformityAssessmentLibrary>> queryPageList(LawsConformityAssessmentLibrary lawsConformityAssessmentLibrary,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
@@ -228,6 +228,18 @@ public class LawsEvaluationNotMetLibrary implements Serializable {
return file != null ? Arrays.asList(file.split(",")) : Collections.emptyList();
}
/**
* 附件
*/
@ApiModelProperty(value = "辅助说明材料")
@ExcelCollection(name = "", orderNum = "14")
@TableField(exist = false)
private List<ExcelExportUtilPro.UnsatisfiedRequireAttachFile> fileListTwo = Collections.emptyList();
public List<String> obtainFileTwoIds() {
return unsatisfiedRequireAttach != null ? Arrays.asList(unsatisfiedRequireAttach.split(",")) : Collections.emptyList();
}
/**
* 标准ID
*/
@@ -2,6 +2,8 @@ package com.jero.modules.assessmentLibrary.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.laws.utils.ExcelExportUtilPro.MaterialFile;
import com.jero.modules.laws.utils.ExcelExportUtilPro.UnsatisfiedRequireAttachFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
@@ -1,15 +0,0 @@
package com.jero.modules.assessmentLibrary.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
@Data
public class MaterialFile {
@ApiModelProperty(value = "id")
private String id;
@Excel(name = "佐证材料", width = 15)
@ApiModelProperty(value = "佐证材料")
private String fileName;
}
@@ -1,15 +0,0 @@
package com.jero.modules.assessmentLibrary.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
@Data
public class UnsatisfiedRequireAttachFile {
@ApiModelProperty(value = "id")
private String id;
@Excel(name = "辅助说明材料", width = 15)
@ApiModelProperty(value = "辅助说明材料")
private String fileName;
}
@@ -23,14 +23,12 @@
cs.standard_id,
IF(cs.standard_id IS NOT NULL, d.standard_number, cs.standard_number) AS standard_number,
IF(cs.standard_id IS NOT NULL, d.standard_name, cs.standard_name) AS standard_name,
lms.country as applicableMarket,
cs.applicable_market,
cs.valuation_time,
cs.create_time,
cs.all_approval_user,
lms.country
cs.all_approval_user
from laws_conformity_assessment_library cs
left join laws_domestic_standard as d on d.id = cs.standard_id
left join laws_market_standard as lms on lms.id = cs.applicable_market) as t
left join laws_domestic_standard as d on d.id = cs.standard_id) as t
${ew.customSqlSegment}
</select>
@@ -6,12 +6,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.CommonAPI;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.system.vo.SysDictItemCore;
import com.jero.common.util.FileUtils;
import com.jero.common.util.ZipUtil;
import com.jero.common.util.obs.ObsBootUtil;
import com.jero.modules.activiti.util.ExcelUtils;
import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibrary;
import com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibraryDetail;
import com.jero.modules.assessmentLibrary.entity.vo.LawsConformityAssessmentLibraryExportVO;
@@ -66,6 +69,12 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl<Laws
@Resource
private LawsConformityAssessmentLibraryMapper lawsConformityAssessmentLibraryMapper;
@Resource
private ExcelUtils excelUtils;
@Resource
private CommonAPI commonAPI;
/**
* 法规管理员
*/
@@ -142,6 +151,7 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl<Laws
@Override
public void export(HttpServletResponse response, LawsConformityAssessmentLibrary lawsConformityAssessmentLibrary, String fileName, String sheetName, HttpServletRequest req) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
String url = exportExcelTempPath.replace(EXPORT_EXCEL_TEMP, fileName);
File file = new File(url);
if (!file.exists()) {
@@ -199,6 +209,17 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl<Laws
// 复制一份数据
List<LawsConformityAssessmentLibraryExportVO> newRecordsExport = new ArrayList<>(recordsExport);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, LawsConformityAssessmentLibraryExportVO.class, recordsExport);
// 翻译评估结果和佐证材料字段
newRecordsExport.parallelStream().forEach(item -> {
String material = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getMaterial(), listDict);
if (StrUtil.isNotBlank(material)) {
item.setMaterial("佐证材料/" + material);
}
String unsatisfiedRequireAttach = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getUnsatisfiedRequireAttach(), listDict);
if (StrUtil.isNotBlank(unsatisfiedRequireAttach)) {
item.setUnsatisfiedRequireAttach("辅助说明材料/" + unsatisfiedRequireAttach);
}
});
// 生成超链接
generateHyperlink("佐证材料", newRecordsExport, workbook);
generateHyperlinkTwo("辅助说明材料", newRecordsExport, workbook);
@@ -6,16 +6,21 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.jero.common.api.CommonAPI;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.SysDictItemCore;
import com.jero.common.util.FileUtils;
import com.jero.common.util.ZipUtil;
import com.jero.modules.activiti.util.ExcelUtils;
import com.jero.modules.assessmentLibrary.entity.AssessCommon;
import com.jero.modules.assessmentLibrary.entity.LawsEvaluationNotMetLibrary;
import com.jero.modules.assessmentLibrary.mapper.LawsEvaluationNotMetLibraryMapper;
import com.jero.modules.assessmentLibrary.service.ILawsConformityAssessmentLibraryService;
import com.jero.modules.assessmentLibrary.service.ILawsEvaluationNotMetLibraryService;
import com.jero.modules.laws.utils.ExcelExportUtilPro;
import com.jero.modules.laws.utils.ExcelExportUtilPro.FileDetails;
import com.jero.modules.laws.utils.ExcelExportUtilPro.UnsatisfiedRequireAttachFile;
import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -52,6 +57,10 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl<LawsEval
private ExcelExportUtilPro excelExportUtilPro;
@Resource
private ILawsConformityAssessmentLibraryService calService;
@Resource
private CommonAPI commonAPI;
@Resource
private ExcelUtils excelUtils;
@Value("${jero.path.exportExcelTempPath}")
private String exportExcelTempPath;
@@ -110,8 +119,8 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl<LawsEval
@Override
public void export(HttpServletResponse response, LawsEvaluationNotMetLibrary lawsEvaluationNotMet, String fileName,
String sheetName, HttpServletRequest req) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
horizontalCheck(lawsEvaluationNotMet.getSelections());
String url = exportExcelTempPath.replace(EXPORT_EXCEL_TEMP, fileName);
File file = new File(url);
if (!file.exists()) {
@@ -123,7 +132,8 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl<LawsEval
IPage<LawsEvaluationNotMetLibrary> lawsEvaluationNotMets = this.queryPage(lawsEvaluationNotMet, 1, Integer.MAX_VALUE, req);
List<LawsEvaluationNotMetLibrary> records = lawsEvaluationNotMets.getRecords();
excelExportUtilPro.settleDocuments(url, "附件", records, LawsEvaluationNotMetLibrary::obtainFileIds, LawsEvaluationNotMetLibrary::setFileList);
excelExportUtilPro.settleDocuments(url, "附件", records, LawsEvaluationNotMetLibrary::obtainFileIds, LawsEvaluationNotMetLibrary::setFileList, FileDetails.class);
excelExportUtilPro.settleDocuments(url, "辅助说明材料", records, LawsEvaluationNotMetLibrary::obtainFileTwoIds, LawsEvaluationNotMetLibrary::setFileListTwo, UnsatisfiedRequireAttachFile.class);
// 去除文本的<p>
String regex = "<[^>]*>";
@@ -140,8 +150,20 @@ public class LawsEvaluationNotMetLibraryServiceImpl extends ServiceImpl<LawsEval
// 复制一份数据
List<LawsEvaluationNotMetLibrary> newRecordsExport = new ArrayList<>(records);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, LawsEvaluationNotMetLibrary.class, records);
// 翻译评估结果和佐证材料字段
newRecordsExport.parallelStream().forEach(item -> {
String material = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getFile(), listDict);
if (StrUtil.isNotBlank(material)) {
item.setFile("附件/" + material);
}
String unsatisfiedRequireAttach = excelUtils.translateDictValue("id", "file_name", "oss_file", item.getUnsatisfiedRequireAttach(), listDict);
if (StrUtil.isNotBlank(unsatisfiedRequireAttach)) {
item.setUnsatisfiedRequireAttach("辅助说明材料/" + unsatisfiedRequireAttach);
}
});
// 生成超链接
excelExportUtilPro.generateHyperlink("附件", newRecordsExport, workbook, LawsEvaluationNotMetLibrary::getFileList, 12);
excelExportUtilPro.generateHyperlink("辅助说明材料", newRecordsExport, workbook, LawsEvaluationNotMetLibrary::getFileList, 13);
// 导出excel
workbook.write(fos);
// 生成并导出zip
@@ -389,6 +389,18 @@ public class ImportUtil {
parameterMap.put(tag.getDbFieldName(), this.convertInspectContentFile(cellValue, fileMap));
}
}
// 企标稽查内容文件导入
if (FieldCommon.REFERENCE_STANDARD.equals(tag.getDbFieldName()) &&
TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(tag.getIsModel())) {
// if (!this.inspectContentFileValid(cellValue, fileMap)) {
// log.error("第" + row + "列" + tag.getDbFieldTxt() + "填写错误 ");
// errMsg.append("第").append(row).append("列").append(tag.getDbFieldTxt()).append("填写错误 ");
// } else {
// // 转为List
// // 将转好的值加入Map
// parameterMap.put(tag.getDbFieldName(), this.convertInspectContentFile(cellValue, fileMap));
// }
}
}
if (errMsg.toString().contains("") || errMsg.toString().contains("重复") || errMsg.toString().contains("已存在")) {
errMsgList.add(errMsg.toString());
@@ -39,8 +39,30 @@ public class ExcelExportUtilPro {
@ApiModelProperty(value = "id")
private String id;
@Excel(name = "附件/佐证材料", width = 15)
@ApiModelProperty(value = "附件/佐证材料")
@Excel(name = "附件", width = 15)
@ApiModelProperty(value = "附件")
private String fileName;
}
@Setter
@Getter
public static class MaterialFile {
@ApiModelProperty(value = "id")
private String id;
@Excel(name = "佐证材料", width = 15)
@ApiModelProperty(value = "佐证材料")
private String fileName;
}
@Setter
@Getter
public static class UnsatisfiedRequireAttachFile {
@ApiModelProperty(value = "id")
private String id;
@Excel(name = "辅助说明材料", width = 15)
@ApiModelProperty(value = "辅助说明材料")
private String fileName;
}
@@ -78,9 +100,10 @@ public class ExcelExportUtilPro {
return cellStyle;
}
public <T> void settleDocuments(String url, String folderName, List<T> items,
Function<T, List<String>> fileIdProvider,
BiConsumer<T, List<FileDetails>> fileDetailsConsumer) throws IOException {
public <T, R> void settleDocuments(String url, String folderName, List<T> items,
Function<T, List<String>> fileIdProvider,
BiConsumer<T, List<R>> fileDetailsConsumer,
Class<R> fileDetailsClass) throws IOException {
// 构建完整的文件夹路径
String directoryPath = url + File.separator + folderName;
@@ -95,7 +118,8 @@ public class ExcelExportUtilPro {
if (fileIdList != null && !fileIdList.isEmpty()) {
List<OSSFile> ossFileList = ossFileService.listByIds(fileIdList);
if (!ossFileList.isEmpty()) {
List<FileDetails> fileDetailsList = BeanCopyUtils.copyBeanList(ossFileList, FileDetails.class);
// 将OSSFile列表复制为泛型R的列表
List<R> fileDetailsList = BeanCopyUtils.copyBeanList(ossFileList, fileDetailsClass);
fileDetailsConsumer.accept(item, fileDetailsList);
for (OSSFile ossFile : ossFileList) {
InputStream inputStream = ObsBootUtil.getOssFile(ossFile.getUrl());
@@ -110,6 +134,7 @@ public class ExcelExportUtilPro {
}
}
public void writeToLocal(String filePath, InputStream input) throws IOException {
int index;
byte[] bytes = new byte[1024];