ComplianceServer/oldcode/BLL/QH/BAS_MON_INNERUSER_BL.cs

200 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.QH;
using WX.CRM.Model.Entity;
namespace WX.CRM.BLL.QH
{
public class BAS_MON_INNERUSER_BL : DbContextRepository<BAS_MON_INNERUSER>, IBAS_MON_INNERUSER
{
#region
public List<BAS_MON_INNERUSER_EXTEND> GetList(ref Pager pager, string groupId, decimal inneruserId, string eId, string uName, string isEffect, string gender, string isDismiss, string dismissType, string dismissTime1, string dismissTime2, string EntryDate1, string EntryDate2, string isfutures, string istrader, string istutor, string positiveTime1, string positiveTime2, DateTime month)
{
using (crmContext db = new crmContext())
{
IQueryable<BAS_MON_INNERUSER> data = db.BAS_MON_INNERUSER.Where(m => m.BALANCECODE == month).AsQueryable();
if (inneruserId > 0)
{
data = data.Where(m => m.PKID == inneruserId);
}
else if (!string.IsNullOrEmpty(groupId))
{
decimal[] _groupids = OperationUtil.ConvertToDecimal(groupId.Split(','));
data = data.Where(d => (db.BAS_MON_INNERUSERGROUP.Where(m => _groupids.Contains(m.GID) && m.BALANCECODE == month).Select(m => m.INNERUSERID)).Contains(d.PKID));
}
if (!string.IsNullOrWhiteSpace(eId))
{
int ieId = Convert.ToInt32(eId.Trim());
data = data.Where(m => m.EID == ieId);
}
if (!string.IsNullOrWhiteSpace(uName))
data = data.Where(a => a.UNAME.Contains(uName));
if (!string.IsNullOrWhiteSpace(isEffect) && isEffect != "-1")
{
short bisEffect = short.Parse(isEffect);
data = data.Where(a => a.ISEFFECT == bisEffect);
}
if (!string.IsNullOrWhiteSpace(gender) && gender != "0")
data = data.Where(a => a.GENDER == gender);
if (!string.IsNullOrWhiteSpace(isDismiss) && isDismiss != "-1")
{
short bisDismiss = short.Parse(isDismiss);
data = data.Where(a => a.ISDISMISS == bisDismiss);
}
if (!string.IsNullOrWhiteSpace(dismissType) && dismissType != "-1")
{
decimal iDismissType = Convert.ToDecimal(dismissType);
data = data.Where(m => m.DISMISSTYPE == iDismissType);
}
DateTime dt1;
if (!string.IsNullOrWhiteSpace(dismissTime1) && DateTime.TryParse(dismissTime1, out dt1))
data = data.Where(a => a.DISMISSTIME >= dt1);
DateTime dt2;
DateTime dt7;
if (!string.IsNullOrWhiteSpace(dismissTime2) && DateTime.TryParse(dismissTime2, out dt2))
{
dt7 = dt2.AddDays(1);
data = data.Where(a => a.DISMISSTIME < dt7);
}
DateTime dt3;
if (!string.IsNullOrWhiteSpace(EntryDate1) && DateTime.TryParse(EntryDate1, out dt3))
data = data.Where(a => a.ENTRYDATE >= dt3);
DateTime dt4;
DateTime dt8;
if (!string.IsNullOrWhiteSpace(EntryDate2) && DateTime.TryParse(EntryDate2, out dt4))
{
dt8 = dt4.AddDays(1);
data = data.Where(a => a.ENTRYDATE < dt8);
}
DateTime dt5;
if (!string.IsNullOrWhiteSpace(positiveTime1) && DateTime.TryParse(positiveTime1, out dt5))
data = data.Where(a => a.POSITIVETIME >= dt5);
DateTime dt6;
DateTime dt9;
if (!string.IsNullOrWhiteSpace(positiveTime2) && DateTime.TryParse(positiveTime2, out dt6))
{
dt9 = dt6.AddDays(1);
data = data.Where(a => a.POSITIVETIME < dt9);
}
if (!string.IsNullOrWhiteSpace(isfutures) && isfutures != "-1")
{
decimal futuresstatus = Convert.ToDecimal(isfutures);
data = data.Where(m => db.BAS_MON_INNERUSER_EXT.Where(a => a.FXH_FUTURESSTATUS == futuresstatus && a.BALANCECODE == month).Select(x => x.INNERUSERID).Contains(m.PKID));
}
if (!string.IsNullOrWhiteSpace(istrader) && istrader != "-1")
{
decimal traderstatus = Convert.ToDecimal(istrader);
data = data.Where(m => db.BAS_MON_INNERUSER_EXT.Where(a => a.FXH_TRADERSTATUS == traderstatus && a.BALANCECODE == month).Select(x => x.INNERUSERID).Contains(m.PKID));
}
if (!string.IsNullOrWhiteSpace(istutor) && istutor != "-1")
{
decimal tutorstatus = Convert.ToDecimal(istutor);
data = data.Where(m => db.BAS_MON_INNERUSER_EXT.Where(a => a.FXH_TUTORSTATUS == tutorstatus && a.BALANCECODE == month).Select(x => x.INNERUSERID).Contains(m.PKID));
}
return CreateModelList(data, db, pager);
}
}
private List<BAS_MON_INNERUSER_EXTEND> CreateModelList(IQueryable<BAS_MON_INNERUSER> queryData, crmContext db, Pager pager)
{
IQueryable<BAS_MON_INNERUSER_EXTEND> modelList = (from q in queryData
join u in db.BAS_MON_INNERUSERGROUP on q.PKID equals u.INNERUSERID into jiontemp
from a in jiontemp.Where(m => m.BALANCECODE == q.BALANCECODE).DefaultIfEmpty()//左关联(用户组/部门 关系表)
join g in db.BAS_MON_INNERGROUP on a.GID equals g.GID into jiontemp2
from b in jiontemp2.Where(m => m.BALANCECODE == a.BALANCECODE).DefaultIfEmpty()//左关联(组表)
join d in db.BAS_MON_INNERDEPARTMENT on a.DEPTID equals d.DEPTID into jiontemp3
from c in jiontemp3.Where(m => m.BALANCECODE == b.BALANCECODE).DefaultIfEmpty()//左关联(部门表)
join e in db.BAS_MON_INNERUSER_EXT on q.PKID equals e.INNERUSERID into jointemp4
from f in jointemp4.Where(m => m.BALANCECODE == q.BALANCECODE).DefaultIfEmpty()
select new BAS_MON_INNERUSER_EXTEND()
{
bas_mon_inneruser = q,
FUTURESSTATUS = f.FXH_FUTURESSTATUS,
TRADERSTATUS = f.FXH_TRADERSTATUS,
TUTORSTATUS = f.FXH_TUTORSTATUS,
GNAME = b.GNAME,
DEPTNAME = c.DEPTNAME
});
#region
if (pager.order == "desc")
{
switch (pager.sort)
{
case "UNAME":
modelList = modelList.OrderByDescending(c => c.bas_mon_inneruser.UNAME);
break;
case "EID":
modelList = modelList.OrderByDescending(c => c.bas_mon_inneruser.EID);
break;
case "BIRTHDAY":
modelList = modelList.OrderByDescending(c => c.bas_mon_inneruser.BIRTHDAY);
break;
case "DISMISSTIME":
modelList = modelList.OrderByDescending(c => c.bas_mon_inneruser.DISMISSTIME);
break;
case "ENTRYDATE":
modelList = modelList.OrderByDescending(c => c.bas_mon_inneruser.ENTRYDATE);
break;
default:
modelList = modelList.OrderByDescending(c => c.bas_mon_inneruser.PKID);
break;
}
}
else
{
switch (pager.sort)
{
case "UNAME":
modelList = modelList.OrderBy(c => c.bas_mon_inneruser.UNAME);
break;
case "EID":
modelList = modelList.OrderBy(c => c.bas_mon_inneruser.EID);
break;
case "BIRTHDAY":
modelList = modelList.OrderBy(c => c.bas_mon_inneruser.BIRTHDAY);
break;
case "DISMISSTIME":
modelList = modelList.OrderBy(c => c.bas_mon_inneruser.DISMISSTIME);
break;
case "ENTRYDATE":
modelList = modelList.OrderBy(c => c.bas_mon_inneruser.ENTRYDATE);
break;
default:
modelList = modelList.OrderBy(c => c.bas_mon_inneruser.PKID);
break;
}
}
#endregion
var isWorkNumber = modelList.Where(m => m.bas_mon_inneruser.ISDISMISS != 1).Count();
var isDismissNumber = modelList.Where(m => m.bas_mon_inneruser.ISDISMISS == 1).Count();
var isEffectNumber = modelList.Where(m => m.bas_mon_inneruser.ISEFFECT == 1).Count();
PagerUtil.SetPager<BAS_MON_INNERUSER_EXTEND>(ref modelList, ref pager);//分页
BAS_MON_INNERUSER innerUserModel = new BAS_MON_INNERUSER() { BALANCECODE = Convert.ToDateTime("0001-01-01 ").Date, PKID = 0, EID = 0, BIRTHDAY = DateTime.Now, ISDISMISS = 0, GENDER = "m", UNAME = "有效人数:" + isEffectNumber.ToString() };
BAS_MON_INNERUSER_EXTEND model = new BAS_MON_INNERUSER_EXTEND() { bas_mon_inneruser = innerUserModel, FUTURESSTATUS = 0, TRADERSTATUS = 0, TUTORSTATUS = 0, GNAME = "在职人数:" + isWorkNumber.ToString(), DEPTNAME = "离职人数:" + isDismissNumber.ToString() };
var list = modelList.ToList();
list.Add(model);
return list;
}
#endregion
/// <summary>
/// 获取月结年月
/// </summary>
/// <returns></returns>
public List<DateTime> GetBackupMont()
{
using (var db = new crmContext())
{
return db.BAS_MON_INNERUSER.OrderByDescending(s => s.BALANCECODE).Select(p => p.BALANCECODE).Distinct().ToList();
}
}
}
}