586 lines
29 KiB
C#
586 lines
29 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
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.BLL.Base;
|
|
using WX.CRM.Model.MAP;
|
|
using WX.CRM.BLL.Application.UserComBox;
|
|
|
|
namespace WX.CRM.BLL.Res
|
|
{
|
|
public class RES_ALLOCATE_BL : IRES_ALLOCATE
|
|
{
|
|
private RES_ALLOCATE_DAL _dal = new RES_ALLOCATE_DAL();
|
|
private CACHE_BL cache_BL = new CACHE_BL();
|
|
|
|
public DataTable GetTradeCalender()
|
|
{
|
|
return _dal.GetTradeCalender();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 资源分配定时分配主过程
|
|
/// </summary>
|
|
public void TimingExecuteAllocateProc()
|
|
{
|
|
_dal.TimingExecuteAllocateProc();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 资源分配定时回收主过程
|
|
/// </summary>
|
|
public void TimingExecuteRecycleProc()
|
|
{
|
|
_dal.TimingExecuteRecycleProc();
|
|
}
|
|
|
|
public DataTable GetAllocateLogList(DateTime time1, DateTime time2)
|
|
{
|
|
return _dal.GetAllocateLogList(time1, time2);
|
|
}
|
|
|
|
public List<RES_MYALLOCATERES_VIEW> GetList(ref Pager pager, QueryUserComboDto usercomboDto, DateTime? sTime, DateTime? eTime, string resid, decimal? resourcetypeid, string resourcetag, string category, decimal? disEid, bool? IsFx, decimal? IsBound, int? deptId)
|
|
{
|
|
var deptList = cache_BL.GetDeptNameMapList();
|
|
|
|
using (var db = new crmContext())
|
|
{
|
|
var lableList = from c in db.RES_CUSTOMER
|
|
join lable in db.RES_CUSTOMER_LABEL on c.RESID equals lable.RESID
|
|
where lable.RFMTYPE == 1
|
|
select c;
|
|
|
|
var residList = from c in db.RES_CUSTOMER
|
|
join lable in lableList on c.CUSTOMERID equals lable.CUSTOMERID
|
|
select c;
|
|
|
|
var data = (from a in db.RES_MYALLOCATERES
|
|
join q in db.RES_CUSTOMER on a.RESID equals q.RESID
|
|
join c in db.CACHE_RES_RESOURCE_COUNT on a.RESID equals c.RESID
|
|
join d in db.RES_CUSTOMERDETAIL on a.RESID equals d.RESID
|
|
join r in db.RES_RESOURCETYPE on a.RESTYPEID equals r.RESTYPEID
|
|
join t in db.RES_ACTIVITY on a.RESOURCETAG equals t.RESOURCETAG
|
|
join rl in residList on a.RESID equals rl.RESID into arTemp
|
|
from ar in arTemp.DefaultIfEmpty()
|
|
select new RES_MYALLOCATERES_VIEW()
|
|
{
|
|
ResourceTypeId = r.RESTYPEID,
|
|
ResourceTypeName = r.TYPENAME,
|
|
ActivityName = t.ACTIVITYNAME,
|
|
ResourceTag = t.RESOURCETAG,
|
|
ResId = q.UMID,
|
|
SALESID = a.INNERUSERID,
|
|
LASTACTIVETIME = c.LASTACTIVETIME,
|
|
CUSTOMERCATEGORY = d.CUSTOMERCATEGORY,
|
|
LASTCALLTIME = c.LASTCALLTIME,
|
|
PKID = a.PKID,
|
|
DISTIME = a.DISTIME.Value,
|
|
DISUSERID = a.DISUSERID.Value,
|
|
IsFx = ar != null ? true : false,
|
|
IsBound = d.ISBOUND,//(d==null?"否":(d.ISBOUND == 1 ? "是" : "否"))
|
|
DeptId = a.DEPTID,
|
|
});
|
|
|
|
if (usercomboDto.userId.HasValue)
|
|
{
|
|
data = data.Where(m => m.SALESID == usercomboDto.userId.Value);
|
|
}
|
|
else if (!string.IsNullOrEmpty(usercomboDto.groupIds))
|
|
{
|
|
var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(','));
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
where _groupids.Contains(b.GID.Value)
|
|
select a);
|
|
}
|
|
else if (!string.IsNullOrEmpty(usercomboDto.deptId))
|
|
{
|
|
var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(','));
|
|
List<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
UserServices userservices = new UserServices(cache_BL);
|
|
foreach (var item in depts)
|
|
{
|
|
List<decimal> deptIDS = new List<decimal>();
|
|
List<decimal> gidS = new List<decimal>();
|
|
userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid
|
|
ALLdeptIDS.AddRange(deptIDS);
|
|
ALLgidS.AddRange(gidS);
|
|
}
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
//join g in db.BAS_INNERGROUP on b.GID equals g.GID
|
|
where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value)
|
|
select a);
|
|
}
|
|
|
|
//if (innerUserId.HasValue)
|
|
//{
|
|
// data = data.Where(p => p.SALESID == innerUserId.Value);
|
|
//}
|
|
//else
|
|
//{
|
|
// if (!string.IsNullOrWhiteSpace(groupId) && (groupId.IndexOf(',') < 0 || saleDeptId <= 1)) //当单个组时走这个判断
|
|
// {
|
|
// var _groupids = OperationUtil.ConvertToDecimal(groupId.ToString().Split(','));
|
|
// List<decimal?> groupList = new List<decimal?>();
|
|
// if (_groupids != null)
|
|
// {
|
|
// foreach (var g in _groupids)
|
|
// {
|
|
// groupList.Add(g);
|
|
// }
|
|
// }
|
|
// if (groupList != null)
|
|
// {
|
|
// var returnData = (from a in data
|
|
// join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
// where groupList.Contains(b.GID)
|
|
// select a);
|
|
|
|
// data = returnData;
|
|
// }
|
|
// }
|
|
// else if (saleDeptId > 1) //销售部门走这个判断
|
|
// {
|
|
// data = (from a in data
|
|
// join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
// join c in db.BAS_INNERGROUP on b.GID equals c.GID
|
|
// join d in db.BAS_SALESDEPARTMENT on c.SALEDEPTID equals d.SALEDEPTID
|
|
// where d.SALEDEPTID == saleDeptId
|
|
// select a);
|
|
// }
|
|
//}
|
|
if (!string.IsNullOrEmpty(category))
|
|
{
|
|
data = data.Where(p => p.CUSTOMERCATEGORY == category);
|
|
}
|
|
if (sTime.HasValue)
|
|
{
|
|
data = data.Where(p => p.DISTIME >= sTime);
|
|
}
|
|
if (eTime.HasValue)
|
|
{
|
|
eTime = eTime.Value.AddDays(1);
|
|
data = data.Where(p => p.DISTIME < eTime);
|
|
}
|
|
if (!string.IsNullOrEmpty(resid))
|
|
{
|
|
data = data.Where(p => p.ResId == resid);
|
|
}
|
|
if (resourcetypeid.HasValue)
|
|
{
|
|
data = data.Where(p => p.ResourceTypeId == resourcetypeid.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(resourcetag))
|
|
{
|
|
data = data.Where(p => p.ResourceTag == resourcetag);
|
|
}
|
|
if (disEid.HasValue)
|
|
{
|
|
data = data.Where(p => p.DISUSERID == disEid.Value);
|
|
}
|
|
if (IsFx.HasValue)
|
|
{
|
|
data = data.Where(p => p.IsFx == IsFx.Value);
|
|
}
|
|
if (IsBound.HasValue)
|
|
{
|
|
//var val = (IsBound == 1 ? "是" : "否");
|
|
data = data.Where(p => p.IsBound == IsBound);
|
|
}
|
|
if (deptId.HasValue)
|
|
{
|
|
data = data.Where(p => p.DeptId == deptId);
|
|
}
|
|
data = data.OrderByDescending(m => m.DISTIME).ThenByDescending(m => m.PKID);
|
|
PagerUtil.SetPager<RES_MYALLOCATERES_VIEW>(ref data, ref pager);
|
|
var res = data.ToList();
|
|
foreach (var item in res)
|
|
{
|
|
item.DeptName = deptList.FirstOrDefault(n => n.id == item.DeptId) == null ? "" : deptList.FirstOrDefault(n => n.id == item.DeptId).title;
|
|
}
|
|
return res;
|
|
}
|
|
}
|
|
|
|
public List<RES_MYALLOCATERES_VIEW> GetListByHis(ref Pager pager, ResMyAllocateLogQuery query, QueryUserComboDto usercomboDto)
|
|
{
|
|
var deptList = cache_BL.GetDeptNameMapList();
|
|
|
|
using (var db = new crmContext())
|
|
{
|
|
var queryData = db.RES_ALLCOTELOG_DETAIL.AsQueryable();
|
|
var sharedPoolHis = db.RES_SHAREDPOOL_HIS.AsQueryable();
|
|
//queryData = queryData.Where(p => p.DISUSERID != 600000207);
|
|
|
|
if (query.IsFirst.HasValue && query.IsFirst.Value)
|
|
{
|
|
queryData = from a in queryData
|
|
join b in queryData.GroupBy(p => p.RESID).Select(g => new { RESID = g.Key, ID = g.Min(p => p.PKID) }) on a.PKID equals b.ID
|
|
select a;
|
|
}
|
|
|
|
if (query.sTime.HasValue)
|
|
{
|
|
queryData = queryData.Where(p => p.DISTIME >= query.sTime);
|
|
sharedPoolHis = sharedPoolHis.Where(p => p.CTIME >= query.sTime);
|
|
}
|
|
if (query.eTime.HasValue)
|
|
{
|
|
query.eTime = query.eTime.Value.AddDays(1);
|
|
queryData = queryData.Where(p => p.DISTIME < query.eTime);
|
|
}
|
|
//var resAllcoteLog = from a in queryData group a by new { a.RESID, a.SALESID, a.DISUSERID } into g select new { g.Key.RESID, g.Key.SALESID, g.Key.DISUSERID, PKID = g.Max(p => p.PKID), DISTIME = g.Max(p => p.DISTIME) };
|
|
var data = (from b in queryData
|
|
join customer in db.RES_CUSTOMER on b.RESID equals customer.RESID
|
|
join c in db.CACHE_RES_RESOURCE_COUNT on b.RESID equals c.RESID
|
|
//join d in db.RES_CUSTOMERDETAIL on b.RESID equals d.RESID
|
|
join u in db.BAS_INNERUSER on b.SALESID equals u.PKID
|
|
join a in db.RES_ACTIVITY on customer.CUSTOMERFROM equals a.RESOURCETAG
|
|
join t in db.RES_RESOURCETYPE on a.RESTYPEID equals t.RESTYPEID
|
|
//join h in sharedPoolHis on new { b.RESID, b.SALESID } equals new { h.RESID, h.SALESID } into bhTmp
|
|
//join h in sharedPoolHis on b.RESID equals h.RESID into bhTmp
|
|
//from bh in bhTmp.DefaultIfEmpty()
|
|
select new RES_MYALLOCATERES_VIEW()
|
|
{
|
|
ResourceTypeId = t.RESTYPEID,
|
|
ResourceTypeName = t.TYPENAME,
|
|
ActivityName = a.ACTIVITYNAME,
|
|
ResourceTag = a.RESOURCETAG,
|
|
ResId = customer.UMID,
|
|
SALESID = b.SALESID,
|
|
LASTACTIVETIME = c.LASTACTIVETIME,
|
|
//CUSTOMERCATEGORY = d.CUSTOMERCATEGORY,
|
|
LASTCALLTIME = c.LASTCALLTIME,
|
|
PKID = b.PKID,
|
|
DISTIME = b.DISTIME.Value,
|
|
DISUSERID = b.DISUSERID.Value,
|
|
//RECYCLETIME = bh.CTIME
|
|
RECYCLETIME = null,
|
|
DeptId = u.DEPTID,
|
|
});
|
|
if (!string.IsNullOrEmpty(query.resid))
|
|
{
|
|
data = data.Where(p => p.ResId == query.resid);
|
|
//sharedPoolHis = sharedPoolHis.Where(p => p.RESID == query.resid);
|
|
}
|
|
if (query.isrecycle.HasValue)
|
|
{
|
|
var hisList = from s in sharedPoolHis group s by new { s.RESID, s.SALESID } into g select new { g.Key.RESID, g.Key.SALESID, CTIME = g.Max(p => p.CTIME) };
|
|
if (query.isrecycle.Value == 1)
|
|
{
|
|
data = from a in data
|
|
join h in hisList on new { RESID = a.ResId, a.SALESID } equals new { h.RESID, h.SALESID }
|
|
select new RES_MYALLOCATERES_VIEW()
|
|
{
|
|
ResourceTypeId = a.ResourceTypeId,
|
|
ResourceTypeName = a.ResourceTypeName,
|
|
ActivityName = a.ActivityName,
|
|
ResourceTag = a.ResourceTag,
|
|
ResId = a.ResId,
|
|
SALESID = a.SALESID,
|
|
LASTACTIVETIME = a.LASTACTIVETIME,
|
|
LASTCALLTIME = a.LASTCALLTIME,
|
|
PKID = a.PKID,
|
|
DISTIME = a.DISTIME,
|
|
DISUSERID = a.DISUSERID,
|
|
RECYCLETIME = h.CTIME,
|
|
DeptId = a.DeptId
|
|
};
|
|
}
|
|
else
|
|
{
|
|
data = from a in data where !sharedPoolHis.Any(p => p.RESID == a.ResId) select a;
|
|
}
|
|
}
|
|
|
|
if (query.deptlineid.HasValue)
|
|
{
|
|
data = data.Where(p => p.DeptId == query.deptlineid);
|
|
}
|
|
if (usercomboDto.userId.HasValue)
|
|
{
|
|
data = data.Where(p => p.SALESID == usercomboDto.userId.Value);
|
|
}
|
|
else if (!string.IsNullOrEmpty(usercomboDto.groupIds))
|
|
{
|
|
decimal[] _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(','));
|
|
var userIds = db.BAS_INNERUSERGROUP.Where(m => _groupids.Contains(m.GID.Value)).Select(m => m.INNERUSERID);
|
|
data = data.Where(m => userIds.Contains(m.SALESID.Value));
|
|
}
|
|
else if (!string.IsNullOrEmpty(usercomboDto.deptId))
|
|
{
|
|
//decimal[] _saleDeptId = OperationUtil.ConvertToDecimal(userComboDto.deptId.Split(','));
|
|
//var groupIds = db.BAS_INNERGROUP.Where(m => _saleDeptId.Contains(m.SALEDEPTID.Value)).Select(p => p.GID).ToList();
|
|
//var userIds = (from a in db.BAS_INNERUSERGROUP where groupIds.Contains(a.GID.Value) select a.INNERUSERID);
|
|
//queryData = queryData.Where(a => userIds.Contains(a.INNERUSERID.Value));
|
|
var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(','));
|
|
List<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
UserServices userservices = new UserServices();
|
|
foreach (var item in depts)
|
|
{
|
|
List<decimal> deptIDS = new List<decimal>();
|
|
List<decimal> gidS = new List<decimal>();
|
|
userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid
|
|
ALLdeptIDS.AddRange(deptIDS);
|
|
ALLgidS.AddRange(gidS);
|
|
}
|
|
data = (from a in data
|
|
join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
//join g in db.BAS_INNERGROUP on b.GID equals g.GID
|
|
where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value)
|
|
select a);
|
|
}
|
|
//else
|
|
//{
|
|
// if (!string.IsNullOrWhiteSpace(query.groupId) && (query.groupId.IndexOf(',') < 0 || query.saleDeptId <= 1)) //当单个组时走这个判断
|
|
// {
|
|
// var _groupids = OperationUtil.ConvertToDecimal(query.groupId.ToString().Split(','));
|
|
// List<decimal?> groupList = new List<decimal?>();
|
|
// if (_groupids != null)
|
|
// {
|
|
// foreach (var g in _groupids)
|
|
// {
|
|
// groupList.Add(g);
|
|
// }
|
|
// }
|
|
// if (groupList != null)
|
|
// {
|
|
// var returnData = (from a in data
|
|
// join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
// where groupList.Contains(b.GID)
|
|
// select a);
|
|
|
|
// data = returnData;
|
|
// }
|
|
// }
|
|
// else if (query.saleDeptId > 1) //销售部门走这个判断
|
|
// {
|
|
// data = (from a in data
|
|
// join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
|
|
// join c in db.BAS_INNERGROUP on b.GID equals c.GID
|
|
// join d in db.BAS_SALESDEPARTMENT on c.SALEDEPTID equals d.SALEDEPTID
|
|
// where d.SALEDEPTID == query.saleDeptId
|
|
// select a);
|
|
// }
|
|
//}
|
|
if (!string.IsNullOrEmpty(query.category))
|
|
{
|
|
data = data.Where(p => p.CUSTOMERCATEGORY == query.category);
|
|
}
|
|
|
|
if (query.resourcetypeid.HasValue)
|
|
{
|
|
data = data.Where(p => p.ResourceTypeId == query.resourcetypeid.Value);
|
|
}
|
|
if (!string.IsNullOrEmpty(query.resourcetag))
|
|
{
|
|
data = data.Where(p => p.ResourceTag == query.resourcetag);
|
|
}
|
|
if (query.diseid.HasValue)
|
|
{
|
|
data = data.Where(p => p.DISUSERID == query.diseid.Value);
|
|
}
|
|
if (query.isrecycle.HasValue)
|
|
{
|
|
if (query.isrecycle == 1)
|
|
{
|
|
data = data.Where(p => p.RECYCLETIME.HasValue);
|
|
if (query.r1Time.HasValue)
|
|
{
|
|
data = data.Where(p => p.RECYCLETIME >= query.r1Time.Value);
|
|
}
|
|
if (query.r2Time.HasValue)
|
|
{
|
|
query.r2Time = query.r2Time.Value.AddDays(1);
|
|
data = data.Where(p => p.RECYCLETIME < query.r2Time);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
data = data.Where(p => p.RECYCLETIME == null);
|
|
}
|
|
}
|
|
if (query.hasGt.HasValue)
|
|
{
|
|
if (query.hasGt == 1)
|
|
{
|
|
data = data.Where(p => p.LASTACTIVETIME.HasValue || p.LASTCALLTIME.HasValue);
|
|
}
|
|
else
|
|
{
|
|
data = data.Where(p => p.LASTACTIVETIME == null && p.LASTCALLTIME == null);
|
|
}
|
|
}
|
|
data = data.OrderByDescending(m => m.DISTIME).ThenByDescending(p => p.PKID);
|
|
PagerUtil.SetPager<RES_MYALLOCATERES_VIEW>(ref data, ref pager);
|
|
var res = data.ToList();
|
|
foreach (var item in res)
|
|
{
|
|
item.DeptName = deptList.FirstOrDefault(n => n.id == item.DeptId)?.title;
|
|
}
|
|
return res;
|
|
}
|
|
}
|
|
|
|
public void HandlerMyAllocate(ref Pager pg, QueryUserComboDto usercomboDto, string resid, string resourcetag, decimal resourcetypeid, decimal isview, decimal isnew, DateTime? stime, DateTime? etime, decimal? productId, decimal? subproductId, DateTime? stimeTH, DateTime? etimeTH, string pkids, string category, DateTime? stimeGD, DateTime? etimeGD, DateTime? stimeKT, DateTime? etimeKT, DateTime? stimeFP, DateTime? etimeFP, decimal? hasTH, decimal? hasGD, decimal fenpeiUser, decimal pici, string extxml, decimal? midproductid)
|
|
{
|
|
string groupId = usercomboDto.groupIds;
|
|
List<decimal> ALLdeptIDS = new List<decimal>();
|
|
List<decimal> ALLgidS = new List<decimal>();
|
|
if (string.IsNullOrEmpty(usercomboDto.groupIds) && !string.IsNullOrEmpty(usercomboDto.deptId))
|
|
{
|
|
var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(','));
|
|
|
|
UserServices userservices = new UserServices();
|
|
foreach (var item in depts)
|
|
{
|
|
List<decimal> deptIDS = new List<decimal>();
|
|
List<decimal> gidS = new List<decimal>();
|
|
userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid
|
|
ALLdeptIDS.AddRange(deptIDS);
|
|
ALLgidS.AddRange(gidS);
|
|
}
|
|
ALLdeptIDS.AddRange(ALLgidS);
|
|
groupId = string.Join(",", ALLdeptIDS);//所有的部门ID和销售组ID
|
|
}
|
|
if (!string.IsNullOrEmpty(resid))
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
|
|
//传入的数据为umid。获取到resid来进行分配
|
|
resid = db.RES_CUSTOMER.FirstOrDefault(x => x.UMID == resid)?.RESID;
|
|
}
|
|
}
|
|
_dal.HandlerMyAllocate(ref pg, resid, usercomboDto.userId, resourcetag, resourcetypeid, isview, isnew, stime, etime, groupId, productId, subproductId, stimeTH, etimeTH, pkids, category, stimeGD, etimeGD, stimeKT, etimeKT, stimeFP, etimeFP, hasTH, hasGD, fenpeiUser, pici, extxml, midproductid);
|
|
}
|
|
|
|
public void HandlerMyAllocateNew(string logids, string distbuteData, decimal userid)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
var logidList = logids.Split(',').Select(n => Convert.ToDecimal(n)).ToList();
|
|
var poolLogs = db.RES_POOLLOG.Where(n => logidList.Contains(n.LOGID)).ToList();
|
|
var alluser = db.BAS_INNERUSER.ToList();
|
|
var disarray = distbuteData.Split(',');
|
|
var allCoteUsers = new List<RES_ALLCOTE_USER>();
|
|
|
|
var pici = new SEQUENCES_BL().Seq_base_get();
|
|
|
|
foreach (var item in disarray)
|
|
{
|
|
var disitemarr = item.Split(':');
|
|
if (disitemarr.Length != 3)
|
|
continue;
|
|
var num = Convert.ToInt32(string.IsNullOrEmpty(disitemarr[1]) ? "0" : disitemarr[1]);
|
|
|
|
var info = new RES_ALLCOTE_USER()
|
|
{
|
|
ID = new SEQUENCES_BL().Seq_base_get(),
|
|
INNERUSERID = Convert.ToDecimal(disitemarr[0]),
|
|
EID = alluser.FirstOrDefault(n => n.PKID == Convert.ToDecimal(disitemarr[0])).EID,
|
|
NUM = num,
|
|
CTIME = DateTime.Now,
|
|
PICI = pici,
|
|
RESID = null,
|
|
TYPE = 0
|
|
};
|
|
allCoteUsers.Add(info);
|
|
}
|
|
foreach (var id in logidList)
|
|
{
|
|
var plog = poolLogs.FirstOrDefault(n => n.LOGID == id);
|
|
if (plog != null)
|
|
{
|
|
var user = allCoteUsers.FirstOrDefault(n => n.EXENUM < n.NUM);
|
|
if (user == null)
|
|
{
|
|
break;
|
|
}
|
|
var fenpeiid = user.INNERUSERID;
|
|
var eidUser = alluser.FirstOrDefault(n => n.PKID == fenpeiid).EID;
|
|
var resid = plog.RESID;
|
|
//插入分配日志
|
|
var logid = new SEQUENCES_BL().Seq_base_get();
|
|
RES_ALLCOTELOG log = new RES_ALLCOTELOG
|
|
{
|
|
LOGID = logid,
|
|
RESTYPEID = plog.RESTYPEID == null ? 0 : plog.RESTYPEID.Value,
|
|
DISTIME = DateTime.Now
|
|
};
|
|
db.RES_ALLCOTELOG.Add(log);
|
|
var myallocateres = db.RES_MYALLOCATERES.FirstOrDefault(n => n.RESID == resid && n.DEPTID == plog.DEPTID);
|
|
//是否有收藏
|
|
var farver = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(n => n.RESID == resid);
|
|
if (farver == null)
|
|
{
|
|
if (myallocateres == null)
|
|
{
|
|
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), resid, user.EID, 0, "add", null));
|
|
}
|
|
else
|
|
{
|
|
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), resid, user.EID, 0, "update", alluser.FirstOrDefault(n => n.PKID == myallocateres.INNERUSERID).EID));
|
|
}
|
|
}
|
|
if (myallocateres == null)
|
|
{
|
|
db.RES_MYALLOCATERES.Add(new RES_MYALLOCATERES
|
|
{
|
|
PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable),
|
|
RESTYPEID = plog.RESTYPEID == null ? 0 : plog.RESTYPEID.Value,
|
|
RESOURCETAG = plog.RESOURCETAG,
|
|
RESID = plog.RESID,
|
|
INNERUSERID = fenpeiid,
|
|
ISVIEW = 1,
|
|
MEMO = "新单资源池分配",
|
|
DISTIME = DateTime.Now,
|
|
DISUSERID = userid,
|
|
DIS_TIMES = 1,
|
|
TURNING_ID = 0,
|
|
DEPTID = plog.DEPTID
|
|
});
|
|
}
|
|
else
|
|
{
|
|
myallocateres.INNERUSERID = fenpeiid;
|
|
myallocateres.DIS_TIMES = myallocateres.DIS_TIMES + 1;
|
|
myallocateres.DISUSERID = userid;
|
|
myallocateres.DISTIME = DateTime.Now;
|
|
}
|
|
var allcotelog = db.RES_ALLCOTELOG_DETAIL.OrderByDescending(n => n.INDATE).FirstOrDefault(n => n.RESID == resid);
|
|
if (allcotelog == null)
|
|
{
|
|
db.RES_ALLCOTELOG_DETAIL.Add(new RES_ALLCOTELOG_DETAIL
|
|
{
|
|
PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable),
|
|
LOGID = logid,
|
|
RESID = resid,
|
|
SALESID = fenpeiid,
|
|
INDATE = DateTime.Now,
|
|
OUTDATE = Convert.ToDateTime("2050-01-01"),
|
|
DISUSERID = userid,
|
|
DISTIME = DateTime.Now,
|
|
DEPTID = plog.DEPTID
|
|
});
|
|
}
|
|
else
|
|
{
|
|
allcotelog.OUTDATE = DateTime.Now;
|
|
}
|
|
user.EXENUM = user.EXENUM + 1;
|
|
}
|
|
}
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
} |