package cn.ksource.web.controller.uc; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.NumberUtil; import cn.ksource.core.util.ParamsMapUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.WebUtil; import cn.ksource.web.Constants; import cn.ksource.web.facade.uc.order.UcZcywFacade; import cn.ksource.web.service.DataDictionaryService; /** * 用户中心--驻场运维管理控制器 * @note: * @version * @author sxj * @date July 18, 2016 10:35:44 AM */ @Controller @RequestMapping("/uc/uczcyw") public class UcZcywController { @Resource(name="ucZcywFacade") private UcZcywFacade ucZcywFacade; @Autowired private DataDictionaryService dataDictionaryService; /** * 服务台查看驻场管理的信息 */ @RequestMapping("uczcyws.html") public ModelAndView zcyws(HttpServletRequest request,HttpServletResponse response) { ModelAndView modelAndView = new ModelAndView("/uc/zcyw/uczcyws"); String cusId = WebUtil.getWebLoginUserCusId(request); //查询事件类型数据字典 List types = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.INCIDENT_TYPE); modelAndView.addObject("types", types); //查询该加盟商的事件优先级 List eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI); modelAndView.addObject("eventPri", eventPri); //查询事件影响度数据字典 List eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG); modelAndView.addObject("eventDg", eventDg); return modelAndView; } /** * 查询驻场运维列表 */ @RequestMapping("uczcywsData.html") public ModelAndView zcywsData(HttpServletRequest request,PageInfo pageInfo) { ModelAndView modelAndView = new ModelAndView("/uc/zcyw/uczcywData"); Map params = ParamsMapUtil.getParameterMap(request); String cusId = WebUtil.getWebLoginUserCusId(request); params.put("cusId", cusId); PageInfo incidents = ucZcywFacade.zcywDataForFwt(pageInfo,params); modelAndView.addObject("orders", incidents); return modelAndView; } /** * 查询服务台的驻场运维数量 */ @RequestMapping("uczcywsCount.html") public void zcywsCount(HttpServletRequest request,HttpServletResponse response) { Map params = ParamsMapUtil.getParameterMap(request); String cusId = WebUtil.getWebLoginUserCusId(request); params.put("cusId", cusId); int count = ucZcywFacade.zcywCountForFwt(params); WebUtil.write(response, String.valueOf(count)); } /** * 跳转到订单查看页面 */ @RequestMapping("uczcywDetail.html") public ModelAndView incidentDetail(HttpServletRequest request,HttpServletResponse response) { ModelAndView modelAndView = new ModelAndView("/uc/zcyw/uczcywDetail"); //查询事件基本信息 String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); //通过工单编号查询工单基本信息 Map baseMsg = ucZcywFacade.queryIncidentLocalBaseMsg(orderId); modelAndView.addObject("baseMsg", baseMsg); modelAndView.addObject("orderId", orderId); modelAndView.addObject("flowId", flowId); //查询要求响应时间和实际响应时间 long create_time = ConvertUtil.obj2Long(baseMsg.get("CREATE_TIME")); String answer_time = ConvertUtil.obj2StrBlank(baseMsg.get("ANSWER_TIME")); if(!StringUtil.notEmpty(answer_time)) { answer_time = DateUtil.getCurrentDate14().toString(); } String request_answer_time = ConvertUtil.obj2StrBlank(baseMsg.get("REQUEST_ANSWER_TIME")); String answer_timeout = ConvertUtil.obj2StrBlank(baseMsg.get("ANSWER_TIMEOUT")); //计算第一次响应时间和创建事件的事件差 将时间差转化为分钟 long seconds = DateUtil.getSecondsFormDate2Date(create_time, ConvertUtil.obj2Long(answer_time)); //将秒转化为分钟 double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1); baseMsg.put("sjxysj", sjxysj); if(answer_timeout.equals("2")) { //计算时间走动长度 double a1 = NumberUtil.mul(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(250)); double a2 = NumberUtil.mul(ConvertUtil.obj2Double(request_answer_time), ConvertUtil.obj2Double(60)); double xyWidth = NumberUtil.div(a1, a2); if(xyWidth>250) { xyWidth = 250; baseMsg.put("ANSWER_TIMEOUT", 1); } baseMsg.put("xyWidth", xyWidth); } else { baseMsg.put("xyWidth", 250); } //处理超时操作 //1.判断当前工单有没有解决时间,如果有解决时间 说明已完成,如果没有解决时间 说明未完成 String resolveTime = ConvertUtil.obj2StrBlank(baseMsg.get("RESOLVE_TIME")); if(!StringUtil.notEmpty(resolveTime)) { resolveTime = DateUtil.getCurrentDate14().toString(); } //计算实际用了多长时间 String request_deal_time = ConvertUtil.obj2StrBlank(baseMsg.get("REQUEST_DEAL_TIME")); String deal_timeout = ConvertUtil.obj2StrBlank(baseMsg.get("DEAL_TIMEOUT")); //计算第解决时间和创建事件的事件差 将时间差转化为小时 long jjSeconds = DateUtil.getSecondsFormDate2Date(create_time, ConvertUtil.obj2Long(resolveTime)); //将秒转化为小时 double sjjjsj = NumberUtil.div(ConvertUtil.obj2Double(jjSeconds), ConvertUtil.obj2Double(3600), 2); baseMsg.put("sjjjsj", sjjjsj); if(deal_timeout.equals("2")) { //计算时间走动长度 double a1 = NumberUtil.mul(ConvertUtil.obj2Double(jjSeconds), ConvertUtil.obj2Double(250)); double a2 = NumberUtil.mul(ConvertUtil.obj2Double(request_deal_time), ConvertUtil.obj2Double(3600)); double jjWidth = NumberUtil.div(a1, a2); if(jjWidth>250) { jjWidth = 250; baseMsg.put("DEAL_TIMEOUT", 1); } baseMsg.put("jjWidth", jjWidth); } else { baseMsg.put("jjWidth", 250); } return modelAndView; } /** * 工单完成时的驻场运维事件处理报告 */ @RequestMapping("uczcywFinishReport.html") public ModelAndView wcReport(HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView("/uc/zcyw/uczcywFinishReport"); String orderId = request.getParameter("orderId"); Map report = ucZcywFacade.queryWcReport(orderId); modelAndView.addObject("report", report); return modelAndView; } /** * 工单关闭时的驻场运维事件处理报告 */ @RequestMapping("uczcywCloseReport.html") public ModelAndView closeReport(HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView("/uc/zcyw/uczcywCloseReport"); String orderId = request.getParameter("orderId"); Map report = ucZcywFacade.queryCloseReport(orderId); modelAndView.addObject("report", report); return modelAndView; } }