using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.DAL.Res; using WX.CRM.IBLL.Res; using WX.CRM.Model.Entity; using WX.CRM.Model.QueryMap; namespace WX.CRM.BLL.Res { public class RES_IMPORTRES_BL : IRES_IMPORTRES, IRES_IMPORTRES_Q { string clientid = Utility.GetSettingByKey("CRMClientKey"); WX.CRM.IBLL.Util.ISecurityHelper sHelper = new SecurityHelper(); DAL.Res.RES_IMPORTRES_DAL dal = new RES_IMPORTRES_DAL(); private WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext(); private CACHE_BL _cache = new CACHE_BL(); private BAS_PARAMETER_BL _para = new BAS_PARAMETER_BL(); private BAS_INNERUSER_BL _user = new BAS_INNERUSER_BL(); private RES_MYALLOCATERES_BL _myallocate = new RES_MYALLOCATERES_BL(); public void ImpotDt(WX.CRM.Model.Entity.RES_IMPORTRES info, List mobils, int timeOut = 300) { decimal impId = new BLL.Base.SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable); RES_IMPORTRES_BL bll = new RES_IMPORTRES_BL(); System.Data.DataSet ds = new DataSet(); //主表RES_IMPORTRES System.Data.DataTable dt1 = new DataTable("RES_IMPORTRES"); dt1.Columns.Add("IMPORTID", typeof(decimal)); dt1.Columns.Add("RESTYPEID", typeof(decimal)); dt1.Columns.Add("ACTIVITYID", typeof(decimal)); dt1.Columns.Add("RESOURCETAG", typeof(string)); dt1.Columns.Add("OPTYPE", typeof(decimal)); dt1.Columns.Add("CREATEUSER", typeof(decimal)); dt1.Columns.Add("CTIME", typeof(DateTime)); System.Data.DataRow r1_1 = dt1.NewRow(); r1_1["IMPORTID"] = impId; r1_1["RESTYPEID"] = info.RESTYPEID ?? 0; r1_1["ACTIVITYID"] = info.ACTIVITYID ?? 0; r1_1["RESOURCETAG"] = info.RESOURCETAG ?? ""; r1_1["OPTYPE"] = info.OPTYPE ?? 0; r1_1["CREATEUSER"] = info.CREATEUSER ?? 0; r1_1["CTIME"] = System.DateTime.Now; dt1.Rows.Add(r1_1); //明细表:RES_IMPORTRES_DETAIL System.Data.DataTable dt2 = new DataTable("RES_IMPORTRES_DETAIL"); dt2.Columns.Add("IMPORTID", typeof(decimal)); dt2.Columns.Add("RESID", typeof(string)); dt2.Columns.Add("MOBILE", typeof(string)); dt2.Columns.Add("ENMOBILE", typeof(string)); foreach (string m in mobils) { System.Data.DataRow r2_1 = dt2.NewRow(); r2_1["IMPORTID"] = impId; r2_1["RESID"] = Common.ResUtil.CreateResId(m); r2_1["MOBILE"] = sHelper.encyptData(clientid, m); r2_1["ENMOBILE"] = Utility.NumberFormat(m); dt2.Rows.Add(r2_1); } ds.Tables.Add(dt1); ds.Tables.Add(dt2); //暂时不入库 测试用 dal.ImpotDt(ds, timeOut); //获取线上分配关系,如果存在按线上分配关系写入,不存在则走兜底流程 foreach (var mobile in mobils) { LogHelper.Info(mobile); //var resid = Common.ResUtil.CreateResId(mobile); //var assignUrl = _cache.GetValue_Parameter("assignUrl"); //if (!string.IsNullOrEmpty(assignUrl)) //{ // var resourceType = _cache.GetResourceType(); // var rtype = resourceType.FirstOrDefault(p => p.RESTYPEID == info.RESTYPEID); // if (rtype != null) // { // var companys = _cache.GetList_innerCompany(); // var company = companys.Find(p => p.COMPANYID == rtype.COMPANYID); // if (company != null) // { // var deptments = _cache.GetList_SalesDepartMent(); // var dept = deptments.Find(p => p.CHANNELDEF != null && p.COMPANYID == company.COMPANYID); // if (dept != null) // { // var ch = Convert.ToInt32(dept.CHANNELDEF); // var assign = new AssignQuery("com.web", resid, ch, ch, "soft_reg"); // var time = (long)Utility.ConvertDateTimeInt(DateTime.Now); // var message = JsonConvert.SerializeObject(new { account = "dn.crm", time }); // var postpara = new SecurityHelper().createSignEncodingStr(message); // var rsp = Utility.PostAjaxData(assignUrl + "?" + postpara, assign.ToJson(), Encoding.UTF8); // var ret = JsonConvert.DeserializeObject(rsp); // LogHelper.Info("获取分配" + ret.ToJson()); // if (ret.errcode == 0) // { // //如果有工号,直接分配 // if (!string.IsNullOrEmpty(ret.data.eid) && !string.IsNullOrEmpty(resid)) // { // var isExe = false; // var userList = _cache.GetUserList(); // var pici = new SEQUENCES_BL().Seq_base_get(); // using (var db = new crmContext()) // { // var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == resid); // var para = _para.GetModel_Patameter("IgnoreManager"); // if (para != null && myRes != null) // { // var manager = _user.GetModel(myRes.INNERUSERID); // if (!string.IsNullOrEmpty(para.PARAVALUE)) // { // var manageList = para.PARAVALUE.Split(','); // foreach (var item in manageList) // { // if (item == manager.EID.ToString()) // { // isExe = true; // } // } // } // } // //如果不存在分配关系,才需要分配 // if (myRes == null || isExe) // { // LogHelper.Info("开始写入分配资源:" + resid); // var eid32 = Convert.ToDecimal(ret.data.eid); // var user = userList.FirstOrDefault(p => p.EID == eid32); // if (user != null) // { // var allcoteUse = new RES_ALLCOTE_USER() // { // ID = new SEQUENCES_BL().Seq_base_get(), // INNERUSERID = user.PKID, // EID = user.EID, // NUM = 1, // CTIME = DateTime.Now, // PICI = pici, // RESID = resid, // TYPE = 1 // }; // //if (activeModel.groupid.HasValue) // //{ // // info.SGID = activeModel.groupid.Value; // //} // db.RES_ALLCOTE_USER.Add(allcoteUse); // } // db.SaveChanges(); // } // } // //资源分配关系 // var eid1000 = userList.FirstOrDefault(p => p.EID == 10000).PKID; // _myallocate.ExeSeniorDistributeByResId(eid1000, pici, "导入资源分配"); // } // } // } // } // } //} _myallocate.ExecDistribute(mobile, null, null, info.RESTYPEID.Value, "导入资源分配"); } dal.DoImportDt(impId); } public void ImpotDt(WX.CRM.Model.Entity.RES_IMPORTRES info, List mobils, int timeOut = 300) { decimal impId = new BLL.Base.SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable); RES_IMPORTRES_BL bll = new RES_IMPORTRES_BL(); System.Data.DataSet ds = new DataSet(); //主表RES_IMPORTRES System.Data.DataTable dt1 = new DataTable("RES_IMPORTRES"); dt1.Columns.Add("IMPORTID", typeof(decimal)); dt1.Columns.Add("RESTYPEID", typeof(decimal)); dt1.Columns.Add("ACTIVITYID", typeof(decimal)); dt1.Columns.Add("RESOURCETAG", typeof(string)); dt1.Columns.Add("OPTYPE", typeof(decimal)); dt1.Columns.Add("CREATEUSER", typeof(decimal)); dt1.Columns.Add("CTIME", typeof(DateTime)); System.Data.DataRow r1_1 = dt1.NewRow(); r1_1["IMPORTID"] = impId; r1_1["RESTYPEID"] = info.RESTYPEID ?? 0; r1_1["ACTIVITYID"] = info.ACTIVITYID ?? 0; r1_1["RESOURCETAG"] = info.RESOURCETAG ?? ""; r1_1["OPTYPE"] = info.OPTYPE ?? 0; r1_1["CREATEUSER"] = info.CREATEUSER ?? 0; r1_1["CTIME"] = System.DateTime.Now; dt1.Rows.Add(r1_1); //明细表:RES_IMPORTRES_DETAIL System.Data.DataTable dt2 = new DataTable("RES_IMPORTRES_DETAIL"); dt2.Columns.Add("IMPORTID", typeof(decimal)); dt2.Columns.Add("RESID", typeof(string)); dt2.Columns.Add("MOBILE", typeof(string)); dt2.Columns.Add("ENMOBILE", typeof(string)); dt2.Columns.Add("EXTXML", typeof(string)); foreach (var m in mobils) { System.Data.DataRow r2_1 = dt2.NewRow(); r2_1["IMPORTID"] = impId; r2_1["RESID"] = Common.ResUtil.CreateResId(m.Mobile); r2_1["MOBILE"] = sHelper.encyptData(clientid, m.Mobile); r2_1["ENMOBILE"] = Utility.NumberFormat(m.Mobile); r2_1["EXTXML"] = m.ExtXml; dt2.Rows.Add(r2_1); } ds.Tables.Add(dt1); ds.Tables.Add(dt2); dal.ImpotDt(ds, timeOut); //获取线上分配关系,如果存在按线上分配关系写入,不存在则走兜底流程 foreach (var mobile in mobils) { LogHelper.Info(mobile.Mobile); _myallocate.ExecDistribute(mobile.Mobile, null, null, info.RESTYPEID.Value, "导入资源分配"); } dal.DoImportDt(impId); } public List GetList(int PageIndex, int PageSize, ref int rcount) { var query = db.RES_IMPORTRES.OrderByDescending(p => p.CTIME); rcount = query.Count(); int startIndex = 0; if (PageIndex > 1) startIndex = (PageIndex - 1) * PageSize; List lis = query.Skip(startIndex).Take(PageSize).ToList(); foreach (var obj in lis) { var user = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == obj.CREATEUSER); if (user != null) obj.map_CREATEUSERNAME = user.UNAME; var r = db.RES_RESOURCETYPE.FirstOrDefault(p => p.RESTYPEID == obj.RESTYPEID); if (r != null) obj.map_RESOURCENAME = r.TYPENAME; var a = db.RES_ACTIVITY.FirstOrDefault(p => p.ACTIVITYID == obj.ACTIVITYID); if (a != null) obj.map_ACTIVITYNAME = a.ACTIVITYNAME; } return lis; } public List GetReportResource(DateTime? dtstart, DateTime? dtend) { var ds = new RES_IMPORTRES_DAL().ReportResource(dtstart, dtend); var list = ds.Tables[0].ToList(); return list; } public List GetResImportIdList(decimal importId) { using (var db = new WX.CRM.Model.Entity.crmContext()) { return db.IMP_RESIMPORTID.Where(m => m.IMPORTID == importId).ToList(); } } public List GetExpResImportIdList(decimal importId) { using (var db = new WX.CRM.Model.Entity.crmContext()) { return db.EXP_RESIMPORTID.Where(m => m.IMPORTID == importId).ToList(); } } public void BatchRemove(decimal importId) { dal.BatchRemove(importId); } public bool Delete_IM_Resimportid(ref ValidationErrors errors, decimal id) { try { using (var db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.IMP_RESIMPORTID entry = db.IMP_RESIMPORTID.FirstOrDefault(m => m.IMPORTID == id); if (entry == null) { errors.Add("数据已经被删除!"); return false; } db.IMP_RESIMPORTID.Remove(entry); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public class AssignQuery { public AssignQuery(string appid, string appuserid, int channel, int curchannel, string remark) : this(appid, appuserid, string.Empty, channel, curchannel, 0, string.Empty, remark, string.Empty, string.Empty, string.Empty) { } public AssignQuery(string appid, string appuserid, string unionid, int channel, int curchannel, int type, string livecode, string remark, string remarkext, string memo, string eid) { this.appid = appid; this.appuserid = appuserid; this.unionid = unionid; this.channel = channel; this.curchannel = curchannel; this.type = type; this.livecode = livecode; this.remark = remark; this.remarkext = remarkext; this.memo = memo; this.eid = eid; } public string appid { get; set; } public string appuserid { get; set; } public string unionid { get; set; } public int channel { get; set; } public int curchannel { get; set; } public int type { get; set; }//1、返回二维码链接、0、不需要返回二码码链接 public string livecode { get; set; } //活码标识,30字符以内 public string remark { get; set; }//标记,30字符以内 public string remarkext { get; set; }//标记补充,30字符以内 public string memo { get; set; } public string eid { get; set; }//工号 } public class WeworkUserAssignMessage { public int errcode { get; set; } public string errmsg { get; set; } public WeworkUserAssignResult data { get; set; } } public class WeworkUserAssignResult { public string eid { get; set; } public int? groupid { get; set; } public string qr { get; set; } } } }