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 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 GetList() { using (var db = new WX.CRM.Model.Entity.crmContext()) { return db.BAS_INNERGROUP.ToList(); } } public List 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(); 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(ref queryData, ref pager);//分页 return queryData.ToList(); //return db.Entry(BAS_INNERGROUP).Reference(c => c) } } public List 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(); 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 companyList = db.BAS_COMPANY.ToList(); List salesDeptList = db.BAS_SALESDEPARTMENT.ToList(); List innerGroupList = db.BAS_INNERGROUP.Where(m => m.ISHIDE == 0).ToList(); List obj = new List(); List childObj = null; List groupObj = null; int i = 0; int j = 0; foreach (WX.CRM.Model.Entity.BAS_COMPANY model in companyList) { childObj = new List(); j = 0; foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT saleDpt in salesDeptList.Where(m => m.COMPANYID == model.COMPANYID)) { groupObj = new List(); 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的销售组 数据源 /// /// 获取UserComBox的销售组 数据源 /// /// 销售部ID /// 销售组ID /// inneruserId的类型 (iseId=0:inneruserId为用户ID;iseId=1:inneruserId为用户工号) /// 销售组ID /// 部门ID,如果部门ID=0 不过滤 /// 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 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 detaillist = db.BAS_RIGHT_LEVEL_DETAIL.Where(m => levelid.Contains(m.LEVELID)).ToList(); if (detaillist.Count > 0)//特权有详细内容,才能够执行特权 { List deptdetail = detaillist.Where(m => m.TYPEID == 2).ToList();//部门 List groupdetail = detaillist.Where(m => m.TYPEID == 1).ToList();//组 decimal[] setgroupid = groupdetail.Select(m => m.CID).ToArray(); List setdeptid = deptdetail.Select(m => m.CID).ToList(); List setgroup = db.BAS_INNERGROUP.OrderBy(m => m.CTIME).Where(m => setgroupid.Contains(m.GID) || setdeptid.Contains(m.SALEDEPTID.Value)).ToList();//查出来的所有组 //List 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 setdept = db.BAS_SALESDEPARTMENT.OrderBy(m => m.CREATIONDATE).Where(m => setdeptid.Contains(m.SALEDEPTID)).ToList();//查出来的所有 部门 if (setdept == null) return new List() { new { id = 0, text = emptyMsg, saleDeptId = "" } }; List deptobj = new List();//不给saleDeptId foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT sdpt in setdept) { List groupobj = new List();//不给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() { 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() { new { id = 0, text = emptyMsg, saleDeptId = "" } }; decimal deptId = group.SALEDEPTID.Value; List chidobj = new List() { new { id = group.GID, text = group.GNAME, saleDeptId = "" } };//将ID禁用,不能获取组ID return chidobj; } else if (queryType == 2 || queryType == 4)//查询单个或者多个销售组 { List 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() { new { id = 0, text = emptyMsg, saleDeptId = "" } }; List chidobj = new List();//不给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() { new { id = -1, text = "所有组", children = chidobj } }; } return chidobj; } else if (queryType == 1)//查询整个销售部 { List childObj = new List(); List obj = new List(); 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() { new { id = 0, text = emptyMsg, saleDeptId = "" } }; List 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 salesDeptList = db.BAS_SALESDEPARTMENT.OrderBy(m => m.CREATIONDATE).ToList(); List 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 groupObj = new List(); groupObj.Add(new { id = 0, text = "--请选择组别--" }); List childObj = new List(); foreach (WX.CRM.Model.Entity.BAS_SALESDEPARTMENT saleDpt in salesDeptList) { childObj = new List(); 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 } }