package com.ruoyi.powerdistribution.controller; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.powerdistribution.domain.*; import com.ruoyi.powerdistribution.domain.dto.PdmWorkPlanDTO; import com.ruoyi.powerdistribution.domain.vo.SupRiskTeam; import com.ruoyi.powerdistribution.domain.vo.TaskRiskPlan; import com.ruoyi.powerdistribution.domain.vo.ThreeLevelRiskJob; import com.ruoyi.powerdistribution.service.*; import com.ruoyi.powerdistribution.util.GenerateWordUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.activation.MimetypesFileTypeMap; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 周报导出 */ @RestController @RequestMapping("/power/weklyReport") public class WeeklyReportController extends BaseController { @Value("${printReplenishmentPath}") private String printReplenishmentPath; @Autowired private IPdmReportIllegalWeekService pdmReportIllegalWeekService; @Autowired private IPdmReportPlanNextWeekService pdmReportPlanNextWeekService; @Autowired private IPdmWorkPlanService pdmWorkPlanService; @Autowired private IPdmReportPlanNextDayService pdmReportPlanNextDayService; @Autowired private IPdmReportPlanWeekService pdmReportPlanWeekService; @Autowired private IPdmReportAppointmentWeekService pdmReportAppointmentWeekService; @PostMapping("/export") @ApiOperation(value = "周报导出") public void export(HttpServletResponse response, String beingDate,String endDate) throws IOException, ParseException { PdmReportIllegalDay pdmReportIllegalDay = new PdmReportIllegalDay(); pdmReportIllegalDay.setReportDate(beingDate); Map dataMap = new HashMap(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date cvrtFirstDate = sdf.parse(beingDate); Date cvrtEndDate = sdf.parse(endDate); //日期公共使用 String month=new SimpleDateFormat("MM").format(cvrtFirstDate); dataMap.put("beginDay",month+"月"+new SimpleDateFormat("dd").format(cvrtFirstDate)+"日");//开始日 dataMap.put("endDay",month+"月"+new SimpleDateFormat("dd").format(cvrtEndDate)+"日");//结束日 //一.风险计划管控 //1.本周计划执行情况 dataMap.put("jobRecNum",0);//发布作业信息条数 dataMap.put("weekPlanJobReNum",0);//来源于周计划的作业条数 dataMap.put("cancelRecNum",0);//已取消 dataMap.put("implRate",0);//执行率 dataMap.put("lowImplUnit","");//较低的单位 () dataMap.put("lowImplRate","");//较低的单位执行率 dataMap.put("tmpPlanRecNum",0);//临时计划 dataMap.put("repairRecNum",0);//其中抢修 dataMap.put("operateRecNum",0);//操作条数 dataMap.put("maintenanceNum",0);//运维检修 dataMap.put("expanRelocationNum",0);//业扩 dataMap.put("networkReformNum",0);//网改 dataMap.put("tmpPlanRate",0);//临时计划率 dataMap.put("cancelTmpPlanRecNum",0);//临时取消计划数 dataMap.put("tmpPlanImplRate",0);//临时计划执行率 PdmReportPlanWeek pdmReportPlan = new PdmReportPlanWeek(); pdmReportPlan.setReportDate(beingDate); pdmReportPlan.setReportEndDate(endDate); List planlist = pdmReportPlanWeekService.selectPdmReportPlanWeekList(pdmReportPlan); dataMap.put("planlist",planlist);//本周计划执行情况 //2.下周计划安排情况 String nextMonday=DateUtils.getNextMonday(beingDate,"yyyyMMdd"); String nextSunday=DateUtils.getNextSunday(beingDate,"yyyyMMdd"); Date cvrtNextMonday = sdf.parse(nextMonday); Date cvrtNextSunday = sdf.parse(nextSunday); month=new SimpleDateFormat("MM").format(cvrtNextMonday); dataMap.put("nextWeekBeginDay",month+"月"+new SimpleDateFormat("dd").format(cvrtNextMonday)+"日");//下周开始日 dataMap.put("nextWeekEndDay",month+"月"+new SimpleDateFormat("dd").format(cvrtNextSunday)+"日");//下周结束日 dataMap.put("nextWeekJobRecNum",0);//配网专业计划总数 dataMap.put("nextWeekSwitchingNum",0);//倒闸操作 dataMap.put("distribuNetworkEngineNum",0);//配网工程 dataMap.put("nextWeekExpanRelocationNum",0);//业扩杆迁 dataMap.put("nextWeekMaintenanceNum",0);//运维检修 dataMap.put("threeLevelRiskNum",0);//三级风险作业 dataMap.put("fourLevelRiskNum",0);//四级风险作业 dataMap.put("fiveLevelRiskNum",0);//五级风险作业 dataMap.put("liveWorkingNum",0);//带电作业 dataMap.put("liveDisconnectLeadNum",0);//带电断接引 dataMap.put("assemDeviceNum",0);//带电消缺、装拆设备 //三级风险作业内容: List threeLevelRiskJobs=new ArrayList() ; StringBuilder builder=new StringBuilder(); for(int i=0;i workList = pdmWorkPlanService.selectPdmWorkPlanList(workPlan); dataMap.put("threeLevelRiskWorkList",workList);//三级及以上作业列表明细 dataMap.put("fousMaintenanceNum",0);//重点关注检修面个数 String fousMaintenanceInfo="";//重点关注检修面内容 dataMap.put("fousMaintenanceInfo", StringUtils.isEmpty(fousMaintenanceInfo)?"无":fousMaintenanceInfo);//重点关注检修面内容 //下周计划安排情况 PdmReportPlanNextWeek next = new PdmReportPlanNextWeek(); next.setReportDate(nextMonday); next.setReportEndDate(nextSunday); List nextList = pdmReportPlanNextWeekService.selectPdmReportPlanNextWeekList(next); dataMap.put("nextWeekWorkList",nextList);//下周计划安排情况列表 //二、专业反违章履职情况 //1.本周违章查处情况 dataMap.put("investPunishRecAllNum",0);//配网专业共计查处违章 dataMap.put("provinceInvestPunishRecNum",0);//被省公司查处违章 dataMap.put("cityInvestPunishRecNum",0);//被市公司查处违章 dataMap.put("cityInvestSeriousRecNum",0);//严重违章 dataMap.put("cityInvestGeneralRecNum",0);//一般违章 dataMap.put("countyInvestPunishRecNum",0);//县区公司自查处违章 dataMap.put("countyInvestSeriousRecNum",0);//严重违章 dataMap.put("countyInvestGeneralRecNum",0);//一般违章 //本周违章查处情况列表 PdmReportIllegalWeek pdmReportIllegal = new PdmReportIllegalWeek(); pdmReportIllegal.setReportDate(beingDate); pdmReportIllegal.setReportEndDate(endDate); List illegalList = pdmReportIllegalWeekService.selectPdmReportIllegalWeekList(pdmReportIllegal); dataMap.put("illegalList",illegalList);//违章列表明细 String typicalIllegal="";//其中典型违章通报如下 dataMap.put("typicalIllegal",StringUtils.isEmpty(typicalIllegal)?"无":typicalIllegal);//其中典型违章通报如下 //2.本周人员到岗到位履职情况 dataMap.put("supervTimes",0);//督察共计次数 dataMap.put("leaderSupervTimes",0);//领导督察共计次数 dataMap.put("manageSupervTimes",0);//管理人员督察次数 dataMap.put("problemNum",0);//督察发现问题 dataMap.put("cityFindProblemNum",0);//市公司发现问题处数 dataMap.put("derelictionDutyNum",0);//履职不到位(应查未查) //本周到岗到位履职情况 PdmReportAppointmentWeek pdmReportAppointment = new PdmReportAppointmentWeek(); pdmReportAppointment.setReportDate(beingDate); pdmReportAppointment.setReportEndDate(endDate); List appointmentlist = pdmReportAppointmentWeekService.selectPdmReportAppointmentWeekList(pdmReportAppointment); dataMap.put("appointmentlist",appointmentlist);//本周到岗到位履职情况 File descFile=null; try { String fileN = UUID.randomUUID().toString(); File fileFold = new File(printReplenishmentPath+"/temp_print/"); if(!fileFold.exists()){ fileFold.mkdirs(); } String fileDocPath = fileFold+"/"+fileN+".doc"; GenerateWordUtil.generateWord(dataMap, "生产周例会配电汇报内容.ftl", new OutputStreamWriter(new FileOutputStream(new File(fileDocPath)), "utf-8")); descFile = new File(fileDocPath); String type = new MimetypesFileTypeMap().getContentType(descFile); response.setHeader("Content-type",type); String filename = new String(descFile.getName().getBytes("utf-8"), "iso-8859-1"); response.setHeader("Content-Disposition", "attachment;filename=" + filename); response.setContentType("application/octet-stream"); response.reset(); OutputStream outputStream1 = response.getOutputStream(); BufferedInputStream bis = null; bis = new BufferedInputStream(new FileInputStream(descFile)); byte[] buff = new byte[bis.available()]; bis.read(buff); outputStream1.write(buff); outputStream1.close(); bis.close(); } catch (Exception e) { e.printStackTrace(); }finally { // if(descFile!=null) // descFile.deleteOnExit(); } //下载之后删除 try { if(descFile.exists()){ descFile.delete(); } } catch (Exception e) { e.printStackTrace(); } } }