Browse Source

事件大屏统计事件统计

master
lichao 2 years ago
parent
commit
03f959ae8d
  1. 19
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/screen/result/EventStreetRatioResultDTO.java
  2. 28
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenController.java
  3. 14
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenDeptEventStatDao.java
  4. 21
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/excel/ScreenReplyExportExcel.java
  5. 21
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/excel/ScreenSixResponseExportExcel.java
  6. 14
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenDeptEventStatService.java
  7. 20
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenDeptEventStatServiceImpl.java
  8. 50
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/screen/ScreenDeptEventStatDao.xml

19
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/screen/result/EventStreetRatioResultDTO.java

@ -0,0 +1,19 @@
package com.elink.esua.epdc.dto.screen.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 街道各种率计算
* @Author zhaoqifeng
* @Date 2022/10/11 10:21
*/
@Data
public class EventStreetRatioResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String streetName;
private String ratio;
}

28
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenController.java

@ -28,8 +28,11 @@ import com.elink.esua.epdc.dto.screen.form.EventStatisticsFormDTO;
import com.elink.esua.epdc.dto.screen.result.BarCategoryResultDTO;
import com.elink.esua.epdc.dto.screen.result.EfficiencyEvaluationResultDTO;
import com.elink.esua.epdc.dto.screen.result.EventStatisticsResultDTO;
import com.elink.esua.epdc.dto.screen.result.EventStreetRatioResultDTO;
import com.elink.esua.epdc.modules.screen.excel.ScreenDataExportExcel;
import com.elink.esua.epdc.modules.screen.excel.ScreenDistrictDataExportExcel;
import com.elink.esua.epdc.modules.screen.excel.ScreenReplyExportExcel;
import com.elink.esua.epdc.modules.screen.excel.ScreenSixResponseExportExcel;
import com.elink.esua.epdc.modules.screen.service.ScreenDeptEventEfficiencyService;
import com.elink.esua.epdc.modules.screen.service.ScreenDeptEventStatService;
import lombok.extern.slf4j.Slf4j;
@ -120,6 +123,31 @@ public class ScreenController {
exportList2.forEach(item -> item.setIndex(i.getAndIncrement()));
}
excelWriter.write(exportList2, writeSheet2);
// 统计六小时响应率
List<ScreenSixResponseExportExcel> exportList3 = new ArrayList<>();
WriteSheet writeSheet3 = EasyExcelFactory.writerSheet(3, "6小时维度响应率").head(ScreenSixResponseExportExcel.class).build();
List<EventStreetRatioResultDTO> list3 = screenDeptEventStatService.getSixHoursResponse(formDTO);
if (CollectionUtils.isNotEmpty(list3)) {
exportList3 = list3.stream().map(item -> ConvertUtils.sourceToTarget(item, ScreenSixResponseExportExcel.class)).collect(Collectors.toList());
}
excelWriter.write(exportList3, writeSheet3);
// 一天7小时五天为维度的按期回复率
List<ScreenReplyExportExcel> exportList4 = new ArrayList<>();
WriteSheet writeSheet4 = EasyExcelFactory.writerSheet(4, "一天7小时五天为维度的按期回复率").head(ScreenReplyExportExcel.class).build();
List<EventStreetRatioResultDTO> list4 = screenDeptEventStatService.getReplyRatio(formDTO);
if (CollectionUtils.isNotEmpty(list4)) {
exportList4 = list4.stream().map(item -> ConvertUtils.sourceToTarget(item, ScreenReplyExportExcel.class)).collect(Collectors.toList());
}
excelWriter.write(exportList4, writeSheet4);
} catch (Exception e) {
log.error("export exception", e);
} finally {

14
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenDeptEventStatDao.java

@ -24,6 +24,7 @@ import com.elink.esua.epdc.dto.item.result.YellowRedInfoResultDTO;
import com.elink.esua.epdc.dto.screen.ScreenDeptEventStatDTO;
import com.elink.esua.epdc.dto.screen.form.EventStatisticsFormDTO;
import com.elink.esua.epdc.dto.screen.result.EventStatisticsResultDTO;
import com.elink.esua.epdc.dto.screen.result.EventStreetRatioResultDTO;
import com.elink.esua.epdc.modules.screen.entity.ScreenDeptEventStatEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -114,4 +115,17 @@ public interface ScreenDeptEventStatDao extends BaseDao<ScreenDeptEventStatEntit
*/
List<YellowRedInfoResultDTO> getYellowRedInfo(EventStatisticsFormDTO formDTO);
/**
* 统计六小时响应率
* @param formDTO
* @return
*/
List<EventStreetRatioResultDTO> getSixHoursResponse(EventStatisticsFormDTO formDTO);
/**
* 一天7小时五天为维度的按期回复率
* @param formDTO
* @return
*/
List<EventStreetRatioResultDTO> getReplyRatio(EventStatisticsFormDTO formDTO);
}

21
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/excel/ScreenReplyExportExcel.java

