364 lines
17 KiB
C#
364 lines
17 KiB
C#
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<string> 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<WeworkUserAssignMessage>(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<RES_IMPORTRESEXT> 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<WX.CRM.Model.Entity.RES_IMPORTRES> 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<WX.CRM.Model.Entity.RES_IMPORTRES> lis = query.Skip(startIndex).Take(PageSize).ToList<WX.CRM.Model.Entity.RES_IMPORTRES>();
|
||
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<WX.CRM.Model.Entity.ResourceData> GetReportResource(DateTime? dtstart, DateTime? dtend)
|
||
{
|
||
var ds = new RES_IMPORTRES_DAL().ReportResource(dtstart, dtend);
|
||
var list = ds.Tables[0].ToList<WX.CRM.Model.Entity.ResourceData>();
|
||
return list;
|
||
}
|
||
|
||
public List<WX.CRM.Model.Entity.IMP_RESIMPORTID> GetResImportIdList(decimal importId)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
return db.IMP_RESIMPORTID.Where(m => m.IMPORTID == importId).ToList();
|
||
}
|
||
}
|
||
|
||
public List<WX.CRM.Model.Entity.EXP_RESIMPORTID> 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; }
|
||
}
|
||
|
||
}
|
||
}
|