预警导出
This commit is contained in:
+14
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+160
-2
@@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user