package cn.ksource.web.controller.business.pages.traffic; import java.io.ByteArrayInputStream; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.lhw.util.CRequest; import com.lhw.util.CResponse; import com.lhw.util.MyHttpPost; import cn.ksource.beans.GG_USER; import cn.ksource.beans.SC_WORKFLOW_INCIDENT; import cn.ksource.config.SysConfigConstants; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.ParamsMapUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.SysInfo; import cn.ksource.core.web.SysInfoMsg; import cn.ksource.core.web.WebUtil; import cn.ksource.web.Constants; import cn.ksource.web.facade.incident.IncidentFacade; import cn.ksource.web.facade.timetask.TimeTaskFacade; import cn.ksource.web.facade.traffic.TrafficFacade; import cn.ksource.web.service.DataDictionaryService; /** * 话务管理 * @author 高发展 *2018-04-09 */ @Controller @RequestMapping("/business/pages/traffic") public class TrafficController { @Autowired private TrafficFacade trafficFacade; @Autowired private IncidentFacade incidentFacade; @Autowired private DataDictionaryService dataDictionaryService; @Autowired private TimeTaskFacade timeTaskFacade; /** * 通话记录 * @param request * @return */ @RequestMapping("trafficList.html") public ModelAndView trafficList(HttpServletRequest request){ ModelAndView view=new ModelAndView("/business/pages/traffic/trafficList"); return view; } /** * 通话记录数据 * @param model * @param request * @return */ @SuppressWarnings("rawtypes") @RequestMapping("trafficData.html") public ModelAndView trafficData(Model model,HttpServletRequest request,PageInfo pageInfo){ ModelAndView view=new ModelAndView("business/pages/traffic/trafficData"); Map param=ParamsMapUtil.getParameterMap(request); PageInfo info=trafficFacade.getTrafficData(param, pageInfo); view.addObject("info", info); return view; } /** * 通话记录数据数量 * @param model * @param request * @param response */ @SuppressWarnings("rawtypes") @RequestMapping("trafficCount.html") public void trafficCount(Model model,HttpServletRequest request,HttpServletResponse response){ Map param=ParamsMapUtil.getParameterMap(request); Integer count = trafficFacade.getTrafficCount(param); WebUtil.write(response, count.toString()); } /** * 跳转到工程师添加事件页面 */ @SuppressWarnings({ "unchecked", "rawtypes" }) @RequestMapping("trafficAddIncident.html") public ModelAndView engineerAddIncident(HttpServletRequest request) { ModelAndView view = new ModelAndView("/business/pages/traffic/addTrafficDesk"); String orderId=request.getParameter("orderId"); if(StringUtil.notEmpty(orderId)) { view.addObject("info", incidentFacade.getemplate(orderId)); }else { Map map= new HashMap(); map.put("happen_time",DateUtil.getCurrentDate14()); view.addObject("info",map); } String repair = request.getParameter("repair"); //查询事件类型数据字典 List types = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_TYPE); //取得事件类型的第一条数据 if(null!=types && types.size()>0) { Map type = types.get(0); view.addObject("typeId", type.get("DATAKEY")); view.addObject("typeName", type.get("DATAVALUE")); } //查询申报方式数据字典 List ways = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_APPLY_TYPE); //取得申报方式的第一条数据 if(null!=ways && ways.size()>0) { Map way = ways.get(0); view.addObject("wayId", way.get("DATAKEY")); view.addObject("wayName", way.get("DATAVALUE")); } //查询事件来源数据字典 List froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_SOURCE); //取得事件来源的第一条数据 if(null!=froms && froms.size()>0) { Map from = froms.get(0); view.addObject("fromId", from.get("DATAKEY")); view.addObject("fromName", from.get("DATAVALUE")); } //事件来源为一键报修 if(!StringUtil.isEmpty(repair)){ view.addObject("fromId", Constants.INCIDENT_SOURCE_REPAIR_KEY); view.addObject("fromName", Constants.INCIDENT_SOURCE_REPAIR_VALUE); } //客户列表 List cusList = incidentFacade.getCustomerList(); view.addObject("customers", cusList); //查询事件优先级 List eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI); view.addObject("eventPri", eventPri); //查询事件影响度数据字典 List eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG); view.addObject("eventDg", eventDg); view.addObject("types", types); view.addObject("ways", ways); view.addObject("froms", froms); //定义参数Map Map params = ParamsMapUtil.getParameterMap(request); params.put("userId", WebUtil.getLoginedUserId(request)); params.put("type","2"); Map map = incidentFacade.getOrderNum(params); view.addObject("data", map); view.addObject("data", map); view.addObject("tra_id", request.getParameter("tra_id")); view.addObject("mobile", request.getParameter("mobile")); return view; } /** * 工程师保存事件 */ @SuppressWarnings("rawtypes") @RequestMapping("saveTrafficIncident.html") public ModelAndView engineerSaveIncident(HttpServletRequest request,HttpServletResponse response,SC_WORKFLOW_INCIDENT sc_workflow_incident) { Map map = incidentFacade.saveIncident(request,sc_workflow_incident); String incidentId = ConvertUtil.obj2StrBlank(map.get("incidentId")); String result = ConvertUtil.obj2StrBlank(map.get("result")); String nouser = ConvertUtil.obj2StrBlank(map.get("nouser")); String type = request.getParameter("type"); if(result.equals("1")) { SysInfoMsg msg = (SysInfoMsg)map.get("msg"); if(type.equals("1")) { ModelAndView modelAndView = new ModelAndView("/business/pages/incident/success"); modelAndView.addObject("type", type); modelAndView.addObject("incidentId", incidentId); modelAndView.addObject("sysInfo", "Success"); modelAndView.addObject("message", "操作成功"); modelAndView.addObject("info", msg); return modelAndView; } else if (type.equals("2")) { ModelAndView modelAndView = new ModelAndView("redirect:/business/pages/incident/endTask.html?incidentId="+incidentId); return modelAndView; } else if (type.equals("3")) { ModelAndView modelAndView = new ModelAndView("redirect:/business/pages/incident/closeReason.html?incidentId="+incidentId); return modelAndView; } } else { if(nouser.equals("1")){ return WebUtil.sysInfoPage(request, "服务台角色下没有人员", "", SysInfo.Error,""); }else{ return WebUtil.sysInfoPage(request, "操作失败!", "", SysInfo.Error,""); } } return null; } /** * 通话记录 * @param request * @return */ @SuppressWarnings("rawtypes") @RequestMapping("trafficDetail.html") public ModelAndView trafficDetail(HttpServletRequest request){ ModelAndView view=new ModelAndView("/business/pages/traffic/trafficDetail"); Map param=ParamsMapUtil.getParameterMap(request); Map info=trafficFacade.getTraffic(param); view.addObject("info", info); return view; } /** * 通话记录数据 * @param model * @param request * @return */ @SuppressWarnings("rawtypes") @RequestMapping("trafficAddData.html") public ModelAndView trafficAddData(Model model,HttpServletRequest request,PageInfo pageInfo){ ModelAndView view=new ModelAndView("business/pages/traffic/trafficAddData"); Map param=ParamsMapUtil.getParameterMap(request); PageInfo info=trafficFacade.getTrafficData(param, pageInfo); view.addObject("info", info); return view; } /** * 通话记录数据数量 * @param model * @param request * @param response */ @SuppressWarnings("rawtypes") @RequestMapping("trafficAddCount.html") public void trafficAddCount(Model model,HttpServletRequest request,HttpServletResponse response){ Map param=ParamsMapUtil.getParameterMap(request); Integer count = trafficFacade.getTrafficCount(param); WebUtil.write(response, count.toString()); } /** * 工单记录数据 * @param model * @param request * @return */ @SuppressWarnings("rawtypes") @RequestMapping("trafficOrderData.html") public ModelAndView trafficOrderData(Model model,HttpServletRequest request,PageInfo pageInfo){ ModelAndView view=new ModelAndView("business/pages/traffic/trafficOrderData"); Map param=ParamsMapUtil.getParameterMap(request); PageInfo info=trafficFacade.getTrafficOrderData(param, pageInfo); view.addObject("info", info); return view; } /** * 工单记录数据数量 * @param model * @param request * @param response */ @SuppressWarnings("rawtypes") @RequestMapping("trafficOrderCount.html") public void trafficOrderCount(Model model,HttpServletRequest request,HttpServletResponse response){ Map param=ParamsMapUtil.getParameterMap(request); Integer count = trafficFacade.getTrafficOrderCount(param); WebUtil.write(response, count.toString()); } @SuppressWarnings({ "unused", "unchecked", "rawtypes" }) @RequestMapping("saveTraffic.html") public void saveTraffic(HttpServletRequest request,HttpServletResponse response){ String str=request.getParameter("req"); System.out.println(str); String strs[]=str.split(","); Map param=new HashMap(); param.put("H", strs[0].replace("H=","")); param.put("ch", strs[1].replace("ch=","")); param.put("ph", strs[2].replace("ph=","")); param.put("sp", strs[3].replace("sp=","")); param.put("ty", strs[4].replace("ty=","")); param.put("tm", ConvertUtil.obj2StrBlank(DateUtil.getCurrentDate6()).substring(0, 2)+strs[5].replace("tm=","")); param.put("op", strs[6].replace("op=","")); param.put("sn", strs[7].replace("sn=","")); param.put("so", strs[8].replace("so=","")); param.put("cu", strs[9].replace("cu=","")); param.put("dm", strs[10].replace("dm=","")); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); param.put("userId", userId); param.put("userName", userName); Map result=trafficFacade.saveTraffic(param); WebUtil.write(response, JsonUtil.map2Json(result)); } @SuppressWarnings({ "unchecked", "rawtypes" }) @RequestMapping("updateTraffic.html") public void updateTraffic( HttpServletRequest request,HttpServletResponse response){ Map param=ParamsMapUtil.getParameterMap(request); System.out.println("222222222222222"); List list=new LinkedList(); try { list=dom4jReadXMLFile(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } String code=request.getParameter("sn"); System.out.println("code:"+code); String time=""; if(list.size()>0){ for(Map map:list){ String sn=ConvertUtil.obj2StrBlank(map.get("sn")); if(sn.equals(code)){ time=ConvertUtil.obj2StrBlank(map.get("tme")); param.put("time", time); } } } if(StringUtil.notEmpty(time)){ trafficFacade.updateTraffic(param); System.out.println("11111111111111111"); } } public static String ls() throws Exception{ MyHttpPost myHttpPostProxy=new MyHttpPost(); CRequest reqProxy=new CRequest(); reqProxy.setParameter("vo_id","getCustCall"); reqProxy.setParameter("_secs_","lcall"); String time=""; Long now=DateUtil.getCurrentDate8(); time=ConvertUtil.obj2StrBlank(now).substring(0, 4)+"-"+ConvertUtil.obj2StrBlank(now).substring(4, 6)+ConvertUtil.obj2StrBlank(now).substring(6, 8); reqProxy.setParameter("call_date_start",time); String vproxyURL="http://"+SysConfigConstants.CALL_PATH+":"+SysConfigConstants.CALL_DK+"/v/vack"; CResponse repProxy=myHttpPostProxy.sendRequest_XML_V4(reqProxy,vproxyURL); int rcode=repProxy.getRCode(); if(rcode!=0){ System.out.println("sendRequestWithTag error="+rcode+repProxy.getmsg()); return null; }else{ System.out.println(repProxy.getParameter("xml")); return ConvertUtil.obj2StrBlank(repProxy.getParameter("xml")); } } @SuppressWarnings({ "unchecked", "rawtypes" }) private static List dom4jReadXMLFile() throws Exception { String ls=ls(); ls.replace("utf-8", "utf8"); ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(ls.getBytes("UTF-8")); List trafficList=new LinkedList(); // Dom4j解析books.xml // 创建的对象reader SAXReader reader = new SAXReader(); reader.setEncoding("UTF-8"); try { // 通过reader对象的read方法加载books.xml文件,获取document对象 Document document = reader.read(tInputStringStream); reader.setEncoding("UTF8"); // 通过document对象获取根节点bookstore Element bookstore = document.getRootElement(); // 通过element对象的elementIterator方法获取迭代器 Iterator it = bookstore.elementIterator(); // 全局变量记录第几本书籍 int num = 0; // 遍历迭代器,获取根节点中的信息(书籍) while (it.hasNext()) { Map map=new HashMap(); num++; Element book = (Element) it.next(); // 获取book的属性名以及属性值 List bookAttrs = book.attributes(); for (Attribute attr : bookAttrs) { System.out.println("属性名:" + attr.getName() + "--属性值:" + attr.getStringValue()); map.put("id", attr.getStringValue()) ; } // 解析子节点的信息 Iterator itt = book.elementIterator(); while (itt.hasNext()) { Element bookChild = (Element) itt.next(); if (bookChild.getName().equals("id")) { map.put("idTwo", bookChild.getStringValue()); } if (bookChild.getName().equals("sn")) { map.put("sn",bookChild.getStringValue()); } if (bookChild.getName().equals("tms")) { map.put("tms",bookChild.getStringValue()); } if (bookChild.getName().equals("tme")) { map.put("tme",bookChild.getStringValue()); } } trafficList.add(map); } } catch (DocumentException e) { e.printStackTrace(); } return trafficList; } /** * 跳转到工程师添加事件页面 */ @SuppressWarnings({ "unchecked", "rawtypes" }) @RequestMapping("trafficYyAddIncident.html") public ModelAndView engineerAddIncidentYy(HttpServletRequest request) { ModelAndView view = new ModelAndView("/business/pages/traffic/addTrafficYyDesk"); String orderId=request.getParameter("orderId"); if(StringUtil.notEmpty(orderId)) { view.addObject("info", incidentFacade.getemplate(orderId)); }else { Map map= new HashMap(); map.put("happen_time",DateUtil.getCurrentDate14()); view.addObject("info",map); } String repair = request.getParameter("repair"); //查询事件类型数据字典 List types = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_TYPE); //取得事件类型的第一条数据 if(null!=types && types.size()>0) { Map type = types.get(0); view.addObject("typeId", type.get("DATAKEY")); view.addObject("typeName", type.get("DATAVALUE")); } //查询申报方式数据字典 List ways = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_APPLY_TYPE); //取得申报方式的第一条数据 if(null!=ways && ways.size()>0) { Map way = ways.get(0); view.addObject("wayId", way.get("DATAKEY")); view.addObject("wayName", way.get("DATAVALUE")); } //查询事件来源数据字典 List froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_SOURCE); //取得事件来源的第一条数据 if(null!=froms && froms.size()>0) { Map from = froms.get(0); view.addObject("fromId", from.get("DATAKEY")); view.addObject("fromName", from.get("DATAVALUE")); } //事件来源为一键报修 if(!StringUtil.isEmpty(repair)){ view.addObject("fromId", Constants.INCIDENT_SOURCE_REPAIR_KEY); view.addObject("fromName", Constants.INCIDENT_SOURCE_REPAIR_VALUE); } //客户列表 List cusList = incidentFacade.getCustomerList(); view.addObject("customers", cusList); //查询事件优先级 List eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI); view.addObject("eventPri", eventPri); //查询事件影响度数据字典 List eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG); view.addObject("eventDg", eventDg); view.addObject("types", types); view.addObject("ways", ways); view.addObject("froms", froms); //定义参数Map Map params = ParamsMapUtil.getParameterMap(request); params.put("userId", WebUtil.getLoginedUserId(request)); params.put("type","2"); Map map = incidentFacade.getOrderNum(params); view.addObject("data", map); view.addObject("data", map); view.addObject("mobile", request.getParameter("mobile")); return view; } @RequestMapping("saveTrafficYy.html") public void saveTrafficYy(HttpServletRequest request,HttpServletResponse response){ String userId=WebUtil.getLoginedUserId(request); GG_USER user=new GG_USER(userId).getInstanceById(); Map result=new HashMap(); result.put("msg", "1"); String gh=user.getGh(); if(gh!=null){ if(gh.equals("801")){ result=timeTaskFacade.saveTrafficYy(); WebUtil.write(response, JsonUtil.map2Json(result)); }else{ WebUtil.write(response, JsonUtil.map2Json(result)); } }else{ WebUtil.write(response, JsonUtil.map2Json(result)); } } /** * 北京优音工单记录数据 * @param model * @param request * @return */ @SuppressWarnings("rawtypes") @RequestMapping("trafficOrderDataTwo.html") public ModelAndView trafficOrderDataTwo(Model model,HttpServletRequest request,PageInfo pageInfo){ ModelAndView view=new ModelAndView("business/pages/traffic/trafficOrderData"); Map param=ParamsMapUtil.getParameterMap(request); PageInfo info=trafficFacade.getTrafficOrderDataTwo(param, pageInfo); view.addObject("info", info); return view; } /** * 工单记录数据数量 * @param model * @param request * @param response */ @SuppressWarnings("rawtypes") @RequestMapping("trafficOrderCountTwo.html") public void trafficOrderCountTwo(Model model,HttpServletRequest request,HttpServletResponse response){ Map param=ParamsMapUtil.getParameterMap(request); Integer count = trafficFacade.getTrafficOrderCountTwo(param); WebUtil.write(response, count.toString()); } /** * 工程师保存事件 */ @SuppressWarnings("rawtypes") @RequestMapping("saveTrafficYyIncident.html") public ModelAndView engineerSaveIncidentTwo(HttpServletRequest request,HttpServletResponse response,SC_WORKFLOW_INCIDENT sc_workflow_incident) { Map map = incidentFacade.saveIncident(request,sc_workflow_incident); String incidentId = ConvertUtil.obj2StrBlank(map.get("incidentId")); String result = ConvertUtil.obj2StrBlank(map.get("result")); String nouser = ConvertUtil.obj2StrBlank(map.get("nouser")); String type = request.getParameter("type"); if(result.equals("1")) { SysInfoMsg msg = (SysInfoMsg)map.get("msg"); if(type.equals("1")) { ModelAndView modelAndView = new ModelAndView("/business/pages/incident/success"); modelAndView.addObject("type", type); modelAndView.addObject("incidentId", incidentId); modelAndView.addObject("sysInfo", "Success"); modelAndView.addObject("message", "操作成功"); modelAndView.addObject("info", msg); return modelAndView; } else if (type.equals("2")) { ModelAndView modelAndView = new ModelAndView("redirect:/business/pages/incident/endTask.html?incidentId="+incidentId); return modelAndView; } else if (type.equals("3")) { ModelAndView modelAndView = new ModelAndView("redirect:/business/pages/incident/closeReason.html?incidentId="+incidentId); return modelAndView; } } else { if(nouser.equals("1")){ return WebUtil.sysInfoPage(request, "服务台角色下没有人员", "", SysInfo.Error,""); }else{ return WebUtil.sysInfoPage(request, "操作失败!", "", SysInfo.Error,""); } } return null; } }