package com.zhcs.dt.controller.information.annualPlan; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.zhcs.dt.controller.base.BaseController; import com.zhcs.dt.entity.Page; import com.zhcs.dt.service.information.annualPlan.AnnualBaseInfoManager; import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager; import com.zhcs.dt.service.information.annualPlan.DownloadZip; import com.zhcs.dt.service.information.annualPlan.MultExcelUtils; import com.zhcs.dt.service.information.annualPlan.TotalAmountUtil; import com.zhcs.dt.service.information.annualPlan.impl.AnnualPlanCompService; import com.zhcs.dt.util.Jurisdiction; import com.zhcs.dt.util.PageData; /** * 类名称:年度养护计划 * 创建人:Yuanf * 创建时间:2018-11-12 */ @Controller @RequestMapping(value="/baseInfo") class BaseInfoController extends BaseController { String menuUrl = "baseInfo/list.do"; //菜单地址(权限用) @Resource(name="annualPlanCompService") private AnnualPlanCompService annualPlanCompService; @Resource(name="annualPlanService") private AnnualPlanManager annualPlanService; @Resource(name="annualBaseInfoService") private AnnualBaseInfoManager annualBaseInfoService; List newTables = new ArrayList(); /**列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"养护计划完成情况"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); //通过username获取对应的公司和路段,控股集团管理员只可以看到状态为“待审批”和“已完成”的计划,路公司管理员和路段管理员可以看到本公司所有计划,admin没有权限控制 PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段 //通过ROLE_ID获取角色 String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString()); pd = this.getPageData(); if("控股集团管理员".equalsIgnoreCase(roleName)){ List yearList = annualPlanService.getKGPlanYearList(pd); //列出状态不为编制中、新建的年度计划列表 mv.setViewName("information/annualPlan/annualBaseInfo/annualBaseInfo_kg_list"); mv.addObject("varList", yearList); } mv.addObject("pd", pd); mv.addObject("userInfo", userInfo); mv.addObject("roleName", roleName); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**查询所选汇总表 * @param * @throws Exception */ @RequestMapping(value="/showBaseInfoTable") public ModelAndView showBaseInfoTable(Model model)throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); mv.setViewName("information/annualPlan/annualBaseInfo/"+pd.get("type")); pd.put("table", "oa_department_"+pd.getString("YEAR").toString()); PageData result = annualBaseInfoService.getBaseInfo(pd); mv.addObject("varList", result.get("companyList")); mv.addObject("total", result.get("total")); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } @RequestMapping("/exportBaseInfo") public String exporthz(HttpServletRequest request,HttpServletResponse response) throws Exception{ String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file"); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); List paths = new ArrayList(); List result = new ArrayList(); //excel文档 List exceldata = setMultExcelData(pd); MultExcelUtils ex = new MultExcelUtils(); String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata); result.add(excelpath); //zip压缩下载 DownloadZip.downloadZip(response,request,result,path); return null; } public List setMultExcelData(PageData param) throws Exception { List result = new ArrayList(); String[] modelNames = {"控股系统公路道路技术状况现状汇总表","控股系统公路主要病害汇总表", "控股系统交通等信息综合统计表","控股系统养护质量目标表汇总表"}; String[] keyStrs = { "DESIGN_KM,CARE_KM," + "MQI,QUALITY_GRADE,SECOND_ROAD_RATIO,PQI,SCI,BCI,TCI," + "PCI,RQI,RDI,PBI,PWI,SRI,PSSI," + "ONE_BRIDGE_NUM,ONE_BRIDGE_PRO,TWO_BRIDGE_NUM,TWO_BRIDGE_PRO,THREE_BRIDGE_NUM,THREE_BRIDGE_PRO,FOUR_BRIDGE_NUM,FOUR_BRIDGE_PRO,FIVE_BRIDGE_NUM,FIVE_BRIDGE_PRO,BRIDGE_TOTAL_NUM" ,"DESIGN_KM,CARE_KM,ROAD_CONDITION,SUBGRADE_EXPLAIN,PAVEMENT_EXPLAIN,BRIDGE_EXPLAIN,OTHER_EXPLAIN,OTHER_MATTER" ,"DESIGN_KM,CARE_KM,TRAFFIC_AMOUNT,CAR_INFO,TOTAL_COST,DAILY_COST,DAILY_KM_COST" ,"DESIGN_KM,CARE_KM,MQI_STATUS,MQI_TARGET,RATE_STATUS,RATE_TARGET,PQI_STATUS,PQI_TARGET," + "PCI_STATUS,PCI_TARGET,RQI_STATUS,RQI_TARGET,RDI_STATUS,RDI_TARGET,PBI_STATUS,PBI_TARGET," + "PWI_STATUS,PWI_TARGET,SRI_STATUS,SRI_TARGET,PSSI_STATUS,PSSI_TARGET,SCI_STATUS,SCI_TARGET," + "BCI_STATUS,BCI_TARGET,TCI_STATUS,TCI_TARGET,TECHNOLOGY_STATUS,TECHNOLOGY_TARGET" }; String[] tableNames = {"highway_technica_statable","highway_technica_statable", "highway_traiffcinfo_sumtable","highway_quality_goals_table"}; int[] startRowIndexs = {4,3,3,3}; int[] tabletype = {6,6,6,6}; int[] totalRange = {2,2,2,2}; String[][][] funcArrys = { { {"mmul","MQI","IF(ISERROR((D#row#*F#row#)),\"0.00\",(D#row#*F#row#))"}, {"mmul","SECOND_ROAD_RATIO","IF(ISERROR((H#row#/D#row#)),\"0.00\",(H#row#/D#row#))"}, {"mmul","PQI","IF(ISERROR((D#row#*I#row#)),\"0.00\",(D#row#*I#row#))"}, {"mmul","SCI","IF(ISERROR((D#row#*J#row#)),\"0.00\",(D#row#*J#row#))"}, {"mmul","BCI","IF(ISERROR((D#row#*K#row#)),\"0.00\",(D#row#*K#row#))"}, {"mmul","TCI","IF(ISERROR((D#row#*L#row#)),\"0.00\",(D#row#*L#row#))"}, {"mmul","PCI","IF(ISERROR((D#row#*M#row#)),\"0.00\",(D#row#*M#row#))"}, {"mmul","RQI","IF(ISERROR((D#row#*N#row#)),\"0.00\",(D#row#*N#row#))"}, {"mmul","RDI","IF(ISERROR((D#row#*O#row#)),\"0.00\",(D#row#*O#row#))"}, {"mmul","PBI","IF(ISERROR((D#row#*P#row#)),\"0.00\",(D#row#*P#row#))"}, {"mmul","PWI","IF(ISERROR((D#row#*Q#row#)),\"0.00\",(D#row#*Q#row#))"}, {"mmul","SRI","IF(ISERROR((D#row#*R#row#)),\"0.00\",(D#row#*R#row#))"}, {"mmul","PSSI","IF(ISERROR((D#row#*S#row#)),\"0.00\",(D#row#*S#row#))"}, {"percent","ONE_BRIDGE_PRO","IF(ISERROR((T#row#/AD#row#)*100),\"0.00\",(T#row#/AD#row#)*100)"}, {"percent","TWO_BRIDGE_PRO","IF(ISERROR((V#row#/AD#row#)*100),\"0.00\",(V#row#/AD#row#)*100)"}, {"percent","THREE_BRIDGE_PRO","IF(ISERROR((X#row#/AD#row#)*100),\"0.00\",(X#row#/AD#row#)*100)"}, {"percent","FOUR_BRIDGE_PRO","IF(ISERROR((Z#row#/AD#row#)*100),\"0.00\",(Z#row#/AD#row#)*100)"}, {"percent","FIVE_BRIDGE_PRO","IF(ISERROR((AB#row#/AD#row#)*100),\"0.00\",(AB#row#/AD#row#)*100)"}, }, {},{}, { {"mmul","MQI_STATUS","IF(ISERROR((D#row#*F#row#)),\"0.00\",(D#row#*F#row#))"}, {"mmul","RATE_STATUS","IF(ISERROR((D#row#*H#row#)),\"0.00\",(D#row#*H#row#))"}, {"mmul","PQI_STATUS","IF(ISERROR((D#row#*J#row#)),\"0.00\",(D#row#*J#row#))"}, {"mmul","PCI_STATUS","IF(ISERROR((D#row#*L#row#)),\"0.00\",(D#row#*L#row#))"}, {"mmul","RQI_STATUS","IF(ISERROR((D#row#*N#row#)),\"0.00\",(D#row#*N#row#))"}, {"mmul","RDI_STATUS","IF(ISERROR((D#row#*P#row#)),\"0.00\",(D#row#*P#row#))"}, {"mmul","PBI_STATUS","IF(ISERROR((D#row#*R#row#)),\"0.00\",(D#row#*R#row#))"}, {"mmul","PWI_STATUS","IF(ISERROR((D#row#*T#row#)),\"0.00\",(D#row#*T#row#))"}, {"mmul","SRI_STATUS","IF(ISERROR((D#row#*V#row#)),\"0.00\",(D#row#*V#row#))"}, {"mmul","PSSI_STATUS","IF(ISERROR((D#row#*X#row#)),\"0.00\",(D#row#*X#row#))"}, {"mmul","SCI_STATUS","IF(ISERROR((D#row#*Z#row#)),\"0.00\",(D#row#*Z#row#))"}, {"mmul","BCI_STATUS","IF(ISERROR((D#row#*AB#row#)),\"0.00\",(D#row#*AB#row#))"}, {"mmul","TCI_STATUS","IF(ISERROR((D#row#*AD#row#)),\"0.00\",(D#row#*AD#row#))"}, {"mmul","TECHNOLOGY_STATUS","IF(ISERROR((D#row#*AF#row#)),\"0.00\",(D#row#*AF#row#))"}, } }; PageData pd = new PageData(); for (int i = 0; i < tableNames.length; i++) { PageData data = new PageData(); pd.put("type", tableNames[i]); pd.put("YEAR", param.get("YEAR")); pd.put("table", "oa_department_"+param.get("YEAR").toString()); List list = annualPlanCompService.getBaseInfoData(pd); data.put("list", list); data.put("modelName", modelNames[i]); data.put("keyStr", keyStrs[i]); data.put("startRowIndex", startRowIndexs[i]); data.put("tabletype", tabletype[i]); data.put("funcArry", funcArrys[i]); data.put("totalRange", totalRange[i]); data.put("pd", pd); result.add(data); } return result; } }