ComplianceServer/oldcode/BLL/Base/BAS_INNERGROUP_BL.cs

449 lines
22 KiB
C#
Raw Permalink 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 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
}
}