Browse Source

1、修改报表导出方法

develop
bobol 9 months ago
parent
commit
bc23e3fcfe
  1. 75
      lzbi-module/src/main/java/com/lzbi/bi/controller/DcBusiHisReportController.java

75
lzbi-module/src/main/java/com/lzbi/bi/controller/DcBusiHisReportController.java

@ -38,7 +38,6 @@ import java.util.stream.Collectors;
public class DcBusiHisReportController extends BaseController {
@Resource
private LogTimesacleHistoryThreeService logTimesacleHistoryThreeService;
/**
* 分页列表查询
*
@ -70,7 +69,7 @@ public class DcBusiHisReportController extends BaseController {
.sorted(Comparator.comparing(DcDymicReportHeaderVo::getDeviceUUID).thenComparing(DcDymicReportHeaderVo::getParamCode))
.forEach(dcDymicReportHeaderVo -> {
JSONObject ct = new JSONObject();
ct.put("field", "C" + dcDymicReportHeaderVo.getColCode());
ct.put("field", "C"+dcDymicReportHeaderVo.getColCode());
ct.put("title", dcDymicReportHeaderVo.getColName1() + "[" + dcDymicReportHeaderVo.getColName2() + "]");
ct.put("width", 200);
columnMap.put(dcDymicReportHeaderVo.getColCode(), dcDymicReportHeaderVo.getParamCode());
@ -87,7 +86,7 @@ public class DcBusiHisReportController extends BaseController {
.forEach(tVo -> {
String ck = tVo.getDeviceUuid() + "_" + tVo.getParamCode();
if (StringUtils.isNotNull(columnMap.get(ck))) {
jdata.put("C" + ck, tVo.getParamValueNum());
jdata.put("C"+ck, tVo.getParamValueNum());
}
});
@ -132,7 +131,7 @@ public class DcBusiHisReportController extends BaseController {
.sorted(Comparator.comparing(DcDymicReportHeaderVo::getDeviceUUID).thenComparing(DcDymicReportHeaderVo::getParamCode))
.forEach(dcDymicReportHeaderVo -> {
JSONObject ct = new JSONObject();
ct.put("deviceName", "C" + dcDymicReportHeaderVo.getColCode());
ct.put("deviceName", "C"+dcDymicReportHeaderVo.getColCode());
ct.put("paramName", dcDymicReportHeaderVo.getColName1() + "[" + dcDymicReportHeaderVo.getColName2() + "]");
columnMap.put(dcDymicReportHeaderVo.getColCode(), ct);
@ -149,7 +148,7 @@ public class DcBusiHisReportController extends BaseController {
data2.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
entry.getValue().stream().sorted(Comparator.comparing(LogTimescaleHistoryThreeVo::getParamCode)).forEach(vo -> {
JSONObject jsonObject = columnMap.get(vo.getDeviceUuid() + "_" + vo.getParamCode());
if (StringUtils.isNotNull(jsonObject)) {
if(StringUtils.isNotNull(jsonObject)){
jsonObject.put(vo.getTimestampKey().toString(), vo.getParamValueNum());
}
tableDatas.add(jsonObject);
@ -161,41 +160,38 @@ public class DcBusiHisReportController extends BaseController {
return AjaxResult.success(dataInfo);
}
}
private String validatorator(LogTimeThreeQueryParamVo queryVo) {
if (StringUtils.isNull(queryVo.getBeginTime()) || StringUtils.isEmpty(queryVo.getBeginTime())) {
if (StringUtils.isNull(queryVo.getBeginTime())||StringUtils.isEmpty(queryVo.getBeginTime())) {
return "查询失败,开始时间不能为空!";
}
if (StringUtils.isNull(queryVo.getEndTime()) || StringUtils.isEmpty(queryVo.getEndTime())) {
if (StringUtils.isNull(queryVo.getEndTime())||StringUtils.isEmpty(queryVo.getEndTime())) {
return "查询失败,结束时间不能为空!";
}
if (StringUtils.isNull(queryVo.getQueryParamClass()) || StringUtils.isEmpty(queryVo.getQueryParamClass())) {
if (StringUtils.isNull(queryVo.getQueryParamClass())||StringUtils.isEmpty(queryVo.getQueryParamClass())) {
return "查询失败,参数类型不能为空!";
}
return null;
}
///按时间 设备+参数 形成数据--时间分组
private List<Map<String, Object>> getMapList(List<LogTimescaleHistoryThreeVo> list, List<DcDymicReportHeaderVo> dcDymicReportHeaderVos) {
Map<String, List<LogTimescaleHistoryThreeVo>> collect = list.stream().collect(Collectors.groupingBy(LogTimescaleHistoryThreeVo::getTimeStampString));
return collect.entrySet().stream().sorted(Map.Entry.comparingByKey()).map(entry -> {
Map<String, Object> map = new LinkedHashMap<>();
map.put("统计时间", entry.getKey());
map.put("统计时间",entry.getKey());
entry.getValue().stream().sorted(Comparator.comparing(LogTimescaleHistoryThreeVo::getDeviceUuid).thenComparing(LogTimescaleHistoryThreeVo::getParamCode)).forEach(vo -> {
String key = vo.getDeviceUuid() + "_" + vo.getParamCode();
String key=vo.getDeviceUuid() + "_" + vo.getParamCode();
Optional<DcDymicReportHeaderVo> first = dcDymicReportHeaderVos.stream().filter(vos -> vos.getColCode().equals(key)).findFirst();
if (first.isPresent()) {
if(first.isPresent()){
//map.put(first.get().getColName1(), first.get().getColName2());
map.put(first.get().getColName1() + '.' + first.get().getColName2(), vo.getParamValueNum());
map.put(first.get().getColName1()+'.'+first.get().getColName2(), vo.getParamValueNum());
}
});
return map;
}).collect(Collectors.toList());
}
/// 设备+参数 形成数据--设备-参数分组
private List<Map<String, Object>> getMapListDevice(List<LogTimescaleHistoryThreeVo> list, List<DcDymicReportHeaderVo> dcDymicReportHeaderVos) {
Map<String, List<LogTimescaleHistoryThreeVo>> collect = list.stream().collect(Collectors.groupingBy(item -> item.getDeviceUuid() + "_" + item.getParamCode()));
private List<Map<String, Object>> getMapListDevice(List<LogTimescaleHistoryThreeVo> list,List<DcDymicReportHeaderVo> dcDymicReportHeaderVos) {
Map<String, List<LogTimescaleHistoryThreeVo>> collect = list.stream().collect(Collectors.groupingBy(item->item.getDeviceUuid()+"_"+item.getParamCode()));
List<Map<String, Object>> collect1 = collect.entrySet().stream().map(entry -> {
Map<String, Object> map = new LinkedHashMap<>();
entry.getValue().stream().sorted(Comparator.comparing(LogTimescaleHistoryThreeVo::getTimestampKey).thenComparing(LogTimescaleHistoryThreeVo::getParamCode)).forEach(vo -> {
@ -216,24 +212,22 @@ public class DcBusiHisReportController extends BaseController {
* "生产设备参数统计明细表导出功能
*/
@ApiOperation("生产设备参数统计明细表导出功能--时间纵向")
@PostMapping("/export")
@PostMapping ("/export")
public void export(HttpServletResponse response, LogTimeThreeQueryParamVo queryVo) throws IOException {
List<Map<String, Object>> mapList = getExcellData(queryVo, 2);
toExcel(response, mapList);
List<Map<String, Object>> mapList=getExcellData(queryVo,2);
toExcel(response,mapList);
}
@ApiOperation("生产设备参数统计明细表导出功能-时间横向")
@PostMapping("/export2")
public void export2(HttpServletResponse response, LogTimeThreeQueryParamVo queryVo) throws IOException {
List<Map<String, Object>> mapList = getExcellData(queryVo, 1);
List<Map<String, Object>> mapList=getExcellData(queryVo,1);
// 通过工具类创建writer,默认创建xls格式
toExcel(response, mapList);
toExcel(response,mapList);
}
//获取excel数据 1 excel设备参数为列模式 2 excel时间为列模式 3 浏览器设备参数为列模式
//注意 excel有最大列数显示255 ,超出列数会报错
private List<Map<String, Object>> getExcellData(LogTimeThreeQueryParamVo queryVo, int type) {
private List<Map<String, Object>> getExcellData(LogTimeThreeQueryParamVo queryVo,int type){
// 设置头部数据,
DcDymicHeaderQueryVo dcDymicHeaderQueryVo = new DcDymicHeaderQueryVo();
dcDymicHeaderQueryVo.setParamModels(queryVo.getQueryParamClass());
@ -242,44 +236,39 @@ public class DcBusiHisReportController extends BaseController {
List<String> collect = dcDymicReportHeaderVos.stream().map(DcDymicReportHeaderVo::getParamCode).collect(Collectors.toList());
queryVo.setQueryParamCodes(collect);
List<LogTimescaleHistoryThreeVo> list = logTimesacleHistoryThreeService.selectDetailByQuery(queryVo);
if (type == 1) {
return getMapListDevice(list, dcDymicReportHeaderVos);
} else {
return getMapList(list, dcDymicReportHeaderVos);
if(type==1){
return getMapListDevice(list,dcDymicReportHeaderVos);
}else {
return getMapList(list,dcDymicReportHeaderVos);
}
}
private void toExcel(HttpServletResponse response, List<Map<String, Object>> mapList) {
// String fileName = "report" + DateUtil.now() + ".xls";
private void toExcel(HttpServletResponse response,List<Map<String, Object>> mapList) throws IOException {
String fileName ="report"+DateUtil.now() + ".xls";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
ExcelWriter writer = ExcelUtil.getWriter(true);
writer.write(mapList, true);
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
// response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
try (ServletOutputStream out = response.getOutputStream()) {
//response.setHeader("Content-Disposition", "attachment;filename="+fileName);
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
} catch (IOException e) {
e.printStackTrace();
}
}
@ApiOperation("获取生产IOT系统参数模版列表")
@GetMapping("/getParamClass")
public AjaxResult getParamClass() {
return AjaxResult.success(logTimesacleHistoryThreeService.selectParamModels());
public AjaxResult getParamClass(){
return AjaxResult.success(logTimesacleHistoryThreeService.selectParamModels()) ;
}
@ApiOperation("获取生产IOT系统设备列表")
@GetMapping("/getDevicie/{orgCode}")
public AjaxResult selectDevices(@PathVariable Long orgCode) {
if (orgCode == 0) {
return AjaxResult.success(logTimesacleHistoryThreeService.selectDevices(null));
if(orgCode==0){
return AjaxResult.success(logTimesacleHistoryThreeService.selectDevices(null)) ;
}
return AjaxResult.success(logTimesacleHistoryThreeService.selectDevices(orgCode));
return AjaxResult.success(logTimesacleHistoryThreeService.selectDevices(orgCode)) ;
}
}
Loading…
Cancel
Save