ComplianceServer/oldcode/BLL/Res/RES_IMPORTRES_BL.cs

364 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; }
}
}
}