/// 保存接收抄送人
        /// <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>
 /// <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>
 /// <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="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);
 }
        /// 保存工单处理记录
        /// <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="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);
         }
     }
 }
        /// 发送邮件给接收人和抄送人
        /// <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);
        }