449 lines
22 KiB
C#
449 lines
22 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using WX.CRM.BLL.Util;
|
||
using WX.CRM.Common;
|
||
using WX.CRM.IBLL.Base;
|
||
using WX.CRM.Model.Entity;
|
||
|
||
namespace WX.CRM.BLL.Base
|
||
{
|
||
public class BAS_INNERGROUP_BL : IBAS_INNERGROUP, IBAS_INNERGROUP_Q
|
||
{
|
||
public bool Create_InnerGroup(ref ValidationErrors errors, BAS_INNERGROUP model)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
if (db.BAS_INNERGROUP.FirstOrDefault(m => m.GNAME == model.GNAME && m.SALEDEPTID == model.SALEDEPTID) != null)
|
||
{
|
||
errors.Add("这个营业部已有此销售组名称!");
|
||
return false;
|
||
}
|
||
model.GID = new SEQUENCES_BL().Seq_base_get();
|
||
model.CTIME = DateTime.Now;
|
||
db.BAS_INNERGROUP.Add(model);
|
||
return db.SaveChanges().GetResult();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errors.Add(ex.Message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public bool Update_InnerGroup(ref ValidationErrors errors, BAS_INNERGROUP model)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var entry = db.BAS_INNERGROUP.FirstOrDefault(m => m.GID == model.GID);
|
||
if (entry == null)
|
||
{
|
||
errors.Add("找不到这个组");
|
||
return false;
|
||
}
|
||
if (db.BAS_INNERGROUP.FirstOrDefault(m => m.GNAME == model.GNAME && m.GID != model.GID && m.SALEDEPTID == model.SALEDEPTID) != null)
|
||
{
|
||
errors.Add("这个营业部已有此销售组名称!");
|
||
return false;
|
||
}
|
||
entry.SALEDEPTID = model.SALEDEPTID;
|
||
entry.DEPTID = model.DEPTID;
|
||
entry.GNAME = model.GNAME;
|
||
entry.UPDATEUSER = model.UPDATEUSER;
|
||
entry.UTIME = DateTime.Now;
|
||
entry.ISHIDE = model.ISHIDE;
|
||
entry.ISSALEDEPT = model.ISSALEDEPT;
|
||
db.SaveChanges();
|
||
return true;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
errors.Add(ex.Message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
public bool Delete_InnerGroup(ref ValidationErrors errors, decimal id)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var entry = db.BAS_INNERGROUP.FirstOrDefault(m => m.GID == id);
|
||
if (entry == null)
|
||
{
|
||
errors.Add("数据已经被删除!");
|
||
return false;
|
||
}
|
||
db.BAS_INNERGROUP.Remove(entry);
|
||
return db.SaveChanges().GetResult();
|
||
}
|
||
}
|
||
catch (Exception ex) { errors.Add(ex.Message); return false; }
|
||
}
|
||
|
||
public BAS_INNERGROUP GetModel_InnerGroup(decimal id)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
return db.BAS_INNERGROUP.FirstOrDefault(m => m.GID == id);
|
||
}
|
||
}
|
||
|
||
public BAS_INNERGROUP GetInnerGroupByName(string name)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
return db.BAS_INNERGROUP.FirstOrDefault(m => m.GNAME.Contains(name));
|
||
}
|
||
}
|
||
public List<BAS_INNERGROUP> GetListGroup(decimal[] id)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var list = db.BAS_INNERGROUP.AsQueryable();
|
||
if (id != null && id.Length > 0)
|
||
{
|
||
list = list.Where(p => id.Contains(p.GID));
|
||
}
|
||
return list.ToList();
|
||
}
|
||
}
|
||
public List<BAS_INNERGROUP> GetList()
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
return db.BAS_INNERGROUP.ToList();
|
||
}
|
||
}
|
||
|
||
public List<BAS_INNERGROUP> GetList_InnerGroup(ref Pager pager, string saleDeptId, string gName, string ctime1, string ctime2, decimal ishide)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
var queryData = db.BAS_INNERGROUP.Include("BAS_SALESDEPARTMENT").AsQueryable<WX.CRM.Model.Entity.BAS_INNERGROUP>();
|
||
|
||
if (!string.IsNullOrWhiteSpace(saleDeptId) && saleDeptId != "0")
|
||
{
|
||
int isaleDeptId = Convert.ToInt32(saleDeptId);
|
||
if (isaleDeptId < 0)
|
||
{
|
||
int companyId = -isaleDeptId;
|
||
queryData = queryData.Where(a => db.BAS_SALESDEPARTMENT.Where(m => m.COMPANYID == companyId).Select(m => m.SALEDEPTID).Contains(a.SALEDEPTID.Value));
|
||
}
|
||
else
|
||
queryData = queryData.Where(a => a.SALEDEPTID == isaleDeptId);
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(gName))
|
||
{
|
||
string nGName = gName.Trim();
|
||
queryData = queryData.Where(a => a.GNAME.Contains(nGName));
|
||
}
|
||
if (ishide >= 0)
|
||
queryData = queryData.Where(a => a.ISHIDE == ishide);
|
||
DateTime dt;
|
||
if (!string.IsNullOrWhiteSpace(ctime1) && DateTime.TryParse(ctime1, out dt))
|
||
queryData = queryData.Where(a => a.CTIME >= dt);
|
||
DateTime dt2;
|
||
if (!string.IsNullOrWhiteSpace(ctime2) && DateTime.TryParse(ctime2, out dt2))
|
||
queryData = queryData.Where(a => a.CTIME <= dt2);
|
||
queryData = queryData.OrderByDescending(m => m.GID);
|
||
|
||
//排序
|
||
if (pager.order == "asc")
|
||
{
|
||
|
||
switch (pager.sort)
|
||
{
|
||
case "DEPTID":
|
||
queryData = queryData.OrderBy(c => c.DEPTID);
|
||
break;
|
||
case "DEPTNAME":
|
||
queryData = queryData.OrderBy(c => c.SALEDEPTID);
|
||
break;
|
||
case "CTIME":
|
||
queryData = queryData.OrderBy(c => c.CTIME);
|
||
break;
|
||
case "GNAME":
|
||
queryData = queryData.OrderBy(c => c.GNAME);
|
||
break;
|
||
default:
|
||
queryData = queryData.OrderBy(c => c.GID);
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
switch (pager.sort)
|
||
{
|
||
case "DEPTID":
|
||
queryData = queryData.OrderByDescending(c => c.DEPTID);
|
||
break;
|
||
case "DEPTNAME":
|
||
queryData = queryData.OrderByDescending(c => c.SALEDEPTID);
|
||
break;
|
||
case "CTIME":
|
||
queryData = queryData.OrderByDescending(c => c.CTIME);
|
||
break;
|
||
case "GNAME":
|
||
queryData = queryData.OrderByDescending(c => c.GNAME);
|
||
break;
|
||
default:
|
||
queryData = queryData.OrderByDescending(c => c.CTIME);
|
||
break;
|
||
}
|
||
}
|
||
|
||
PagerUtil.SetPager<WX.CRM.Model.Entity.BAS_INNERGROUP>(ref queryData, ref pager);//分页
|
||
return queryData.ToList();
|
||
//return db.Entry(BAS_INNERGROUP).Reference(c => c)
|
||
}
|
||
}
|
||
|
||
public List<SysSalesGroup> GetList_SysSalesGroup()
|
||
{
|
||
using (var db = new crmContext())
|
||
{
|
||
var q = (from t0 in db.BAS_INNERGROUP
|
||
join t1 in db.BAS_GROUPLEADER on t0.GID equals t1.INNERGROUPID
|
||
join t2 in db.BAS_INNERUSER on t1.INNERUSERID equals t2.PKID
|
||
where t1.LEADERTYPE == 10
|
||
select new
|
||
{
|
||
pkid = t0.GID,
|
||
name = t0.GNAME,
|
||
deptCode = "",
|
||
officer = t1.INNERUSERID,
|
||
creationDate = t0.CTIME,
|
||
creationBy = t0.CREATEUSER,
|
||
id = t0.GID,
|
||
officerEid = t2.EID
|
||
}
|
||
);
|
||
var list = q.ToList();
|
||
var result = new List<SysSalesGroup>();
|
||
foreach (var item in list)
|
||
{
|
||
var group = new SysSalesGroup();
|
||
group.pkid = int.Parse(item.pkid.ToString());
|
||
group.name = item.name;
|
||
group.deptCode = item.deptCode;
|
||
group.officer = int.Parse(item.officer.ToString());
|
||
//group.creationDate = item.creationDate.HasValue ? (DateTime?)DateTime.Parse(item.creationDate.ToString()) : null;
|
||
group.creationDate = item.creationDate.HasValue ? DateTime.SpecifyKind((DateTime)item.creationDate.Value, DateTimeKind.Utc) : (DateTime?)null;
|
||
group.creationBy = item.creationBy.HasValue ? (int?)int.Parse(item.creationBy.ToString()) : null;
|
||
group.id = int.Parse(item.id.ToString());
|
||
group.officerEid = int.Parse(item.officerEid.ToString());
|
||
result.Add(group);
|
||
}
|
||
return result;
|
||
}
|
||
}
|
||
|
||
#region 获取销售组tree
|
||
public object GetTreeList_InnerGroup()
|
||
{
|
||
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
|
||
List<WX.CRM.Model.Entity.BAS_COMPANY> companyList = db.BAS_COMPANY.ToList();
|
||
List<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> salesDeptList = db.BAS_SALESDEPARTMENT.ToList();
|
||
List<WX.CRM.Model.Entity.BAS_INNERGROUP> innerGroupList = db.BAS_INNERGROUP.Where(m => m.ISHIDE == 0).ToList();
|
||
List<object> obj = new List<object>();
|
||
List<object> childObj = null;
|
||
List<object> groupObj = null;
|
||
int i = 0;
|
||
int j = 0;
|
||
foreach (WX.CRM.Model.Entity.BAS_COMPANY model in companyList)
|
||
{
|
||
childObj = new List<object>();
|
||
j = 0;
|
||
foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT saleDpt in salesDeptList.Where(m => m.COMPANYID == model.COMPANYID))
|
||
{
|
||
groupObj = new List<object>();
|
||
foreach (WX.CRM.Model.Entity.BAS_INNERGROUP inGrp in innerGroupList.Where(x => x.SALEDEPTID == saleDpt.SALEDEPTID))
|
||
{
|
||
groupObj.Add(new { id = inGrp.GID, text = inGrp.GNAME, attributes = inGrp.DEPTID, iconCls = "icon-redmini" });
|
||
}
|
||
childObj.Add(new { id = "sale_" + saleDpt.SALEDEPTID, state = (groupObj.Count == 0 || j == 0 ? "open" : "closed"), text = saleDpt.DEPTNAME, children = groupObj.Count == 0 ? null : groupObj });
|
||
j++;
|
||
}
|
||
obj.Add(new { id = "com_" + model.COMPANYID, state = (childObj.Count == 0 || i == 0 ? "open" : "closed"), text = model.COMPANYNAME, children = childObj.Count == 0 ? null : childObj });
|
||
i++;
|
||
}
|
||
return obj;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 获取UserComBox的销售组 数据源
|
||
/// <summary>
|
||
/// 获取UserComBox的销售组 数据源
|
||
/// </summary>
|
||
/// <param name="saledeptId">销售部ID</param>
|
||
/// <param name="salegroupId">销售组ID</param>
|
||
/// <param name="iseId">inneruserId的类型 (iseId=0:inneruserId为用户ID;iseId=1:inneruserId为用户工号)</param>
|
||
/// <param name="salegroupId">销售组ID</param>
|
||
/// <param name="innerDeptId">部门ID,如果部门ID=0 不过滤</param>
|
||
/// <returns></returns>
|
||
public object GetUserComBoxJson(int queryType, decimal _saledeptid, decimal[] _groupdid, decimal _userid, decimal innerDeptId, string roleCodes, string currentRight)
|
||
{
|
||
using (var db = new WX.CRM.Model.Entity.crmContext())
|
||
{
|
||
string emptyMsg = "--您不属于任何组--";
|
||
if (!string.IsNullOrEmpty(currentRight))///有特殊权限的,直接查询特殊权限
|
||
{
|
||
string[] nowroles = roleCodes.Replace("][", ",").Replace("]", "").Replace("[", "").Split(',');
|
||
List<BAS_RIGHT_LEVEL> list = db.BAS_RIGHT_LEVEL.Where(m => m.RIGHTID == currentRight && nowroles.Contains(m.ROLECODE) && m.STATUS == 1).ToList();
|
||
if (list.Count > 0)//发现特权
|
||
{
|
||
decimal[] levelid = list.Select(m => m.PKID).ToArray();
|
||
List<BAS_RIGHT_LEVEL_DETAIL> detaillist = db.BAS_RIGHT_LEVEL_DETAIL.Where(m => levelid.Contains(m.LEVELID)).ToList();
|
||
if (detaillist.Count > 0)//特权有详细内容,才能够执行特权
|
||
{
|
||
List<BAS_RIGHT_LEVEL_DETAIL> deptdetail = detaillist.Where(m => m.TYPEID == 2).ToList();//部门
|
||
List<BAS_RIGHT_LEVEL_DETAIL> groupdetail = detaillist.Where(m => m.TYPEID == 1).ToList();//组
|
||
|
||
decimal[] setgroupid = groupdetail.Select(m => m.CID).ToArray();
|
||
List<decimal> setdeptid = deptdetail.Select(m => m.CID).ToList();
|
||
List<BAS_INNERGROUP> setgroup = db.BAS_INNERGROUP.OrderBy(m => m.CTIME).Where(m => setgroupid.Contains(m.GID) || setdeptid.Contains(m.SALEDEPTID.Value)).ToList();//查出来的所有组
|
||
|
||
//List<BAS_INNERGROUP> detgroup = db.BAS_INNERGROUP.Where(m => setgroupid.Contains(m.GID)).ToList();//设置的组
|
||
|
||
decimal?[] setgroupdeptid = setgroup.Select(m => m.SALEDEPTID).ToArray();
|
||
|
||
foreach (decimal? item in setgroupdeptid)
|
||
{
|
||
if (item.HasValue)
|
||
setdeptid.Add(item.Value);//加上其他设置的组别
|
||
}
|
||
List<BAS_SALESDEPARTMENT> setdept = db.BAS_SALESDEPARTMENT.OrderBy(m => m.CREATIONDATE).Where(m => setdeptid.Contains(m.SALEDEPTID)).ToList();//查出来的所有 部门
|
||
|
||
|
||
if (setdept == null)
|
||
return new List<object>() { new { id = 0, text = emptyMsg, saleDeptId = "" } };
|
||
List<object> deptobj = new List<object>();//不给saleDeptId
|
||
foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT sdpt in setdept)
|
||
{
|
||
List<object> groupobj = new List<object>();//不给saleDeptId
|
||
foreach (WX.CRM.Model.Entity.BAS_INNERGROUP group in setgroup.Where(m => m.SALEDEPTID == sdpt.SALEDEPTID).ToList())
|
||
{
|
||
groupobj.Add(new { id = group.GID, text = group.GNAME, saleDeptId = group.SALEDEPTID });
|
||
}
|
||
deptobj.Add(new { id = -sdpt.SALEDEPTID, text = sdpt.DEPTNAME, saleDeptId = "", children = groupobj });
|
||
}
|
||
|
||
return new List<object>() { new { id = -100, text = "所有部门", children = deptobj } };
|
||
|
||
}
|
||
}
|
||
}
|
||
if (innerDeptId != 0)
|
||
{
|
||
var dept = db.BAS_INNERDEPARTMENT.FirstOrDefault(m => m.DEPTID == innerDeptId);
|
||
emptyMsg = dept != null ? "--您不属于[" + dept.DEPTNAME + "]部--" : "--参数错误--";
|
||
}
|
||
if (queryType == 3 || queryType == 5)//查询单个用户
|
||
{
|
||
WX.CRM.Model.Entity.BAS_INNERGROUP group = null;
|
||
|
||
if (innerDeptId == 0)
|
||
group = (from a in db.BAS_INNERGROUP
|
||
join m in db.BAS_INNERUSERGROUP on a.GID equals m.GID.Value
|
||
where m.INNERUSERID == _userid
|
||
where a.ISHIDE == 0
|
||
select a).FirstOrDefault();
|
||
else//根据 部门来过滤数据
|
||
group = (from a in db.BAS_INNERGROUP
|
||
join m in db.BAS_INNERUSERGROUP on a.GID equals m.GID.Value
|
||
where m.INNERUSERID == _userid
|
||
where m.DEPTID == innerDeptId
|
||
where a.ISHIDE == 0
|
||
select a).FirstOrDefault();
|
||
if (group == null)
|
||
return new List<object>() { new { id = 0, text = emptyMsg, saleDeptId = "" } };
|
||
decimal deptId = group.SALEDEPTID.Value;
|
||
List<object> chidobj = new List<object>() { new { id = group.GID, text = group.GNAME, saleDeptId = "" } };//将ID禁用,不能获取组ID
|
||
return chidobj;
|
||
}
|
||
else if (queryType == 2 || queryType == 4)//查询单个或者多个销售组
|
||
{
|
||
List<WX.CRM.Model.Entity.BAS_INNERGROUP> groups = null;
|
||
if (innerDeptId == 0)
|
||
groups = (from a in db.BAS_INNERGROUP where _groupdid.Contains(a.GID) where a.ISHIDE == 0 select a).OrderBy(m => m.CTIME).ToList();
|
||
else//根据部门来过滤
|
||
groups = (from a in db.BAS_INNERGROUP where a.DEPTID == innerDeptId where _groupdid.Contains(a.GID) where a.ISHIDE == 0 select a).OrderBy(m => m.CTIME).ToList();
|
||
if (groups == null)
|
||
return new List<object>() { new { id = 0, text = emptyMsg, saleDeptId = "" } };
|
||
List<object> chidobj = new List<object>();//不给saleDeptId
|
||
foreach (WX.CRM.Model.Entity.BAS_INNERGROUP group in groups)
|
||
{
|
||
chidobj.Add(new { id = group.GID, text = group.GNAME, saleDeptId = "" });
|
||
}
|
||
if (_groupdid.Length > 1)
|
||
{
|
||
return new List<object>() { new { id = -1, text = "所有组", children = chidobj } };
|
||
}
|
||
return chidobj;
|
||
}
|
||
else if (queryType == 1)//查询整个销售部
|
||
{
|
||
List<object> childObj = new List<object>();
|
||
List<object> obj = new List<object>();
|
||
WX.CRM.Model.Entity.BAS_SALESDEPARTMENT salesDept = (from a in db.BAS_SALESDEPARTMENT where a.SALEDEPTID == _saledeptid select a).SingleOrDefault();
|
||
if (salesDept == null)
|
||
return new List<object>() { new { id = 0, text = emptyMsg, saleDeptId = "" } };
|
||
List<WX.CRM.Model.Entity.BAS_INNERGROUP> innerGroupList = null;
|
||
if (innerDeptId == 0)
|
||
innerGroupList = (from a in db.BAS_INNERGROUP where a.SALEDEPTID == _saledeptid where a.ISHIDE == 0 select a).OrderBy(m => m.CTIME).ToList();
|
||
else
|
||
innerGroupList = (from a in db.BAS_INNERGROUP where a.DEPTID == innerDeptId where a.SALEDEPTID == _saledeptid where a.ISHIDE == 0 select a).OrderBy(m => m.CTIME).ToList();
|
||
foreach (var model in innerGroupList)
|
||
{
|
||
childObj.Add(new { id = model.GID, text = model.GNAME, saleDeptId = model.SALEDEPTID });//给定saleDeptId
|
||
}
|
||
obj.Add(new { id = -salesDept.SALEDEPTID, text = salesDept.DEPTNAME, children = childObj });
|
||
return obj;
|
||
}
|
||
else if (queryType == 0)//查询全部
|
||
{
|
||
List<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> salesDeptList = db.BAS_SALESDEPARTMENT.OrderBy(m => m.CREATIONDATE).ToList();
|
||
List<WX.CRM.Model.Entity.BAS_INNERGROUP> innerGroupList = null;
|
||
if (innerDeptId == 0)
|
||
innerGroupList = db.BAS_INNERGROUP.Where(m => m.ISHIDE == 0).OrderBy(m => m.CTIME).ToList();
|
||
else
|
||
innerGroupList = db.BAS_INNERGROUP.Where(m => m.DEPTID == innerDeptId && m.ISHIDE == 0).OrderBy(m => m.CTIME).ToList();
|
||
int j = 0;
|
||
List<object> groupObj = new List<object>();
|
||
groupObj.Add(new { id = 0, text = "--请选择组别--" });
|
||
List<object> childObj = new List<object>();
|
||
foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT saleDpt in salesDeptList)
|
||
{
|
||
childObj = new List<object>();
|
||
foreach (var inGrp in innerGroupList.Where(m => m.SALEDEPTID == saleDpt.SALEDEPTID))
|
||
{
|
||
childObj.Add(new { id = inGrp.GID, text = inGrp.GNAME, attributes = inGrp.DEPTID, saleDeptId = inGrp.SALEDEPTID });
|
||
}
|
||
if (childObj.Count == 0)
|
||
groupObj.Add(new { id = -saleDpt.SALEDEPTID, text = saleDpt.DEPTNAME });
|
||
else
|
||
groupObj.Add(new { id = -saleDpt.SALEDEPTID, state = j == 0 ? "open" : "closed", text = saleDpt.DEPTNAME, children = childObj });
|
||
j++;
|
||
}
|
||
return groupObj;
|
||
}
|
||
else
|
||
return new object();
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
}
|