ReportController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package com.ruoyi.powerdistribution.controller;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.alibaba.excel.write.metadata.fill.FillConfig;
  6. import com.ruoyi.common.core.controller.BaseController;
  7. import com.ruoyi.common.utils.DateUtils;
  8. import com.ruoyi.powerdistribution.domain.*;
  9. import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
  10. import com.ruoyi.powerdistribution.domain.vo.ReportDayVO;
  11. import com.ruoyi.powerdistribution.domain.vo.ReportDayWeek;
  12. import com.ruoyi.powerdistribution.service.*;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import lombok.AllArgsConstructor;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.security.access.prepost.PreAuthorize;
  18. import org.springframework.web.bind.annotation.GetMapping;
  19. import org.springframework.web.bind.annotation.PostMapping;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RestController;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.io.IOException;
  24. import java.io.InputStream;
  25. import java.io.OutputStream;
  26. import java.util.ArrayList;
  27. import java.util.List;
  28. @RestController
  29. @AllArgsConstructor
  30. @RequestMapping("/power/report")
  31. //@Api(value = "powerReport", tags = "报表查询")
  32. public class ReportController extends BaseController {
  33. @Autowired
  34. private IPdmReportAppointmentDayService pdmReportAppointmentDayService;
  35. @Autowired
  36. private IPdmReportIllegalDayService pdmReportIllegalDayService;
  37. @Autowired
  38. private IPdmReportPlanDayService pdmReportPlanDayService;
  39. @Autowired
  40. private IPdmReportPlanNextDayService pdmReportPlanNextDayService;
  41. @Autowired
  42. private IPdmWorkPlanService pdmWorkPlanService;
  43. /**
  44. * 日报查询
  45. */
  46. @ApiOperation(value = "日报查询", notes = "日报查询")
  47. @GetMapping("/day")
  48. public ReportDayVO day(String startDate, String endDate) {
  49. PdmReportIllegalDay pdmReportIllegalDay = new PdmReportIllegalDay();
  50. pdmReportIllegalDay.setStartDate(startDate);
  51. pdmReportIllegalDay.setEndDate(endDate);
  52. List<PdmReportIllegalDay> illegalList = pdmReportIllegalDayService.selectIllegalReport(pdmReportIllegalDay);
  53. PdmReportAppointmentDay pdmReportAppointmentDay = new PdmReportAppointmentDay();
  54. pdmReportAppointmentDay.setStartDate(startDate);
  55. pdmReportAppointmentDay.setEndDate(endDate);
  56. List<PdmReportAppointmentDay> appointmentlist = pdmReportAppointmentDayService.selectAppointmentReport(pdmReportAppointmentDay);
  57. PdmReportPlanDay pdmReportPlanDay = new PdmReportPlanDay();
  58. pdmReportPlanDay.setStartDate(startDate);
  59. pdmReportPlanDay.setEndDate(endDate);
  60. List<PdmReportPlanDay> planlist = pdmReportPlanDayService.selectPlanReport(pdmReportPlanDay);
  61. PdmReportPlanNextDay nextDay = new PdmReportPlanNextDay();
  62. nextDay.setStartDate(DateUtils.getNextDateStr(endDate, DateUtils.YYYYMMDD, 1));
  63. nextDay.setEndDate(DateUtils.getNextDateStr(endDate, DateUtils.YYYYMMDD, 1));
  64. List<PdmReportPlanNextDay> nextDayList = pdmReportPlanNextDayService.selectReportPlanNext(nextDay);
  65. ReportDayVO vo = new ReportDayVO();
  66. vo.setAppointmentList(appointmentlist);
  67. vo.setIllegalList((illegalList == null || (illegalList.size() == 1 && illegalList.get(0).getCompany().equals("总计"))) ? new ArrayList<>() : illegalList);
  68. vo.setPlanList(planlist);
  69. vo.setNextDayList(nextDayList);
  70. return vo;
  71. }
  72. /**
  73. * 日报导出 停用
  74. *
  75. * @param response
  76. * @param reportDate
  77. * @throws IOException
  78. */
  79. @PostMapping("/dayExport")
  80. @ApiOperation(value = "日报导出")
  81. public void dayExport(HttpServletResponse response, String reportDate) throws IOException {
  82. PdmReportIllegalDay pdmReportIllegalDay = new PdmReportIllegalDay();
  83. pdmReportIllegalDay.setReportDate(reportDate);
  84. List<PdmReportIllegalDay> illegalList = pdmReportIllegalDayService.selectPdmReportIllegalDayList(pdmReportIllegalDay);
  85. PdmReportAppointmentDay pdmReportAppointmentDay = new PdmReportAppointmentDay();
  86. pdmReportAppointmentDay.setReportDate(reportDate);
  87. List<PdmReportAppointmentDay> appointmentlist = pdmReportAppointmentDayService.selectPdmReportAppointmentDayList(pdmReportAppointmentDay);
  88. PdmReportPlanDay pdmReportPlanDay = new PdmReportPlanDay();
  89. pdmReportPlanDay.setReportDate(reportDate);
  90. List<PdmReportPlanDay> planlist = pdmReportPlanDayService.selectPdmReportPlanDayList(pdmReportPlanDay);
  91. PdmReportPlanNextDay nextDay = new PdmReportPlanNextDay();
  92. nextDay.setReportDate(DateUtils.getNextDateStr(reportDate, DateUtils.YYYYMMDD, 1));
  93. List<PdmReportPlanNextDay> nextDayList = pdmReportPlanNextDayService.selectPdmReportPlanNextDayList(nextDay);
  94. response.setContentType("application/vnd.ms-excel");
  95. response.setCharacterEncoding("utf-8");
  96. String fileName = java.util.UUID.randomUUID() + ".xlsx";
  97. response.setHeader("Content-disposition", "attachment;filename=" + fileName);
  98. String templateFileName = "excelTemplate/dayReport.xlsx";
  99. InputStream fis = Thread.currentThread().getContextClassLoader().getResourceAsStream(templateFileName);
  100. OutputStream ops = response.getOutputStream();
  101. ExcelWriter excelWriter = EasyExcel.write(ops).withTemplate(fis).build();
  102. WriteSheet writeSheet = EasyExcel.writerSheet("违章情况").build();
  103. FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
  104. excelWriter.fill(illegalList, fillConfig, writeSheet);
  105. WriteSheet writeSheet2 = EasyExcel.writerSheet("作业计划").build();
  106. excelWriter.fill(planlist, fillConfig, writeSheet2);
  107. WriteSheet writeSheet3 = EasyExcel.writerSheet("履职情况").build();
  108. excelWriter.fill(appointmentlist, fillConfig, writeSheet3);
  109. WriteSheet writeSheet4 = EasyExcel.writerSheet("明日计划").build();
  110. excelWriter.fill(nextDayList, fillConfig, writeSheet4);
  111. excelWriter.finish();
  112. }
  113. /**
  114. * 周报查询
  115. */
  116. @ApiOperation(value = "周报查询", notes = "周报查询")
  117. @GetMapping("/week")
  118. public ReportDayWeek week(String startDate, String endDate) {
  119. PdmReportIllegalDay pdmReportIllegal = new PdmReportIllegalDay();
  120. pdmReportIllegal.setStartDate(startDate);
  121. pdmReportIllegal.setEndDate(endDate);
  122. List<PdmReportIllegalDay> illegalList = pdmReportIllegalDayService.selectIllegalReport(pdmReportIllegal);
  123. PdmReportAppointmentDay pdmReportAppointmentDay = new PdmReportAppointmentDay();
  124. pdmReportAppointmentDay.setStartDate(startDate);
  125. pdmReportAppointmentDay.setEndDate(endDate);
  126. List<PdmReportAppointmentDay> appointmentlist = pdmReportAppointmentDayService.selectAppointmentReport(pdmReportAppointmentDay);
  127. PdmReportPlanDay pdmReportPlanDay = new PdmReportPlanDay();
  128. pdmReportPlanDay.setStartDate(startDate);
  129. pdmReportPlanDay.setEndDate(endDate);
  130. List<PdmReportPlanDay> planlist = pdmReportPlanDayService.selectPlanReport(pdmReportPlanDay);
  131. PdmReportPlanNextDay nextDay = new PdmReportPlanNextDay();
  132. nextDay.setStartDate(DateUtils.getNextMonday(startDate, DateUtils.YYYYMMDD));
  133. nextDay.setEndDate(DateUtils.getNextSunday(endDate, DateUtils.YYYYMMDD));
  134. List<PdmReportPlanNextDay> nextList = pdmReportPlanNextDayService.selectReportPlanNext(nextDay);
  135. PdmWorkPlanDTO workPlan = new PdmWorkPlanDTO();
  136. workPlan.setStartDate(DateUtils.getNextMonday(startDate, DateUtils.YYYYMMDD));
  137. workPlan.setEndDate(DateUtils.getNextSunday(endDate, DateUtils.YYYYMMDD));
  138. workPlan.setLevel3Flag("1");//三级及以上作业
  139. List<PdmWorkPlan> workList = pdmWorkPlanService.selectPdmWorkPlanList(workPlan);
  140. ReportDayWeek vo = new ReportDayWeek();
  141. vo.setAppointmentList(appointmentlist);
  142. vo.setIllegalList(illegalList);
  143. vo.setPlanList(planlist);
  144. vo.setNextList(nextList);
  145. vo.setWorkList(workList);
  146. return vo;
  147. }
  148. }