|
@@ -546,6 +546,120 @@ public class BusinessController extends BaseController {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * 接口11:通过日期范围加水厂(可选)获取连续监测的报表统计信息(没有点位的信息了)
|
|
|
+ */
|
|
|
+ @GetMapping("/continuousAssayCountByDatesNew")
|
|
|
+ public R<Map<String, ContinuousAssayResultResNew>> continuousAssayCountByDatesNew(AssayReq assayReq){
|
|
|
+ log.info("进入了 通过日期范围加水厂(可选)获取连续监测的报表统计信息(没有点位的信息了) 接口,请求参数是{}", JSON.toJSONString(assayReq));
|
|
|
+ DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.SLAVE.name());
|
|
|
+ Map<String, ContinuousAssayResultResNew> map = this.businessService.continuousAssayCountByDatesNew(assayReq);
|
|
|
+ DynamicDataSourceContextHolder.clearDataSourceType();
|
|
|
+ return R.ok(map);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * 接口12:通过日期范围加水厂(可选)获取连续监测的报表统计信息(没有点位的信息了)导出Excel
|
|
|
+ */
|
|
|
+ @GetMapping("/exportContinuousAssayCountByDatesNew")
|
|
|
+ public ResponseEntity<InputStreamResource> exportContinuousAssayCountByDatesNew(AssayReq assayReq){
|
|
|
+ log.info("进入了 通过日期范围加水厂(可选)获取连续监测的报表统计信息(没有点位的信息了)导出Excel 接口,请求参数是{}", JSON.toJSONString(assayReq));
|
|
|
+ DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.SLAVE.name());
|
|
|
+ Map<String, ContinuousAssayResultResNew> map = this.businessService.continuousAssayCountByDatesNew(assayReq);
|
|
|
+ DynamicDataSourceContextHolder.clearDataSourceType();
|
|
|
+
|
|
|
+ // 输出文件路径
|
|
|
+ log.info("配置的输出文件路径及名称是{}", continuousCountDir);
|
|
|
+
|
|
|
+ //表头
|
|
|
+ List<List<String>> headers = new ArrayList<>();
|
|
|
+ headers.add(Arrays.asList("检测指标"));
|
|
|
+ //业务数据
|
|
|
+ List<List<Object>> dates = new ArrayList<>();
|
|
|
+// dates.add();
|
|
|
+// List<String> itemList = Arrays.asList("实际检测数量", "最小值", "最大值", "合格率(%)", "标线(%)", "合格率偏差");
|
|
|
+ //存放业务数据的各个集合
|
|
|
+ List<Integer> collect0 = new ArrayList<>();
|
|
|
+ List<Integer> collect1 = new ArrayList<>();
|
|
|
+ List<Object> collect2 = new ArrayList<>();
|
|
|
+ List<Object> collect3 = new ArrayList<>();
|
|
|
+
|
|
|
+ //拼接表头和业务数据
|
|
|
+ map.forEach((key, value) ->{
|
|
|
+ List<String> headerList = new ArrayList<>();
|
|
|
+ //表头
|
|
|
+ headerList.add(key);
|
|
|
+ headers.add(headerList);
|
|
|
+ //业务数据
|
|
|
+ collect0.add(value.getAssayCounts());
|
|
|
+ collect1.add(value.getZkCounts());
|
|
|
+ collect2.add(value.getPassedRates());
|
|
|
+ collect3.add(value.getRatesDeviation());
|
|
|
+ });
|
|
|
+ //最后的合计
|
|
|
+ ArrayList<String> lastList = new ArrayList<>();
|
|
|
+ lastList.add("合计");
|
|
|
+ headers.add(lastList);
|
|
|
+
|
|
|
+ //处理业务数据
|
|
|
+ ArrayList<Object> list0 = new ArrayList<>();
|
|
|
+ list0.add("实际检测数量");
|
|
|
+ list0.addAll(collect0);
|
|
|
+ collect0.stream().reduce(Integer::sum).ifPresent(list0::add);
|
|
|
+ dates.add(list0);
|
|
|
+
|
|
|
+ ArrayList<Object> list1 = new ArrayList<>();
|
|
|
+ list1.add("质控样检测数量");
|
|
|
+ list1.addAll(collect1);
|
|
|
+ collect1.stream().reduce(Integer::sum).ifPresent(list1::add);
|
|
|
+ dates.add(list1);
|
|
|
+
|
|
|
+ ArrayList<Object> list2 = new ArrayList<>();
|
|
|
+ list2.add("质控样合格率(%)");
|
|
|
+ list2.addAll(collect2);
|
|
|
+ dates.add(list2);
|
|
|
+
|
|
|
+ ArrayList<Object> list3 = new ArrayList<>();
|
|
|
+ list3.add("合格率偏差");
|
|
|
+ list3.addAll(collect3);
|
|
|
+ dates.add(list3);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ log.info("新动态Excel的数据表头是{}", JSON.toJSONString(headers));
|
|
|
+ log.info("新动态Excel的数据列表是{}", JSON.toJSONString(dates));
|
|
|
+
|
|
|
+ // 使用 ByteArrayOutputStream 来捕获 Excel 生成的输出
|
|
|
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
+
|
|
|
+ // 使用 EasyExcel 填充模板并写入到输出流中
|
|
|
+ EasyExcel.write(outputStream)
|
|
|
+// .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 可选:自动调整列宽
|
|
|
+ // 动态头
|
|
|
+ .head(headers)
|
|
|
+ .sheet("Sheet1")
|
|
|
+ // 表格数据
|
|
|
+ .doWrite(dates);
|
|
|
+
|
|
|
+ // 转换 ByteArrayOutputStream 到 ByteArrayInputStream
|
|
|
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
|
|
|
+
|
|
|
+ // 设置 HTTP 响应头
|
|
|
+ HttpHeaders httpHeaders = new HttpHeaders();
|
|
|
+ httpHeaders.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLEncoder.encode("连续检测报表") + ".xlsx");
|
|
|
+ httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
|
|
+
|
|
|
+ // 返回 ResponseEntity
|
|
|
+ return ResponseEntity.ok()
|
|
|
+ .headers(httpHeaders)
|
|
|
+ .body(new InputStreamResource(inputStream));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private static List<List<Object>> getLists() {
|
|
|
List<List<Object>> list = new ArrayList<>();
|
|
|
List<Object> data1 = new ArrayList<>();
|