@Override public WorkFlow end(String res) { if ("1".equals(res)) { String loginTime = new SimpleDateFormat("yyyy-MM-dd%20HH:mm:ss").format(new Date()); util.trace(this, "User[" + openId + "] Offsite ok @" + loginTime); WXUser user = service.getWXUser(this.openId); String location = ""; if (user != null && user.getLocation() != null) { location = String.valueOf(user.getLocation().getLongitude()) + "," + String.valueOf(user.getLocation().getLatitude()); // location = // WXUtil.geocoderBMap(user.getLocation().getLatitude(),user.getLocation().getLongitude()); location = WXUtil.convertBDAxis( user.getLocation().getLatitude(), user.getLocation().getLongitude()); user.setLocation(null); } // if(location.split(",").length>1) location = // location.split(",")[1]+","+location.split(",")[0]; String response = ""; response = service.invokeCRMHttpGet( 4000, 4000, "offSite", "openid=" + openId, "offsitetime=" + loginTime, "location=" + WXUtil.geocoderBMap(location), "callidentityid=" + user.getActiveCall().getCallidentityid()); if (response != null && response.length() > 0) { Gson gson = new Gson(); CRMResult result = gson.fromJson(response, CRMResult.class); if ("success".equals(result.getResult())) { return new OffSiteOkWorkFlow(this.openId); } else { return new SysFailedWorkFlow("offsite", result.getResult()); } } else { util.warn(this, "Offsite failure for response is null."); return new SysFailedWorkFlow("offsite", "请求超时,请稍候再试."); } } else { util.trace(this, "OffSite cancel."); return new OffSiteCancelWorkFlow(this.openId); } }
public class OffSiteWorkFlow extends WorkFlow { private Util util = Util.getInstance(); private HelperService service = HelperService.getInstance(); public OffSiteWorkFlow(String openId, int expire) { this.openId = openId; this.expire = expire; this.wfName = "OffSiteWorkFlow"; } public OffSiteWorkFlow(String openId) { this(openId, WorkFlow.DEFAULT_EXPIRE); } @Override public String getPrompt() { WXUser user = service.getWXUser(this.openId); if (user != null) { TCall activeCall = service.updateTCall(this.openId); if (activeCall != null) { String stateDesc = ""; if (user.getActiveCall().getState().equalsIgnoreCase("wait")) { stateDesc = "待上门"; this.status = WFStatus.DONE; } else if (user.getActiveCall().getState().equalsIgnoreCase("work")) { stateDesc = "处理中"; if (user.getLocation() == null) return "【离场确认】\n 位置未知!\n 您正在处理工单信息:\n 工单编号:" + user.getActiveCall().getCalltitle() + "\n 状态:" + stateDesc + "\n 客户名称:" + user.getActiveCall().getCname() + "\n 问题描述:" + user.getActiveCall().getDesc() + " \n 确认离场请回复\"1\",取消离场请回复\"0\""; else { String location = ""; if (user != null && user.getLocation() != null) { location = String.valueOf(user.getLocation().getLongitude()) + "," + String.valueOf(user.getLocation().getLatitude()); location = WXUtil.convertBDAxis( user.getLocation().getLatitude(), user.getLocation().getLongitude()); user.setLocation(null); } try { return "【离场确认】\n 您正在处理工单信息:\n 工单编号:" + user.getActiveCall().getCalltitle() + "\n 状态:" + stateDesc + "\n 客户名称:" + user.getActiveCall().getCname() + "\n 问题描述:" + user.getActiveCall().getDesc() + " \n 立即点击<a href=\"http://mvsengineertaskhelper.duapp.com/myActiveOrder.html?openid=" + openId + "&orderid=" + user.getActiveCall().getCallidentityid() + "&calltitle=" + user.getActiveCall().getCalltitle() + "&location=" + URLEncoder.encode(WXUtil.geocoderBMap(location), "utf-8") + "\">处理离场</a>."; } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); return "【离场确认】\n 内部异常,请稍候再试!"; } } } else if (user.getActiveCall().getState().equalsIgnoreCase("offsite")) { stateDesc = "已离场"; this.status = WFStatus.DONE; } else if (user.getActiveCall().getState().equalsIgnoreCase("finished")) { stateDesc = "已完成"; this.status = WFStatus.DONE; } else { stateDesc = "无效"; this.status = WFStatus.DONE; } return "【离场】\n 无法执行此项操作\n 工单处于【" + stateDesc + "】状态。\n\n 工单编号:" + user.getActiveCall().getCalltitle() + "\n 客户名称:" + user.getActiveCall().getCname() + "\n 问题描述:" + user.getActiveCall().getDesc(); } else { this.status = WFStatus.DONE; return "您还没有选择工单,请先<a href=\"http://mvsengineertaskhelper.duapp.com/myOrders.html?openid=" + openId + "\">选择工单</a>."; } } else { this.status = WFStatus.DONE; return "您尚未绑定帐号,请先<a href=\"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + Config.wxAppId + "&redirect_uri=" + Config.appUrl + "/wxAuth2&response_type=code&scope=snsapi_base&state=login#wechat_redirect\">绑定帐号</a>"; } } @Override public WorkFlow end(String res) { if ("1".equals(res)) { String loginTime = new SimpleDateFormat("yyyy-MM-dd%20HH:mm:ss").format(new Date()); util.trace(this, "User[" + openId + "] Offsite ok @" + loginTime); WXUser user = service.getWXUser(this.openId); String location = ""; if (user != null && user.getLocation() != null) { location = String.valueOf(user.getLocation().getLongitude()) + "," + String.valueOf(user.getLocation().getLatitude()); // location = // WXUtil.geocoderBMap(user.getLocation().getLatitude(),user.getLocation().getLongitude()); location = WXUtil.convertBDAxis( user.getLocation().getLatitude(), user.getLocation().getLongitude()); user.setLocation(null); } // if(location.split(",").length>1) location = // location.split(",")[1]+","+location.split(",")[0]; String response = ""; response = service.invokeCRMHttpGet( 4000, 4000, "offSite", "openid=" + openId, "offsitetime=" + loginTime, "location=" + WXUtil.geocoderBMap(location), "callidentityid=" + user.getActiveCall().getCallidentityid()); if (response != null && response.length() > 0) { Gson gson = new Gson(); CRMResult result = gson.fromJson(response, CRMResult.class); if ("success".equals(result.getResult())) { return new OffSiteOkWorkFlow(this.openId); } else { return new SysFailedWorkFlow("offsite", result.getResult()); } } else { util.warn(this, "Offsite failure for response is null."); return new SysFailedWorkFlow("offsite", "请求超时,请稍候再试."); } } else { util.trace(this, "OffSite cancel."); return new OffSiteCancelWorkFlow(this.openId); } } }