预警导出

This commit is contained in:
zhn
2022-06-23 21:30:58 +08:00
parent 380d62d797
commit dd5db0cbeb
2 changed files with 174 additions and 2 deletions
@@ -8,12 +8,16 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
@@ -46,4 +50,14 @@ public class LawsWarnController {
JSONObject jsonResult = JSONObject.fromObject(ok);
return jsonResult;
}
@ApiOperation(value = "导出excel")
@GetMapping(value = "/exportExcel")
// @RequiresPermissions("document:exportExcel")
public void exportExcel(@RequestParam Map<String,Object> map,
HttpServletResponse response,
HttpServletRequest request){
lawsWarnService.exportExcel(map,response,request);
}
}
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.constant.enums.ModuleEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
import com.jero.modules.system.entity.SysCategory;
@@ -13,11 +15,24 @@ import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import com.jero.modules.system.util.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -59,8 +74,7 @@ public class LawsWarnService {
fieldListNew.add(fieldTemp);
}
}
parameter.remove("warnTime");
//封装查询条件(包含高级搜索)
//封装查询条件
String condition = bussDocumentLibraryEOService.getConditionStr(parameter);
int pageNo = Integer.parseInt(parameter.get("pageNo").toString());
int pageSize = Integer.parseInt(parameter.get("pageSize").toString());
@@ -92,4 +106,148 @@ public class LawsWarnService {
}
return infoPage;
}
public void exportExcel(Map<String, Object> map, HttpServletResponse response, HttpServletRequest request) {
String cut = (String) map.get("cut");
String flag = String.valueOf(map.get("flag"));
List<OnlCgformField> onlCgformFieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue());
onlCgformFieldList = onlCgformFieldList.stream().filter(e -> !"id".equals(e.getDbFieldName())
&& !"create_by".equals(e.getDbFieldName())
&& !"create_time".equals(e.getDbFieldName())
&& !"update_by".equals(e.getDbFieldName())
&& !"update_time".equals(e.getDbFieldName())
&& !"sys_org_code".equals(e.getDbFieldName())).collect(Collectors.toList());
//要查询的字段
String fieldQuery = "id,serial_number,title,title_en,state,region,technology_territory,xin1_che1_xing2_shi2_shi1_ri4_qi1,implement_time";
List<String> fieldList = Arrays.asList(fieldQuery.split(","));
//封装查询条件(包含高级搜索)
String condition = bussDocumentLibraryEOService.getConditionStr(map);
List<Map<String, Object>> datas = bussDocumentLibraryEOMapper.getInfoList(" " + StringUtils.join(fieldList, ","), condition);
//部分导出
String partId = (String) map.get("id");
if (StringUtils.isNotBlank(partId)) {
//部门导出的数据
datas = datas.stream().filter(entry -> partId.contains((String) entry.get("id"))).collect(Collectors.toList());
}
OutputStream os = null;
Workbook workbook = new XSSFWorkbook();
//创建工作表对象
Sheet sheet = workbook.createSheet();
String dateName = "";
// 创建头部
String header = "";
if(CutEnum.CN.getValue().equals(cut)){
header = "编号,标题,状态,适用地区,技术领域,";
if("0".equals(flag)){
dateName = "新车型实施日期";
}else{
dateName = "在产车实施日期";
}
}else{
header = "Number,Title,Status,region,Technical Field,";
if("0".equals(flag)){
dateName = "New Type Execution Date";
}else{
dateName = "New Vehicle Execution Date";
}
}
header = header +dateName;
bussDocumentLibraryEOService.createHeader(workbook, sheet, header);
List<OnlCgformField> onlCgformFieldListTemp = new LinkedList<>();
List<OnlCgformField> numberOnlCgformField = onlCgformFieldList.stream().filter(e -> "serial_number".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> titleOnlCgformField = onlCgformFieldList.stream().filter(e -> "title".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> titleEnOnlCgformField = onlCgformFieldList.stream().filter(e -> "title_en".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> stateOnlCgformField = onlCgformFieldList.stream().filter(e -> "state".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> regionOnlCgformField = onlCgformFieldList.stream().filter(e -> "region".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> technologyOnlCgformField = onlCgformFieldList.stream().filter(e -> "technology_territory".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> newCarOnlCgformField = onlCgformFieldList.stream().filter(e -> "xin1_che1_xing2_shi2_shi1_ri4_qi1".equals(e.getDbFieldName())).collect(Collectors.toList());
List<OnlCgformField> implementOnlCgformField = onlCgformFieldList.stream().filter(e -> "implement_time".equals(e.getDbFieldName())).collect(Collectors.toList());
onlCgformFieldListTemp.addAll(numberOnlCgformField);
onlCgformFieldListTemp.addAll(titleOnlCgformField);
onlCgformFieldListTemp.addAll(titleEnOnlCgformField);
onlCgformFieldListTemp.addAll(stateOnlCgformField);
onlCgformFieldListTemp.addAll(regionOnlCgformField);
onlCgformFieldListTemp.addAll(technologyOnlCgformField);
onlCgformFieldListTemp.addAll(newCarOnlCgformField);
onlCgformFieldListTemp.addAll(implementOnlCgformField);
// 创建数据
createDatas(workbook, sheet, datas,onlCgformFieldListTemp, cut,flag);
try {
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (IOException e) {
if(CutEnum.CN.getValue().equals(cut)){
throw new JeroBootException("导出失败");
}else{
throw new JeroBootException("Export failure");
}
}
}
void createDatas(Workbook workbook, Sheet sheet, List<Map<String, Object>> datas,List<OnlCgformField> onlCgformFieldListTemp, String cut,String flag){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象
cellStyle.setAlignment(HorizontalAlignment.CENTER);
//数据字典
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
//树形数据字典
List<SysCategory> categoryList = sysCategoryService.list();
//过滤出树形字段
List<OnlCgformField> treeFieldList = onlCgformFieldListTemp.stream()
.filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType()))
.collect(Collectors.toList());
//下拉单选,多选
List<OnlCgformField> pullFieldList = onlCgformFieldListTemp.stream()
.filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType()) || FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType()))
.collect(Collectors.toList());
int i = 0;
for (Map<String, Object> data : datas) {
if(CutEnum.CN.getValue().equals(cut)){
data.remove("title_en");
}else{
data.remove("title");
}
if("0".equals(flag)){
data.remove("implement_time");
}else{
data.remove("xin1_che1_xing2_shi2_shi1_ri4_qi1");
}
List<OnlCgformField> onlCgformFieldList = new LinkedList<>();
for (Map.Entry<String, Object> entry : data.entrySet()) {
List<OnlCgformField> collect = onlCgformFieldListTemp.stream().filter(e -> e.getDbFieldName().equals(entry.getKey())).collect(Collectors.toList());
onlCgformFieldList.addAll(collect);
//下拉选处理数据字典
bussDocumentLibraryEOService.dictItem(sysDictItems, entry, cut, pullFieldList,null);
//处理树形数据字典
bussDocumentLibraryEOService.treeDictItem(categoryList, entry, treeFieldList, cut,null);
}
Row row = sheet.createRow(i + 1);
i++;
int sheetNum = 0;
for (OnlCgformField onlCgformField : onlCgformFieldList) {
String value = "";
//时间类型
if (FieldTypeEnum.DATE_SINGLE.getValue().equals(onlCgformField.getFieldShowType())) {
if (ObjectUtils.isNotEmpty(data.get(onlCgformField.getDbFieldName()))) {
value = sdf.format(data.get(onlCgformField.getDbFieldName()));
}
} else {
value = StringUtils.valueOf(data.get(onlCgformField.getDbFieldName()));
}
if("null".equals(value)){
value = "";
}
row.createCell(sheetNum).setCellValue(value);
sheetNum++;
}
}
}
}