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.sun.xml.internal.ws.policy.EffectiveAlternativeSelector; 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.annualPlan.impl.AnnualDailyCompService; import com.zhcs.dt.service.information.monthProgress.MonthProgressManager; import com.zhcs.dt.service.information.monthProgress.YjMonthProgressManager; import com.zhcs.dt.util.AppUtil; import com.zhcs.dt.util.Jurisdiction; import com.zhcs.dt.util.PageData; import com.zhcs.dt.util.Tools; /** * 类名称:年度养护计划 * 创建人:Yuanf * 创建时间:2018-11-12 */ @Controller @RequestMapping(value="/yjmonthProgress") class YjMonthProgressController extends BaseController { String menuUrl = "yjmonthProgress/list.do"; //菜单地址(权限用) @Resource(name="yjmonthProgressService") private YjMonthProgressManager yjmonthProgressService; @Resource(name="annualDailyCompService") private AnnualDailyCompService annualDailyCompService; @Resource(name="monthProgressService") private MonthProgressManager monthProgressService; /**列表 * @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 = yjmonthProgressService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段 //通过ROLE_ID获取角色 String roleName = yjmonthProgressService.getRoleName(userInfo.get("ROLE_ID").toString()); pd = this.getPageData(); String keywords = pd.getString("keywords"); //关键词检索条件 if(null != keywords && !"".equals(keywords)){ pd.put("keywords", keywords.trim()); } page.setPd(pd); List varList = yjmonthProgressService.list(page); //列出月度报告 mv.setViewName("information/monthProgress/yj/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/yj/monthProgress_add"); mv.addObject("company", company); mv.addObject("msg", "save"); mv.addObject("pd", pd); return mv; } /**新增报告 * @param * @throws Exception */ @RequestMapping(value="/save") public ModelAndView save() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"新增monthProgress report"); List reportList = new ArrayList(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String planID = this.get32UUID(); //设置查询oa_department的动态表名 pd.put("table", "oa_department_"+pd.getString("YEAR").toString()); String companyid = yjmonthProgressService.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", "新建"); //创建时间 yjmonthProgressService.addMonthlyReport(pd); //新建月度养护报告 mv.addObject("pd", pd); mv.addObject("msg","success"); mv.setViewName("save_result"); return mv; } /**显示、编辑月度报表 * @param * @throws Exception */ @RequestMapping(value="/showTable") public ModelAndView showTable()throws Exception{ 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()); if("路段管理员".equalsIgnoreCase(roleName)){ pd.put("ROADS", userInfo.get("ROAD").toString().split(",")); } List varList = yjmonthProgressService.getReportInfo(pd); //获取月报相应数据 mv.setViewName("information/monthProgress/yj/monthProgress_table"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); return mv; } @RequestMapping(value="/showTableRecod") public ModelAndView showTableRecod()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String mode = "add"; PageData data = new PageData(); List sublist = new ArrayList(); PageData monPlanList = new PageData(); if (pd.get("PROJECT_NAME") != null && !pd.get("PROJECT_NAME").equals("")) { mode = "edit"; data = yjmonthProgressService.showTableRecod(pd); sublist = yjmonthProgressService.wordListRecorde(pd); pd.put("TABLETYPE", "highway_emergency_project_dettable"); monPlanList = annualDailyCompService.getMonPlan(pd); } //增加动态表名 pd.put("table", "oa_department_"+pd.get("YEAR").toString()); List roadList = annualDailyCompService.showRoad(pd); mv.addObject("roadList", JSONArray.fromObject(roadList)); JSONArray arr = JSONArray.fromObject(data); mv.addObject("varList", arr); mv.addObject("dataMap", JSONObject.fromObject(data)); mv.addObject("monPlanList", monPlanList==null?pd:JSONObject.fromObject(monPlanList)); PageData nulldata = new PageData(); nulldata.put("ITEM_NAME", ""); nulldata.put("UNIT", ""); nulldata.put("UNIT_PRICE", ""); nulldata.put("NUMBER", ""); nulldata.put("TOTAL_COST", ""); int size = 8-sublist.size(); for (int i = 0; i < size; i++) { sublist.add(nulldata); } mv.addObject("sublist", JSONArray.fromObject(sublist)); pd.put("mode", mode); mv.setViewName("information/monthProgress/yj/highway_emergency_project_dettable"); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); return mv; } @RequestMapping(value="/deleteData") @ResponseBody public Object deleteData() throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map map = new HashMap(); try { String[] roads = ((String) pd.get("roads")).split(","); String[] pnames = ((String) pd.get("pnames")).split(","); for (int i = 0; i < roads.length; i++) { pd.put("ROAD_ID", roads[i]); pd.put("PROJECT_NAME", pnames[i]); yjmonthProgressService.deleteEmergencyProjectRecord(pd); yjmonthProgressService.deleteEmergencyProjectCostRecord(pd); yjmonthProgressService.deleteMonthRecord(pd); pd.put("TABLETYPE", "highway_emergency_project_dettable"); annualDailyCompService.deleteMonthRecord(pd); annualDailyCompService.deleteProjectRecodInfo(pd); pd.put("TABLETYPE", "highway_emergency_project_dettable_cost"); annualDailyCompService.deleteProjectRecodInfo(pd); } map.put("msg","success"); } catch (Exception e) { map.put("msg","false"); } return AppUtil.returnObject(new PageData(), map); } @RequestMapping(value="/saveData") @ResponseBody public Object saveData(String data) throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); JSONArray jsonarray = JSONArray.fromObject(data); // JSONArray jsonarray = JSONArray.fromObject(pd.get("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("PROJECT_NAME", arrMap.get("PROJECT_NAME")); pd.put("SJWCGCL", arrMap.get("SJWCGCL")); String type = pd.get("TABLETYPE").toString(); if("monthly_prevention_completion".equalsIgnoreCase(type)){ pd.put("TABLE_NAME", "highway_prevention_project_dettable"); } else if("monthly_repair_completion".equalsIgnoreCase(type)){ pd.put("TABLE_NAME", "highway_repair_project_dettable"); } else if("monthly_special_completion".equalsIgnoreCase(type)){ pd.put("TABLE_NAME", "highway_special_project_dettable"); } else if("monthly_emergency_completion".equalsIgnoreCase(type)){ pd.put("TABLE_NAME", "highway_emergency_project_dettable"); } yjmonthProgressService.updateWCQKRecord(pd); yjmonthProgressService.deleteMonthRecord(pd); for (int i = 1; i < 13; i++) { pd.put("MONTH",i); if ((!arrMap.get("ACTUAL_COST_"+i).equals(""))||(!arrMap.get("PAY_COST_"+i).equals(""))||(!arrMap.get("ACTUAL_QUANTITIES_"+i).equals(""))) { pd.put("ACTUAL_COST", arrMap.get("ACTUAL_COST_"+i).equals("")?null:arrMap.get("ACTUAL_COST_"+i)); pd.put("PAY_COST", arrMap.get("PAY_COST_"+i).equals("")?null:arrMap.get("PAY_COST_"+i)); pd.put("RATIO", arrMap.get("RATIO_"+i).equals("")?null:arrMap.get("RATIO_"+i)); pd.put("ACTUAL_QUANTITIES", arrMap.get("ACTUAL_QUANTITIES_"+i).equals("")?null:arrMap.get("ACTUAL_QUANTITIES_"+i)); yjmonthProgressService.insertMonthRecord(pd); } } } Map map = new HashMap(); map.put("msg","success"); return 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 paths = new ArrayList(); List result = new ArrayList(); List exceldata = setExcelData(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 setExcelData(PageData param) throws Exception { List result = new ArrayList(); PageData data = new PageData(); if (param.get("TABLETYPE").equals("monthly_emergency_completion")) { param.put("subtable", "highway_emergency_project_dettable"); data.put("modelName", "应急养护计划月度完成情况"); }else if (param.get("TABLETYPE").equals("monthly_prevention_completion")) { param.put("subtable", "highway_prevention_project_dettable"); data.put("modelName", "预防养护计划月度完成情况"); }else if (param.get("TABLETYPE").equals("monthly_repair_completion")) { param.put("subtable", "highway_repair_project_dettable"); data.put("modelName", "修复养护计划月度完成情况"); }else if (param.get("TABLETYPE").equals("monthly_special_completion")) { param.put("subtable", "highway_special_project_dettable"); data.put("modelName", "专项养护计划月度完成情况"); } data.put("keyStr", "num,PROJECT_NAME,CATEGORY,PROJECT_SCALE,QUANTITIES,PROJECT_COST,AUDIT_FEE,OTHER_MATTER" + ",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((K#row#/H#row#)),\"\",(K#row#/H#row#))"} ,{"percent","RATIO_2","IF(ISERROR((N#row#/H#row#)),\"\",(N#row#/H#row#))"} ,{"percent","RATIO_3","IF(ISERROR((Q#row#/H#row#)),\"\",(Q#row#/H#row#))"} ,{"percent","RATIO_4","IF(ISERROR((T#row#/H#row#)),\"\",(T#row#/H#row#))"} ,{"percent","RATIO_5","IF(ISERROR((W#row#/H#row#)),\"\",(W#row#/H#row#))"} ,{"percent","RATIO_6","IF(ISERROR((Z#row#/H#row#)),\"\",(Z#row#/H#row#))"} ,{"percent","RATIO_7","IF(ISERROR((AC#row#/H#row#)),\"\",(AC#row#/H#row#))"} ,{"percent","RATIO_8","IF(ISERROR((AF#row#/H#row#)),\"\",(AF#row#/H#row#))"} ,{"percent","RATIO_9","IF(ISERROR((AI#row#/H#row#)),\"\",(AI#row#/H#row#))"} ,{"percent","RATIO_10","IF(ISERROR((AL#row#/H#row#)),\"\",(AL#row#/H#row#))"} ,{"percent","RATIO_11","IF(ISERROR((AO#row#/H#row#)),\"\",(AO#row#/H#row#))"} ,{"percent","RATIO_12","IF(ISERROR((AR#row#/H#row#)),\"\",(AR#row#/H#row#))"} ,{"sum","ACTUAL_COST","SUM(J#row#,M#row#,P#row#,S#row#,V#row#,Y#row#,AB#row#,AE#row#,AH#row#,AK#row#,AN#row#,AQ#row#)"} ,{"sum","PAY_COST","SUM(K#row#,N#row#,Q#row#,T#row#,W#row#,Z#row#,AC#row#,AF#row#,AI#row#,AL#row#,AO#row#,AR#row#)"} ,{"percent","RATIO","IF(ISERROR((AU#row#/H#row#)),\"\",(AU#row#/H#row#))"} }; data.put("funcArry", funcArry); data.put("tabletype", 3); data.put("totalRange", 5); data.put("startRowIndex", 3); List list = yjmonthProgressService.getReportInfo(param); data.put("list", list); result.add(data); return result; } }