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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; 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.KyxmMonthProgressManager; import com.zhcs.dt.service.information.monthProgress.MonthProgressManager; import com.zhcs.dt.service.information.monthProgress.SyjcMonthProgressManager; 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="/scientific") public class KyxmMonthProgressController extends BaseController{ @Resource(name="kyxmmonthProgressService") private KyxmMonthProgressManager kyxmmonthProgressService; @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 = 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 = kyxmmonthProgressService.getReportlist(pd); //列出月度报告 mv.setViewName("information/monthProgress/kyxm/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/kyxm/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", "新建"); //创建时间 kyxmmonthProgressService.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 = 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 = kyxmmonthProgressService.getReportInfo(pd); //获取月报相应数据 mv.setViewName("information/monthProgress/kyxm/scientificCompletion_list"); mv.addObject("varList", varList); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); return mv; } /** * 保存 * @throws Exception */ @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(pd.get("data")); 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("PROJECT_NAME", arrMap.get("PROJECT_NAME")); pd.put("SJWCGCL", arrMap.get("SJWCGCL")); String type = pd.get("TABLETYPE").toString(); if("monthly_scientific_project_completion".equalsIgnoreCase(type)){ pd.put("TABLE_NAME", "highway_scientific_project_dettable"); } kyxmmonthProgressService.updateWCQKRecord(pd); kyxmmonthProgressService.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_QUANTITIES", arrMap.get("ACTUAL_QUANTITIES_"+i).equals("")?null:arrMap.get("ACTUAL_QUANTITIES_"+i)); 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)); kyxmmonthProgressService.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(); kyxmmonthProgressService.delMonthlyReport(pd); //删除月度报告 kyxmmonthProgressService.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 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_scientific_project_completion")) { param.put("subtable", "highway_scientific_project_dettable"); data.put("modelName", "科研项目月度完成情况"); data.put("keyStr", "num,PROJECT_NAME,CATEGORY,CONTENT,PROJECT_COST,AUDIT_FEE,MATTER_YEAR,MATTER_NEW_CARRY,MATTER_CONSULT" + ",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((L#row#/G#row#)),\"\",(L#row#/G#row#))"} ,{"percent","RATIO_2","IF(ISERROR((O#row#/G#row#)),\"\",(O#row#/G#row#))"} ,{"percent","RATIO_3","IF(ISERROR((R#row#/G#row#)),\"\",(R#row#/G#row#))"} ,{"percent","RATIO_4","IF(ISERROR((U#row#/G#row#)),\"\",(U#row#/G#row#))"} ,{"percent","RATIO_5","IF(ISERROR((X#row#/G#row#)),\"\",(X#row#/G#row#))"} ,{"percent","RATIO_6","IF(ISERROR((AA#row#/G#row#)),\"\",(AA#row#/G#row#))"} ,{"percent","RATIO_7","IF(ISERROR((AD#row#/G#row#)),\"\",(AD#row#/G#row#))"} ,{"percent","RATIO_8","IF(ISERROR((AG#row#/G#row#)),\"\",(AG#row#/G#row#))"} ,{"percent","RATIO_9","IF(ISERROR((AJ#row#/G#row#)),\"\",(AJ#row#/G#row#))"} ,{"percent","RATIO_10","IF(ISERROR((AM#row#/G#row#)),\"\",(AM#row#/G#row#))"} ,{"percent","RATIO_11","IF(ISERROR((AP#row#/G#row#)),\"\",(AP#row#/G#row#))"} ,{"percent","RATIO_12","IF(ISERROR((AS#row#/G#row#)),\"\",(AS#row#/G#row#))"} ,{"sum","ACTUAL_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#)"} ,{"sum","PAY_COST","SUM(L#row#,O#row#,R#row#,U#row#,X#row#,AA#row#,AD#row#,AG#row#,AJ#row#,AM#row#,AP#row#,AS#row#)"} ,{"percent","RATIO","IF(ISERROR((AV#row#/G#row#)),\"\",(AV#row#/G#row#))"} }; data.put("funcArry", funcArry); data.put("tabletype", 3); data.put("totalRange", 4); data.put("startRowIndex", 3); } List list = kyxmmonthProgressService.getReportInfo(param); data.put("list", list); data.put("pd", param); result.add(data); return result; } }