From 6efd97d40c1633534e81503e32ac04496bd2ca2a Mon Sep 17 00:00:00 2001 From: lichao <326994889@qq.com> Date: Mon, 17 Jul 2023 15:17:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F-=E8=B6=8B=E5=8A=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/ReplyTotalLineDetailResultDTO.java | 31 ++++ .../result/ResponseTotalPieResultDTO.java | 7 +- .../RsponseTotalLineDetailResultDTO.java | 31 ++++ .../controller/ItemScreenCountController.java | 26 ++++ .../esua/epdc/modules/item/dao/ItemDao.java | 8 ++ .../modules/item/service/ItemService.java | 4 + .../item/service/impl/ItemServiceImpl.java | 127 ++++++++++++++++- .../main/resources/mapper/item/ItemDao.xml | 134 +++++++++++++++++- 8 files changed, 361 insertions(+), 7 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ReplyTotalLineDetailResultDTO.java create mode 100644 esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/RsponseTotalLineDetailResultDTO.java diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ReplyTotalLineDetailResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ReplyTotalLineDetailResultDTO.java new file mode 100644 index 000000000..69182dd1f --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ReplyTotalLineDetailResultDTO.java @@ -0,0 +1,31 @@ +package com.elink.esua.epdc.dto.item.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 大屏-回复趋势-SQL返回值DTO + * @Author wgf + * @Date 2022-10-11 + */ +@Data +public class ReplyTotalLineDetailResultDTO implements Serializable { + private static final long serialVersionUID = -2494874960456321677L; + + /** + * 时间 + */ + private String time; + + /** + * 回复 + */ + private String hf; + + /** + * 未回复 + */ + private String whf; + +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ResponseTotalPieResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ResponseTotalPieResultDTO.java index 3e3e6749c..dbe876434 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ResponseTotalPieResultDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ResponseTotalPieResultDTO.java @@ -21,10 +21,15 @@ public class ResponseTotalPieResultDTO implements Serializable { /** * 值 */ - private String value; + private Integer value; /** * 占比 */ private String proportion; + + /** + * 总数 + */ + private Integer total; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/RsponseTotalLineDetailResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/RsponseTotalLineDetailResultDTO.java new file mode 100644 index 000000000..9b43e771c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/RsponseTotalLineDetailResultDTO.java @@ -0,0 +1,31 @@ +package com.elink.esua.epdc.dto.item.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 大屏-响应趋势-SQL返回值DTO + * @Author wgf + * @Date 2022-10-11 + */ +@Data +public class RsponseTotalLineDetailResultDTO implements Serializable { + private static final long serialVersionUID = -2494874960456321677L; + + /** + * 时间 + */ + private String time; + + /** + * 响应 + */ + private String xy; + + /** + * 未响应 + */ + private String wxy; + +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemScreenCountController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemScreenCountController.java index 7c060a88b..1e1fd4b53 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemScreenCountController.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemScreenCountController.java @@ -157,6 +157,32 @@ public class ItemScreenCountController { return new Result>().ok(list); } + /** + * @Description: 大屏-6小时维度趋势 + * @param formDTO: + * @Return com.elink.esua.epdc.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/7/17 13:51 + */ + @GetMapping("responseSixHoursTrend") + public Result responseSixHoursTrend(ScreenTotalFormDTO formDTO) { + ResponseTotalLineResultDTO list = itemService.responseSixHoursTrend(formDTO); + return new Result().ok(list); + } + + /** + * @Description: 大屏-按时回复趋势 + * @param formDTO: + * @Return com.elink.esua.epdc.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/7/17 13:51 + */ + @GetMapping("replyTrend") + public Result replyTrend(ScreenTotalFormDTO formDTO) { + ReplyTotalLineResultDTO list = itemService.replyTrend(formDTO); + return new Result().ok(list); + } + /** * @Description: 大屏-按时回复率 * @param formDTO: diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java index eb4cbab17..a4ee0fe32 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java @@ -554,4 +554,12 @@ public interface ItemDao extends BaseDao { ResponseTotalPieResultDTO responseSixHoursTotal(ScreenTotalFormDTO formDTO); ResponseTotalPieResultDTO replyTotal(ScreenTotalFormDTO formDTO); + + List getReplyDataListByDays(ScreenTotalFormDTO formDTO); + + List getReplyDataListByMonths(ScreenTotalFormDTO formDTO); + + List getResponseDataListByDays(ScreenTotalFormDTO formDTO); + + List getResponseDataListByMonths(ScreenTotalFormDTO formDTO); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java index 928c57857..7d90c001c 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java @@ -808,4 +808,8 @@ public interface ItemService extends BaseService { List responseSixHoursTotal(ScreenTotalFormDTO formDTO); List replyTotal(ScreenTotalFormDTO formDTO); + + ReplyTotalLineResultDTO replyTrend(ScreenTotalFormDTO formDTO); + + ResponseTotalLineResultDTO responseSixHoursTrend(ScreenTotalFormDTO formDTO); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java index 98e8db55b..7691372ce 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java @@ -5351,9 +5351,14 @@ public class ItemServiceImpl extends BaseServiceImpl implem ResponseTotalPieResultDTO dtoResonseNo = new ResponseTotalPieResultDTO(); dtoResonseNo.setName("未按期响应率"); if (dtoResonse.getValue()!=null){ + dtoResonseNo.setValue(dtoResonse.getTotal()-dtoResonse.getValue()); + }else{ + dtoResonseNo.setValue(dtoResonse.getTotal()); + } + /* if (dtoResonse.getValue()!=null){ dtoResonse.setValue(String.valueOf((1-Double.valueOf(dtoResonse.getValue()))*100)); } - dtoResonse.setValue(String.valueOf(Double.valueOf(dtoResonse.getValue())*100)); + dtoResonse.setValue(String.valueOf(Double.valueOf(dtoResonse.getValue())*100));*/ list.add(dtoResonse); list.add(dtoResonseNo); return list; @@ -5364,16 +5369,130 @@ public class ItemServiceImpl extends BaseServiceImpl implem List list = new ArrayList<>(); ResponseTotalPieResultDTO dtoResonse = baseDao.replyTotal(formDTO); ResponseTotalPieResultDTO dtoResonseNo = new ResponseTotalPieResultDTO(); - dtoResonseNo.setName("未按时恢复率"); + dtoResonseNo.setName("未按时恢复"); if (dtoResonse.getValue()!=null){ - dtoResonse.setValue(String.valueOf((1-Double.valueOf(dtoResonse.getValue()))*100)); + dtoResonseNo.setValue(dtoResonse.getTotal()-dtoResonse.getValue()); + }else{ + dtoResonseNo.setValue(dtoResonse.getTotal()); } - dtoResonse.setValue(String.valueOf(Double.valueOf(dtoResonse.getValue())*100)); +/* if (dtoResonse.getValue()!=null){ +// dtoResonse.setValue(String.valueOf((1-Double.valueOf(dtoResonse.getValue()))*100)); + }*/ +// dtoResonse.setValue(String.valueOf(Double.valueOf(dtoResonse.getValue())*100)); list.add(dtoResonse); list.add(dtoResonseNo); return list; } + @Override + public ReplyTotalLineResultDTO replyTrend(ScreenTotalFormDTO formDTO) { + + + ReplyTotalLineResultDTO resultDTO = new ReplyTotalLineResultDTO(); + + // 时间数组 + List timeArr = new ArrayList<>(); + // 回复数组 + List hfArr = new ArrayList<>(); + // 未回复数组 + List whfArr = new ArrayList<>(); + + List dataList = new ArrayList<>(); + if (formDTO.getYearMonth().length() > 4) { + String[] arr = formDTO.getYearMonth().split("-"); + // 按日统计 + timeArr = YearMonthUtils.getMonthFullDay(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])); + formDTO.setTimeArr(timeArr); + dataList = baseDao.getReplyDataListByDays(formDTO); + + } else { + // 按月统计 + timeArr = YearMonthUtils.getMonthBetween(formDTO.getYearMonth() + "-01", formDTO.getYearMonth() + "-12"); + formDTO.setTimeArr(timeArr); + dataList = baseDao.getReplyDataListByMonths(formDTO); + + } + + for (int i = 0; i < timeArr.size(); i++) { + Boolean flag = false; // 是否完成该时间赋值 + for (ReplyTotalLineDetailResultDTO dto : dataList) { + if (timeArr.get(i).equals(dto.getTime())) { + hfArr.add(dto.getHf()); + whfArr.add(dto.getWhf()); + flag = true; + break; + } + } + // 判断该时间是否赋值 + if (!flag) { + hfArr.add("0"); + whfArr.add("0"); + } + } + + // 组装数据 + resultDTO.setXValue(timeArr); + resultDTO.setHfArr(hfArr); + resultDTO.setWhfArr(whfArr); + + return resultDTO; + } + + @Override + public ResponseTotalLineResultDTO responseSixHoursTrend(ScreenTotalFormDTO formDTO) { + + + ResponseTotalLineResultDTO resultDTO = new ResponseTotalLineResultDTO(); + + // 时间数组 + List timeArr = new ArrayList<>(); + // 响应数组 + List xyArr = new ArrayList<>(); + // 未响应数组 + List wxyArr = new ArrayList<>(); + + + List dataList = new ArrayList<>(); + if (formDTO.getYearMonth().length() > 4) { + String[] arr = formDTO.getYearMonth().split("-"); + // 按日统计 + timeArr = YearMonthUtils.getMonthFullDay(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])); + formDTO.setTimeArr(timeArr); + dataList = baseDao.getResponseDataListByDays(formDTO); + + } else { + // 按月统计 + timeArr = YearMonthUtils.getMonthBetween(formDTO.getYearMonth() + "-01", formDTO.getYearMonth() + "-12"); + formDTO.setTimeArr(timeArr); + dataList = baseDao.getResponseDataListByMonths(formDTO); + + } + + for (int i = 0; i < timeArr.size(); i++) { + Boolean flag = false; // 是否完成该时间赋值 + for (RsponseTotalLineDetailResultDTO dto : dataList) { + if (timeArr.get(i).equals(dto.getTime())) { + xyArr.add(dto.getXy()); + wxyArr.add(dto.getWxy()); + flag = true; + break; + } + } + // 判断该时间是否赋值 + if (!flag) { + xyArr.add("0"); + wxyArr.add("0"); + } + } + + // 组装数据 + resultDTO.setXValue(timeArr); + resultDTO.setXyArr(xyArr); + resultDTO.setWxyArr(wxyArr); + + return resultDTO; + } + /** * 重新上报 * diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml index e97b1bfa2..26d7c6258 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml @@ -3219,7 +3219,8 @@ '按期响应率' as name, COUNT( IF - (getworkminute(b.CREATED_TIME,a.CREATED_TIME) <= 480 ,1, NULL ))/COUNT(1) as value + (getworkminute(b.CREATED_TIME,a.CREATED_TIME) <= 480 ,1, NULL )) as value, + COUNT(1) as total FROM ( SELECT l1.CREATED_TIME, l1.ITEM_ID FROM epdc_item_report_interface_log l1 WHERE l1.INTERFACE_NAME = '响应接收' ) a LEFT JOIN ( SELECT l2.CREATED_TIME, l2.ITEM_ID FROM epdc_item_report_interface_log l2 WHERE l2.INTERFACE_NAME LIKE '诉求登记%' ) b ON a.ITEM_ID = b.ITEM_ID @@ -3245,7 +3246,8 @@ '按时回复率' as name, COUNT( IF - (getworkminute(b.CREATED_TIME,a.CREATED_TIME) < 2100 ,1, NULL ))/COUNT(1) as value + (getworkminute(b.CREATED_TIME,a.CREATED_TIME) < 2100 ,1, NULL )) as value, + COUNT(1) as total FROM ( SELECT l1.CREATED_TIME, l1.ITEM_ID FROM epdc_item_report_interface_log l1 WHERE l1.INTERFACE_NAME = '诉求审核' ) a LEFT JOIN ( SELECT l2.CREATED_TIME, l2.ITEM_ID FROM epdc_item_report_interface_log l2 WHERE l2.INTERFACE_NAME = '响应接收' ) b ON a.ITEM_ID = b.ITEM_ID @@ -3265,6 +3267,134 @@ AND i.PEOPLE_FLAG = #{peopleFlag} + + + + +