法规技术评估-条款导出接口。

This commit is contained in:
wangzhijiang
2022-07-14 14:21:58 +08:00
parent 5101adf7a9
commit 54a342082c
4 changed files with 226 additions and 5 deletions
@@ -2,6 +2,7 @@ package com.jero.modules.lawsTechnologyEvaluation.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -160,6 +161,20 @@ public class LawsTechnologyEvaluationItemResultEOController extends JeroControll
return super.exportXls(request, lawsTechnologyEvaluationItemResultEO, LawsTechnologyEvaluationItemResultEO.class, "法规技术评估-条款信息评估结果表");
}
/**
* 导出zip压缩包,带文件。
* @param response
* @param request
* @param lawsTechnologyEvaluationItemResultEO
* @param params
*/
@RequestMapping(value = "/exportZip")
public void exportZip(HttpServletResponse response,HttpServletRequest request,
LawsTechnologyEvaluationItemResultEO lawsTechnologyEvaluationItemResultEO,
@RequestParam Map<String,Object> params) {
this.lawsTechnologyEvaluationItemResultEOService.exportZip(response,request, lawsTechnologyEvaluationItemResultEO,params);
}
/**
* 通过excel导入数据
*
@@ -108,11 +108,15 @@ public class LawsTechnologyEvaluationItemResultEO implements Serializable {
@Excel(name = "附件", width = 15)
@ApiModelProperty(value = "附件")
private java.lang.String accessoryFile;
@TableField(exist = false)
private java.lang.String accessoryFileName;
/**符合性结果*/
@Excel(name = "符合性结果", width = 15)
@ApiModelProperty(value = "符合性结果")
private java.lang.String complianceResult;
@TableField(exist = false)
private java.lang.String complianceResultName;
/**评估人id*/
@Excel(name = "评估人id", width = 15)
@@ -6,7 +6,9 @@ import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluation
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* @Description: 法规技术评估-条款信息评估结果表
@@ -79,4 +81,8 @@ public interface ILawsTechnologyEvaluationItemResultEOService extends IService<L
void batchUpdate(JSONObject jsonObject);
void disposeData(List<LawsTechnologyEvaluationItemResultEO> datas, String cut);
void exportZip(HttpServletResponse response, HttpServletRequest request, LawsTechnologyEvaluationItemResultEO lawsTechnologyEvaluationItemResultEO, Map<String, Object> params);
}
@@ -1,29 +1,41 @@
package com.jero.modules.lawsTechnologyEvaluation.service.impl;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.utils.IOUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.oss.CosBootUtil;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationItemResultEO;
import com.jero.modules.lawsTechnologyEvaluation.enums.ComplianceResultEnum;
import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationItemResultEOMapper;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationItemResultEOService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.RequestSourceEnum;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.system.util.PDFUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.shiro.SecurityUtils;
import org.aspectj.util.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Date;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -31,6 +43,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Description: 法规技术评估-条款信息评估结果表
@@ -42,8 +55,12 @@ import javax.servlet.http.HttpServletRequest;
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl<LawsTechnologyEvaluationItemResultEOMapper, LawsTechnologyEvaluationItemResultEO> implements ILawsTechnologyEvaluationItemResultEOService {
@Value(value = "${jero.path.upload}")
private String uploadpath;
@Autowired
private SysCategoryServiceImpl sysCategoryService;
@Autowired
private IOSSFileService iOSSFileService;
/**
* 保存
@@ -178,10 +195,189 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
List<String> evaluationMethodsList = Arrays.asList(evaluationMethods.split(","));
String name = getTreeName(cut, categoryList, evaluationMethodsList);
data.setEvaluationMethodsName(name);
if(StringUtils.isNotEmpty(data.getComplianceResult())){
data.setComplianceResultName(ComplianceResultEnum.getTextByValue(data.getComplianceResult(),cut));
}
if(StringUtils.isNotEmpty(data.getAccessoryFile())){
List<OSSFile> accessoryFileList = iOSSFileService.getFileInfos(data.getAccessoryFile());
String accessoryFileName = accessoryFileList.stream().map(OSSFile::getFileName).collect(Collectors.joining(","));
data.setAccessoryFileName(accessoryFileName);
}
}
}
}
@Override
public void exportZip(HttpServletResponse response, HttpServletRequest request, LawsTechnologyEvaluationItemResultEO lawsTechnologyEvaluationItemResultEO, Map<String, Object> params) {
String ids = (String)params.get("ids");
String cut = (String)params.get("cut");
QueryWrapper<LawsTechnologyEvaluationItemResultEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsTechnologyEvaluationItemResultEO, request.getParameterMap());
if(StringUtils.isNotEmpty(ids)){
List<String> idList = Arrays.asList(ids.split(","));
queryWrapper.lambda().in(LawsTechnologyEvaluationItemResultEO::getId,idList);
}
List<LawsTechnologyEvaluationItemResultEO> exportData = this.baseMapper.selectList(queryWrapper);
this.disposeData(exportData,cut);
String title = "";
String fileName = "";
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
title = "条款号,条款名称,条款内容,评估人,评估方式,技术文件名称,章节,符合性结果,意见,附件,反馈时间";
fileName = "条款评估结果 " + ".xlsx";
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
title = "Item num,Item name,Item Contents,Evaluator,Evaluation methods,Name of technical document,Section,Compliance results,Opinion,Accessory,Feedback time ";
fileName = "Item Evaluation results " + ".xlsx";
}
OutputStream os = null;
HSSFWorkbook workbook = new HSSFWorkbook();
String path = uploadpath + "/tempZip/itemEvaluationResults/" + System.currentTimeMillis();
try {
response.setHeader("Content-Disposition",
"attachment; filename=" + fileName);
response.setContentType("application/force-download");
HSSFSheet sheet = workbook.createSheet("sheet1");
CellStyle titleCellStyle = workbook.createCellStyle();
titleCellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
titleCellStyle.setWrapText(true);//自动换行
Row firstRow = sheet.createRow(0);
//创建表头
String[] titleArr = title.split(",");
for (int i=0; i<=5; i++){
sheet.setColumnWidth(i,4000);
Cell cell = firstRow.createCell(i);
cell.setCellStyle(titleCellStyle);
cell.setCellValue(titleArr[i]);
}
//设置导出数据
if(CollectionUtils.isNotEmpty(exportData)) {
for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) {
Row dataRow = sheet.createRow(dataIndex + 1);
dataRow.createCell(0).setCellValue(exportData.get(dataIndex).getItemNum());
dataRow.createCell(1).setCellValue(exportData.get(dataIndex).getItemName());
dataRow.createCell(2).setCellValue(exportData.get(dataIndex).getItemContent());
dataRow.createCell(3).setCellValue(exportData.get(dataIndex).getCreateBy());
dataRow.createCell(4).setCellValue(exportData.get(dataIndex).getEvaluationMethodsName());
dataRow.createCell(5).setCellValue(exportData.get(dataIndex).getTechnicalFileName());
dataRow.createCell(6).setCellValue(exportData.get(dataIndex).getSection());
dataRow.createCell(7).setCellValue(exportData.get(dataIndex).getComplianceResultName());
dataRow.createCell(8).setCellValue(exportData.get(dataIndex).getOpinion());
dataRow.createCell(9).setCellValue(exportData.get(dataIndex).getAccessoryFileName());
String feedBackTimeStr = disposeDate(exportData.get(dataIndex).getCreateTime());
dataRow.createCell(10).setCellValue(feedBackTimeStr);
}
}
File fileTemp = new File(path);
if (fileTemp.exists()) {
fileTemp.delete();
}
fileTemp.mkdirs();
//excel
OutputStream excelOS = new FileOutputStream(path + File.separator + fileName);
workbook.write(excelOS);
excelOS.flush();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
for (LawsTechnologyEvaluationItemResultEO data : exportData) {
String accessoryFile = data.getAccessoryFile();
List<OSSFile> fileInfosList = iOSSFileService.getFileInfos(accessoryFile);
if (fileInfosList.size() != 0) {
for (OSSFile ossFile : fileInfosList) {
String url = ossFile.getUrl();
//判断文件是否存在
if(StringUtils.isNotBlank(url)){
//判断文件是否存在
boolean b = CosBootUtil.doesObjectExist(url);
if(b){
InputStream download = CosBootUtil.download(url);
if(url.endsWith(".pdf") || url.endsWith(".PDF")){
String currentTime = sdf.format(new Date());
String waterContent = loginUser.getUsername() + " " + currentTime;
File newFile = PDFUtils.PDFWatermark(download,uploadpath,ossFile.getFileName(),waterContent);
download = new FileInputStream(newFile.getPath());
}
copyFile(download, path + File.separator + ossFile.getFileName());
}
}
}
}
}
ZipUtil.zip(path, path + ".zip");
//文件
FileInputStream fis = new FileInputStream(path + ".zip");
os = response.getOutputStream();
int len = 0;
while ((len = fis.read()) != -1) {
os.write(len);
}
os.flush();
fis.close();
excelOS.close();
}catch (IOException ex){
if(CutEnum.CN.getValue().equals(cut)){
throw new JeroBootException("下载文件失败");
}else{
throw new JeroBootException("Failed to download file");
}
}finally {
IOUtils.closeQuietly(os);
File file = new File(path);
FileUtil.deleteContents(file);
File fileTemp = new File(path + ".zip");
FileUtil.deleteContents(fileTemp);
}
}
public static void copyFile(InputStream in, String newFile) throws IOException {
File file2 = new File(newFile);
if (!file2.exists()) {
file2.createNewFile();
}
try (FileOutputStream ou = new FileOutputStream(newFile);) {
byte[] bs = new byte[1024];
int count = 0;
while ((count = in.read(bs, 0, bs.length)) != -1) {
ou.write(bs, 0, count);
}
ou.flush();
} catch (IOException e) {
e.printStackTrace();
throw new IOException("复制文件失败!");
} finally {
in.close();
}
}
public String disposeDate(Date date){
String result = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(date != null){
result = sdf.format(date);
}
}catch (Exception ex){
ex.printStackTrace();
log.error("处理日期失败:" +ex.getMessage());
}
return result;
}
private String getTreeName(String cut, List<SysCategory> categoryList, List<String> evaluationMethodsList) {
StringBuilder sb = new StringBuilder();
for (String evaluationMethods : evaluationMethodsList) {