@ -0,0 +1,21 @@
package com.elink.esua.epdc.modules.screen.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* @Description 一天7小时五天为维度的按期回复率
* @Author lc
* @Date 2023/4/13 10:46
*/
@Data
public class ScreenReplyExportExcel {
@ColumnWidth(20)
@ExcelProperty(value = "街道", order = 1)
private String streetName;
@ColumnWidth(20)
@ExcelProperty(value = "一天7小时五天为维度的按期回复率", order = 2)
private String ratio;
}

21
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/excel/ScreenSixResponseExportExcel.java

@ -0,0 +1,21 @@
package com.elink.esua.epdc.modules.screen.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* @Description 6小时维度响应率
* @Author lc
* @Date 2023/4/13 10:46
*/
@Data
public class ScreenSixResponseExportExcel {
@ColumnWidth(20)
@ExcelProperty(value = "街道", order = 1)
private String streetName;
@ColumnWidth(20)
@ExcelProperty(value = "6小时维度响应率", order = 2)
private String ratio;
}

14
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenDeptEventStatService.java

@ -24,6 +24,7 @@ import com.elink.esua.epdc.dto.screen.form.DataStatisticsFormDTO;
import com.elink.esua.epdc.dto.screen.form.EventStatisticsFormDTO;
import com.elink.esua.epdc.dto.screen.result.BarCategoryResultDTO;
import com.elink.esua.epdc.dto.screen.result.EventStatisticsResultDTO;
import com.elink.esua.epdc.dto.screen.result.EventStreetRatioResultDTO;
import com.elink.esua.epdc.modules.screen.entity.ScreenDeptEventStatEntity;
import java.util.List;
@ -76,4 +77,17 @@ public interface ScreenDeptEventStatService extends BaseService<ScreenDeptEventS
*/
List<EventStatisticsResultDTO> getScreenExportData(EventStatisticsFormDTO formDTO);
/**
* 一天7小时五天为维度的按期回复率
* @param formDTO
* @return
*/
List<EventStreetRatioResultDTO> getReplyRatio(EventStatisticsFormDTO formDTO);
/**
* 统计六小时响应率
* @param formDTO
* @return
*/
List<EventStreetRatioResultDTO> getSixHoursResponse(EventStatisticsFormDTO formDTO);
}

20
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenDeptEventStatServiceImpl.java

@ -248,6 +248,26 @@ public class ScreenDeptEventStatServiceImpl extends BaseServiceImpl<ScreenDeptEv
return resultDTOList;
}
/**
* 一天7小时五天为维度的按期回复率
* @param formDTO
* @return
*/
@Override
public List<EventStreetRatioResultDTO> getReplyRatio(EventStatisticsFormDTO formDTO) {
return baseDao.getReplyRatio(formDTO);
}
/**
* 统计六小时响应率
* @param formDTO
* @return
*/
@Override
public List<EventStreetRatioResultDTO> getSixHoursResponse(EventStatisticsFormDTO formDTO) {
return baseDao.getSixHoursResponse(formDTO);
}
/**
* 获取满意度和满意率
*

50
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/screen/ScreenDeptEventStatDao.xml

@ -587,4 +587,54 @@
GROUP BY a.id
ORDER BY a.sort, CONVERT(a.`name` USING gbk) ASC
</select>
<select id="getSixHoursResponse"
resultType="com.elink.esua.epdc.dto.screen.result.EventStreetRatioResultDTO">
SELECT
SUBSTRING_INDEX( i.PARENT_DEPT_NAMES, '-', 2 ) as streetName,
COUNT(
IF
(getworkminute(b.CREATED_TIME,a.CREATED_TIME)
&lt; 480 ,1, NULL ))/COUNT(1) as ratio
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
LEFT JOIN epdc_item i ON i.ID = a.ITEM_ID
WHERE
b.CREATED_TIME IS NOT NULL
<if test="startDate != null and startDate != ''">
and i.CREATED_TIME &gt;= #{startDate}
</if>
<if test="endDate != null and endDate != ''">
and i.CREATED_TIME &lt;= #{endDate}
</if>
GROUP BY
SUBSTRING_INDEX( i.PARENT_DEPT_NAMES, '-', 2 );
</select>
<select id="getReplyRatio" resultType="com.elink.esua.epdc.dto.screen.result.EventStreetRatioResultDTO">
SELECT
SUBSTRING_INDEX( i.PARENT_DEPT_NAMES, '-', 2 ) as streetName,
COUNT(
IF
(getworkminute(b.CREATED_TIME,a.CREATED_TIME) &lt; 2100 ,1, NULL ))/COUNT(1) as ratio
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
LEFT JOIN epdc_item i ON i.ID = a.ITEM_ID
WHERE
b.CREATED_TIME IS NOT NULL
<if test="startDate != null and startDate != ''">
and i.CREATED_TIME &gt;= #{startDate}
</if>
<if test="endDate != null and endDate != ''">
and i.CREATED_TIME &lt;= #{endDate}
</if>
GROUP BY
SUBSTRING_INDEX( i.PARENT_DEPT_NAMES, '-', 2 );
</select>
</mapper>

Loading…
Cancel
Save