From 57363177b529c92335cf7214a1aefc4433ae6d81 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 24 Apr 2025 09:29:40 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=8E=BB=E6=8E=89=E5=8E=9F=E5=85=88?= =?UTF-8?q?=E4=B8=80=E5=A5=97=E8=AE=A1=E7=AE=97=E5=88=B0=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=8C=E7=9B=B4=E6=8E=A5=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=A2=84=E7=BD=AE=E4=BD=8D=E7=9A=84=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=A1=A8=E5=92=8C=E5=AE=9E=E9=99=85=E7=85=A7?= =?UTF-8?q?=E7=89=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TerminalPhotoController.java | 202 +++++++++--------- .../xymanager_common/model/StatChannel.java | 2 - .../xymanager_common/model/StatPreset.java | 41 +--- .../shxy/xymanager_common/model/StatTerm.java | 2 - .../xymanager_common/util/EasyExcelUtil.java | 108 +++++----- .../impl/TerminalPhotoServiceImpl.java | 4 +- 6 files changed, 160 insertions(+), 199 deletions(-) diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalPhotoController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalPhotoController.java index f210c7e..452b248 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalPhotoController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalPhotoController.java @@ -164,28 +164,27 @@ public class TerminalPhotoController extends BaseController { ServiceBody serviceBody = terminalPhotoService.getPhotoList(requestIp, vo, termList); if (serviceBody.getCode() == ServiceStatus.SUCCESS) { TerminalPhotoSelectListModel model = serviceBody.getData(); - List hourList = DateUtil.getEachHour(vo.getStarttime(), vo.getEndtime()); - this.buildPhotoStat(termList, model.getList(), hourList); + this.buildPhotoStat(termList, model.getList()); return ResponseReult.success(termList); } else { return ResponseReult.error(serviceBody.getCode(), serviceBody.getMsg()); } } - private void buildPhotoStat(List termList, List list, List hourList) throws Exception { + private void buildPhotoStat(List termList, List list) throws Exception { for (StatTerm statTerm : termList) { List scheduleList = cameraScheduleService.list(statTerm.getTermId()); statTerm.initScheduleList(scheduleList); } if (list != null) { for (TerminalPhotoSelectListModel.PhotoBean photo : list) { - StatTerm term = this.findStatTerm(termList, photo, hourList); + StatTerm term = this.findStatTerm(termList, photo); term.addPhoto(photo); } } } - private StatTerm findStatTerm(List list, TerminalPhotoSelectListModel.PhotoBean photo, List hourList) { + private StatTerm findStatTerm(List list, TerminalPhotoSelectListModel.PhotoBean photo) { StatTerm the = null; for (StatTerm item : list) { if (item.getTermId() == photo.getTermid()) { @@ -199,109 +198,106 @@ public class TerminalPhotoController extends BaseController { the.setCmdid(photo.getCmdid()); list.add(the); } - the.setHourList(hourList); return the; } - @ApiOperation(value = "图片统计导出", notes = "图片统计导出接口", httpMethod = "POST") - @RequestMapping("/exportPhotoStat") - @Log(title = "图片统计导出", type = "导出") - public void exportPhotoStat(@RequestHeader HttpHeaders headers, - @RequestBody @Validated TerminalPhotoSelectVo vo, - HttpServletResponse response) throws Exception { - String requestIp = HeaderUtil.getRequestIp(headers); - vo.setPageindex(1); - vo.setPagesize(100000); - List termList = new ArrayList<>(); - ServiceBody serviceBody = terminalPhotoService.getPhotoList(requestIp, vo, termList); - if (serviceBody.getCode() == ServiceStatus.SUCCESS) { - TerminalPhotoSelectListModel model = serviceBody.getData(); - List hourList = DateUtil.getEachHour(vo.getStarttime(), vo.getEndtime()); - this.buildPhotoStat(termList, model.getList(), hourList); - - response.setContentType("application/vnd.ms-excel"); - response.setCharacterEncoding("utf-8"); - response.setHeader("Content-Disposition", "attachment; filename=" - + URLEncoder.encode("照片统计.xlsx", "UTF-8")); - EasyExcelUtil.exportPhotoStat(termList, response.getOutputStream()); - } - } - - @ApiOperation(value = "图片统计导出合计", notes = "图片统计导出合计接口", httpMethod = "POST") - @RequestMapping("/exportPhotoStatSum") - @Log(title = "图片统计导出合计", type = "导出") - public void exportPhotoStatSum(@RequestHeader HttpHeaders headers, - @RequestBody @Validated TerminalPhotoSelectVo vo, - HttpServletResponse response) throws Exception { - String requestIp = HeaderUtil.getRequestIp(headers); - vo.setPageindex(1); - vo.setPagesize(100000); - List termList = new ArrayList<>(); - ServiceBody serviceBody = terminalPhotoService.getPhotoList(requestIp, vo, termList); - if (serviceBody.getCode() == ServiceStatus.SUCCESS) { - TerminalPhotoSelectListModel model = serviceBody.getData(); - List hourList = DateUtil.getEachHour(vo.getStarttime(), vo.getEndtime()); - this.buildPhotoStat(termList, model.getList(), hourList); - List result = this.buildPhotoStatExcel(termList); +// @ApiOperation(value = "图片统计导出", notes = "图片统计导出接口", httpMethod = "POST") +// @RequestMapping("/exportPhotoStat") +// @Log(title = "图片统计导出", type = "导出") +// public void exportPhotoStat(@RequestHeader HttpHeaders headers, +// @RequestBody @Validated TerminalPhotoSelectVo vo, +// HttpServletResponse response) throws Exception { +// String requestIp = HeaderUtil.getRequestIp(headers); +// vo.setPageindex(1); +// vo.setPagesize(100000); +// List termList = new ArrayList<>(); +// ServiceBody serviceBody = terminalPhotoService.getPhotoList(requestIp, vo, termList); +// if (serviceBody.getCode() == ServiceStatus.SUCCESS) { +// TerminalPhotoSelectListModel model = serviceBody.getData(); +// this.buildPhotoStat(termList, model.getList()); +// +// response.setContentType("application/vnd.ms-excel"); +// response.setCharacterEncoding("utf-8"); +// response.setHeader("Content-Disposition", "attachment; filename=" +// + URLEncoder.encode("照片统计.xlsx", "UTF-8")); +// EasyExcelUtil.exportPhotoStat(termList, response.getOutputStream()); +// } +// } - EasyExcelUtil.createExcel(response, "图片统计合计", result, PhotoStatExcel.class); - } - } +// @ApiOperation(value = "图片统计导出合计", notes = "图片统计导出合计接口", httpMethod = "POST") +// @RequestMapping("/exportPhotoStatSum") +// @Log(title = "图片统计导出合计", type = "导出") +// public void exportPhotoStatSum(@RequestHeader HttpHeaders headers, +// @RequestBody @Validated TerminalPhotoSelectVo vo, +// HttpServletResponse response) throws Exception { +// String requestIp = HeaderUtil.getRequestIp(headers); +// vo.setPageindex(1); +// vo.setPagesize(100000); +// List termList = new ArrayList<>(); +// ServiceBody serviceBody = terminalPhotoService.getPhotoList(requestIp, vo, termList); +// if (serviceBody.getCode() == ServiceStatus.SUCCESS) { +// TerminalPhotoSelectListModel model = serviceBody.getData(); +// this.buildPhotoStat(termList, model.getList()); +// List result = this.buildPhotoStatExcel(termList); +// +// EasyExcelUtil.createExcel(response, "图片统计合计", result, PhotoStatExcel.class); +// } +// } - private List buildPhotoStatExcel(List list) { - List result = new ArrayList<>(); - for (StatTerm term : list) { - PhotoStatExcel item = new PhotoStatExcel(); - item.setCmdid(term.getCmdid()); - item.setTotal(term.getTotal()); - result.add(item); - if (term.getWrongCount() > 0) { - item.setStatus("有异常"); - } else { - item.setStatus("正常"); - } - for (StatChannel channel : term.getChannels()) { - PhotoStatExcel item2 = new PhotoStatExcel(); - item2.setChannelId(channel.getChannelId()); - item2.setTotal(channel.getTotal()); - result.add(item2); - if (channel.getWrongCount() > 0) { - item2.setStatus("有异常"); - } else { - item2.setStatus("正常"); - } - for (StatPreset preset : channel.getPresets()) { - PhotoStatExcel item3 = new PhotoStatExcel(); - item3.setChannelId(channel.getChannelId()); - item3.setPresetId(preset.getPresetId()); - item3.setTotal(preset.getTotal()); - result.add(item3); - if (preset.getWrongCount() > 0) { - item3.setStatus("有异常"); - } else { - item3.setStatus("正常"); - } - for (StatHour hour : preset.getHours()) { - if (hour.isWrong()) { - PhotoStatExcel err = new PhotoStatExcel(); - err.setChannelId(channel.getChannelId()); - err.setPresetId(preset.getPresetId()); - err.setHour(hour.getHour()); - List dateList = new ArrayList<>(); - for (Date date : hour.getTimeList()) { - dateList.add(DateUtil.format(date)); - } - err.setTotal(dateList.size()); - err.setStatus(hour.getWrongDetail()); - err.setDetail(String.join(System.lineSeparator(), dateList)); - result.add(err); - } - } - } - } - } - return result; - } +// private List buildPhotoStatExcel(List list) { +// List result = new ArrayList<>(); +// for (StatTerm term : list) { +// PhotoStatExcel item = new PhotoStatExcel(); +// item.setCmdid(term.getCmdid()); +// item.setTotal(term.getTotal()); +// result.add(item); +// if (term.getWrongCount() > 0) { +// item.setStatus("有异常"); +// } else { +// item.setStatus("正常"); +// } +// for (StatChannel channel : term.getChannels()) { +// PhotoStatExcel item2 = new PhotoStatExcel(); +// item2.setChannelId(channel.getChannelId()); +// item2.setTotal(channel.getTotal()); +// result.add(item2); +// if (channel.getWrongCount() > 0) { +// item2.setStatus("有异常"); +// } else { +// item2.setStatus("正常"); +// } +// for (StatPreset preset : channel.getPresets()) { +// PhotoStatExcel item3 = new PhotoStatExcel(); +// item3.setChannelId(channel.getChannelId()); +// item3.setPresetId(preset.getPresetId()); +// item3.setTotal(preset.getTotal()); +// result.add(item3); +// if (preset.getWrongCount() > 0) { +// item3.setStatus("有异常"); +// } else { +// item3.setStatus("正常"); +// } +// for (StatHour hour : preset.getHours()) { +// if (hour.isWrong()) { +// PhotoStatExcel err = new PhotoStatExcel(); +// err.setChannelId(channel.getChannelId()); +// err.setPresetId(preset.getPresetId()); +// err.setHour(hour.getHour()); +// List dateList = new ArrayList<>(); +// for (Date date : hour.getTimeList()) { +// dateList.add(DateUtil.format(date)); +// } +// err.setTotal(dateList.size()); +// err.setStatus(hour.getWrongDetail()); +// err.setDetail(String.join(System.lineSeparator(), dateList)); +// result.add(err); +// } +// } +// } +// } +// } +// return result; +// } @PostMapping("uploadPhoto") @ApiOperation("上传图片") diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatChannel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatChannel.java index cb19eae..0624475 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatChannel.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatChannel.java @@ -11,7 +11,6 @@ import java.util.List; public class StatChannel { Integer channelId; List presets = new ArrayList<>(); - List hourList; public void addPhoto(TerminalPhotoSelectListModel.PhotoBean photo) { StatPreset the = null; @@ -26,7 +25,6 @@ public class StatChannel { the.setPresetId(photo.getPresetId()); presets.add(the); } - the.init(hourList); the.addPhoto(photo); } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatPreset.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatPreset.java index 66df973..4cb3541 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatPreset.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatPreset.java @@ -5,58 +5,25 @@ import com.shxy.xymanager_common.util.DateUtil; import lombok.Data; import java.util.ArrayList; +import java.util.Date; import java.util.List; @Data public class StatPreset { Integer presetId; - List hours = new ArrayList<>(); List scheduleList = new ArrayList<>(); - - public void init(List hourList) { - if (hours.size() == 0) { - for (String str : hourList) { - StatHour hour = new StatHour(); - hour.setHour(str); - hour.setBase(2); - hours.add(hour); - } - } - } + List timeList = new ArrayList<>(); public void addPhoto(TerminalPhotoSelectListModel.PhotoBean photo) { - String hour = DateUtil.format(photo.getPhotoTime(), "yyyy-MM-dd HH"); - StatHour the = null; - for (StatHour item : hours) { - if (item.getHour().equals(hour)) { - the = item; - break; - } - } - if (the == null) { - the = new StatHour(); - the.setHour(hour); - the.setBase(2); - hours.add(the); - } - the.addPhoto(photo); + timeList.add(photo.getPhotoTime()); } public int getTotal() { - int total = 0; - for (StatHour item : hours) { - total = total + item.getTotal(); - } - return total; + return timeList.size(); } public int getWrongCount() { int count = 0; - for (StatHour item : hours) { - if (item.isWrong()) { - count++; - } - } return count; } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatTerm.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatTerm.java index ac09cbd..f5d799d 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatTerm.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/StatTerm.java @@ -16,7 +16,6 @@ public class StatTerm { Object uploads; String cmdid; List channels = new ArrayList<>(); - List hourList; public void addPhoto(TerminalPhotoSelectListModel.PhotoBean photo) { StatChannel the = null; @@ -31,7 +30,6 @@ public class StatTerm { the.setChannelId(photo.getChannelid()); channels.add(the); } - the.setHourList(hourList); the.addPhoto(photo); } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java index a3649c8..1f67a54 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/EasyExcelUtil.java @@ -225,58 +225,58 @@ public class EasyExcelUtil implements RowWriteHandler { return cellMerge; } - public static void exportPhotoStat(List dataList, OutputStream output) { - // 导出Excel - ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true) - .registerWriteHandler(new SimpleColumnWidthStyleStrategy(24)).build(); - - writerSheet(excelWriter, 0, dataList); - - excelWriter.finish(); - } - - private static void writerSheet(ExcelWriter excelWriter, int idx, List dataList) { - // 表头 - List> heads = new ArrayList<>(); - List head = new ArrayList<>(); - head.add("时间(小时)"); - heads.add(head); - - LinkedHashMap> lineMap = new LinkedHashMap<>(); - // 内容 - List> list = new ArrayList<>(); - for (StatTerm term : dataList) { - for (StatChannel channel : term.getChannels()) { - for (StatPreset preset : channel.getPresets()) { - head = new ArrayList<>(); - String name = term.getCmdid() + "-" + channel.getChannelId() + "-" + preset.getPresetId(); - head.add(name); - heads.add(head); - for (StatHour hour : preset.getHours()) { - List line = lineMap.get(hour.getHour()); - if (line == null) { - line = new ArrayList<>(); - lineMap.put(hour.getHour(), line); - line.add(String.valueOf(hour.getHour())); - } - if (hour.isWrong()) { - List dateList = new ArrayList<>(); - for (Date date : hour.getTimeList()) { - dateList.add(DateUtil.format(date)); - } - line.add(String.join(System.lineSeparator(), dateList)); - } else { - line.add(hour.getTotal() + "张"); - } - } - } - } - } - list.addAll(lineMap.values()); - - WriteSheet writeSheet = EasyExcel.writerSheet(idx, "照片统计") - .head(heads) - .build(); - excelWriter.write(list, writeSheet); - } +// public static void exportPhotoStat(List dataList, OutputStream output) { +// // 导出Excel +// ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true) +// .registerWriteHandler(new SimpleColumnWidthStyleStrategy(24)).build(); +// +// writerSheet(excelWriter, 0, dataList); +// +// excelWriter.finish(); +// } + +// private static void writerSheet(ExcelWriter excelWriter, int idx, List dataList) { +// // 表头 +// List> heads = new ArrayList<>(); +// List head = new ArrayList<>(); +// head.add("时间(小时)"); +// heads.add(head); +// +// LinkedHashMap> lineMap = new LinkedHashMap<>(); +// // 内容 +// List> list = new ArrayList<>(); +// for (StatTerm term : dataList) { +// for (StatChannel channel : term.getChannels()) { +// for (StatPreset preset : channel.getPresets()) { +// head = new ArrayList<>(); +// String name = term.getCmdid() + "-" + channel.getChannelId() + "-" + preset.getPresetId(); +// head.add(name); +// heads.add(head); +// for (StatHour hour : preset.getHours()) { +// List line = lineMap.get(hour.getHour()); +// if (line == null) { +// line = new ArrayList<>(); +// lineMap.put(hour.getHour(), line); +// line.add(String.valueOf(hour.getHour())); +// } +// if (hour.isWrong()) { +// List dateList = new ArrayList<>(); +// for (Date date : hour.getTimeList()) { +// dateList.add(DateUtil.format(date)); +// } +// line.add(String.join(System.lineSeparator(), dateList)); +// } else { +// line.add(hour.getTotal() + "张"); +// } +// } +// } +// } +// } +// list.addAll(lineMap.values()); +// +// WriteSheet writeSheet = EasyExcel.writerSheet(idx, "照片统计") +// .head(heads) +// .build(); +// excelWriter.write(list, writeSheet); +// } } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java index a9bfcb5..18b1d0f 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalPhotoServiceImpl.java @@ -614,7 +614,7 @@ public class TerminalPhotoServiceImpl implements TerminalPhotoService { // } PageInfo result = terminalExtService.getTerminalPage(dyid, lineid, towerid, termid, - search, null, + null, search, null, null, null, vo.getActivityId(), 1, 100000); if (!CollectionUtils.isEmpty(result.getList())) { @@ -625,6 +625,8 @@ public class TerminalPhotoServiceImpl implements TerminalPhotoService { statTerm.setCmdid(terminal.getCmdid()); termList.add(statTerm); } + } else { + termidlist.add(-1); } if (channelid == null || channelid.intValue() == -1) {