package com.zhcs.dt.controller.information.annualPlan; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.UUID; 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 oracle.net.aso.p; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.zhcs.dt.controller.base.BaseController; import com.zhcs.dt.service.information.annualPlan.AnnualPlanManager; import com.zhcs.dt.service.information.annualPlan.DownloadZip; import com.zhcs.dt.service.information.annualPlan.ImoprtJson; import com.zhcs.dt.service.information.annualPlan.ImportDoc; import com.zhcs.dt.service.information.annualPlan.MultExcelUtils; import com.zhcs.dt.service.information.annualPlan.WordUtils; import com.zhcs.dt.service.information.annualPlan.impl.AnnualDailyCompService; import com.zhcs.dt.util.AppUtil; import com.zhcs.dt.util.Jurisdiction; import com.zhcs.dt.util.PageData; import com.zhcs.dt.util.Tools; /** * 类名称:年度日常养护计划完成情况 */ @Controller @RequestMapping(value="/annualDailyComp") class AnnualDailyCompController extends BaseController { @Resource(name="annualDailyCompService") private AnnualDailyCompService annualDailyCompService; @Resource(name="annualPlanService") private AnnualPlanManager annualPlanService; private ShowTableRecodUtil showTableRecodUtil = new ShowTableRecodUtil(); private int actulItemIndex = 0; /**显示、编辑子表格 * @param * @throws Exception */ @RequestMapping(value="/showTableRecod") public ModelAndView showTableRecod()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); int viewType = setViewType(pd.getString("TABLETYPE")); List varList = new ArrayList(); PageData monPlanList = new PageData(); String name = pd.getString("NAME"); String projectName = ""; if(name.contains("---")){ projectName = name.split("---")[1]; } pd.put("PROJECT_NAME", projectName); if (viewType == 1 || viewType == 2) varList = showTableRecodUtil.showTableRecod(annualDailyCompService, pd); else if (viewType == 3){ varList = annualDailyCompService.showTableRecod2(pd); monPlanList = annualDailyCompService.getMonPlan(pd); } String mode = "edit"; if (varList == null || varList.size() == 0) { //设置查询oa_department的动态表名 pd.put("table", "oa_department_"+pd.getString("YEAR").toString()); if (viewType == 1) varList = annualDailyCompService.showRoad(pd); else if (viewType == 3) { if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable") ||pd.get("TABLETYPE").equals("highway_repair_project_dettable") ||pd.get("TABLETYPE").equals("highway_test_project_dettable") ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable") ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable") ||pd.get("TABLETYPE").equals("highway_special_project_dettable")) { List sublist = new ArrayList(); PageData nulldata = new PageData(); nulldata.put("ITEM_NAME", ""); nulldata.put("UNIT", ""); nulldata.put("UNIT_PRICE", ""); nulldata.put("NUMBER", ""); nulldata.put("TOTAL_COST", ""); for (int i = 0; i < 3; i++) { sublist.add(nulldata); } mv.addObject("sublist", sublist); mv.addObject("listSize", 6); } } mode = "add"; }else if (viewType == 2){ mv.addObject("dataMap", JSONObject.fromObject(varList.get(0))); }else if (viewType == 3){ mv.addObject("dataMap", JSONObject.fromObject(varList.get(0))); if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable") ||pd.get("TABLETYPE").equals("highway_repair_project_dettable") ||pd.get("TABLETYPE").equals("highway_special_project_dettable") ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable") ||pd.get("TABLETYPE").equals("highway_test_project_dettable") ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) { pd.put("PROJECT_NAME", varList.get(0).get("PROJECT_NAME")); pd.put("subtable", pd.get("TABLETYPE")+"_cost"); List sublist = annualDailyCompService.wordListRecorde(pd); // PageData nulldata = new PageData(); // nulldata.put("ITEM_NAME", ""); // nulldata.put("UNIT", ""); // nulldata.put("UNIT_PRICE", ""); // nulldata.put("NUMBER", ""); // nulldata.put("TOTAL_COST", ""); // int size = 3-sublist.size(); // for (int i = 0; i < size; i++) { // sublist.add(nulldata); // } int listSize = sublist.size()+3; mv.addObject("sublist", JSONArray.fromObject(sublist)); mv.addObject("listSize", listSize); } } JSONArray arr = JSONArray.fromObject(varList); mv.addObject("varList", arr); mv.addObject("monPlanList", monPlanList==null?pd:JSONObject.fromObject(monPlanList)); pd.put("mode", mode); mv.setViewName("information/annualPlan/annualTableRecord/"+pd.getString("TABLETYPE")); mv.addObject("pd", pd); mv.addObject("QX",Jurisdiction.getHC()); //按钮权限 return mv; } @RequestMapping(value="/saveData") @ResponseBody public Object saveData(String data,String TABLETYPE,String COMPANY_ID,String YEAR,String ROAD_ID,String COMPANY,String ROAD) throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd.put("data", data); pd.put("TABLETYPE", TABLETYPE); pd.put("COMPANY_ID", COMPANY_ID); pd.put("YEAR", YEAR); pd.put("ROAD_ID", ROAD_ID); pd.put("COMPANY", COMPANY); pd.put("ROAD", ROAD); JSONArray jsonarray = JSONArray.fromObject(pd.get("data")); int viewType = setViewType(pd.getString("TABLETYPE")); List varList = new ArrayList(); if (viewType == 1){ varList = annualDailyCompService.hasTableRecod(pd); } else if (viewType == 2){ varList = annualDailyCompService.hasTableRecod2(pd); } Map map = dealWithData(pd,varList,jsonarray); if(pd.getString("TABLETYPE").equals("highway_annual_plan_sumtable")){ //需要把预备费合入预备费表highway_reserve_fees_sumtable_total if (jsonarray.size()>0) { Object reserve = jsonarray.getJSONObject(0).get("RESERVE_DESIGN"); pd.put("RESERVE_DESIGN", reserve); } dealReserveRecod(pd); } return AppUtil.returnObject(new PageData(), map); } private void dealReserveRecod(PageData pd) throws Exception{ pd.put("TABLETYPE", "highway_reserve_fees_sumtable_total"); List varList = annualDailyCompService.hasTableRecod2(pd); if((varList == null || varList.size() == 0) && (pd.get("RESERVE_DESIGN") != null && !"".equals(pd.get("RESERVE_DESIGN")))){ annualDailyCompService.saveRecodToReserve(pd); }else{ if("".equals(pd.get("RESERVE_DESIGN"))){ pd.put("RESERVE_DESIGN",null); } annualDailyCompService.updateRecodToReserve(pd); } } @RequestMapping(value="/saveDocData") @ResponseBody public Object saveDocData(String data,String dataYDFJ) throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); JSONArray jsonarray = JSONArray.fromObject(data); Map map = new HashMap(); // JSONArray jsonarray = JSONArray.fromObject(pd.get("data")); List varList = new ArrayList(); if (pd.get("TABLETYPE").equals("highway_technica_statable")||pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) { varList = annualDailyCompService.hasTableRecod2(pd); }else { varList = annualDailyCompService.hasTableRecod3(pd); } if(!(pd.get("TABLETYPE").equals("highway_technica_statable") || pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) && pd.get("mode").equals("add")){ if(varList.size() >0){ map.put("msg", "已存在相同立项表"); return AppUtil.returnObject(new PageData(), map); }else{ pd.put("CTIME", Tools.date2Str(new Date())); //创建时间 pd.put("MTIME", Tools.date2Str(new Date())); //修改时间 pd.put("STATUS", "编制中"); //修改时间 pd.put("COMPILER", Jurisdiction.getUsername()); pd.put("COMPILE_TIME", Tools.date2Str(new Date())); List tableVarList = annualDailyCompService.hasTableRecodFormTableList(pd); //查找annual_table_list是否已存在该立项表记录 if(tableVarList.size() == 0){ annualPlanService.addNewTableInfo(pd); //insert annual_table_list新增立项详表 } } } JSONArray dataArray = new JSONArray(); if (jsonarray.size() > 0 && jsonarray != null) { dataArray.add(jsonarray.get(0)); } map = dealWithData(pd,varList,dataArray); if (jsonarray.size() > 0 && map.get("msg").equals("success") && !pd.get("TABLETYPE").equals("highway_scientific_project_dettable") && !pd.get("TABLETYPE").equals("highway_technica_statable") && !pd.get("TABLETYPE").equals("highway_traiffcinfo_sumtable")) { JSONObject jsonmap = JSONObject.fromObject(dataYDFJ); map = dealWithYDFJData(pd,jsonmap); } if (jsonarray.size() > 1 && map.get("msg").equals("success")) { JSONArray sublistArray = jsonarray.discard(0); pd.put("TABLETYPE", pd.get("TABLETYPE")+"_cost"); map = dealWithSubListData(pd,sublistArray); } return AppUtil.returnObject(new PageData(), map); } /** * 处理新增编辑数据 */ @ResponseBody public Map dealWithData(PageData pd,List varList,JSONArray jsonarray) throws Exception{ Map map = new HashMap(); try { for (Object object : jsonarray) { JSONObject arrMap = JSONObject.fromObject(object); Set entryarray = arrMap.entrySet(); ArrayList keyarray = new ArrayList(); ArrayList valuearray = new ArrayList(); for (Object entry : entryarray) { Object[] arr = entry.toString().split("="); boolean saveFlag = true; //编辑 if (varList != null && varList.size() != 0) saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0]) &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]); saveFlag = saveFlag && !"STATUS".equals(arr[0]); if (saveFlag) { keyarray.add(arr[0]); if (arr.length > 1) { valuearray.add(arr[1]); }else { valuearray.add(null); } } } pd.put("KEYS", StringUtils.join(keyarray.toArray(), ",")); pd.put("KEYARRAY", keyarray); pd.put("VALUEARRAY", valuearray); pd.put("ROAD_ID", arrMap.get("ROAD_ID")); pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME")); pd.put("viewtype", setViewType(pd.getString("TABLETYPE"))); if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable")) pd.put("viewtype", 1); //新增 if (varList == null || varList.size() == 0) annualDailyCompService.saveTableRecod(pd); //编辑 else if (keyarray.size() > 0) annualDailyCompService.editTableRecod(pd); } map.put("msg","success"); } catch (Exception e) { map.put("msg","保存失败!"); logger.warn(e); } return map; } /** * 处理立项表子表新增编辑数据 */ @ResponseBody public Map dealWithSubListData(PageData pd,JSONArray jsonarray) throws Exception{ List> idlist = new ArrayList>(); //List SubListid = annualDailyCompService.selectSubListIdByRoad(pd); List delSubListuid = new ArrayList(); for (Object object : jsonarray) { JSONObject arrMap = JSONObject.fromObject(object); Set entryarray = arrMap.entrySet(); boolean flag = true; /*if(SubListid.contains(arrMap.get("ID"))){ //TODU }*/ if (!pd.get("TABLETYPE").equals("highway_scientific_project_dettable_cost")) { if ((!arrMap.get("ID").equals(""))&&arrMap.get("ITEM_NAME").equals("")&&arrMap.get("UNIT").equals("") &&arrMap.get("UNIT_PRICE").equals("")&&arrMap.get("NUMBER").equals("")){ arrMap.put("TABLETYPE", pd.get("TABLETYPE")); annualDailyCompService.deleteSubListDataById(arrMap); annualDailyCompService.deleteRecodInfo(arrMap); flag = false; }else if (arrMap.get("ITEM_NAME").equals("")) { flag = false; } }else if ((!arrMap.get("ID").equals(""))&&arrMap.get("SUBJECT").equals("")&&arrMap.get("COSET").equals("") &&arrMap.get("EXPENDITURE_SUBJECT").equals("")&&arrMap.get("EXPENDITURE_COST").equals("")) { arrMap.put("TABLETYPE", pd.get("TABLETYPE")); annualDailyCompService.deleteSubListDataById(arrMap); flag = false; }else if (arrMap.get("SUBJECT").equals("")&&arrMap.get("COSET").equals("") &&arrMap.get("EXPENDITURE_SUBJECT").equals("")&&arrMap.get("EXPENDITURE_COST").equals("")) { flag = false; } if (flag) { ArrayList keyarray = new ArrayList(); ArrayList valuearray = new ArrayList(); for (Object entry : entryarray) { Object[] arr = entry.toString().split("="); if (arr.length > 1) { boolean saveFlag = true; //编辑 if (!arrMap.get("ID").equals("")) saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0])&&!"ROAD_ID".equals(arr[0]) &&!"COMPANY_ID".equals(arr[0])&&!"ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]); else saveFlag = !"ID".equals(arr[0]); if (saveFlag) { keyarray.add(arr[0]); if(arr.length>2){ String valueStr=""; for(int k=1;k idmap = new HashMap(); idmap.put("id", id); idmap.put("name", (String)arrMap.get("ITEM_NAME")); idlist.add(idmap); } pd.put("KEYS", StringUtils.join(keyarray.toArray(), ",")); pd.put("KEYARRAY", keyarray); pd.put("VALUEARRAY", valuearray); pd.put("ROAD_ID", arrMap.get("ROAD_ID")); pd.put("ID", arrMap.get("ID")); //新增 if (arrMap.get("ID").equals("")) annualDailyCompService.saveSubListData(pd); //编辑 else if (keyarray.size() > 0) annualDailyCompService.editSubListData(pd); } } Map map = new HashMap(); map.put("msg","success"); map.put("idlist",idlist); return map; } /** * 处理立项表进度月度分解新增编辑数据 */ @ResponseBody public Map dealWithYDFJData(PageData pd,JSONObject jsonmap) throws Exception{ annualDailyCompService.deleteMonthRecord(pd); for (int i = 1; i < 13; i++) { pd.put("MONTH",i); if ((!jsonmap.get("PLAN_COST_"+i).equals(""))||(!jsonmap.get("PLAN_QUANTITIES_"+i).equals(""))) { pd.put("PLAN_COST", jsonmap.get("PLAN_COST_"+i).equals("")?null:jsonmap.get("PLAN_COST_"+i)); pd.put("PLAN_QUANTITIES", jsonmap.get("PLAN_QUANTITIES_"+i).equals("")?null:jsonmap.get("PLAN_QUANTITIES_"+i)); annualDailyCompService.insertMonthRecord(pd); } } Map map = new HashMap(); map.put("msg","success"); return map; } @RequestMapping(value="/saveRecordInfo") @ResponseBody public Object saveRecordInfo(String recordData,String recordBeforeValue) throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); //{"102":{"PLAN_COST":"212"},"104":{"PLAN_COST":"44456"}} JSONObject datamap = JSONObject.fromObject(recordData); JSONObject datamapb = JSONObject.fromObject(recordBeforeValue); // JSONObject datamap = JSONObject.fromObject(pd.get("recordData")); // JSONObject datamapb = JSONObject.fromObject(pd.get("recordBeforeValue")); //[102={"PLAN_COST":" 00"}, 104={"PLAN_COST":"777"}] Set entryarray = datamap.entrySet(); Set entryarrayb = datamapb.entrySet(); // pd.put("MODIFIER", "admin"); pd.put("MODIFIER", Jurisdiction.getU_name()); for (Object entry : entryarray) { //102={"PLAN_COST":" 00"} Object[] arr = entry.toString().split("="); pd.put(pd.get("type"), arr[0]); if(arr.length>2){ String valueStr=""; for(int k=1;k2){ String columnStr=""; for(int k=1;k 1) pd.put("AFTER", columnarr[1]); else pd.put("AFTER", null); for (Object entryb : entryarrayb) { if (entryb.toString().indexOf((String) arr[0]) == 0) { Object[] arrb = entryb.toString().split("="); if(arrb.length>2){ String arrbStr=""; for(int k=1;k2){ String columnarrbStr=""; for(int k=1;k map = new HashMap(); map.put("msg","success"); return AppUtil.returnObject(new PageData(), map); } @RequestMapping(value="/showRecodInfo") @ResponseBody public Object showRecodInfo() throws Exception{ PageData pd = new PageData(); pd = this.getPageData(); // pd.put("MODIFIER", "admin"); Map map = new HashMap(); List rocordInfoList = annualDailyCompService.showRecodInfo(pd); JSONArray rocordInfoListarr = JSONArray.fromObject(rocordInfoList); map.put("rocordInfoList", rocordInfoList); return AppUtil.returnObject(new PageData(), map); } //多sheet // @RequestMapping(value="/export") // @ResponseBody // public ModelAndView export(HttpServletRequest request, HttpServletResponse response) throws Exception { // ModelAndView mv = this.getModelAndView(); // PageData pd = new PageData(); // pd = this.getPageData(); // List exceldata = setMultExcelData(pd); // String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file"); // MultExcelUtils ex = new MultExcelUtils(); // ex.exportExcel("高管中心数据.xlsx",path,response,exceldata); // return mv; // } //单sheet // @RequestMapping(value="/export") // @ResponseBody // public ModelAndView export(HttpServletRequest request, HttpServletResponse response) throws Exception { // ModelAndView mv = this.getModelAndView(); // PageData pd = new PageData(); // pd = this.getPageData(); // List list = annualDailyCompService.showTableRecod(pd); // String fileName = "单位日常养护计划完成情况汇总表.xlsx"; // String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file"); // ExcelUtils ex = new ExcelUtils(); // ex.exportExcel(fileName, path, response, list, (String)pd.get("keyStr")); // return mv; // } /** * 计划 * @param param * @return * @throws Exception */ public List setPlanMultExcelData(PageData param) throws Exception { List result = new ArrayList(); String[] modelNames = { "高速公路预备费使用情况汇总表","高速公路年度养护计划汇总表","高速公路日常养护计划统计表", //分报告 "高速公路预防养护计划统计表","高速公路修复养护计划统计表","高速公路专项养护计划统计表", "高速公路试验检测项目计划统计表","高速公路科研项目计划统计表","高速公路设备大修项目计划统计表" //无模板 ,"高速公路养护质量目标表(SRI)","高速公路养护质量目标表(PWI)" }; String[] keyStrs = { "","","", //分报告 "PROJECT_NAME,PROJECT_TYPE,SCALE,QUANTITIES,ESTIMATION,REMARKS"//1 ,"PROJECT_NAME,PROJECT_TYPE,SCALE,QUANTITY,ESTIMATION,REMARKS"//2 ,"PROJECT_NAME,QUANTITIES,PROJECT_COST,OTHER_MATTER"//9 ,"PROJECT_NAME,PROJECT_TYPE,CONTENTS,COST_ESTIMAT,REMARKS"//7 ,"PROJECT_NAME,PROJECT_TYPE,RESEARCH_CONTENTS,COST_ESTIMAT,REMARKS"//3 ,"PROJECT_NAME,PROJECT_TYPE,PROJECT_DESCRIBE,ESTIMATE_COST,REMARKS" //5 //无模板 ,"","" }; String[] tableNames = { "highway_reserve_fees_sumtable","highway_annual_plan_sumtable","highway_daily_plan_statable", //分报告 "highway_prevention_plan_statable","highway_repair_plan_statable","highway_special_plan_statable","highway_test_plan_statable", "highway_scientific_plan_statable", "highway_equipment_overhaul_plan_statable" //无模板 ,"highway_quality_goals_table","highway_quality_goals_table" }; int[] startRowIndexs = {0,0,0,3,3,3,3,3,3,0,0}; int[] tabletype = {0,0,0,2,2,2,2,2,2,0,0}; int[] totalRange = {0,0,0,4,4,2,3,3,3,0,0}; String[][][] funcArrys = { {},{},{}, //分报告 {},{},{},{},{},{} //无模板 ,{},{} }; PageData pd = new PageData(); pd.put("COMPANY_ID", param.get("COMPANY_ID")); pd.put("ROAD_ID", param.get("ROAD_ID")); pd.put("ROAD", param.get("ROAD")); for (int i = 0; i < tableNames.length; i++) { PageData data = new PageData(); data.put("modelName", modelNames[i]); data.put("keyStr", keyStrs[i]); data.put("startRowIndex", startRowIndexs[i]); data.put("funcArry", funcArrys[i]); data.put("tabletype", tabletype[i]); data.put("totalRange", totalRange[i]); pd.put("TABLETYPE", tableNames[i]); pd.put("YEAR", param.get("YEAR")); int viewType = setViewType(pd.getString("TABLETYPE")); List list = new ArrayList(); if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd); else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd); // List list = annualDailyCompService.selectAllRecod(pd); // List list = annualDailyCompService.exportTableRecod(pd); data.put("list", list); data.put("pd", pd); result.add(data); } return result; } /** * 完成情况 excel 数据准备 * @param param * @return * @throws Exception */ public List setCompleteMultExcelData(PageData param) throws Exception { List result = new ArrayList(); String[] modelNames = { "高速公路养护计划完成情况汇总表","高速公路日常养护计划完成情况汇总表","高速公路日常养护计划完成情况详表" ,"高速公路预防养护计划完成情况汇总表","高速公路修复养护计划完成情况汇总表","高速专项养护计划完成情况汇总表" ,"高速公路试验检测项目计划完成情况汇总表","高速公路科研项目计划完成情况汇总表","高速公路设备大修项目计划完成情况汇总表" }; String[] keyStrs = { "","","" ,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,COMPLETE_RATIO,REMARKS" ,"PROJECT_NAME,PROJECT_TYPE,SCALE,PLAN_QUANTITIES,PLAN_COST,ACTUAL_QUANTITIES,ACTUAL_COST,COST_COMPLETE_RATIO,REMARKS" ,"SPECIAL_PROJECT_NAME,PLAN_COST,ACTUAL_COST,COST_COMPLETE_RATIO,COMPLETE_DESCRIBE,REMARKS" ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COMPLETE_RATIO,XMWCQKSM,REMARKS" ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COST_COMPLETE_RATIO,XMWCQKSM,REMARKS" ,"PROJECT_NAME,PROJECT_TYPE,PLAN_COST,ACTUAL_COST,COMPLETE_RATIO,XMWCQKSM,REMARKS" }; String[] tableNames = { "highway_plan_comp_sumtable","highway_daily_comp_sumtable","highway_daily_comp_dettable" ,"highway_prevention_plan_sumtable","highway_repair_comp_sumtable","highway_special_comp_sumtable" ,"highway_test_comp_sumtable","highway_scientific_comp_sumtable","highway_equipment_overhaul_comp_sumtable" }; int[] startRowIndexs = {0,0,0,4,4,3,3,3,3}; int[] tabletype = {0,0,0,2,2,2,2,2,2}; int[] totalRange = {0,0,0,4,4,1,2,2,2}; String[][][] funcArrys = { //分报告 {},{},{} ,{{"percent","COMPLETE_RATIO","IF(ISERROR((H#row#/F#row#)),\"\",(H#row#/F#row#))"}} //11 highway_prevention_plan_sumtable ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((H#row#/F#row#)),\"\",(H#row#/F#row#))"}} //10 highway_repair_comp_sumtable ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((D#row#/C#row#)),\"\",(D#row#/C#row#))"}} //12 highway_special_comp_sumtable ,{{"percent","COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //8 highway_test_comp_sumtable ,{{"percent","COST_COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //4 highway_scientific_comp_sumtable ,{{"percent","COMPLETE_RATIO","IF(ISERROR((E#row#/D#row#)),\"\",(E#row#/D#row#))"}} //6 highway_equipment_overhaul_comp_sumtable }; PageData pd = new PageData(); pd.put("COMPANY_ID", param.get("COMPANY_ID")); pd.put("ROAD_ID", param.get("ROAD_ID")); pd.put("ROAD", param.get("ROAD")); for (int i = 0; i < tableNames.length; i++) { PageData data = new PageData(); data.put("modelName", modelNames[i]); data.put("keyStr", keyStrs[i]); data.put("startRowIndex", startRowIndexs[i]); data.put("funcArry", funcArrys[i]); data.put("tabletype", tabletype[i]); data.put("totalRange", totalRange[i]); pd.put("TABLETYPE", tableNames[i]); pd.put("YEAR", param.get("YEAR")); int viewType = setViewType(pd.getString("TABLETYPE")); List list = new ArrayList(); if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd); else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd); // List list = annualDailyCompService.selectAllRecod(pd); // List list = annualDailyCompService.exportTableRecod(pd); data.put("list", list); data.put("pd", pd); result.add(data); } return result; } public List setMultExcelData2(PageData param) throws Exception { List result = new ArrayList(); String[] modelNames = {"单位养护计划完成情况汇总表","单位日常养护计划完成情况汇总表","单位预防养护计划完成情况汇总表", "单位修复养护计划完成情况汇总表","单位养护计划汇总表","单位日常养护计划汇总表", "单位预防养护计划汇总表","单位修复养护计划汇总表"}; String[] keyStrs = { "ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_PROPORTION,DAILY_KM," + "MINOR_PREVENTION_DESIGN,MINOR_PREVENTION_COMPLETE,MINOR_PREVENTION_PROPORTION,MIDDLE_PREVENTION_DESIGN,MIDDLE_PREVENTION_COMPLETE,MIDDLE_PREVENTION_PROPORTION,OVERHAUL_PREVENTION_DESIGN,OVERHAUL_PREVENTION_COMPLETE,OVERHAUL_PREVENTION_PROPORTION,SUM_PREVENTION_DESIGN,SUM_PREVENTION_COMPLETE,SUM_PREVENTION_PROPORTION," + "MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_PROPORTION,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_PROPORTION,OVERHAUL_DESIGN,OVERHAUL_COMPLETE,OVERHAUL_PROPORTION,SUM_REPAIR_DESIGN,SUM_REPAIR_COMPLETE,SUM_REPAIR_PROPORTION," + "SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_PROPORTION," + "EMERGENCY_DESIGN,EMERGENCY_COMPLETE,EMERGENCY_PROPORTION," + "TEST_DESIGN,TEST_COMPLETE,TEST_PROPORTION," + "SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_PROPORTION," + "DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_PROPORTION," + "RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_PROPORTION," + "TOTAL_DESIGN,TOTAL_COMPLETE,TOTAL_PROPORTION" ,"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,MAINT_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COM_RETIO" ,"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,SUM_COST,COM_RETIO" ,"ROAD,DESIGN_MK,MAINTAIN_KM,PLAN_COST," + "MIN_SUBGRADE_COST,MIN_PAVEMENT_COST,MIN_BRIDGE_COST,MIN_TUNNEL_COST,MIN_TRAFFIC_SAFE_COST,MIN_ROADSIDE_COST,MIN_GREEN_COST,MIN_OTHER_COST,MIN_SUM_COST," + "MID_SUBGRADE_COST,MID_PAVEMENT_COST,MID_BRIDGE_COST,MID_TUNNEL_COST,MID_TRAFFIC_SAFE_COST,MID_ROADSIDE_COST,MID_GREEN_COST,MID_OTHER_COST,MID_SUM_COST," + "MAX_SUBGRADE_COST,MAX_PAVEMENT_COST,MAX_BRIDGE_COST,MAX_TUNNEL_COST,MAX_TRAFFIC_SAFE_COST,MAX_ROADSIDE_COST,MAX_GREEN_COST,MAX_OTHER_COST,MAX_SUM_COST," + "SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,OTHER_COST,TOTAL,COM_RETIO" ,"ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COST_KM," + "MINOR_PREVENTION_DESIGN,MIDDLE_PREVENTION_DESIGN,OVERHAUL_PREVENTION_DESIGN,SUM_PREVENTION," + "MINOR_REPAIR_DESIGN,MIDDLE_REPAIR,OVERHAUL_DESIGN,SUM_REPAIR," + "SPECIAL_DESIGN,TEST_DESIGN,SCIENTIFIC_DESIGN,DEVICE_DESIGN,EMERGENCY_DESIGN,RESERVE_DESIGN,TOTAL_COST,TOTAL_COST_KM" ,"ROAD,DESIGN_KM,CARE_KM,CLEAN,PATROL,SUBGRADE,PAVEMENT,BRIDGE,CULVERT,TUNNEL,SAFE,LINE,GREEN,CAR,EMERGENCY,TOTAL_COST,COST_KM" ,"ROAD,DESIGN_KM,CARE_KM,MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TOTAL,MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TOTAL," + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TOTAL,TOTAL_SUBGRADE,TOTAL_PAVEMENT,TOTAL_BRIDGE,TOTAL_TUNNEL,TOTAL" ,"ROAD,DESIGN_MK,MAINTAIN_KM," + "MIN_SUBGRADE,MIN_PAVEMENT,MIN_BRIDGE,MIN_TUNNEL,MIN_TRAFFIC_SAFE,MIN_ROADSIDE,MIN_GREEN,MIN_OTHER,MIN_SUM," + "MID_SUBGRADE,MID_PAVEMENT,MID_BRIDGE,MID_TUNNEL,MID_TRAFFIC_SAFE,MID_ROADSIDE,MID_GREEN,MID_OTHER,MID_SUM," + "MAX_SUBGRADE,MAX_PAVEMENT,MAX_BRIDGE,MAX_TUNNEL,MAX_TRAFFIC_SAFE,MAX_ROADSIDE,MAX_GREEN,MAX_OTHER,MAX_SUM," + "SUBGRADE,PAVEMENT,BRIDGE,TUNNEL,TRAFFIC_SAFE,ROADSIDE,GREEN,OTHER,TOTAL" }; String[] tableNames = {"annual_comp_sumtable","annual_daily_comp_sumtable","annual_prevention_comp_sumtable", "annual_repair_comp_sumtable","annual_plan_sumtable","annual_daily_plan_sumtable", "annual_prevention_plan_sumtable","annual_repair_plan_sumtable"}; int[] startRowIndexs = {4,3,3, 4,3,2, 3,3}; int[] tabletype = {1,1,1, 1,1,1, 1,1}; int[] totalRange = {0,0,0, 0,0,0, 0,0}; String[][][] funcArrys = { {{"percent","DAILY_PROPORTION","IF(ISERROR((G#row#/F#row#)),\"\",(G#row#/F#row#))"} ,{"percent","DAILY_KM","IF(ISERROR((G#row#/E#row#)),\"\",(G#row#/E#row#))"} ,{"percent","MINOR_PREVENTION_PROPORTION","IF(ISERROR((K#row#/J#row#)),\"\",(K#row#/J#row#))"} ,{"percent","MIDDLE_PREVENTION_PROPORTION","IF(ISERROR((N#row#/M#row#)),\"\",(N#row#/M#row#))"} ,{"percent","OVERHAUL_PREVENTION_PROPORTION","IF(ISERROR((Q#row#/P#row#)),\"\",(Q#row#/P#row#))"} ,{"sum","SUM_PREVENTION_DESIGN","SUM(J#row#,M#row#,P#row#)"} ,{"sum","SUM_PREVENTION_COMPLETE","SUM(K#row#,N#row#,Q#row#)"} ,{"percent","SUM_PREVENTION_PROPORTION","IF(ISERROR((T#row#/S#row#)),\"\",(T#row#/S#row#))"} ,{"percent","MINOR_REPAIR_PROPORTION","IF(ISERROR((W#row#/V#row#)),\"\",(W#row#/V#row#))"} ,{"percent","MIDDLE_REPAIR_PROPORTION","IF(ISERROR((Z#row#/Y#row#)),\"\",(Z#row#/Y#row#))"} ,{"percent","OVERHAUL_PROPORTION","IF(ISERROR((AC#row#/AB#row#)),\"\",(AC#row#/AB#row#))"} ,{"sum","SUM_REPAIR_DESIGN","SUM(V#row#,Y#row#,AB#row#)"} ,{"sum","SUM_REPAIR_COMPLETE","SUM(W#row#,Z#row#,AC#row#)"} ,{"percent","SUM_REPAIR_PROPORTION","IF(ISERROR((AF#row#/AE#row#)),\"\",(AF#row#/AE#row#))"} ,{"percent","SPECIAL_PROPORTION","IF(ISERROR((AI#row#/AH#row#)),\"\",(AI#row#/AH#row#))"} ,{"percent","EMERGENCY_PROPORTION","IF(ISERROR((AL#row#/AK#row#)),\"\",(AL#row#/AK#row#))"} ,{"percent","TEST_PROPORTION","IF(ISERROR((AO#row#/AN#row#)),\"\",(AO#row#/AN#row#))"} ,{"percent","SCIENTIFIC_PROPORTION","IF(ISERROR((AR#row#/AQ#row#)),\"\",(AR#row#/AQ#row#))"} ,{"percent","DEVICE_PROPORTION","IF(ISERROR((AU#row#/AT#row#)),\"\",(AU#row#/AT#row#))"} ,{"percent","RESERVE_PROPORTION","IF(ISERROR((AX#row#/AW#row#)),\"\",(AX#row#/AW#row#))"} ,{"sum","TOTAL_DESIGN","IF(ISNUMBER(F#row#),F#row#,0)+IF(ISNUMBER(S#row#),S#row#,0)+IF(ISNUMBER(AE#row#),AE#row#,0)+IF(ISNUMBER(AN#row#),AN#row#,0)+IF(ISNUMBER(AQ#row#),AQ#row#,0)+IF(ISNUMBER(AT#row#),AT#row#,0)+IF(ISNUMBER(AW#row#),AW#row#,0)+IF(ISNUMBER(AH#row#),AH#row#,0)+IF(ISNUMBER(AK#row#),AK#row#,0)"} ,{"sum","TOTAL_COMPLETE","IF(ISNUMBER(G#row#),G#row#,0)+IF(ISNUMBER(T#row#),T#row#,0)+IF(ISNUMBER(AF#row#),AF#row#,0)+IF(ISNUMBER(AO#row#),AO#row#,0)+IF(ISNUMBER(AR#row#),AR#row#,0)+IF(ISNUMBER(AU#row#),AU#row#,0)+IF(ISNUMBER(AX#row#),AX#row#,0)+IF(ISNUMBER(AI#row#),AI#row#,0)+IF(ISNUMBER(AL#row#),AL#row#,0)"} ,{"percent","TOTAL_PROPORTION","IF(ISERROR((BA#row#/AZ#row#)),\"\",(BA#row#/AZ#row#))"} } ,{{"sum","TOTAL_COST","SUM(G#row#:R#row#)"} ,{"percent","COST_KM","IF(ISERROR((S#row#/E#row#)),\"\",(S#row#/E#row#))"} ,{"percent","COM_RETIO","IF(ISERROR((S#row#/F#row#)),\"\",(S#row#/F#row#))"} } ,{{"sum","SUM_COST","SUM(G#row#:N#row#)"}} ,{{"sum","MIN_SUM_COST","SUM(G#row#:N#row#)"} ,{"sum","MID_SUM_COST","SUM(P#row#:W#row#)"} ,{"sum","MAX_SUM_COST","SUM(Y#row#:AF#row#)"} ,{"sum","SUBGRADE_COST","SUM(G#row#,P#row#,Y#row#)"} ,{"sum","PAVEMENT_COST","SUM(H#row#,Q#row#,Z#row#)"} ,{"sum","BRIDGE_COST","SUM(I#row#,R#row#,AA#row#)"} ,{"sum","TUNNEL_COST","SUM(J#row#,S#row#,AB#row#)"} ,{"sum","TRAFFIC_SAFE_COST","SUM(K#row#,T#row#,AC#row#)"} ,{"sum","ROADSIDE_COST","SUM(L#row#,U#row#,AD#row#)"} ,{"sum","GREEN_COST","SUM(M#row#,V#row#,AE#row#)"} ,{"sum","OTHER_COST","SUM(N#row#,W#row#,AF#row#)"} ,{"sum","TOTAL","SUM(AH#row#:AO#row#)"} } ,{{"percent","DAILY_COST_KM","IF(ISERROR((F#row#/E#row#)),\"\",(F#row#/E#row#))"} ,{"sum","SUM_PREVENTION","SUM(H#row#:J#row#)"} ,{"sum","SUM_REPAIR","SUM(L#row#:N#row#)"} ,{"sum","TOTAL_COST","IF(ISNUMBER(F#row#),F#row#,0)+IF(ISNUMBER(K#row#),K#row#,0)+IF(ISNUMBER(O#row#),O#row#,0)+IF(ISNUMBER(Q#row#),Q#row#,0)+IF(ISNUMBER(R#row#),R#row#,0)+IF(ISNUMBER(S#row#),S#row#,0)+IF(ISNUMBER(T#row#),T#row#,0)+IF(ISNUMBER(U#row#),U#row#,0)+IF(ISNUMBER(P#row#),P#row#,0)"} ,{"percent","TOTAL_COST_KM","IF(ISERROR((V#row#/E#row#)),\"\",(V#row#/E#row#))"} } ,{{"sum","TOTAL_COST","SUM(F#row#:Q#row#)"} ,{"percent","COST_KM","IF(ISERROR((R#row#/E#row#)),\"\",(R#row#/E#row#))"} } ,{{"sum","MIN_TOTAL","SUM(F#row#:I#row#)"} ,{"sum","MID_TOTAL","SUM(K#row#:N#row#)"} ,{"sum","MAX_TOTAL","SUM(P#row#:S#row#)"} ,{"sum","TOTAL_SUBGRADE","SUM(F#row#,K#row#,P#row#)"} ,{"sum","TOTAL_PAVEMENT","SUM(G#row#,L#row#,Q#row#)"} ,{"sum","TOTAL_BRIDGE","SUM(H#row#,M#row#,R#row#)"} ,{"sum","TOTAL_TUNNEL","SUM(I#row#,N#row#,S#row#)"} ,{"sum","TOTAL","SUM(U#row#:X#row#)"}} ,{{"sum","MIN_SUM","SUM(F#row#:M#row#)"} ,{"sum","MID_SUM","SUM(O#row#:V#row#)"} ,{"sum","MAX_SUM","SUM(X#row#:AE#row#)"} ,{"sum","SUBGRADE","SUM(F#row#,O#row#,X#row#)"} ,{"sum","PAVEMENT","SUM(G#row#,P#row#,Y#row#)"} ,{"sum","BRIDGE","SUM(H#row#,Q#row#,Z#row#)"} ,{"sum","TUNNEL","SUM(I#row#,R#row#,AA#row#)"} ,{"sum","TRAFFIC_SAFE","SUM(J#row#,S#row#,AB#row#)"} ,{"sum","ROADSIDE","SUM(K#row#,T#row#,AC#row#)"} ,{"sum","GREEN","SUM(L#row#,U#row#,AD#row#)"} ,{"sum","OTHER","SUM(M#row#,V#row#,AE#row#)"} ,{"sum","TOTAL","SUM(AG#row#:AN#row#)"} } }; PageData pd = new PageData(); pd.put("COMPANY_ID", param.get("COMPANY_ID")); pd.put("ROAD_ID", param.get("ROAD_ID")); for (int i = 0; i < tableNames.length; i++) { PageData data = new PageData(); data.put("modelName", modelNames[i]); data.put("keyStr", keyStrs[i]); data.put("startRowIndex", startRowIndexs[i]); data.put("funcArry", funcArrys[i]); data.put("tabletype", tabletype[i]); data.put("totalRange", totalRange[i]); pd.put("TABLETYPE", tableNames[i]); pd.put("YEAR", param.get("YEAR")); int viewType = setViewType(pd.getString("TABLETYPE")); List list = new ArrayList(); if (viewType == 1 || viewType == 2) list = showTableRecodUtil.showTableRecod(annualDailyCompService, pd); else if (viewType == 3) list = annualDailyCompService.showTableRecod2(pd); // List list = annualDailyCompService.selectAllRecod(pd); // List list = annualDailyCompService.exportTableRecod(pd); data.put("list", list); data.put("pd", pd); result.add(data); } return result; } // public List setMultExcelData(PageData param) throws Exception { // List result = new ArrayList(); // String[] modelNames = {"单位日常养护计划完成情况汇总表","单位养护计划完成情况汇总表"}; // String[] keyStrs = {"ROAD,DESIGN_KM,CARE_KM,PLAN_COST,CLEAN_COST,PATROL_COST,SUBGRADE_COST,PAVEMENT_COST,BRIDGE_COST,CULVERT_COST,TUNNEL_COST,TRAFFIC_SAFE_COST,ROADSIDE_COST,GREEN_COST,MAINT_COST,EMERGENCY_COST,TOTAL_COST,COST_KM,COM_RETIO", // "ROAD,DESIGN_KM,CARE_KM,DAILY_DESIGN,DAILY_COMPLETE,DAILY_PROPORTION,DAILY_KM,PREVENTION_DESIGN,PREVENTION_COMPLETE,PREVENTION_PROPORTION,MINOR_REPAIR_DESIGN,MINOR_REPAIR_COMPLETE,MINOR_REPAIR_PROPORTION,MIDDLE_REPAIR_DESIGN,MIDDLE_REPAIR_COMPLETE,MIDDLE_REPAIR_PROPORTION,OVERHAULD_ESIGN,OVERHAUL_COMPLETE,OVERHAUL_PROPORTION,SPECIAL_DESIGN,SPECIAL_COMPLETE,SPECIAL_PROPORTION,TEST_DESIGN,TEST_COMPLETE,TEST_PROPORTION,SCIENTIFIC_DESIGN,SCIENTIFIC_COMPLETE,SCIENTIFIC_PROPORTION,DEVICE_DESIGN,DEVICE_COMPLETE,DEVICE_PROPORTION,RESERVE_DESIGN,RESERVE_COMPLETE,RESERVE_PROPORTION,TOTAL_DESIGN,TOTAL_COMPLETE,TOTAL_PROPORTION"}; // String[] tableNames = {"annual_daily_comp_sumtable","annual_comp_sumtable"}; // int[] startRowIndexs = {3,4}; // String[][][] funcArrys = {{}, // {{"percent","DAILY_PROPORTION","IF(ISERROR((G#row#/F#row#)),\"\",(G#row#/F#row#))"}, // {"percent","PREVENTION_PROPORTION","IF(ISERROR((K#row#/J#row#)),\"\",(K#row#/J#row#))"}}}; // PageData pd = new PageData(); // pd.put("YEAR", param.get("YEAR")); // pd.put("COMPANY_ID", param.get("COMPANY_ID")); // for (int i = 0; i < tableNames.length; i++) { // PageData data = new PageData(); // data.put("modelName", modelNames[i]); // data.put("keyStr", keyStrs[i]); // data.put("startRowIndex", startRowIndexs[i]); // data.put("funcArry", funcArrys[i]); // pd.put("TABLETYPE", tableNames[i]); // List list = annualDailyCompService.selectAllRecod(pd); // data.put("list", list); // result.add(data); // } // return result; // } // @RequestMapping("/exportDoc") // public String exportDoc(HttpServletRequest request,HttpServletResponse response) throws Exception{ // ModelAndView mv = this.getModelAndView(); // PageData pd = new PageData(); // pd = this.getPageData(); // List list = annualDailyCompService.wordRecorde(pd); // if (list != null && list.size() > 0) { // Map map = list.get(0); // if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable") // ||pd.get("TABLETYPE").equals("highway_repair_project_dettable") // ||pd.get("TABLETYPE").equals("highway_special_project_dettable") // ||pd.get("TABLETYPE").equals("highway_test_project_dettable") // ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) { // pd.put("PROJECT_NAME", map.get("PROJECT_NAME")); // pd.put("subtable", pd.get("TABLETYPE")+"_cost"); // List sublist = annualDailyCompService.wordListRecorde(pd); // 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); // } // map.put("list", sublist); // } // String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file"); // String fileName = "highwayl_equipment_overhaul_project_dettable"; // WordUtils.exportDoc(request,response,map,pd.getString("modelName"),path,fileName); // } // return null; // } public String exportDoc(HttpServletRequest request,HttpServletResponse response,PageData pd) throws Exception{ List list = annualDailyCompService.wordRecorde(pd); if (list != null && list.size() > 0) { for (PageData map : list) { exportPerDoc(request,response,pd,map); } } return null; } public String exportPerDoc(HttpServletRequest request,HttpServletResponse response,PageData pd,PageData map) throws Exception{ if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable") ||pd.get("TABLETYPE").equals("highway_repair_project_dettable") ||pd.get("TABLETYPE").equals("highway_special_project_dettable") ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable") ||pd.get("TABLETYPE").equals("highway_test_project_dettable") ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) { pd.put("PROJECT_NAME", map.get("PROJECT_NAME")); pd.put("subtable", pd.get("TABLETYPE")+"_cost"); List sublist = annualDailyCompService.wordListRecorde(pd); // 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); // } map.put("list", sublist); } String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file"); String fileName = map.getString("NAME"); WordUtils.exportDoc(request,response,map,pd.getString("modelName"),path,fileName); return null; } public List creatDoc(HttpServletRequest request,HttpServletResponse response,PageData pd) throws Exception{ List list = annualDailyCompService.wordRecorde(pd); List paths = new ArrayList(); String filepath = ""; if (list != null && list.size() > 0) { for (PageData map : list) { if (pd.get("modelName").equals("101_highway_technica_statable(SRI).ftl")) { map.put("PQI", Double.parseDouble(map.get("PCI").toString())*0.35+Double.parseDouble(map.get("RQI").toString())*0.3 +Double.parseDouble(map.get("RDI").toString())*0.15+Double.parseDouble(map.get("PBI").toString())*0.1 +Double.parseDouble(map.get("SRI").toString())*0.1); map.put("MQI", Double.parseDouble(map.get("SCI").toString())*0.08+Double.parseDouble(map.get("PQI").toString())*0.7 +Double.parseDouble(map.get("BCI").toString())*0.12+Double.parseDouble(map.get("TCI").toString())*0.1); map.put("NAME", map.getString("NAME")+"(SRI)"); }else if (pd.get("modelName").equals("101_highway_technica_statable(PWI).ftl")) { map.put("PQI", Double.parseDouble(map.get("PCI").toString())*0.35+Double.parseDouble(map.get("RQI").toString())*0.3 +Double.parseDouble(map.get("RDI").toString())*0.15+Double.parseDouble(map.get("PBI").toString())*0.1 +Double.parseDouble(map.get("PWI").toString())*0.1); map.put("MQI", Double.parseDouble(map.get("SCI").toString())*0.08+Double.parseDouble(map.get("PQI").toString())*0.7 +Double.parseDouble(map.get("BCI").toString())*0.12+Double.parseDouble(map.get("TCI").toString())*0.1); map.put("NAME", map.getString("NAME")+"(PWI)"); } List keywords = getKeywordsJson(request,pd.getString("TABLETYPE"),map.getString("CATEGORY")); map.put("keywords", keywords); filepath = creatPerDoc(request,response,pd,map); paths.add(filepath); } } return paths; } public String creatPerDoc(HttpServletRequest request,HttpServletResponse response,PageData pd,PageData map) throws Exception{ if (pd.get("TABLETYPE").equals("highway_prevention_project_dettable") ||pd.get("TABLETYPE").equals("highway_repair_project_dettable") ||pd.get("TABLETYPE").equals("highway_special_project_dettable") ||pd.get("TABLETYPE").equals("highway_emergency_project_dettable") ||pd.get("TABLETYPE").equals("highway_test_project_dettable") ||pd.get("TABLETYPE").equals("highway_scientific_project_dettable")) { pd.put("PROJECT_NAME", map.get("PROJECT_NAME")); pd.put("subtable", pd.get("TABLETYPE")+"_cost"); List sublist = annualDailyCompService.wordListRecorde(pd); 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); // } map.put("list", sublist); if (map.get("KEY_WORDS") == null) { map.put("KEY_WORDS", ""); } } String path = request.getSession().getServletContext().getRealPath("/uploadFiles/file"); String fileName = map.getString("NAME"); String filepath = WordUtils.creatDoc(request,response,map,pd.getString("modelName"),path,fileName); return filepath; } @RequestMapping("/exportFiles") public String exportFiles(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(); if (pd.getString("exportname").indexOf("总报告") > 0) { //年度报告 List exceldata = setMultExcelData2(pd); MultExcelUtils ex = new MultExcelUtils(); String excelpath = ex.exportExcel(pd.getString("exportname")+".xlsx",path,response,exceldata); result.add(excelpath); }else { List exceldata = new ArrayList(); //导出计划、完成情况分卡 if(null != pd.get("type")){ //完成情况 if(pd.get("type").toString().equals("COMPLETE")){ exceldata = setCompleteMultExcelData(pd); } //计划 else if(pd.get("type").toString().equals("PLAN")){ //word文档 pd.put("modelName", "306_highway_prevention_project_dettable.ftl"); pd.put("TABLETYPE", "highway_prevention_project_dettable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "306_highway_special_project_dettable.ftl"); pd.put("TABLETYPE", "highway_special_project_dettable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "306_highway_repair_project_dettable.ftl"); pd.put("TABLETYPE", "highway_repair_project_dettable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "101_highway_technica_statable(SRI).ftl"); pd.put("TABLETYPE", "highway_technica_statable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "101_highway_technica_statable(PWI).ftl"); pd.put("TABLETYPE", "highway_technica_statable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "102_highway_traiffcinfo_sumtable.ftl"); pd.put("TABLETYPE", "highway_traiffcinfo_sumtable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "309_highway_test_project_dettable.ftl"); pd.put("TABLETYPE", "highway_test_project_dettable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "311_highway_scientific_project_dettable.ftl"); pd.put("TABLETYPE", "highway_scientific_project_dettable"); paths = creatDoc(request,response,pd); result.addAll(paths); pd.put("modelName", "313_highway_equipment_overhaul_project_dettable.ftl"); pd.put("TABLETYPE", "highway_equipment_overhaul_project_dettable"); paths = creatDoc(request,response,pd); result.addAll(paths); exceldata = setPlanMultExcelData(pd); } } //excel文档 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; } // @RequestMapping("/exportFiles") // public String exportFiles(HttpServletRequest request,HttpServletResponse response) throws Exception{ // ModelAndView mv = this.getModelAndView(); // PageData pd = new PageData(); // pd = this.getPageData(); // //modelName=311_highway_scientific_project_dettable.ftl&COMPANY_ID=001&YEAR=2018&ROAD_ID=111&TABLETYPE=highway_scientific_project_dettable // pd.put("modelName", "306_highway_prevention_project_dettable.ftl"); // pd.put("TABLETYPE", "highway_prevention_project_dettable"); // exportDoc(request,response,pd); // pd.put("modelName", "306_highway_prevention_project_dettable.ftl"); // pd.put("TABLETYPE", "highway_repair_project_dettable"); // exportDoc(request,response,pd); // pd.put("modelName", "306_highway_prevention_project_dettable.ftl"); // pd.put("TABLETYPE", "highway_special_project_dettable"); // exportDoc(request,response,pd); // return null; // } @RequestMapping(value="/getProJectName",produces = "application/json; charset=utf-8") @ResponseBody public String getProJectName(HttpServletRequest request) throws Exception { try { PageData pd = this.getPageData(); List pdList =annualDailyCompService.hasTableRecod2(pd); PageData pd1 = pdList.get(0); String proJectName = pd1.getString("PROJECT_NAME"); return "{\"projectname\":\""+proJectName+"\"}"; } catch (Exception e) { } return null; } @RequestMapping(value = "/importExcel",produces={"text/html;charset=UTF-8;","application/json;"}) @ResponseBody public String importExcel(HttpServletResponse response,HttpServletRequest request, MultipartFile file) throws Exception { String msg = new String(); try { PageData pd = this.getPageData(); System.out.println("开始"); String path = request.getSession().getServletContext().getRealPath("upload"); String fileName = ImportDoc.getNowTime()+"-"+file.getOriginalFilename(); File targetFile = new File(path, fileName); String filePath = targetFile.getAbsolutePath(); System.out.println(filePath); if (!targetFile.exists()) { targetFile.mkdirs(); } file.transferTo(targetFile); ImportDoc doc = new ImportDoc(); HashMap m = doc.ReadByExcel(filePath); msg = this.checkData(pd, m).toString(); //如果错误信息list有值直接返回信息给前台,不操作数据库 if(!(msg.isEmpty())) { return msg; } this.importExcelData(pd, m); return msg;//Msg.msg.toString(); } catch (Exception e) { msg = e.getMessage(); return msg; } } //处理Ecxel数据存入数据库 public void importExcelData(PageData pd, HashMap m) throws Exception { String jsonPath = (String) pd.get("TABLETYPE"); JSONArray jsonarray = JSONArray.fromObject(pd.get("data")); int viewType = setViewType(pd.getString("TABLETYPE")); List varList = new ArrayList(); if (viewType == 1){ varList = annualDailyCompService.hasTableRecod(pd); } else if (viewType == 2){ varList = annualDailyCompService.hasTableRecod2(pd); } JSONArray dataArray = new JSONArray(); if (jsonarray.size() > 0 && jsonarray != null) { List docJson = ImportDoc.importJson(jsonPath); JSONObject jsondate = (JSONObject) jsonarray.get(0); for(ImoprtJson ijson : docJson) { jsondate.put(ijson.getColumn(), (String) m.get(ijson.getIndex())); } dataArray.add(jsondate); } Map map = dealWithData(pd, varList, dataArray); if(map.get("msg").equals("success")){ pd.put("STATUS", "编制中"); annualDailyCompService.updateStatus(pd); annualDailyCompService.updatePlanStatus(pd); } } /** * 获取登陆账号所属的角色 * * @param * @return RoleName * @throws Exception */ public String getRoleName() throws Exception { PageData userInfo = annualDailyCompService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); // 通过username获取公司和路段 // 通过ROLE_ID获取角色 String roleName = annualDailyCompService.getRoleName(userInfo.get("ROLE_ID").toString()); return roleName; } /** * 根据角色来处理word导入的数据 * * @param m * @throws Exception */ public void checkm(HashMap m,HashMap m1) throws Exception { if(m1.containsKey("AUDIT_FEE")) { m.remove(m1.get("AUDIT_FEE")); } if(m1.containsKey("AUDIT_MAKER")) { m.remove(m1.get("AUDIT_MAKER")); } if(m1.containsKey("MATTER_YEAR")) { m.remove(m1.get("MATTER_YEAR")); } if(m1.containsKey("MATTER_NEW_CARRY")) { m.remove(m1.get("MATTER_NEW_CARRY")); } if(m1.containsKey("MATTER_CONSULT")) { m.remove(m1.get("MATTER_CONSULT")); } } @RequestMapping("/importDoc") @ResponseBody public Map importDoc(HttpServletRequest request, MultipartFile file,String data,String TABLETYPE, String COMPANY_ID,String YEAR,String ROAD_ID,String COMPANY,String ROAD,String REPORTID) throws Exception { Map msgMap = new HashMap(); List msgList = new ArrayList(); try { PageData pd = new PageData();// this.getPageData(); pd.put("data", data); pd.put("TABLETYPE", TABLETYPE); pd.put("COMPANY_ID", COMPANY_ID); pd.put("YEAR", YEAR); pd.put("ROAD_ID", ROAD_ID); pd.put("COMPANY", COMPANY); pd.put("ROAD", ROAD); pd.put("REPORTID", REPORTID); System.out.println("开始"); System.out.println( "***TABLETYPE"+TABLETYPE); String path = request.getSession().getServletContext().getRealPath("upload"); String fileName = ImportDoc.getNowTime() + "-" + file.getOriginalFilename(); System.out.println(path); // 获取当前登陆用户角色信息 String roleName = this.getRoleName(); System.out.println(roleName); // String fileName = new Date().getTime()+".jpg"; File targetFile = new File(path, fileName); String filePath = targetFile.getAbsolutePath(); System.out.println(filePath); if (!targetFile.exists()) { targetFile.mkdirs(); } file.transferTo(targetFile); ImportDoc doc = new ImportDoc(); HashMap m = doc.ReadByDoc(filePath); /* //导入项目是否已存在 String projectName = checkProjectName(pd, m); if(projectName.isEmpty()){ msgList.add("项目已存在,请检查项目名称"); msgMap.put("error", msgList); return msgMap; }*/ // 校验方法 String msg = this.checkData(pd, m).toString(); // 如果错误信息list有值直接返回信息给前台,不操作数据库 if (!(msg.isEmpty())) { msgMap.put("error", msg); return msgMap; } // 如果角色是控股管理员全部导入 String jsonPath = (String) pd.get("TABLETYPE"); List docJson = ImportDoc.importJson(jsonPath); HashMap m1 = doc.ReadByDoc(filePath); for (ImoprtJson ijson : docJson) { m1.put(ijson.getColumn(), ijson.getIndex()); } /*if (roleName.equals("控股集团管理员") || roleName.equals("系统管理组")) { } else { // 不是就有选择导入 this.checkm(m, m1); }*/ Map map = this.importDocData(pd, m); String projectName = (String) m.get("1,2"); if(map.get("msg").equals("success")){ // msgList.add(projectName); msgMap.put("projectName", projectName); }else{ // msgList.add(map.get("msg").toString()); msgMap.put("error", map.get("msg").toString()); } return msgMap;// Msg.msg.toString(); } catch (Exception e) { // msgList.add(e.getMessage()); if("The document is really a OOXML file".equalsIgnoreCase(e.getMessage()) || "The document is really a UNKNOWN file".equalsIgnoreCase(e.getMessage())){ String msg = "导入文件格式不正确"; msgMap.put("error", msg); }else{ msgMap.put("error", e.getMessage()); } return msgMap; } } /* public String checkProjectName(PageData pd, HashMap m) throws Exception { String projectName = ""; List varList = annualDailyCompService.hasTableRecod2(pd); projectName = (String) m.get("1,2"); for(PageData temppd : varList){ if(temppd.get("PROJECT_NAME") != null){ if(projectName.equalsIgnoreCase(temppd.get("PROJECT_NAME").toString())){ projectName = ""; break; } } } return projectName; }*/ private void addNewTableInfo(PageData pd, String name, String tabletype) throws Exception{ //根据TYPE得到NAME String ProjectName = annualDailyCompService.getTableName(tabletype); pd.put("TYPE", pd.get("TABLETYPE")); pd.put("COMPANY_NAME", pd.get("COMPANY")); pd.put("ROAD_NAME", pd.get("ROAD")); pd.put("NAME", ProjectName+"---"+name); pd.put("CTIME", Tools.date2Str(new Date())); //创建时间 pd.put("MTIME", Tools.date2Str(new Date())); //修改时间 pd.put("STATUS", "编制中"); //修改时间 pd.put("PROJECT_NAME", name); annualPlanService.addNewTableInfo(pd); //insert annual_table_list新增立项详表 } public StringBuffer checkData(PageData pd, HashMap m) throws IOException { StringBuffer msgBuff = new StringBuffer(); String jsonPath = (String) pd.get("TABLETYPE"); JSONArray jsonarray = JSONArray.fromObject(pd.get("data")); JSONObject jsondate = (JSONObject) jsonarray.get(0); //获取页面传来的项目名称 String project_name = (String) jsondate.get("PROJECT_NAME"); //获取字段的项目名称 String project_name_doc = (String) m.get("1,2"); if(project_name != null && project_name.length() != 0) { if(!project_name.equals(project_name_doc) ) { String str ="项目名和页面项目不一致,请检查后上传。"+"\n"; msgBuff.append(str); return msgBuff; } } String okey = ""; //其他说明事项的实际位置 for(Object getKey: m.keySet()){ if(m.get(getKey).equals("其它说明事项")){ okey = getKey.toString(); } } String moindex = okey.split(",")[0]; // 子表路径存放 StringBuffer jsonPathz = new StringBuffer(jsonPath); List docJson = ImportDoc.importJson(jsonPath); String qindex1 = ""; String oindex1 = ""; String indexs=""; String[] index = null; String index1 = ""; String index2 = ""; for (ImoprtJson ijson : docJson) { if(ijson.getColumn().equals("QUALITY_PROGRESS") || ijson.getColumn().equals("RESEARCH_BASE")){ String [] qindex = ijson.getIndex().split(","); qindex1 = qindex[0]; actulItemIndex = Integer.parseInt(moindex) - Integer.parseInt(qindex1) -4; } indexs = ijson.getIndex(); if(!indexs.isEmpty()){ // 获得单元格里面的内容 String value = (String) m.get(ijson.getIndex()); if(value==null) { value = ""; } // 获取单元格所在位置 index = ijson.getIndex().split(","); index1 = index[0]; index2 = index[index.length-1]; if(ijson.getColumn().equals("OTHER_MATTER") || ijson.getColumn().equals("MATTER_YEAR") || ijson.getColumn().equals("MATTER_NEW_CARRY") || ijson.getColumn().equals("MATTER_CONSULT")){ //"OTHER_MATTER"取实际位置的DOC值 okey = String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1]; if(!okey.isEmpty()){ // 获得单元格里面的内容 value = (String) m.get(okey); if(value==null) { value = ""; } } } checkNoNullData(ijson, value.trim(), index1, index2, msgBuff); } } // 检查子表 if (jsonPath.equals("highway_equipment_overhaul_project_dettable") || jsonPath.equals("highway_traiffcinfo_sumtable") || jsonPath.equals("highway_technica_statable") || jsonPath.equals("highway_daily_plan_statable")) { System.out.println("没有子表无需检查"); }else if(jsonPath.equals("highway_scientific_project_dettable")) { //科研分费用来源和费用支出 jsonPathz = jsonPathz.append("_cost"); List docJsonz = ImportDoc.importJson(jsonPathz.toString()); //费用来源(科目)存放List List cList1 = new ArrayList() ; //费用支出(科目)存放List List cList2 = new ArrayList() ; for(int i =0;i docJson1 = (List) docJsonz.get(i); for (ImoprtJson ijson : docJson1) { // 获得单元格里面的内容 String column = ijson.getColumn(); String value = (String) m.get(ijson.getIndex()); if(value==null) { value = ""; } if(column.equals("SUBJECT")) { cList1.add(value); } if(column.equals("EXPENDITURE_SUBJECT")) { cList2.add(value); } // 获取单元格所在位置 //String index = ijson.getIndex(); index = ijson.getIndex().split(","); index1 = index[0]; index2 = index[index.length-1]; checkNoNullData(ijson, value.trim(), index1, index2, msgBuff); } } List checkList1 = ImportDoc.removeString(cList1); // long count1 = checkList1.stream().distinct().count(); //boolean isRepeat1 = count1 < checkList1.size(); boolean isRepeat1 = ImportDoc.repeatList(checkList1); if(isRepeat1) { String str = "费用来源(科目)有重复,请检查!"+"\n"; msgBuff.append(str); } List checkList2 = ImportDoc.removeString(cList2); //long count2 = checkList2.stream().distinct().count(); //boolean isRepeat2 = count2 < checkList2.size(); boolean isRepeat2 = ImportDoc.repeatList(checkList2); if(isRepeat2) { String str = "费用支出(科目)有重复,请检查!"+"\n"; msgBuff.append(str); } }else { jsonPathz = jsonPathz.append("_cost"); List docJsonz = ImportDoc.importJson(jsonPathz.toString()); //分项名称存放List List cList = new ArrayList() ; for(int i =0;i docJson1 = (List) docJsonz.get(i); for(ImoprtJson ijson : docJson1) { // 获得单元格里面的内容 String column = ijson.getColumn(); index = ijson.getIndex().split(","); index1 = index[0]; index2 = index[index.length-1]; for(int j = 0; j < actulItemIndex; j++){ String newIndex = (Integer.parseInt(index1) + j) + ","+index2; String value = (String) m.get(newIndex); if(value==null) { value = ""; } if(column.equals("ITEM_NAME")) { cList.add(value); } checkNoNullData(ijson, value, index1, index2, msgBuff); } // 获取单元格所在位置 //String index = ijson.getIndex(); } } //判断子表分项名称是否有重复 List checkList = ImportDoc.removeString(cList); // long count = checkList.stream().distinct().count(); // boolean isRepeat = count < checkList.size(); boolean isRepeat = ImportDoc.repeatList(checkList); if(isRepeat) { String str = "分项名称有重复,请检查!"+"\n"; msgBuff.append(str); } } return msgBuff; } private StringBuffer checkNoNullData(ImoprtJson ijson, String value, String index1, String index2,StringBuffer msgBuff){ // 获得单元格字符串长度 int valueSize = value.length(); // 字符串规则 String type = ijson.getType(); // 长度规则 int typeLength = Integer.valueOf(ijson.getLength()).intValue(); // 长度String类型 String typeLengthS = ijson.getLength(); // 小数个数 String scale = ijson.getScale(); //判断能否为空,1代表不为空 String notnull = ijson.getNotnull(); //如果notnull是空的情况下处理,说明可以为空 if(notnull==null||notnull.equals("")) { if(value==null||value.equals("")) { }else { if (type.equals("String")) { if (value.length() > typeLength) { String str = "第" + index1+"行"+index2+"列"+ "单元格长度超过" + typeLengthS + "位。"+"\n"; msgBuff.append(str); } } if (type.equals("int")) { if (ImportDoc.isNumeric(value) || value.length() > typeLength) { String str = "第" + index1+"行"+index2+"列"+ "单元格要填数字" + "长度不超过" + typeLengthS + "位。"+"\n"; msgBuff.append(str); } } if (type.equals("decimal")) { if (ImportDoc.isNumber(value.trim(), scale) || value.length() > typeLength) { String str = "第"+ index1+"行"+index2+"列"+ "单元格要填数字! 长度不超过" + typeLengthS+ "位,小数点不超过" + scale + "位。"+"\n"; msgBuff.append(str); } } } }else { int notnullt = Integer.parseInt(ijson.getNotnull().trim()) ; if(notnullt==1) { if(value==null||value.equals("")) { String str = "第" + index1+"行"+index2+"列" + "不能为空"+"\n"; msgBuff.append(str); }else { if (type.equals("String")) { if (value.length() > typeLength) { String str = "第" + index1+"行"+index2+"列"+ "单元格长度超过" + typeLengthS + "位。"+"\n"; msgBuff.append(str); } } if (type.equals("int")) { if (ImportDoc.isNumeric(value) || value.length() > typeLength) { String str = "第" + index1+"行"+index2+"列"+ "单元格要填数字" + "长度不超过" + typeLengthS + "位。"+"\n"; msgBuff.append(str); } } if (type.equals("decimal")) { if (ImportDoc.isNumber(value, scale) || value.length() > typeLength) { String str = "第"+ index1+"行"+index2+"列"+ "单元格要填数字! 长度不超过" + typeLengthS+ "位小数点不超过" + scale + "位。"+"\n"; msgBuff.append(str); } } } } } return msgBuff; } /** * 处理新增编辑数据 */ @ResponseBody public Map dealWithImportData(PageData pd,List varList,JSONArray jsonarray) throws Exception{ Map map = new HashMap(); try { for (Object object : jsonarray) { JSONObject arrMap = JSONObject.fromObject(object); Set entryarray = arrMap.entrySet(); ArrayList keyarray = new ArrayList(); ArrayList valuearray = new ArrayList(); for (Object entry : entryarray) { Object[] arr = entry.toString().split("="); boolean saveFlag = true; //编辑 if (varList != null && varList.size() != 0) saveFlag = !"ROAD".equals(arr[0])&&!"YEAR".equals(arr[0])&&!"COMPANY".equals(arr[0]) &&!"ROAD_ID".equals(arr[0])&&!"COMPANY_ID".equals(arr[0])&&!"PROJECT_NAME".equals(arr[0]); saveFlag = saveFlag && !"STATUS".equals(arr[0]); if (saveFlag) { keyarray.add(arr[0]); if (arr.length > 1) { valuearray.add(arr[1]); }else { valuearray.add(null); } } } pd.put("KEYS", StringUtils.join(keyarray.toArray(), ",")); pd.put("KEYARRAY", keyarray); pd.put("VALUEARRAY", valuearray); pd.put("ROAD_ID", arrMap.get("ROAD_ID")); pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME")); pd.put("viewtype", setViewType(pd.getString("TABLETYPE"))); if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable")) pd.put("viewtype", 1); //新增 if (varList == null || varList.size() == 0) { annualDailyCompService.saveTableRecod(pd); } //编辑 else if (keyarray.size() > 0) annualDailyCompService.editTableRecod(pd); } map.put("msg","success"); } catch (Exception e) { map.put("msg","保存失败!"); } return map; } /** * 处理导入的word数据 */ @ResponseBody public Map dealWithImportWordData(boolean flag, PageData pd, JSONObject jsonObject) throws Exception{ Map map = new HashMap(); try { JSONObject arrMap = jsonObject; Set entryarray = arrMap.entrySet(); ArrayList keyarray = new ArrayList(); ArrayList valuearray = new ArrayList(); for (Object entry : entryarray) { Object[] arr = entry.toString().split("="); keyarray.add(arr[0]); if (arr.length > 1) { valuearray.add(arr[1]); }else { valuearray.add(null); } } pd.put("KEYS", StringUtils.join(keyarray.toArray(), ",")); pd.put("KEYARRAY", keyarray); pd.put("VALUEARRAY", valuearray); pd.put("PROJECT_NAME", arrMap.get("PROJECT_NAME")); pd.put("viewtype", setViewType(pd.getString("TABLETYPE"))); if (pd.getString("TABLETYPE").equals("highway_technica_statable")||pd.getString("TABLETYPE").equals("highway_traiffcinfo_sumtable")) pd.put("viewtype", 1); //新增 if (flag) { annualDailyCompService.saveTableRecod(pd); }else{ //编辑 annualDailyCompService.editTableRecod(pd); } map.put("msg","success"); } catch (Exception e) { System.out.println(e.toString()); map.put("msg","保存失败!"); } return map; } /** * 处理导入的立项表子表word数据 */ @ResponseBody public Map dealWithWordSubListData(PageData pd,JSONArray jsonarray) throws Exception{ Map map = new HashMap(); boolean flag = true; List pdList = new ArrayList(); try{ if ("highway_equipment_overhaul_project_dettable".equals(pd.get("TABLE_NAME"))) { flag = false; }else{ annualDailyCompService.deleteSubListDataWord(pd); } for (Object object : jsonarray) { PageData newpd = new PageData(); JSONObject arrMap = JSONObject.fromObject(object); Set entryarray = arrMap.entrySet(); if (flag) { ArrayList keyarray = new ArrayList(); ArrayList valuearray = new ArrayList(); for (Object entry : entryarray) { Object[] arr = entry.toString().split("="); if (arr.length > 1) { keyarray.add(arr[0]); valuearray.add(arr[1]); } } newpd.put("TABLE_NAME", pd.get("TABLE_NAME")); newpd.put("KEYS", StringUtils.join(keyarray.toArray(), ",")); newpd.put("KEYARRAY", keyarray); newpd.put("VALUEARRAY", valuearray); if(!"highway_scientific_project_dettable_cost".equals(pd.get("TABLE_NAME"))){ if(newpd.get("KEYARRAY").toString().contains("TOTAL_COST")){ pdList.add(newpd); } }else{ if(newpd.get("KEYARRAY").toString().contains("SUBJECT")){ pdList.add(newpd); } } } } for(PageData tpd : pdList){ //新增 annualDailyCompService.saveSubListDataWord(tpd); } map.put("msg","success"); }catch(Exception e){ map.put("msg", e.toString()); } return map; } //将导入word提取的数据入库 public Map importDocData(PageData pd, HashMap m) throws Exception { //判断是否是已存在的立项表 boolean flag = true; List varList = annualDailyCompService.hasTableRecod2(pd); if("highway_technica_statable".equals(pd.get("TABLETYPE")) || "highway_traiffcinfo_sumtable".equals(pd.get("TABLETYPE"))){ if(varList.size() > 0){ flag = false; //新导入的项目属于原项目 } }else{ for(PageData varpd : varList){ if(varpd.get("PROJECT_NAME") != null){ if(m.get("1,2").equals(varpd.get("PROJECT_NAME"))){ flag = false; //新导入的项目属于原项目 break; } } } } //先处理子表数据,得到总表的规模和估算金额 JSONArray jsonarray = JSONArray.fromObject(pd.get("data")); String jsonPath = (String) pd.get("TABLETYPE") + "_cost"; double totalCost = (double)0; String PROJECT_SCALE = "小修"; Map map = new HashMap(); if(!("highway_equipment_overhaul_project_dettable_cost".equalsIgnoreCase(jsonPath) || "highway_quality_goals_table_cost".equalsIgnoreCase(jsonPath) || "highway_technica_statable_cost".equalsIgnoreCase(jsonPath) || "highway_traiffcinfo_sumtable_cost".equalsIgnoreCase(jsonPath) || "highway_scientific_project_dettable_cost".equalsIgnoreCase(jsonPath))){ //排除没有子表的 List subdocJson = ImportDoc.importJson(jsonPath); JSONObject jsondate = jsonarray.getJSONObject(1); JSONArray sublistArray = new JSONArray(); subdocJson = ImportDoc.importJson(jsonPath); boolean isAddFlag = true; for(int i =0;i 5000){ PROJECT_SCALE = "大修"; }else{ PROJECT_SCALE = "中修"; } } jsonPath = (String) pd.get("TABLETYPE"); JSONObject dataObject = new JSONObject(); if (jsonarray.size() > 0 && jsonarray != null) { List docJson = ImportDoc.importJson(jsonPath); //JSONObject jsondate = (JSONObject) jsonarray.get(0); for(ImoprtJson ijson : docJson) { if(ijson.getColumn().equals("KEY_WORDS")) { String a= (String) m.get(ijson.getIndex()); String b = a.replace(",", ","); dataObject.put(ijson.getColumn(), b); continue; } if(!("highway_scientific_project_dettable".equalsIgnoreCase(jsonPath) || "highway_equipment_overhaul_project_dettable".equalsIgnoreCase(jsonPath) || "highway_quality_goals_table".equalsIgnoreCase(jsonPath) || "highway_technica_statable".equalsIgnoreCase(jsonPath) || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath) || "highway_scientific_project_dettable".equalsIgnoreCase(jsonPath))){ if("PROJECT_COST".equalsIgnoreCase(ijson.getColumn()) || "TOTAL_COST".equalsIgnoreCase(ijson.getColumn())){ dataObject.put(ijson.getColumn(), String.valueOf(totalCost/10000)); }else if("PROJECT_SCALE".equalsIgnoreCase(ijson.getColumn())){ dataObject.put(ijson.getColumn(), PROJECT_SCALE); }else if("OTHER_MATTER".equalsIgnoreCase(ijson.getColumn())){ dataObject.put(ijson.getColumn(), (String) m.get(String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1])); }else{ dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex())); } }else if("highway_scientific_project_dettable".equalsIgnoreCase(jsonPath)){ if("OTHER_MATTER".equalsIgnoreCase(ijson.getColumn()) || "MATTER_YEAR".equalsIgnoreCase(ijson.getColumn()) || "MATTER_NEW_CARRY".equalsIgnoreCase(ijson.getColumn()) || "MATTER_CONSULT".equalsIgnoreCase(ijson.getColumn())){ dataObject.put(ijson.getColumn(), (String) m.get(String.valueOf(Integer.parseInt(ijson.getIndex().split(",")[0]) + actulItemIndex) + "," + ijson.getIndex().split(",")[1])); }else{ dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex())); } }else{ dataObject.put(ijson.getColumn(), (String) m.get(ijson.getIndex())); } } if(dataObject.get("TOTAL_COST") == null){ dataObject.put("TOTAL_COST", dataObject.get("PROJECT_COST")); } dataObject.put("YEAR", pd.get("YEAR")); dataObject.put("COMPANY", pd.get("COMPANY")); dataObject.put("COMPANY_ID", pd.get("COMPANY_ID")); dataObject.put("ROAD_ID", pd.get("ROAD_ID")); dataObject.put("ROAD", pd.get("ROAD")); } if (map.get("msg").equals("success")){ map = dealWithImportWordData(flag, pd, dataObject); if("highway_technica_statable".equalsIgnoreCase(jsonPath) || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath)){ pd.put("STATUS", "编制中"); annualDailyCompService.updateStatus(pd); annualDailyCompService.updatePlanStatus(pd); } } if (map.get("msg").equals("success")) { //主表插入数据成功再添加table表 if(flag && !("highway_technica_statable".equalsIgnoreCase(jsonPath) || "highway_traiffcinfo_sumtable".equalsIgnoreCase(jsonPath))){ varList = null; //新导入的项目不属于原项目,执行insert操作 String projectName = (String) m.get("1,2"); addNewTableInfo(pd, projectName, jsonPath); annualDailyCompService.updatePlanStatus(pd); } } return map; } public int setViewType(String tableType) { int viewType = 1; if (tableType.equals("highway_plan_comp_sumtable")||tableType.equals("highway_annual_plan_sumtable") ||tableType.equals("highway_quality_goals_table")|| tableType.equals("highway_daily_plan_statable") ||tableType.equals("highway_reserve_fees_sumtable") || tableType.equals("highway_daily_plan_statable") ||tableType.equals("highway_daily_comp_sumtable") || tableType.equals("highway_daily_comp_dettable")) { viewType = 2; }else if (tableType.equals("highway_technica_statable") ||tableType.equals("highway_traiffcinfo_sumtable") ||tableType.equals("highway_prevention_project_dettable") ||tableType.equals("highway_emergency_project_dettable") ||tableType.equals("highway_repair_project_dettable") ||tableType.equals("highway_test_project_dettable") ||tableType.equals("highway_scientific_project_dettable") ||tableType.equals("highway_equipment_overhaul_project_dettable") ||tableType.equals("highway_special_project_dettable")) { viewType = 3; } return viewType; } @RequestMapping(value="/updateStatus") @ResponseBody public Object updateStatus() throws Exception{ String username = Jurisdiction.getUsername(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); int intStatus = Integer.parseInt(pd.getString("STATUS")); String pdStatus = ""; switch(intStatus){ case 0: pdStatus = "新建";break; case 1: pdStatus = "编制中"; pd.put("MTIME", Tools.date2Str(new Date())); pd.put("COMPILER", username); pd.put("COMPILE_TIME", Tools.date2Str(new Date())); break; case 2: pdStatus = "待审核";break; case 3: pd.put("MTIME", Tools.date2Str(new Date())); pdStatus = "审核中";break; case 4: pdStatus = "审核通过"; pd.put("AUDITOR", username); pd.put("AUDIT_TIME", Tools.date2Str(new Date())); break; case 5: pdStatus = "审核不通过"; pd.put("AUDITOR", username); pd.put("AUDIT_TIME", Tools.date2Str(new Date())); break; case 6: pdStatus = "路公司驳回";break; case 7: pdStatus = "待审批";break; case 8: pd.put("MTIME", Tools.date2Str(new Date())); pdStatus = "审批中";break; case 9: pdStatus = "审批通过"; pd.put("APPROVER", username); pd.put("APPROVE_TIME", Tools.date2Str(new Date())); break; case 10: pdStatus = "审批不通过"; pd.put("APPROVER", username); pd.put("APPROVE_TIME", Tools.date2Str(new Date())); break; case 11: pdStatus = "控股驳回";break; default: pdStatus = "新建";break; } pd.put("STATUS", pdStatus); if("undefined".equals(pd.get("PROJECT_NAME"))){ pd.remove("PROJECT_NAME"); } annualDailyCompService.updateStatus(pd); //update annual_table_list 表状态 //List tableInfo = annualDailyCompService.getAllTableStatus(pd); //查询 annual_table_list中同一个plan下的表状态 String planStatus = dealStatus(pd); if(!planStatus.isEmpty()){ pd.put("STATUS", planStatus); annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态 } Map map = new HashMap(); map.put("msg", pdStatus); return AppUtil.returnObject(new PageData(), map); } @RequestMapping(value="/updatePlanStatus") @ResponseBody public Object updatePlanStatus() throws Exception{ String username = Jurisdiction.getUsername(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); pd.put("STATUS", "删除"); String planStatus = dealStatus(pd); if(!planStatus.isEmpty()){ pd.put("STATUS", planStatus); annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态 } Map map = new HashMap(); map.put("msg","success"); return AppUtil.returnObject(new PageData(), map); } private String dealStatus(PageData pd) throws Exception{ String annualPlanStatus = ""; if(pd.get("TABLETYPE") !=null){ if("highway_reserve_fees_sumtable".equalsIgnoreCase(pd.get("TABLETYPE").toString())){ pd.put("YEAR", String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) + 1)); } } String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id //String planStatus = annualDailyCompService.getPlanStatus(pd); //查询 annual_table_list对应的plan状态 List reportIds = annualDailyCompService.getReportsInfo(planid); //通过planid获取对应的reportids,所有的路段 Map> reportAndTableMap = new HashMap>(); for(PageData reportid : reportIds){ List tableInfoList = annualDailyCompService.getUserTableInfo(reportid); reportAndTableMap.put(reportid, tableInfoList); if(isXJstatus(reportAndTableMap)){ annualPlanStatus = "新建"; }else if(isBZstatus(reportAndTableMap)){ annualPlanStatus = "编制中"; }else if(isDSHstatus(reportAndTableMap)){ annualPlanStatus = "待审核"; }else if(isSHTGstatus(reportAndTableMap)){ annualPlanStatus = "审核通过"; }else if("".equalsIgnoreCase(isBFSHTGstatus(reportAndTableMap))){ annualPlanStatus = isBFSHTGstatus(reportAndTableMap); }else if("".equalsIgnoreCase(isSHBTGstatus(reportAndTableMap))){ annualPlanStatus = isSHBTGstatus(reportAndTableMap); }else if(isDSPstatus(reportAndTableMap)){ annualPlanStatus = "待审批"; }else if(isSPTGstatus(reportAndTableMap)){ annualPlanStatus = "审批通过"; }else if(isSPBTGstatus(reportAndTableMap)){ annualPlanStatus = "控股驳回"; } } return annualPlanStatus; } //新建 private boolean isXJstatus(Map> reportAndTableMap){ boolean flag = false; for (Entry> entry : reportAndTableMap.entrySet()) { //System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if(!("新建".equalsIgnoreCase(status) || "自动统计".equalsIgnoreCase(status))){ return false; }else{ flag = true; } } } return flag; } //编制中 private boolean isBZstatus(Map> reportAndTableMap){ boolean flag = false; for (Entry> entry : reportAndTableMap.entrySet()) { //System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if("待审核".equalsIgnoreCase(status) || "审核通过".equalsIgnoreCase(status) ||"审核不通过".equalsIgnoreCase(status) || "待审批".equalsIgnoreCase(status) || "审批通过".equalsIgnoreCase(status) || "审批不通过".equalsIgnoreCase(status)){ return false; }else if("编制中".equalsIgnoreCase(status)){ flag = true; } } } return flag; } //待审核 private boolean isDSHstatus(Map> reportAndTableMap){ boolean flag = false; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if("待审核".equalsIgnoreCase(status)){ return true; } } } return flag; } //审核通过 private boolean isSHTGstatus(Map> reportAndTableMap){ boolean flag = false; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if(!"审核通过".equalsIgnoreCase(status) && !"自动统计".equalsIgnoreCase(status)){ return false; }else{ flag = true; } } } return flag; } //部分审核通过(路段1,路段2) private String isBFSHTGstatus(Map> reportAndTableMap){ String shtgRoads = ""; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if("待审核".equalsIgnoreCase(status)){ return "待审核"; }else if("审核通过".equalsIgnoreCase(status) && !shtgRoads.contains(entry.getKey().get("ROAD_NAME").toString())){ shtgRoads += entry.getKey().get("ROAD_NAME") + ","; } } } return "部分审核通过("+shtgRoads.indexOf(0, shtgRoads.length()-1)+")"; } //审核不通过 private String isSHBTGstatus(Map> reportAndTableMap){ String shbtgRoads = ""; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if("待审核".equalsIgnoreCase(status)){ return "待审核"; }else if("审核不通过".equalsIgnoreCase(status) && !shbtgRoads.contains(entry.getKey().get("ROAD_NAME").toString())){ shbtgRoads += entry.getKey().get("ROAD_NAME") + ","; } } } return "路公司驳回("+shbtgRoads.indexOf(0, shbtgRoads.length()-1)+")"; } //待审批 private boolean isDSPstatus(Map> reportAndTableMap){ boolean flag = false; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if("待审批".equalsIgnoreCase(status)){ return true; } } } return flag; } //审批通过 private boolean isSPTGstatus(Map> reportAndTableMap){ boolean flag = false; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if(!"审批通过".equalsIgnoreCase(status) && !"自动统计".equalsIgnoreCase(status)){ return false; }else{ flag = true; } } } return flag; } //审批不通过 private boolean isSPBTGstatus(Map> reportAndTableMap){ boolean flag = true; for (Entry> entry : reportAndTableMap.entrySet()) { for(PageData tablepd : entry.getValue()){ String status = tablepd.get("STATUS").toString(); if("审批不通过".equalsIgnoreCase(status)){ return true; }else if("待审批".equalsIgnoreCase(status) || "新建".equalsIgnoreCase(status) || "待审核".equalsIgnoreCase(status) || "审核通过".equalsIgnoreCase(status) ||"审核不通过".equalsIgnoreCase(status)){ flag = false; } } } return flag; } /* private String dealStatus(PageData pd) throws Exception{ String annualPlanStatus = ""; if(pd.get("TABLETYPE") !=null){ if("highway_reserve_fees_sumtable".equalsIgnoreCase(pd.get("TABLETYPE").toString())){ pd.put("YEAR", String.valueOf(Integer.parseInt(pd.get("YEAR").toString()) + 1)); } } String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id String planStatus = annualDailyCompService.getPlanStatus(pd); //查询 annual_table_list对应的plan状态 List reportIds = annualDailyCompService.getReportIds(planid); //通过planid获取对应的reportids,所有的路段 //PageData reportInfo = annualDailyCompService.getReportId(pd); //通过pd获取当前修改的table对应的report信息,一条路段 //年计划状态为“新建”,进行“编制”操作,年计划和对应表状态都为“编制中” if("新建".equalsIgnoreCase(planStatus)){ annualPlanStatus = "编制中"; } PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段 //通过ROLE_ID获取角色 String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString()); if("路桥公司管理员".equalsIgnoreCase(roleName)){ if("待审核".equalsIgnoreCase(planStatus) && "审核通过".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "审核中"; }else if(("待审核".equalsIgnoreCase(planStatus) || "审核中".equalsIgnoreCase(planStatus)) && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "路公司驳回(" + pd.get("ROAD").toString() + ")"; } if("审核中".equalsIgnoreCase(planStatus) && "审核通过".equalsIgnoreCase(pd.get("STATUS").toString())){ if(hasAllPassStatus(reportIds,"审核通过")){ annualPlanStatus = "审核通过"; } } if(planStatus.contains("路公司驳回") && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){ String roadnames = planStatus.replace(")", "").trim(); if(!roadnames.contains(pd.get("ROAD").toString())){ roadnames += "," + pd.get("ROAD").toString(); annualPlanStatus = roadnames + ")"; } } //路公司用户直接修改保存原来审核不通过的表格 if(planStatus.contains("路公司驳回") && "编制中".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = hasAllPassOrEditStatus(reportIds, planStatus, "审核通过", "编制中"); } //路公司用户直接删除审核不通过的表格 if(planStatus.contains("路公司驳回") && "删除".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = hasAllPassOrEditStatus(reportIds, planStatus, "审核通过", "编制中"); } if(planStatus.contains("控股驳回") && "审核不通过".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "路公司驳回(" + pd.get("ROAD").toString() + ")"; } if(planStatus.contains("控股驳回") && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "待审批"; } if((("审核中").equalsIgnoreCase(planStatus)||("审核通过").equalsIgnoreCase(planStatus)) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "待审批"; } if(("编制中").equalsIgnoreCase(planStatus) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "待审批"; } } if("路段管理员".equalsIgnoreCase(roleName)){ if(planStatus.contains("编制中") && "待审核".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "待审核"; } if(planStatus.contains("路公司驳回") && "待审核".equalsIgnoreCase(pd.get("STATUS").toString())){ String[] roadnames = planStatus.replace("路公司驳回(", "").replace(")", "").trim().split(","); String roads = ""; for(String road : roadnames){ if(pd.get("ROAD") != null){ if(!road.trim().equalsIgnoreCase(pd.get("ROAD").toString().trim())){ roads += road.trim() + ","; } } if(pd.get("ROADS") != null){ String[] tempRoads = (String[])pd.get("ROADS"); for(String tempRoad : tempRoads){ if(!road.trim().equalsIgnoreCase(tempRoad.trim())){ roads += road.trim() + ","; } } } } if(roads.isEmpty()){ annualPlanStatus = "待审核"; }else{ annualPlanStatus = "路公司驳回(" + roads.substring(0, roads.length()-1) + ")"; } } //路段用户删除(审核不通过)的表格 if("删除".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = getAllTableStatus(reportIds); } } if("控股集团管理员".equalsIgnoreCase(roleName)){ if("待审批".equalsIgnoreCase(planStatus) && "审批通过".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "审批中"; }else if(("待审批".equalsIgnoreCase(planStatus) || "审批中".equalsIgnoreCase(planStatus)) && "审批不通过".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "控股驳回"; } if("审批中".equalsIgnoreCase(planStatus) && "审批通过".equalsIgnoreCase(pd.get("STATUS").toString())){ if(hasAllPassStatus(reportIds,"审批通过")){ annualPlanStatus = "审批通过"; } } if("待审批".equalsIgnoreCase(planStatus) && "待审批".equalsIgnoreCase(pd.get("STATUS").toString())){ annualPlanStatus = "待审批"; } } return annualPlanStatus; }*/ /* //判断同一年报告下的所有表状态(除“自动统计”) private String getAllTableStatus(List reportIds) throws Exception{ String status = ""; PageData pd = new PageData(); for(String reportid : reportIds){ pd.put("REPORTID", reportid); List tableInfoList = annualDailyCompService.getUserTableInfo(pd); int i = 0; for(PageData tableInfo : tableInfoList){ if(tableInfo.get("STATUS").toString().equalsIgnoreCase("审核通过") || tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){ i++; } } if(i == tableInfoList.size()){ status = "审核通过"; } } return status; }*/ //判断同一年报告下的所有表状态是否都为“审核通过”(除“自动统计”) /* private boolean hasAllPassStatus(List reportIds, String status) throws Exception{ boolean hasAllPassStatus = true; PageData pd = new PageData(); for(String reportid : reportIds){ pd.put("REPORTID", reportid); List tableInfoList = annualDailyCompService.getUserTableInfo(pd); int i = 0; for(PageData tableInfo : tableInfoList){ if(tableInfo.get("STATUS").toString().equalsIgnoreCase(status) || tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){ i++; } } if(i != tableInfoList.size()){ hasAllPassStatus = false; break; } } return hasAllPassStatus; }*/ //路桥用户点击"保存",判断同一年报告下的所有表状态是否都为“审核通过”或者编制人为路桥公司管理员,编制中状态(除“自动统计”) /* private String hasAllPassOrEditStatus(List reportIds, String planStatus, String status1, String status2) throws Exception{ PageData pd = new PageData(); List delRoad = new ArrayList(); for(String reportid : reportIds){ pd.put("REPORTID", reportid); List tableInfoList = annualDailyCompService.getUserTableInfo(pd); int i = 0; for(PageData tableInfo : tableInfoList){ if(tableInfo.get("STATUS").toString().equalsIgnoreCase(status1) || (tableInfo.get("STATUS").toString().equalsIgnoreCase(status2) && "路桥公司管理员".equalsIgnoreCase(getRoleName(tableInfo.get("COMPILER").toString()))) || tableInfo.get("STATUS").toString().equalsIgnoreCase("自动统计")){ i++; } } if(i == tableInfoList.size()){ //路段报告中没有审核不通过的 if(tableInfoList.get(0).get("ROAD_NAME") != null){ delRoad.add(tableInfoList.get(0).get("ROAD_NAME").toString().trim()); } } } String[] roadnames = planStatus.replace("路公司驳回(", "").replace(")", "").trim().split(","); if(delRoad.size() > 0){ //路段报告中没有审核不通过的 for(String delR : delRoad){ for(int j = 0; j < roadnames.length; j++){ if(roadnames[j].trim().equalsIgnoreCase(delR)){ roadnames = (String[]) ArrayUtils.remove(roadnames, j); } } } } if(roadnames.length > 0){ StringBuffer str = new StringBuffer(); for (String s : roadnames) { str.append(s); } planStatus = "路公司驳回(" + str.toString() + ")"; }else{ planStatus = "审核中"; } return planStatus; }*/ /* private String getRoleName(String name) throws Exception{ PageData userInfo = annualPlanService.getCompanyAndRoad(name); //通过username获取公司和路段 //通过ROLE_ID获取角色 String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString()); return roleName; }*/ /**完成审核和审批 * @param * @throws Exception */ @RequestMapping(value="/updateAllStatus") @ResponseBody public Object updateAllStatus()throws Exception{ String username = Jurisdiction.getUsername(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); String msg = "提交成功"; PageData userInfo = annualPlanService.getCompanyAndRoad(Jurisdiction.getUsername().toString()); //通过username获取公司和路段 //通过ROLE_ID获取角色 String roadUser = ""; String roleName = annualPlanService.getRoleName(userInfo.get("ROLE_ID").toString()); if("路段管理员".equalsIgnoreCase(roleName)){ String[] roadnames = userInfo.get("ROAD").toString().replace("","").split(","); String[] roads = new String[roadnames.length]; for(int i = 0; i < roadnames.length ; i++){ //String roadid = annualPlanService.getRoadId(roadnames[i].trim()); roads[i] = roadnames[i].trim(); } pd.put("ROADS", roads); pd.put("USERNAME", username); roadUser = username; } // JSONArray jsonarray = JSONArray.fromObject(pd.get("data")); int intStatus = Integer.parseInt(pd.getString("STATUS")); String pdStatus = ""; switch(intStatus){ case 0: pdStatus = "新建";break; case 1: pdStatus = "编制中"; pd.put("COMPILER", username); pd.put("COMPILE_TIME", Tools.date2Str(new Date())); break; case 2: pdStatus = "待审核";break; case 3: pdStatus = "审核中";break; case 4: pdStatus = "审核通过"; pd.put("AUDITOR", username); pd.put("AUDIT_TIME", Tools.date2Str(new Date())); break; case 5: pdStatus = "审核不通过"; pd.put("AUDITOR", username); pd.put("AUDIT_TIME", Tools.date2Str(new Date())); break; case 6: pdStatus = "路公司驳回";break; case 7: pd.put("SPTIME", Tools.date2Str(new Date())); pdStatus = "待审批";break; case 8: pdStatus = "审批中";break; case 9: pdStatus = "审批通过"; pd.put("APPROVER", username); pd.put("APPROVE_TIME", Tools.date2Str(new Date())); break; case 10: pdStatus = "审批不通过"; pd.put("APPROVER", username); pd.put("APPROVE_TIME", Tools.date2Str(new Date())); break; case 11: pdStatus = "审核完成";break; case 12: pdStatus = "审批完成";break; case 13: pdStatus = "控股驳回";break; default: pdStatus = "新建";break; } pd.put("STATUS", pdStatus); String planid = annualDailyCompService.getPlanId(pd); //通过companyid和year获取 annual_plan_list对应的id List reportIds = annualDailyCompService.getReportIds(planid); //通过planid获取对应的reportids,所有的路段 if(intStatus == 2){ if(roadUser.isEmpty()){ msg = "只有路段管理员需要提交审核"; }else{ pd.put("PLANID", planid); List userReportIds = annualDailyCompService.getUserReportIds(pd); //获取该路段用户所有报告 for(String reportid : userReportIds){ pd.put("REPORTID", reportid); List tableInfoList = annualDailyCompService.getUserTableInfo(pd); for(PageData tableInfo : tableInfoList){ if(!("编制中".equalsIgnoreCase(tableInfo.get("STATUS").toString()) || "审核通过".equalsIgnoreCase(tableInfo.get("STATUS").toString()) || "审批通过".equalsIgnoreCase(tableInfo.get("STATUS").toString()) || "自动统计".equalsIgnoreCase(tableInfo.get("STATUS").toString()))){ msg = "不符合条件,不能提交审核"; break; } } } if("提交成功".equalsIgnoreCase(msg)){ msg = "已提交审核"; for(String reportid : userReportIds){ pd.put("REPORTID", reportid); annualDailyCompService.updateAllTablesStatus(pd); //update 该plan下所有table表状态(编制中的所有表) } String planStatus = dealStatus(pd); if(!planStatus.isEmpty()){ //不修改状态 pd.put("STATUS", planStatus); annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态 ,更新计划修改时间(每次提交时更新) } } } }else if(intStatus == 7){ //提交年度计划 List companyUserList = annualDailyCompService.getCompanyUserInfo(pd); //通过公司名获取该公司下所有user信息 Map userMap = new HashMap(); for(PageData user : companyUserList){ String userRoleName = annualDailyCompService.getRoleName(user.get("ROLE_ID").toString()); userMap.put(user.get("USERNAME").toString(), userRoleName); } msg = getMsg(pd, reportIds, userMap); if("success".equalsIgnoreCase(msg)){ msg = "提交年度计划成功"; for(String reportid : reportIds){ pd.put("REPORTID", reportid); annualDailyCompService.updateAllTablesStatus1(pd); //update 该plan下所有table表状态(自动统计外的所有表) } String planStatus = dealStatus(pd); if(!planStatus.isEmpty()){ //不修改状态 pd.put("STATUS", planStatus); annualDailyCompService.updatePlanStatus(pd); //update annual_plan_list 表状态 } } } Map map = new HashMap(); map.put("msg", msg); map.put("status",pd.get("STATUS").toString()); return AppUtil.returnObject(new PageData(), map); } public String getMsg(PageData pd, List reportIds, Map userMap){ String msg = "success"; try{ for(String reportid : reportIds){ pd.put("REPORTID", reportid); List tableInfoList = annualDailyCompService.getUserTableInfo(pd); for(PageData tableInfo : tableInfoList){ if(tableInfo.get("STATUS").toString().equalsIgnoreCase("新建")){ msg = "存在状态为“新建”的表,不能提交年度计划"; return msg; } if(tableInfo.get("COMPILER") != null){ for(Entry um : userMap.entrySet()){ if((um.getKey().equalsIgnoreCase(tableInfo.get("COMPILER").toString()) && um.getValue().equalsIgnoreCase("路段管理员") && !tableInfo.get("STATUS").toString().equalsIgnoreCase("审核通过"))){ msg = "路桥公司管理员还有表未审核通过,不能提交年度计划"; return msg; }else if(tableInfo.get("STATUS").toString().equalsIgnoreCase("待审批")){ msg = "控股集团管理员还有表未审批,不能提交年度计划"; return msg; } } } } } return msg; }catch(Exception e){ return e.toString(); } } //判断table状态,获得plan状态 public boolean getAllTableStatus(PageData pd) throws Exception{ List tableStatus = annualDailyCompService.getAllTableStatus(pd); boolean planStatus = true; for(PageData tableStatu : tableStatus){ if("审核不通过".equalsIgnoreCase(tableStatu.get("STATUS").toString()) || "审批不通过".equalsIgnoreCase(tableStatu.get("STATUS").toString())){ planStatus = false; break; } } return planStatus; } @RequestMapping(value="/getValidateJson") @ResponseBody public Object getValidateJson() throws Exception{ Map result = new HashMap(); PageData pd = new PageData(); pd = this.getPageData(); String jsonPath = (String) pd.get("TABLETYPE"); List list = ImportDoc.importJson(jsonPath); Map map = jsonListToObj(list); result.put("map", map); if (jsonPath.equals("highway_prevention_project_dettable") ||jsonPath.equals("highway_repair_project_dettable") ||jsonPath.equals("highway_special_project_dettable") ||jsonPath.equals("highway_emergency_project_dettable") ||jsonPath.equals("highway_test_project_dettable") ||jsonPath.equals("highway_scientific_project_dettable")) { String subjsonPath = jsonPath + "_cost"; List> sublist = ImportDoc.importJson(subjsonPath); if (sublist != null && sublist.size() > 0) { Map submap = jsonListToObj(sublist.get(0)); result.put("submap", submap); } } return AppUtil.returnObject(new PageData(), result); } public Map jsonListToObj(List list){ Map result = new HashMap(); for (ImoprtJson imoprtJson : list) { Map map = new HashMap(); map.put("type", imoprtJson.getType()); map.put("length", imoprtJson.getLength()); map.put("scale", imoprtJson.getScale()); map.put("notnull", imoprtJson.getNotnull()); result.put(imoprtJson.getColumn(), map); } return result; } public List getKeywordsJson(HttpServletRequest request,String tabletype,String category){ String path = request.getSession().getServletContext().getRealPath("/static/ace/json/keywords.json"); List keywords = new ArrayList(); if (category!=null) { if (!category.equals("")) { try { String keywordsJson = FileUtils.readFileToString(new File(path), "UTF-8"); JSONObject typeMap = JSONObject.fromObject(keywordsJson); if (typeMap != null) { JSONObject categoryMap = typeMap.getJSONObject(tabletype); if (categoryMap != null) { JSONArray keywordsArray = categoryMap.getJSONArray(category); if (keywordsArray != null) { keywords = JSONArray.toList(keywordsArray); } } } } catch (Exception e) { keywords = null; } } } return keywords; } @RequestMapping(value="/delelLastRow") @ResponseBody public Object delelLastRow(String data) throws Exception{ String result="success"; PageData pd = new PageData(); pd = this.getPageData(); pd.remove("data"); JSONObject jsonobject = JSONObject.fromObject(data); pd.put("ID", jsonobject.get("ID").toString()); try { annualDailyCompService.deleteTableRecod(pd); } catch (Exception e) { result = "error"; } Map map = new HashMap(); map.put("msg", result); return AppUtil.returnObject(new PageData(), map); } }