/// 保存接收抄送人 /// <summary> /// 保存接收抄送人 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> /// <param name="orderid"></param> public void SaveToAndCC(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, string orderid) { List <string> hasnum = new List <string>(); if (jsondata.Recevicer != null && jsondata.Recevicer.Count > 0) { foreach (ToAndCcPerson person in jsondata.Recevicer) { if (!string.IsNullOrEmpty(person.UserNum_Out) && hasnum.Contains(person.UserNum_Out) == false) { BLL.WOrderToAndCC.Instance.SaveWOrderToAndCC(orderid, jsondata.ProcessID, WOrderPersonTypeEnum.P01_接收人, person.UserID_Out, person.UserNum_Out, person.UserName_Out, sysinfo.UserID); hasnum.Add(person.UserNum_Out); } } } hasnum = new List <string>(); if (jsondata.ExtendRecev != null && jsondata.ExtendRecev.Count > 0) { foreach (ToAndCcPerson person in jsondata.ExtendRecev) { if (!string.IsNullOrEmpty(person.UserNum_Out) && hasnum.Contains(person.UserNum_Out) == false) { BLL.WOrderToAndCC.Instance.SaveWOrderToAndCC(orderid, jsondata.ProcessID, WOrderPersonTypeEnum.P02_抄送人, person.UserID_Out, person.UserNum_Out, person.UserName_Out, sysinfo.UserID); hasnum.Add(person.UserNum_Out); } } } }
/// 保存工单主表信息 /// <summary> /// 保存工单主表信息 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> private void SaveWOrderMainInfo(WOrderJsonData jsondata, SysRightUserInfo sysinfo) { WOrderInfoInfo main = new WOrderInfoInfo(); main.OrderID = GetNewWOrderID(); main.CallSource = (int)jsondata.Common.CallSource_Out; main.ModuleSource = (int)jsondata.Common.ModuleSource_Out; main.DataSource = (int)jsondata.WOrderInfo.DataSource_Out; main.WorkOrderStatus = (int)jsondata.OrderStatus; main.CategoryID = (int)jsondata.WOrderInfo.Category_Out; main.ComplaintLevel = jsondata.WOrderInfo.ComplaintLevel_Out; main.BusinessType = jsondata.WOrderInfo.BusinessType_Out; main.BusinessTag = jsondata.WOrderInfo.BusinessTag_Out; main.IsSyncCRM = jsondata.WOrderInfo.IsSysCRM_Out; main.VisitType = jsondata.WOrderInfo.VisitType_Out; main.CBID = jsondata.CBID; main.Phone = jsondata.CustBaseInfo.Phone_Out; main.CRMCustID = jsondata.CRMCustID_Out; main.Content = jsondata.WOrderInfo.Content_Out; main.ContactName = jsondata.WOrderInfo.ContactName_Out; main.ContactTel = jsondata.WOrderInfo.ContactTel_Out; main.LastReceiverID = null; main.BGID = sysinfo.BGID; main.Status = 0; main.CreateUserID = sysinfo.UserID; main.CreateTime = DateTime.Now; main.LastUpdateUserID = sysinfo.UserID; main.LastUpdateTime = DateTime.Now; CommonBll.Instance.InsertComAdoInfo(main); //存储工单id jsondata.WOrderID = main.OrderID; }
/// 保存工单主表 /// <summary> /// 保存工单主表 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> /// <param name="worderinfo"></param> public void SaveWOrderInfo(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, WOrderInfoInfo worderinfo) { worderinfo.WorkOrderStatus = (int)jsondata.WorkOrderStatus_Out; worderinfo.LastReceiverID = jsondata.ProcessID; worderinfo.LastUpdateTime = DateTime.Now; worderinfo.LastUpdateUserID = sysinfo.UserID; CommonBll.Instance.UpdateComAdoInfo(worderinfo); }
/// 保存工单信息 /// <summary> /// 保存工单信息 /// </summary> /// <param name="jsondata"></param> public void SaveWOrderInfo(WOrderJsonData jsondata, SysRightUserInfo sysinfo) { //工单主表 WOrderInfo SaveWOrderMainInfo(jsondata, sysinfo); //保存WOrderProcess表 SaveWOrderProcessInfo(jsondata, sysinfo); //附件表 CommonAttachment SaveCommonAttachment(jsondata, sysinfo); }
/// 发送邮件给接收人和抄送人 /// <summary> /// 发送邮件给接收人和抄送人 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> /// <param name="worderinfo"></param> public void SendEMail(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, WOrderInfoInfo worderinfo) { try { //状态校验 WorkOrderStatus status = (WorkOrderStatus)worderinfo.WorkOrderStatus_Value; if (status == WorkOrderStatus.Pending || status == WorkOrderStatus.Processing || status == WorkOrderStatus.Untreated) { //查询邮件地址 string[] ccUserID = jsondata.Recevicer.Select(x => x.UserID_Out.ToString()).ToArray(); string[] toUserID = jsondata.ExtendRecev.Select(x => x.UserID_Out.ToString()).ToArray(); List <SysRightUserInfo> cc_sysinfos = BLL.EmployeeSuper.Instance.GetSysRightUserInfo(string.Join(",", ccUserID)); List <SysRightUserInfo> to_sysinfos = BLL.EmployeeSuper.Instance.GetSysRightUserInfo(string.Join(",", toUserID)); //邮箱 string[] cc_email = cc_sysinfos.Where(x => !string.IsNullOrEmpty(x.Email)).Select(x => x.Email).ToArray(); string[] to_email = to_sysinfos.Where(x => !string.IsNullOrEmpty(x.Email)).Select(x => x.Email).ToArray(); //查询个人用户信息 CustTypeEnum ctype = CustTypeEnum.T01_个人; DataTable dt = BLL.WOrderInfo.Instance.GetCBInfoByPhone(worderinfo.CBID_Value, ""); if (dt != null && dt.Rows.Count > 0) { ctype = (CustTypeEnum)CommonFunction.ObjectToInteger(dt.Rows[0]["CustCategoryID"]); } //获取工单类型 WOrderCategoryEnum wtype = (WOrderCategoryEnum)worderinfo.CategoryID_Value; //测试数据 //cc_email = new string[] { "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**" }; //to_email = new string[] { "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**" }; //邮件正文1 string body1 = "你有一张<strong style='color:red;'>" + BLL.Util.GetEnumOptText(typeof(CustTypeEnum), (int)ctype) + BLL.Util.GetEnumOptText(typeof(WOrderCategoryEnum), (int)wtype) + "</strong>工单!"; //邮件正文2 string body2 = worderinfo.Content_Value; //cc系统地址 string weburl = BitAuto.Utils.Config.ConfigurationUtil.GetAppSettingValue("ExitAddress"); //发邮件 if (cc_email.Length > 0) { WOrderInfo.LogToLog4("工单处理发送邮件:接收人" + string.Join(";", cc_email)); string title = "您有一张工单[" + worderinfo.OrderID_Value + "]待处理"; string a = "<a href='" + weburl + "/WOrderV2/WOrderProcess.aspx?OrderID=" + worderinfo.OrderID_Value + "'>工单处理</a>"; EmailHelper.Instance.SendMail(title, cc_email, new string[] { body1, body2, a }, "WOrderV2"); } if (to_email.Length > 0) { WOrderInfo.LogToLog4("工单处理发送邮件:抄送人" + string.Join(";", to_email)); string title = "您有一张工单[" + worderinfo.OrderID_Value + "]待查看"; string a = "<a href='" + weburl + "/WOrderV2/WorkOrderView.aspx?OrderID=" + worderinfo.OrderID_Value + "'>工单查看</a>"; EmailHelper.Instance.SendMail(title, to_email, new string[] { body1, body2, a }, "WOrderV2"); } } } catch (Exception ex) { WOrderInfo.ErrorToLog4("工单处理发送邮件异常", ex); } }
/// 保存话务 /// <summary> /// 保存话务 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> public void SaveWOrderData(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, string orderid) { if (jsondata.CallID_Out != null && jsondata.CallID_Out.Count > 0) { foreach (long callid in jsondata.CallID_Out) { //工单关联数据表 WOrderData BLL.WOrderData.Instance.InsertWOrderDataForCC(orderid, jsondata.ProcessID, callid, sysinfo.UserID); } } }
/// 保存工单 /// <summary> /// 保存工单 /// </summary> /// <param name="msg"></param> /// <param name="data"></param> /// <returns></returns> private bool SaveWOrderInfo(out string msg, out string data) { msg = ""; data = "''"; try { int loginuserid = BLL.Util.GetLoginUserID(); LogForWebForCall("保存工单开始 JsonData=" + JsonData); //查询登录人信息 SysRightUserInfo sysinfo = BLL.EmployeeSuper.Instance.GetSysRightUserInfo(loginuserid); if (sysinfo == null) { msg = "查询不到登录人信息!"; return(false); } //数据解析 WOrderJsonData jsondata = WOrderJsonData.CreateWOrderJsonData(JsonData); if (jsondata != null) { //保存个人信息(个人表 CustBasicInfo,电话表 CustTel,经销商表 DealerInfo) BLL.WOrderInfo.Instance.SaveCustBasicInfo(jsondata, loginuserid); LogForWebForCall("保存个人信息:电话=" + jsondata.CustBaseInfo.Phone_Out + ";CBID=" + jsondata.CBID); //保存工单信息(工单主表 WOrderInfo,处理表 WOrderProcess,附件表 CommonAttachment) BLL.WOrderInfo.Instance.SaveWOrderInfo(jsondata, sysinfo); LogForWebForCall("保存工单信息:电话=" + jsondata.CustBaseInfo.Phone_Out + ";工单ID=" + jsondata.WOrderID); //异步操作-绑定(来去电表 CallRecordInfo,话务业务表 CallRecord_ORIG_Business,工单关联数据表 WOrderData,短信表 SMSSendHistory) BLL.WOrderInfo.Instance.SaveBindInfoASync(jsondata, loginuserid, sysinfo.TrueName); //异步操作-日志类信息(号码访问表 CustPhoneVisitBusiness,话务结果表 CallResult_ORIG_Task) BLL.WOrderInfo.Instance.SaveLogsInfoASync(jsondata, loginuserid, sysinfo.TrueName); //CRM+IM接口调用 InterfaceCallASync(jsondata, sysinfo); } else { msg = "参数错误,转换失败!"; return(false); } LogForWebForCall("END\r\n"); return(true); } catch (Exception ex) { BLL.WOrderInfo.ErrorToLog4("保存工单", ex); msg = ex.Message; return(false); } }
/// 工单处理 /// <summary> /// 工单处理 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> public void WOrderProcessMain(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, WOrderOperTypeEnum oper, WOrderInfoInfo worderinfo) { //保存工单处理记录 SaveWOrderProcess(jsondata, sysinfo, oper, worderinfo.OrderID_Value); //保存工单附件 SaveCommonAttachment(jsondata, sysinfo); //保存工单话务 SaveWOrderData(jsondata, sysinfo, worderinfo.OrderID_Value); //保存接收抄送人 SaveToAndCC(jsondata, sysinfo, worderinfo.OrderID_Value); //保存工单主表状态+处理id SaveWOrderInfo(jsondata, sysinfo, worderinfo); //发送邮件-异步 SendEMail(jsondata, sysinfo, worderinfo); }
/// CRM添加访问记录 /// <summary> /// CRM添加访问记录 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool InserCRMVisitInfo(WOrderJsonData jsondata, SysRightUserInfo sysinfo) { try { BitAuto.YanFa.Crm2009.Entities.ReturnVisit model = new YanFa.Crm2009.Entities.ReturnVisit(); //必填 model.BeginDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //访问日期 if (DateTime.Now.Minute < 30) { model.begintime = DateTime.Now.ToString("yyyy-MM-dd HH:00:00"); //访问开始时间 model.endtime = DateTime.Now.ToString("yyyy-MM-dd HH:30:00"); //访问结束时间 } else { model.begintime = DateTime.Now.ToString("yyyy-MM-dd HH:30:00"); //访问开始时间 model.endtime = DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:00:00"); //访问结束时间 } model.BusinessLine = sysinfo.BusinessLine; //所属业务 model.CustID = jsondata.CRMCustID_Out; // 客户编号,1094888497 model.RVType = 2; //访问方式 model.Remark = jsondata.WOrderInfo.Content_Out; //描述 model.VisitType = jsondata.WOrderInfo.VisitType_Out.ToString(); //访问分类 model.createUserID = sysinfo.UserID; //创建人 model.ContactInfoUserID = jsondata.Common.RelatedContactID; //联系人ID model.status = 0; //非必填 model.CreateuserDepart = sysinfo.DepartID; //部门,DP00522 model.createtime = DateTime.Now; //创建时间 model.MemberId = jsondata.CustBaseInfo.MemberCode_Out; // 会员id model.RVQuestionRemark = ""; //问题 model.RVQuestionStatus = 0; //问题是否解决 model.RVresult = ""; //访问结果 int res = BitAuto.YanFa.Crm2009.BLL.ReturnVisit.Instance.InsertReturnVisit(model); Loger.Log4Net.Error("CRM添加访问记录返回结果:" + res); return(res > 0 ? true : false); } catch (Exception ex) { Loger.Log4Net.Error("CRM添加访问记录异常:" + ex.Message.ToString()); } return(false); }
/// 保存工单处理记录 /// <summary> /// 保存工单处理记录 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> private void SaveWOrderProcessInfo(WOrderJsonData jsondata, SysRightUserInfo sysinfo) { WOrderProcessInfo process = new WOrderProcessInfo(); process.ProcessType = (int)jsondata.OperType; process.OrderID = jsondata.WOrderID; process.WorkOrderStatus = (int)jsondata.OrderStatus; process.IsReturnVisit = -1; process.ProcessContent = sysinfo.TrueName + jsondata.Oper + "了工单 [" + jsondata.WOrderID + "]"; process.Status = 0; process.CreateUserID = sysinfo.UserID; process.CreateUserNum = sysinfo.UserCode; process.CreateUserName = sysinfo.TrueName; process.CreateUserDeptName = sysinfo.MainDepartName; process.CreateTime = DateTime.Now; CommonBll.Instance.InsertComAdoInfo(process); }
/// 保存工单处理记录 /// <summary> /// 保存工单处理记录 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> public void SaveWOrderProcess(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, WOrderOperTypeEnum oper, string orderid) { WOrderProcessInfo process = new WOrderProcessInfo(); process.ProcessType = (int)oper; process.OrderID = orderid; process.WorkOrderStatus = (int)jsondata.WorkOrderStatus_Out; process.IsReturnVisit = jsondata.IsReturnVisit_Out; process.ProcessContent = jsondata.ProcessContent_Out; process.Status = 0; process.CreateUserID = sysinfo.UserID; process.CreateUserNum = sysinfo.UserCode; process.CreateUserName = sysinfo.TrueName; process.CreateUserDeptName = sysinfo.MainDepartName; process.CreateTime = DateTime.Now; CommonBll.Instance.InsertComAdoInfo(process); jsondata.ProcessID = process.RecID_Value; }
/// 接口调用 /// <summary> /// 接口调用 /// </summary> /// <param name="jsondata"></param> /// <param name="loginuserid"></param> public void InterfaceCall(WOrderJsonData jsondata, SysRightUserInfo sysinfo) { try { //同步CRM if (jsondata.WOrderInfo.IsSysCRM_Out == 1 && !string.IsNullOrEmpty(jsondata.CRMCustID_Out)) { //jsondata.Common.CRMCustID_Out crm的custid //jsondata.WOrderInfo.VisitType_Out 访问类型id //sysinfo 登录人信息,部门,姓名,id,员工编号等 InserCRMVisitInfo(jsondata, sysinfo); LogForWebForCall("CRM添加访问记录"); } //同步IM接口 //1—会话,2—留言 int imType = jsondata.Common.CallSource_Out == CallSourceEnum.C03_IM对话 ? 1 : 2; int csid = (int)jsondata.Common.RelatedCSID; string orderid = jsondata.WOrderID; if (jsondata.Common.ModuleSource_Out == ModuleSourceEnum.M05_IM个人) { BitAuto.ISDC.CC2012.WebService.IM.IMUtilsServiceHelper server = new WebService.IM.IMUtilsServiceHelper(); server.UpdateCCWorkOrderToIM(imType, csid, orderid); LogForWebForCall("M05_IM个人 回调接口"); } else if (jsondata.Common.ModuleSource_Out == ModuleSourceEnum.M06_IM经销商_新车) { BitAuto.ISDC.CC2012.WebService.IM.IMepUtilsServiceHelper server = new WebService.IM.IMepUtilsServiceHelper(); server.UpdateCCWorkOrderToIM(imType, csid, orderid); LogForWebForCall("M06_IM经销商_新车 回调接口"); } else if (jsondata.Common.ModuleSource_Out == ModuleSourceEnum.M07_IM经销商_二手车) { BitAuto.ISDC.CC2012.WebService.IM.IMtcUtilsServiceHelper server = new WebService.IM.IMtcUtilsServiceHelper(); server.UpdateCCWorkOrderToIM(imType, csid, orderid); LogForWebForCall("M07_IM经销商_二手车 回调接口"); } } catch (Exception ex) { WOrderInfo.ErrorToLog4("接口调用", ex); } }
/// 工单处理 /// <summary> /// 工单处理 /// </summary> /// <param name="flag"></param> /// <param name="msg"></param> /// <returns></returns> private string SaveProcess(ref bool flag, ref string msg) { try { WOrderProcessJsonData jsondata = WOrderProcessJsonData.GetWOrderProcessJsonData(JsonData); if (jsondata == null) { flag = false; msg = "参数错误!"; return(""); } WOrderInfoInfo worderinfo = null; WOrderOperTypeEnum oper = WOrderOperTypeEnum.None; WOrderProcessRightJsonData right = WOrderProcessRightJsonData.GetWOrderProcessRightJsonData(RightData); flag = BLL.WOrderProcess.Instance.ValidateWOrderProcessRight(OrderID, ref msg, ref oper, out worderinfo, right); if (flag == false) { return(""); } int loginuserid = BLL.Util.GetLoginUserID(); SysRightUserInfo sysinfo = BLL.EmployeeSuper.Instance.GetSysRightUserInfo(loginuserid); if (sysinfo == null) { flag = false; msg = "获取不到当前登录人信息!"; return(""); } //处理工单 BLL.WOrderProcess.Instance.WOrderProcessMain(jsondata, sysinfo, oper, worderinfo); flag = true; msg = ""; return(BLL.Util.GetEnumOptText(typeof(WOrderOperTypeEnum), (int)oper)); } catch (Exception ex) { WOrderInfo.ErrorToLog4("工单处理", ex); flag = false; msg = ex.Message; return(""); } }
/// 保存附件 /// <summary> /// 保存附件 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> public void SaveCommonAttachment(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo) { if (jsondata.imgData != null) { foreach (AttachmentJsonData item in jsondata.imgData) { CommonAttachmentInfo attach = new CommonAttachmentInfo(); attach.BTypeID = (int)BLL.Util.ProjectTypePath.WorkOrder; attach.RelatedID = jsondata.ProcessID.ToString(); attach.FileName = item.FileRealName_Out; attach.FileType = item.FileType_Out; attach.FileSize = item.FileSize_Out; attach.FilePath = item.FileAllPath_Out; attach.Status = 0; attach.CreateUserID = sysinfo.UserID; attach.CreateTime = DateTime.Now; CommonBll.Instance.InsertComAdoInfo(attach); } } }
public void InterfaceCallASync(WOrderJsonData jsondata, SysRightUserInfo sysinfo) { Action <WOrderJsonData, SysRightUserInfo> action = new Action <WOrderJsonData, SysRightUserInfo>(InterfaceCall); action.BeginInvoke(jsondata, sysinfo, null, null); }
public static void GetTest(this SysRightUserInfo sysinfo) { }
/// 发送邮件给接收人和抄送人 /// <summary> /// 发送邮件给接收人和抄送人 /// </summary> /// <param name="jsondata"></param> /// <param name="sysinfo"></param> /// <param name="worderinfo"></param> public void SendEMailAsync(WOrderProcessJsonData jsondata, SysRightUserInfo sysinfo, WOrderInfoInfo worderinfo) { Action <WOrderProcessJsonData, SysRightUserInfo, WOrderInfoInfo> action = new Action <WOrderProcessJsonData, SysRightUserInfo, WOrderInfoInfo>(SendEMail); action.BeginInvoke(jsondata, sysinfo, worderinfo, null, null); }