/// 保存接收抄送人
        /// <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);
        }
Example #16
0
 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);
        }