DailyReportController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. package com.ruoyi.powerdistribution.controller;
  2. import com.ruoyi.common.core.controller.BaseController;
  3. import com.ruoyi.common.utils.DateUtils;
  4. import com.ruoyi.common.utils.uuid.UUID;
  5. import com.ruoyi.powerdistribution.domain.*;
  6. import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO;
  7. import com.ruoyi.powerdistribution.domain.vo.SupRiskTeam;
  8. import com.ruoyi.powerdistribution.domain.vo.TaskRiskPlan;
  9. import com.ruoyi.powerdistribution.service.*;
  10. import com.ruoyi.powerdistribution.util.GenerateWordUtil;
  11. import io.swagger.annotations.ApiOperation;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.web.bind.annotation.PostMapping;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import javax.activation.MimetypesFileTypeMap;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.io.*;
  20. import java.text.ParseException;
  21. import java.text.SimpleDateFormat;
  22. import java.util.*;
  23. /**
  24. * 日报导出
  25. */
  26. @RestController
  27. @RequestMapping("/power/dailyReport")
  28. public class DailyReportController extends BaseController {
  29. @Value("${printReplenishmentPath}")
  30. private String printReplenishmentPath;
  31. @Autowired
  32. private IPdmReportIllegalDayService pdmReportIllegalDayService;
  33. @Autowired
  34. private IPdmReportPlanDayService pdmReportPlanDayService;
  35. @Autowired
  36. private IPdmReportAppointmentDayService pdmReportAppointmentDayService;
  37. @Autowired
  38. private IPdmReportPlanNextDayService pdmReportPlanNextDayService;
  39. @Autowired
  40. private IPdmWorkPlanService pdmWorkPlanService;
  41. @PostMapping("/export")
  42. @ApiOperation(value = "日报导出")
  43. public void dayExport(HttpServletResponse response, String beingDate,String endDate) throws IOException, ParseException {
  44. Map<String,Object> dataMap = new HashMap();
  45. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  46. Date cvrtFirstDate = sdf.parse(beingDate);
  47. Date cvrtEndDate = sdf.parse(endDate);
  48. //日期公共使用
  49. dataMap.put("rptDate", DateUtils.parseDateToStr("yyyy年MM月dd日",cvrtEndDate));//日报生成日期
  50. dataMap.put("month",new SimpleDateFormat("MM").format(cvrtFirstDate));//月
  51. dataMap.put("beginDay",new SimpleDateFormat("dd").format(cvrtFirstDate));//开始日
  52. dataMap.put("endDay",new SimpleDateFormat("dd").format(cvrtEndDate));//结束日
  53. //1.违章查处情况
  54. long provinceInvestPunishRecNum=0;
  55. long provinceInvestSeriousRecNum=0;
  56. long cityInvestPunishRecNum=0;
  57. long cityInvestSeriousRecNum=0;
  58. long countySelfInvestPunishRecNum=0;
  59. long countySelfInvestSeriousRecNum=0;
  60. long guaraSelfIssuesRecNum=0;
  61. PdmReportIllegalDay pdmReportIllegalDay = new PdmReportIllegalDay();
  62. pdmReportIllegalDay.setStartDate(beingDate);
  63. pdmReportIllegalDay.setEndDate(endDate);
  64. List<PdmReportIllegalDay> illegalList = pdmReportIllegalDayService.selectIllegalReport(pdmReportIllegalDay);
  65. File descFile=null;
  66. if(illegalList!=null && illegalList.size()>1){
  67. pdmReportIllegalDay=illegalList.get(illegalList.size()-1);
  68. provinceInvestPunishRecNum=pdmReportIllegalDay.getProvinceNum1()+pdmReportIllegalDay.getProvinceNum2();
  69. provinceInvestSeriousRecNum=pdmReportIllegalDay.getProvinceNum1();
  70. cityInvestPunishRecNum=pdmReportIllegalDay.getCityNum1()+pdmReportIllegalDay.getCityNum2();
  71. cityInvestSeriousRecNum=pdmReportIllegalDay.getCityNum1();
  72. countySelfInvestPunishRecNum=pdmReportIllegalDay.getCountyNum1()+pdmReportIllegalDay.getCountyNum2();
  73. countySelfInvestSeriousRecNum=pdmReportIllegalDay.getCountyNum1();
  74. guaraSelfIssuesRecNum=pdmReportIllegalDay.getCheckNum();
  75. }
  76. dataMap.put("illegalList",illegalList);//列表明细
  77. dataMap.put("provinceInvestPunishRecNum",provinceInvestPunishRecNum);//被省公司查处违章
  78. dataMap.put("provinceInvestSeriousRecNum",provinceInvestSeriousRecNum);//严重违章
  79. dataMap.put("cityInvestPunishRecNum",cityInvestPunishRecNum);//被市公司查处违章
  80. dataMap.put("cityInvestSeriousRecNum",cityInvestSeriousRecNum);//严重违章
  81. dataMap.put("countySelfInvestPunishRecNum",countySelfInvestPunishRecNum);//县区公司自查处违章
  82. dataMap.put("countySelfInvestSeriousRecNum",countySelfInvestSeriousRecNum);//严重违章
  83. dataMap.put("guaraSelfIssuesRecNum",guaraSelfIssuesRecNum);//保障体系自查问题
  84. dataMap.put("guaraCityIssuesRecNum",0);//其中市公司查处问题
  85. //(二)作业计划执行情况
  86. long jobRecNum=0;
  87. long exceRecNum=0;
  88. long cancelRecNum=0;
  89. String implementationRate="0%";
  90. long tmpPlanRecNum=0;
  91. String tmpPlanRate="0%";
  92. long temporaryCancelSum=0;
  93. PdmReportPlanDay pdmReportPlanDay = new PdmReportPlanDay();
  94. pdmReportPlanDay.setStartDate(beingDate);
  95. pdmReportPlanDay.setEndDate(endDate);
  96. List<PdmReportPlanDay> planlist = pdmReportPlanDayService.selectPlanReport(pdmReportPlanDay);
  97. if(planlist!=null && planlist.size()>1){
  98. pdmReportPlanDay=planlist.get(planlist.size()-1);
  99. jobRecNum=pdmReportPlanDay.getWeekSum();
  100. exceRecNum=pdmReportPlanDay.getWeekSum()-pdmReportPlanDay.getWeekCancelSum();
  101. cancelRecNum=pdmReportPlanDay.getWeekCancelSum();
  102. implementationRate=pdmReportPlanDay.getWeekRatio();
  103. tmpPlanRecNum=pdmReportPlanDay.getTemporarySum();
  104. temporaryCancelSum=pdmReportPlanDay.getTemporaryCancelSum();
  105. tmpPlanRate=pdmReportPlanDay.getTemporaryPlanRatio();
  106. }
  107. dataMap.put("jobRecNum",jobRecNum);//周计划发布作业信息条数
  108. dataMap.put("exceRecNum",exceRecNum);//已执行
  109. dataMap.put("cancelRecNum",cancelRecNum);//已取消
  110. dataMap.put("implementationRate",implementationRate);//执行率
  111. dataMap.put("tmpPlanRecNum",tmpPlanRecNum);//临时计划
  112. dataMap.put("cancelTmpPlanRecNum",temporaryCancelSum);//取消计划数
  113. dataMap.put("tmpPlanRate",tmpPlanRate);//临时计划率
  114. dataMap.put("repairRecNum",0);//已执行临时计划包含抢修
  115. dataMap.put("operateRecNum",0);//操作条数
  116. dataMap.put("planlist",planlist);//操作条数
  117. //(三)人员到岗到位履职情况
  118. long supervTimes=0;
  119. long leaderSupervTimes=0;
  120. long manageSupervTimes=0;
  121. long nonfulfilmentNum=0;
  122. long derelictionDutyNum=0;
  123. PdmReportAppointmentDay pdmReportAppointmentDay = new PdmReportAppointmentDay();
  124. pdmReportAppointmentDay.setStartDate(beingDate);
  125. pdmReportAppointmentDay.setEndDate(endDate);
  126. List<PdmReportAppointmentDay> appointmentlist = pdmReportAppointmentDayService.selectAppointmentReport(pdmReportAppointmentDay);
  127. if(appointmentlist!=null && appointmentlist.size()>1){
  128. pdmReportAppointmentDay=appointmentlist.get(appointmentlist.size()-1);
  129. supervTimes=pdmReportAppointmentDay.getBossSum()+pdmReportAppointmentDay.getManageSum();
  130. leaderSupervTimes=pdmReportAppointmentDay.getBossSum();
  131. manageSupervTimes=pdmReportAppointmentDay.getManageSum();
  132. nonfulfilmentNum=pdmReportAppointmentDay.getAbsentSum();
  133. derelictionDutyNum= pdmReportAppointmentDay.getAbsentBadSum();
  134. }
  135. dataMap.put("supervTimes",supervTimes);//督察共计次数
  136. dataMap.put("leaderSupervTimes",leaderSupervTimes);//领导督察共计次数
  137. dataMap.put("manageSupervTimes",manageSupervTimes);//管理人员督察次数
  138. dataMap.put("nonfulfilmentNum",nonfulfilmentNum);//未履职(应查未查)现场
  139. dataMap.put("derelictionDutyNum",derelictionDutyNum);//履职不到位
  140. dataMap.put("appointmentlist",appointmentlist);//操作条数
  141. //二、明日配网安全工作安排
  142. long distNetworkProfesRecNum=0;
  143. long switchOperatNum=0;
  144. long distNetworkProjectNum=0;
  145. long expanRelocationNum=0;
  146. long maintenanceNum=0;
  147. long other=0;
  148. long tempPlanNum=0;
  149. long liveWorkingNum=0;
  150. String threeRiskNum="0";
  151. String fourRiskNum="0";
  152. String fiveRiskNum="0";
  153. PdmReportPlanNextDay nextDay = new PdmReportPlanNextDay();
  154. nextDay.setStartDate(DateUtils.getNextDateStr(beingDate,DateUtils.YYYYMMDD,1));
  155. nextDay.setEndDate(DateUtils.getNextDateStr(beingDate,DateUtils.YYYYMMDD,1));
  156. List<PdmReportPlanNextDay> nextDayList = pdmReportPlanNextDayService.selectReportPlanNext(nextDay);
  157. if(nextDayList!=null&& nextDayList.size()>1){
  158. nextDay=nextDayList.get(nextDayList.size()-1);
  159. distNetworkProfesRecNum=nextDay.getWorkTotal();
  160. switchOperatNum=nextDay.getWorkType1Sum();
  161. distNetworkProjectNum=nextDay.getWorkType2Sum();
  162. expanRelocationNum=nextDay.getWorkType3Sum();
  163. maintenanceNum=nextDay.getWorkType4Sum();
  164. other=nextDay.getWorkType5Sum();
  165. tempPlanNum=nextDay.getTemporaryPlanSum();
  166. liveWorkingNum=nextDay.getElePlanSum();
  167. threeRiskNum=nextDay.getPlanLeve3();
  168. fourRiskNum=nextDay.getPlanLeve4();
  169. fiveRiskNum=nextDay.getPlanLeve5();
  170. }
  171. dataMap.put("distNetworkProfesRecNum",distNetworkProfesRecNum);//作业信息总共条数
  172. dataMap.put("switchOperatNum",switchOperatNum);//倒闸操作操作项
  173. dataMap.put("distNetworkProjectNum",distNetworkProjectNum);//配网工程项
  174. dataMap.put("expanRelocationNum",expanRelocationNum);//业扩杆迁
  175. dataMap.put("maintenanceNum",maintenanceNum);//运维检修
  176. dataMap.put("other",other);//其他
  177. dataMap.put("tempPlanNum",tempPlanNum);//临时计划共计
  178. dataMap.put("operateNum",0);//操作项
  179. dataMap.put("kv10Num",0);//10千伏作业
  180. dataMap.put("zeroPointFourKvNum",0);//0.4千伏作业
  181. dataMap.put("liveWorkingNum",liveWorkingNum);//带电作业
  182. dataMap.put("liveDisconnectLeadNum",0);//带电断接引
  183. dataMap.put("assemDeviceNum",0);//带电消缺、装拆设备
  184. dataMap.put("threeRiskNum",threeRiskNum);//三级风险作业
  185. dataMap.put("fourRiskNum",fourRiskNum);//四级风险作业
  186. dataMap.put("fiveRiskNum",fiveRiskNum);//五级风险作业
  187. dataMap.put("liftingOperationNum",0);//起重作业
  188. dataMap.put("verticalPoleNum",0);//立杆
  189. dataMap.put("chgeDeviceNum",0);//更换配变、综配箱等设备
  190. dataMap.put("keyAssignments",0);//重点作业面
  191. dataMap.put("nextDayList",nextDayList);//
  192. //(二)“七分准备”及承载力审查情况
  193. List<String> morrowExistSupRiskCompList=new ArrayList<>(); //存放次日存在超管理承载力风险的单位数据
  194. dataMap.put("morrowExistSupRiskComp",morrowExistSupRiskCompList==null||morrowExistSupRiskCompList.size()==0?"无":String.join(",",morrowExistSupRiskCompList));//次日存在超管理承载力风险的单位
  195. List<SupRiskTeam> supRiskTeamList=new ArrayList<>(); //存放次日存在超作业承载力风险的班组
  196. StringBuilder builder=new StringBuilder();
  197. for(int i=0;i<supRiskTeamList.size();i++){
  198. SupRiskTeam supRiskTeam=supRiskTeamList.get(i);
  199. builder.append((i+1)).append(".").append(supRiskTeam.getTeamName()).append(":").append(String.join(",",supRiskTeam.getHandlingMatters())).append("\r\n");
  200. }
  201. dataMap.put("supRiskTeam",supRiskTeamList==null||supRiskTeamList.size()==0?"无":builder.toString());//次日存在超作业承载力风险的班组
  202. //(三)人员到岗到位履职安排
  203. SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日");
  204. SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
  205. dataMap.put("tomorrow",formatter.format(format.parse(DateUtils.getNextDateStr(endDate,"yyyyMMdd",1))));//获取明天的日期
  206. dataMap.put("cityThreeRiskPlanNum",threeRiskNum);//全市三级作业风险计划
  207. PdmWorkPlanDTO workPlan = new PdmWorkPlanDTO();
  208. workPlan.setStartDate(beingDate);
  209. workPlan.setEndDate(endDate);
  210. workPlan.setLevel3Flag("1");//三级及以上作业
  211. List<PdmWorkPlan> workList = pdmWorkPlanService.selectPdmWorkPlanList(workPlan);
  212. List<String > cityThreeRiskPlanList=new ArrayList<>();
  213. for(int i=0;i<workList.size();i++){
  214. StringBuilder riskPlanBuilder=new StringBuilder();
  215. PdmWorkPlan taskRiskPlan=workList.get(i);
  216. riskPlanBuilder.append((i+1)).append(".").append(taskRiskPlan.getSubmitOrgNm()).append(":").append(taskRiskPlan.getOpContent()).append("。")
  217. .append("把关领导:").append(taskRiskPlan.getWorkPrincipNm()).append("/").append(taskRiskPlan.getWorkPrincipContactMode());
  218. cityThreeRiskPlanList.add(riskPlanBuilder.toString());
  219. }
  220. dataMap.put("cityThreeRiskPlanList",cityThreeRiskPlanList);//全市三级作业风险计划
  221. try {
  222. String fileN = UUID.randomUUID().toString();
  223. File fileFold = new File(printReplenishmentPath+"/temp_print/");
  224. if(!fileFold.exists()){
  225. fileFold.mkdirs();
  226. }
  227. String fileDocPath = fileFold+"/"+fileN+".doc";
  228. GenerateWordUtil.generateWord(dataMap, "衡阳公司配电专业安全管控专班日报.ftl", new OutputStreamWriter(new FileOutputStream(new File(fileDocPath)), "utf-8"));
  229. descFile = new File(fileDocPath);
  230. String type = new MimetypesFileTypeMap().getContentType(descFile);
  231. response.setHeader("Content-type",type);
  232. String filename = new String(descFile.getName().getBytes("utf-8"), "iso-8859-1");
  233. response.setHeader("Content-Disposition", "attachment;filename=" + filename);
  234. response.setContentType("application/octet-stream");
  235. response.reset();
  236. OutputStream outputStream1 = response.getOutputStream();
  237. BufferedInputStream bis = null;
  238. bis = new BufferedInputStream(new FileInputStream(descFile));
  239. byte[] buff = new byte[bis.available()];
  240. bis.read(buff);
  241. outputStream1.write(buff);
  242. outputStream1.close();
  243. bis.close();
  244. } catch (Exception e) {
  245. e.printStackTrace();
  246. }finally {
  247. // if(descFile!=null)
  248. // descFile.deleteOnExit();
  249. }
  250. //下载之后删除
  251. try {
  252. if(descFile.exists()){
  253. descFile.delete();
  254. }
  255. } catch (Exception e) {
  256. e.printStackTrace();
  257. }
  258. }
  259. }