Browse Source

大屏导出

feature/dangjian
zhaoqifeng 3 years ago
parent
commit
4e5ee215c3
  1. 3
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/screen/form/EventStatisticsFormDTO.java
  2. 2
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/screen/result/EventStatisticsResultDTO.java
  3. 42
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/controller/ScreenController.java
  4. 9
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/dao/ScreenDeptEventStatDao.java
  5. 38
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/excel/ScreenDataExportExcel.java
  6. 10
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/ScreenDeptEventStatService.java
  7. 24
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/screen/service/impl/ScreenDeptEventStatServiceImpl.java
  8. 1
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/logback-spring.xml
  9. 79
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/screen/ScreenDeptEventStatDao.xml

3
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/screen/form/EventStatisticsFormDTO.java

@ -27,4 +27,7 @@ public class EventStatisticsFormDTO implements Serializable {
private String peopleFlag = "";
private String sort = "";
private String sortType = "desc";
private String mobile;
private String category;
private String evaluationScore;
}

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

@ -54,4 +54,6 @@ public class EventStatisticsResultDTO implements Serializable {
private Integer developClosedCount;
@JsonIgnore
private Integer lawClosedCount;
private Integer responseCount;
}

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

@ -17,7 +17,14 @@
package com.elink.esua.epdc.modules.screen.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.utils.excel.handler.FreezeAndFilter;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.dto.events.form.ItemDailyStatisFormDTO;
@ -26,9 +33,12 @@ 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.modules.screen.excel.ScreenDataExportExcel;
import com.elink.esua.epdc.modules.screen.service.ScreenDeptEventEfficiencyService;
import com.elink.esua.epdc.modules.screen.service.ScreenDeptEventStatService;
import com.elink.esua.epdc.modules.screen.service.ScreenService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -36,13 +46,18 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
* 大屏接口
* @author Administrator
*/
@Slf4j
@RestController
@RequestMapping("screen")
public class ScreenController {
@ -83,4 +98,31 @@ public class ScreenController {
}
@PostMapping("export")
public void export(@RequestBody EventStatisticsFormDTO formDTO, HttpServletResponse response) {
ExcelWriter excelWriter = null;
List<ScreenDataExportExcel> exportList = new ArrayList<>();
try {
String fileName = "大屏数据导出.xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), ScreenDataExportExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("表格").build();
List<EventStatisticsResultDTO> list = screenDeptEventStatService.getScreenExportData(formDTO);
AtomicInteger i = new AtomicInteger(1);
if (CollectionUtils.isNotEmpty(list)) {
exportList = list.stream().map(item -> {
ScreenDataExportExcel excel = ConvertUtils.sourceToTarget(item, ScreenDataExportExcel.class);
return excel;
}).collect(Collectors.toList());
}
excelWriter.write(exportList, writeSheet);
} catch (Exception e) {
log.error("export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
}

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

@ -73,5 +73,14 @@ public interface ScreenDeptEventStatDao extends BaseDao<ScreenDeptEventStatEntit
void deleteData(@Param("statDate") String statDate);
/**
* 大屏导出数据
* @Param formDTO
* @Return {@link List< EventStatisticsResultDTO>}
* @Author zhaoqifeng
* @Date 2022/10/21 16:42
*/
List<EventStatisticsResultDTO> getScreenExportData(EventStatisticsFormDTO formDTO);
}

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

@ -0,0 +1,38 @@
package com.elink.esua.epdc.modules.screen.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import lombok.Data;
/**
* @Description
* @Author zhaoqifeng
* @Date 2022/4/13 10:46
*/
@Data
public class ScreenDataExportExcel {
@ColumnWidth(20)
@ExcelProperty(value = "部门",order = 1)
private String deptName;
@ColumnWidth(20)
@ExcelProperty(value = "问题总上报数",order = 2)
private Integer eventCount;
@ColumnWidth(20)
@ExcelProperty(value = {"分类", "发展诉求"},order = 3)
private Integer developCount;
@ColumnWidth(20)
@ExcelProperty(value = {"分类", "执法诉求"},order = 4)
private Integer lawCount;
@ColumnWidth(20)
@ExcelProperty(value = {"分类", "民生诉求"},order = 5)
private Integer livelihoodCount;
@ColumnWidth(20)
@ExcelProperty(value = "响应数",order = 6)
private Integer responseCount;
@ColumnWidth(20)
@ExcelProperty(value = "办结数",order = 7)
private Integer closedCount;
}

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

@ -66,4 +66,14 @@ public interface ScreenDeptEventStatService extends BaseService<ScreenDeptEventS
*/
BarCategoryResultDTO getEventBar(EventStatisticsFormDTO formDTO);
/**
* 获取大屏导出数据
*
* @Param formDTO
* @Return {@link List< EventStatisticsResultDTO>}
* @Author zhaoqifeng
* @Date 2022/10/21 16:59
*/
List<EventStatisticsResultDTO> getScreenExportData(EventStatisticsFormDTO formDTO);
}

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

@ -209,6 +209,30 @@ public class ScreenDeptEventStatServiceImpl extends BaseServiceImpl<ScreenDeptEv
return getBarCategoryResultDTO(result, list, formDTO.getPeopleFlag());
}
/**
* 获取大屏导出数据
*
* @param formDTO
* @Param formDTO
* @Return {@link List< EventStatisticsResultDTO>}
* @Author zhaoqifeng
* @Date 2022/10/21 16:59
*/
@Override
public List<EventStatisticsResultDTO> getScreenExportData(EventStatisticsFormDTO formDTO) {
if (NumConstant.ONE_STR.equals(formDTO.getStatType())) {
//日期为当前日期前一天
formDTO.setStatDate(DateUtils.format(DateUtils.addDateDays(new Date(), -1), DateUtils.DATE_PATTERN));
} else if (NumConstant.TWO_STR.equals(formDTO.getStatType())) {
//日期为本月
formDTO.setStatDate(DateUtils.format(new Date(), DateUtils.DATE_PATTERN).substring(0, 7));
} else if (NumConstant.THREE_STR.equals(formDTO.getStatType())) {
//日期为本年
formDTO.setStatDate(DateUtils.format(new Date(), DateUtils.DATE_PATTERN).substring(0, 4));
}
return baseDao.getScreenExportData(formDTO);
}
private BarCategoryResultDTO getBarCategoryResultDTO(BarCategoryResultDTO result, List<EventStatisticsResultDTO> list, String peopleFlag) {
if (CollectionUtils.isNotEmpty(list)) {
List<BarCategoryDTO> barList = list.stream().map(item -> {

1
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/logback-spring.xml

@ -137,6 +137,7 @@
<logger name="com.elink.esua.epdc.modules.comment.dao" level="DEBUG"/>
<logger name="com.elink.esua.epdc.modules.events.dao" level="DEBUG"/>
<logger name="com.elink.esua.epdc.modules.issue.dao" level="DEBUG"/>
<logger name="com.elink.esua.epdc.modules.screen.dao" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="INFO_FILE"/>

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

@ -242,4 +242,83 @@
GROUP BY a.id
ORDER BY a.sort
</select>
<select id="getScreenExportData" resultType="com.elink.esua.epdc.dto.screen.result.EventStatisticsResultDTO">
SELECT a.id AS deptId,
a.`name` AS deptName,
a.pid,
a.pids,
a.type_key AS deptLevel,
a.sort AS deptSort,
IFNULL(SUM(b.eventCount), 0) AS 'eventCount',
IFNULL(SUM(b.closedCount), 0) AS 'closedCount',
IFNULL(SUM(b.livelihoodCount), 0) AS 'livelihoodCount',
IFNULL(SUM(b.developCount), 0) AS 'developCount',
IFNULL(SUM(b.lawCount), 0) AS 'lawCount',
IFNULL(SUM(b.responseCount), 0) AS 'responseCount'
FROM meta_sys_dept a
LEFT JOIN (
SELECT a.ALL_DEPT_IDS,
COUNT(a.ID) AS 'eventCount',
CASE WHEN a.ITEM_STATE = '10' THEN COUNT(a.ID) END AS 'closedCount',
CASE a.PEOPLE_FLAG WHEN '0' THEN COUNT(a.ID) END AS 'livelihoodCount',
CASE a.PEOPLE_FLAG WHEN '1' THEN COUNT(a.ID) END AS 'developCount',
CASE a.PEOPLE_FLAG WHEN '2' THEN COUNT(a.ID) END AS 'lawCount',
COUNT(c.ITEM_ID) AS 'responseCount'
FROM epdc_item a
LEFT JOIN (
SELECT h.id,
h.item_id,
h.created_time,
h.state
FROM epdc_item ei
INNER JOIN epdc_item_handle_process h ON ei.id = h.item_id
WHERE ei.is_people = '1'
AND ei.del_flag = '0'
AND ei.event_id IS NULL
AND ei.issue_id IS NULL
AND h.del_flag = '0'
AND h.created_time = (SELECT max(created_time)
FROM epdc_item_handle_process
WHERE h.item_id = item_id AND del_flag = '0')
AND h.STATE != 1001
GROUP BY h.item_id
ORDER BY h.item_id
) c ON c.ITEM_ID = a.ID
WHERE a.DEL_FLAG = '0'
AND a.PEOPLE_FLAG IS NOT NULL
AND a.IS_PEOPLE = '1'
AND a.EVENT_ID is null
AND a.ISSUE_ID is null
<if test='"1" == statType'>
AND DATE_FORMAT(a.CREATED_TIME, '%Y-%m-%d') &lt;= #{statDate}
</if>
<if test='"2" == statType'>
AND DATE_FORMAT(a.CREATED_TIME, '%Y-%m') = #{statDate}
</if>
<if test='"3" == statType'>
AND DATE_FORMAT(a.CREATED_TIME, '%Y') = #{statDate}
</if>
<if test='"4" == statType'>
AND DATE_FORMAT(a.CREATED_TIME, '%Y-%m-%d') &gt;= #{startDate}
AND DATE_FORMAT(a.CREATED_TIME, '%Y-%m-%d') &lt;= #{endDate}
</if>
<if test="mobile != null and mobile != ''">
AND a.MOBILE LIKE CONCAT('%', #{mobile}, '%')
</if>
<if test="category != null and category != ''">
AND a.CATEGORY_FULL_CODE LIKE CONCAT('%', #{category}, '%')
</if>
<if test="evaluationScore != null">
AND a.EVALUATION_SCORE = #{category}
</if>
GROUP BY ALL_DEPT_IDS
) b ON b.ALL_DEPT_IDS LIKE CONCAT('%', a.id, '%')
WHERE a.del_flag = '0'
AND a.pid = #{deptId}
AND a.type_key != 'street_dept'
AND a.type_key != 'district_dept'
GROUP BY a.id
ORDER BY a.sort
</select>
</mapper>
Loading…
Cancel
Save