package com.zhcs.dt.controller.information.monthProgress; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; 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.DownloadZip; import com.zhcs.dt.service.information.annualPlan.MultExcelUtils; import com.zhcs.dt.service.information.monthProgress.MonthProgressManager; import com.zhcs.dt.service.information.monthProgress.RcMonthProgressManager; import com.zhcs.dt.util.AppUtil; import com.zhcs.dt.util.Jurisdiction; import com.zhcs.dt.util.PageData; import com.zhcs.dt.util.Tools; /** * @author yuanfei * @date 2019年2月22日 * @desc 预防养护 */ @Controller @RequestMapping(value="/daily") public class RcMonthProgressController extends BaseController{ @Resource(name="rcmonthProgressService") private RcMonthProgressManager rcmonthProgressService; @Resource(name="monthProgressService") private MonthProgressManager monthProgressService; private String[] month = {"1","2","3","4","5","6","7","8","9","10","11","12"}; private String[] commontype = {"CLEAN_COST","PATROL_COST","SUBGRADE_COST","PAVEMENT_COST","BRIDGE_COST","CULVERT_COST", "TUNNEL_COST","GREEN_COST","SAFE_COST","LINE_COST","CAR_COST","EMERGENCY_COST"}; /**月度列表 * @param page * @throws Exception */ @RequestMapping(value="/list") public ModelAndView list(Page page) throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"应急养护月度报告"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); PageData userInfo = monthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段 //通过ROLE_ID获取角色 String roleName = monthProgressService.getRoleName(userInfo.get("ROLE_ID").toString()); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } if(userInfo.get("COMPANY") != null){ pd.put("COMPANY", userInfo.get("COMPANY")); } //page.setPd(pd); List varList = rcmonthProgressService.getReportlist(pd); //列出月度报告 mv.setViewName("information/monthProgress/rc/monthProgress_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("userInfo", userInfo); mv.addObject("roleName", roleName); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**去新增页面 * @param * @throws Exception */ @RequestMapping(value="/goAdd") public ModelAndView goAdd()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String company = pd.get("COMPANY").toString(); mv.setViewName("information/monthProgress/rc/monthProgress_add"); mv.addObject("company", company); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**新增报告 * @param * @throws Exception */ @RequestMapping(value="/saveNewReport") public ModelAndView saveNewReport() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增预防养护月报"); //List reportList = new ArrayList(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String planID = this.get32UUID(); String companyid = monthProgressService.getCompanyid(pd.get("COMPANY")); pd.put("COMPANY_ID", companyid); pd.put("ID", planID);//主键 pd.put("NAME", pd.get("YEAR")+"年"+pd.get("COMPANY")+"月度养护报告"); pd.put("CTIME", Tools.date2Str(new Date())); //创建时间 pd.put("MTIME", Tools.date2Str(new Date())); //修改时间 pd.put("STATUS", "新建"); //创建时间 rcmonthProgressService.addMonthlyReport(pd); //新建月度养护报告 mv.addObject("pd", pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/showTable") public ModelAndView showTable() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"月度预防养护"); //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码) ModelAndView mv = this.getModelAndView(); PageData pd = this.getPageData(); List monthVarList = new ArrayList(); //列出月度信息 List yearRoadList = new ArrayList(); //列出道路年度汇总 List roadList = rcmonthProgressService.listRoadInfo(pd); //按公司查询出有日常养护计划的路段信息 if(roadList.size() > 0){ if(pd.get("ROAD_ID") == null && roadList.get(0) != null){ pd.put("ROAD_ID", roadList.get(0).get("ROAD_ID")); } PageData plancost = rcmonthProgressService.listPlanByRoad(pd); //按路段查询计划费用 if(plancost != null){ pd.put("ROAD_ID", plancost.get("ROAD_ID")); pd.put("ROAD", plancost.get("ROAD")); List monthList = rcmonthProgressService.listAll(pd); //列出道路月度信息 Map monthMap = new HashMap(); PageData tempPd = new PageData(); for(String temptype : commontype){ monthMap.put(temptype, tempPd); } for(Map.Entry entry : monthMap.entrySet()){ PageData tempPd1 = new PageData(); tempPd1.put("type", entry.getKey()); for(PageData monthdt : monthList){ String type = monthdt.get("TYPE").toString(); String month = monthdt.get("MONTH").toString(); if(entry.getKey().equalsIgnoreCase(type)){ if(monthdt.get("ACTUAL_COST") != null){ Double paycost = Double.parseDouble(monthdt.get("ACTUAL_COST").toString()); Double plancostByType = Double.parseDouble(plancost.get(type).toString()); double RATIO = (paycost/plancostByType); tempPd1.put("RATIO"+"_"+type+"_"+month, RATIO); } tempPd1.put("ACTUAL_COST"+"_"+type+"_"+month, monthdt.get("ACTUAL_COST")); tempPd1.put("PAY_COST"+"_"+type+"_"+month, monthdt.get("PAY_COST")); } } pd.put("TYPE", entry.getKey()); PageData yearListByType = rcmonthProgressService.findSumByType(pd); //汇总 if(yearListByType != null){ tempPd1.put("SUM_ACTUAL_COST"+"_"+entry.getKey(), yearListByType.get("SUM_ACTUAL_COST")); tempPd1.put("SUM_PAY_COST"+"_"+entry.getKey(), yearListByType.get("SUM_PAY_COST")); } monthVarList.add(tempPd1); } yearRoadList = rcmonthProgressService.findSumByCompanyAndRoad(pd); } mv.addObject("plancost", plancost); } mv.setViewName("information/monthProgress/rc/dailyCompletion_list"); mv.addObject("monthVarList", monthVarList); mv.addObject("roadList", roadList); mv.addObject("yearRoadList", JSONArray.fromObject(yearRoadList)); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /**列表 * @param page * @throws Exception */ @RequestMapping(value="/showTable2") public ModelAndView showTable2() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"月度预防养护"); ModelAndView mv = this.getModelAndView(); PageData pd = this.getPageData(); PageData plancost = rcmonthProgressService.listPlanByRoad(pd); //按路段查询计划费用 List monthVarList = new ArrayList(); //列出月度信息 List yearRoadList = new ArrayList(); //列出道路年度汇总 if(plancost != null){ List monthList = rcmonthProgressService.listAll(pd); //列出道路月度信息 Map monthMap = new HashMap(); PageData tempPd = new PageData(); for(String temptype : commontype){ monthMap.put(temptype, tempPd); } for(Map.Entry entry : monthMap.entrySet()){ PageData tempPd1 = new PageData(); tempPd1.put("type", entry.getKey()); for(PageData monthdt : monthList){ String type = monthdt.get("TYPE").toString(); String month = monthdt.get("MONTH").toString(); if(entry.getKey().equalsIgnoreCase(type)){ if(monthdt.get("ACTUAL_COST") != null && plancost.get(type)!= null){ Double paycost = Double.parseDouble(monthdt.get("ACTUAL_COST").toString()); Double plancostByType = Double.parseDouble(plancost.get(type).toString()); double RATIO = (paycost/plancostByType); tempPd1.put("RATIO"+"_"+type+"_"+month, RATIO); } tempPd1.put("ACTUAL_COST"+"_"+type+"_"+month, monthdt.get("ACTUAL_COST")); tempPd1.put("PAY_COST"+"_"+type+"_"+month, monthdt.get("PAY_COST")); } } pd.put("TYPE", entry.getKey()); PageData yearListByType = rcmonthProgressService.findSumByType(pd); //汇总 if(yearListByType != null){ tempPd1.put("SUM_ACTUAL_COST"+"_"+entry.getKey(), yearListByType.get("SUM_ACTUAL_COST")); tempPd1.put("SUM_PAY_COST"+"_"+entry.getKey(), yearListByType.get("SUM_PAY_COST")); } monthVarList.add(tempPd1); } yearRoadList = rcmonthProgressService.findSumByCompanyAndRoad(pd); } //设置查询oa_department的动态表名 pd.put("table", "oa_department_"+pd.getString("YEAR").toString()); List companyRoadList = monthProgressService.getCompanyRoadList(pd); Map> companyRoad = new HashMap>(); List companyList = new ArrayList(); for(PageData tpd : companyRoadList){ if(tpd.get("PARENT_ID").equals("0")){ companyList.add(tpd.get("NAME").toString()); List roadList = new ArrayList(); for(PageData tempPd : companyRoadList){ if(tempPd.get("PARENT_ID").equals(tpd.get("DEPARTMENT_ID"))){ roadList.add(tempPd.get("NAME").toString()); } } companyRoad.put(tpd.get("NAME").toString(), roadList); } } List troadList = new ArrayList(); troadList=companyRoad.get(pd.get("COMPANY")); mv.addObject("companyList", companyList); mv.addObject("companyRoad", JSONArray.fromObject(companyRoad)); mv.addObject("roadList", troadList); mv.addObject("company", pd.get("COMPANY")); mv.addObject("road", pd.get("ROAD")); mv.setViewName("information/monthProgress/monthSumTable/dailyCompletion_list"); mv.addObject("monthVarList", monthVarList); mv.addObject("plancost", plancost); mv.addObject("yearRoadList", JSONArray.fromObject(yearRoadList)); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } /** * 保存 * @throws Exception */ @RequestMapping(value = "/saveData") @ResponseBody public Object saveData(String data,String TABLETYPE) throws Exception{ //ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); JSONArray jsonarray = JSONArray.fromObject(data); Map map = dealWithData(pd,jsonarray); return AppUtil.returnObject(new PageData(), map); } /** * 处理新增编辑数据 */ @ResponseBody public Map dealWithData(PageData pd,JSONArray jsonarray) throws Exception{ for (Object object : jsonarray) { JSONObject arrMap = JSONObject.fromObject(object); pd.put("YEAR", arrMap.get("YEAR")); pd.put("COMPANY", arrMap.get("COMPANY")); pd.put("COMPANY_ID", arrMap.get("COMPANY_ID")); pd.put("ROAD", arrMap.get("ROAD")); pd.put("ROAD_ID", arrMap.get("ROAD_ID")); pd.put("TYPE", arrMap.get("TYPE")); String type = arrMap.get("TYPE").toString() + "_"; rcmonthProgressService.deleteMonthRecord(pd); for (int i = 1; i < 13; i++) { pd.put("MONTH",i); if ((!arrMap.get("ACTUAL_COST_"+type+i).equals(""))||(!arrMap.get("PAY_COST_"+type+i).equals(""))) { pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+type+i).equals("")?null:arrMap.get("ACTUAL_COST_"+type+i)); pd.put("PAY_COST", arrMap.get("PAY_COST_"+type+i).equals("")?null:arrMap.get("PAY_COST_"+type+i)); pd.put("RATIO", arrMap.get("RATIO_"+type+i).equals("")?null:arrMap.get("RATIO_"+type+i)); rcmonthProgressService.insertMonthRecord(pd); } } } Map map = new HashMap(); map.put("msg","success"); return map; } /**删除月度报告 * @param * @throws Exception */ @RequestMapping(value="/delMonthlyReport") @ResponseBody public Object delMonthlyReport()throws Exception{ Map map = new HashMap(); PageData pd = new PageData(); pd = this.getPageData(); rcmonthProgressService.delMonthlyReport(pd); //删除月度报告 rcmonthProgressService.delMonthlyCompletion(pd); //删除对应月度完成情况 map.put("result", "success"); return AppUtil.returnObject(new PageData(), map); } @RequestMapping("/excelExport") public String excelExport(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 result = new ArrayList(); PageData data = new PageData(); data.put("keyStr", "TYPE,PLAN_COST,MAKER" + ",ACTUAL_COST_1,PAY_COST_1,RATIO_1,ACTUAL_COST_2,PAY_COST_2,RATIO_2,ACTUAL_COST_3,PAY_COST_3,RATIO_3" + ",ACTUAL_COST_4,PAY_COST_4,RATIO_4,ACTUAL_COST_5,PAY_COST_5,RATIO_5,ACTUAL_COST_6,PAY_COST_6,RATIO_6" + ",ACTUAL_COST_7,PAY_COST_7,RATIO_7,ACTUAL_COST_8,PAY_COST_8,RATIO_8,ACTUAL_COST_9,PAY_COST_9,RATIO_9" + ",ACTUAL_COST_10,PAY_COST_10,RATIO_10,ACTUAL_COST_11,PAY_COST_11,RATIO_11,ACTUAL_COST_12,PAY_COST_12,RATIO_12" + ",ACTUAL_COST,PAY_COST,RATIO"); String[][] funcArry = { {"percent","RATIO_1","IF(ISERROR((F#row#/C#row#)),\"\",(F#row#/C#row#))"} ,{"percent","RATIO_2","IF(ISERROR((I#row#/C#row#)),\"\",(I#row#/C#row#))"} ,{"percent","RATIO_3","IF(ISERROR((L#row#/C#row#)),\"\",(L#row#/C#row#))"} ,{"percent","RATIO_4","IF(ISERROR((O#row#/C#row#)),\"\",(O#row#/C#row#))"} ,{"percent","RATIO_5","IF(ISERROR((R#row#/C#row#)),\"\",(R#row#/C#row#))"} ,{"percent","RATIO_6","IF(ISERROR((U#row#/C#row#)),\"\",(U#row#/C#row#))"} ,{"percent","RATIO_7","IF(ISERROR((X#row#/C#row#)),\"\",(X#row#/C#row#))"} ,{"percent","RATIO_8","IF(ISERROR((AA#row#/C#row#)),\"\",(AA#row#/C#row#))"} ,{"percent","RATIO_9","IF(ISERROR((AD#row#/C#row#)),\"\",(AD#row#/C#row#))"} ,{"percent","RATIO_10","IF(ISERROR((AG#row#/C#row#)),\"\",(AG#row#/C#row#))"} ,{"percent","RATIO_11","IF(ISERROR((AJ#row#/C#row#)),\"\",(AJ#row#/C#row#))"} ,{"percent","RATIO_12","IF(ISERROR((AM#row#/C#row#)),\"\",(AM#row#/C#row#))"} ,{"sum","ACTUAL_COST","SUM(E#row#,H#row#,K#row#,N#row#,Q#row#,T#row#,W#row#,Z#row#,AC#row#,AF#row#,AI#row#,AL#row#)"} ,{"sum","PAY_COST","SUM(F#row#,I#row#,L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#)"} ,{"percent","RATIO","IF(ISERROR((AP#row#/C#row#)),\"\",(AP#row#/C#row#))"} }; data.put("funcArry", funcArry); data.put("tabletype", 0); data.put("totalRange", 1); data.put("startRowIndex", 3); List exceldata = setExcelData(pd); MultExcelUtils ex = new MultExcelUtils(); String excelpath = ex.exportDailyExcel(pd.getString("exportname")+".xlsx",path,response,exceldata,data); result.add(excelpath); //zip压缩下载 DownloadZip.downloadZip(response,request,result,path); return null; } public List setExcelData(PageData param) throws Exception { List result = new ArrayList(); List plancostList = rcmonthProgressService.listPlanByRoads(param); //按路段查询计划费用 for(PageData plancost : plancostList){ param.put("ROAD_ID", plancost.get("ROAD_ID")); List list = rcmonthProgressService.listAll(param); //列出道路月度信息 plancost.put("monthInfo", list); } result = plancostList; return result; } }