///// <summary> ///// 产品绑定bu列表 ///// </summary> ///// <param name="rowBuPro">分页、搜索</param> ///// <param name="workUser"></param> ///// <returns></returns> //public ReturnValueModel BuProList(RowNumModel<BuProDeptRelViewModel> rowBuPro, WorkUser workUser) //{ // ReturnValueModel rvm = new ReturnValueModel(); // var list = from a in _rep.Table<BuProDeptRel>() // join b in _rep.Table<ProductInfo>() on a.ProId equals b.Id // join c in _rep.Table<DepartmentInfo>() on a.DeptId equals c.Id // group new { a, c } by new { b } into g // select new BuProDeptRelViewModel // { // BuNameList = g.Select(s => s.a.BuName).Distinct(), // DeptNameList = g.Select(s => s.c.DepartmentName).Distinct(), // ProductName = g.Key.b.ProductName, // ProId = g.Key.b.Id // }; // if (!string.IsNullOrEmpty(rowBuPro.SearchParams.SearchDept)) // { // list = list.Where(s => s.DeptNameList.Contains(rowBuPro.SearchParams.SearchDept)); // } // if (!string.IsNullOrEmpty(rowBuPro.SearchParams.SearchBU)) // { // list = list.Where(s => s.BuNameList.Contains(rowBuPro.SearchParams.SearchBU)); // } // if (!string.IsNullOrEmpty(rowBuPro.SearchParams.ProductName)) // { // list = list.Where(s => s.ProductName.Contains(rowBuPro.SearchParams.ProductName)); // } // var total = list.Count(); // var rows = list.OrderByDescending(o => o.ProId).ToPaginationList(rowBuPro.PageIndex, rowBuPro.PageSize) // .ToList().Select(s => new BuProDeptRelViewModel // { // ProductName = s.ProductName, // ProId = s.ProId, // DeptNames = s.DeptNameList.Any() ? s.DeptNameList.Aggregate((v, a) => v + "," + a) : "", // BuNames = s.BuNameList.Any() ? s.BuNameList.Aggregate((v, a) => v + "," + a) : "" // }); // rvm.Success = true; // rvm.Msg = ""; // rvm.Result = new // { // total = total, // rows = rows // }; // return rvm; //} ///// <summary> ///// 添加关系 ///// </summary> ///// <param name="buProDeptModel">关系信息</param> ///// <param name="workUser"></param> ///// <returns></returns> //public ReturnValueModel AddOrUpdateBuProDeptRel(BuProDeptModel buProDeptModel, WorkUser workUser) //{ // ReturnValueModel rvm = new ReturnValueModel(); // var rels = _rep.Where<BuProDeptRel>(s => // s.BuName == buProDeptModel.BuNameOld && s.ProId == buProDeptModel.ProIdOld); // if (buProDeptModel.DeptIds.Any()) // { // if (rels.Any()) // { // rels.Delete(); // _rep.SaveChanges(); // } // foreach (var item in buProDeptModel.DeptIds) // { // BuProDeptRel bpdr = new BuProDeptRel // { // Id = Guid.NewGuid().ToString(), // ProId = buProDeptModel.ProId, // BuName = buProDeptModel.BuName, // DeptId = item, // CreateTime = DateTime.Now, // CreateUser = workUser.User.Id // }; // _rep.Insert(bpdr); // } // _rep.SaveChanges(); // rvm.Success = true; // rvm.Msg = ""; // rvm.Result = new // { // }; // } // return rvm; //} ///// <summary> ///// 关系详情 ///// </summary> ///// <param name="buProDeptModel">传入BuName和ProId</param> ///// <param name="workUser"></param> ///// <returns></returns> //public ReturnValueModel BuProDeptDetail(BuProDeptModel buProDeptModel, WorkUser workUser) //{ // ReturnValueModel rvm = new ReturnValueModel(); // var detail = (from a in _rep.Table<BuProDeptRel>() // where a.BuName == buProDeptModel.BuName && a.ProId == buProDeptModel.ProId // group a.DeptId by new { a.BuName, a.ProId } // into g // select new BuProDeptModel // { // ProId = g.Key.ProId, // BuName = g.Key.BuName, // DeptIds = g.ToList() // }).FirstOrDefault(); // rvm.Success = true; // rvm.Msg = ""; // rvm.Result = new // { // detail = detail // }; // return rvm; //} /// <summary> /// 获取产品相关的BU和科室列表 /// </summary> /// <param name="workUser"></param> /// <returns></returns> public ReturnValueModel BuProDeptRelMap(ProductBuDeptSelectionViewModel buProDeptModel, WorkUser workUser) { List <string> buNameList = null; List <string> proIdList = null; List <string> deptIdList = null; if (buProDeptModel != null) { if (buProDeptModel.BuNameList != null) { buNameList = (from a in buProDeptModel.BuNameList where !string.IsNullOrEmpty(a) select a).ToList(); } if (buProDeptModel.Products != null) { proIdList = (from a in buProDeptModel.Products where a != null && !string.IsNullOrEmpty(a.ProId) select a.ProId).ToList(); } if (buProDeptModel.Departments != null) { deptIdList = (from a in buProDeptModel.Departments where a != null && !string.IsNullOrEmpty(a.DeptId) select a.DeptId).ToList(); } } var result = new ProductBuDeptOtherDeptSelectionViewModel(); var list = from a in _rep.Where <ProductInfo>(s => s.IsDeleted != 1) join b in _rep.Where <BuProDeptRel>(s => s.IsDeleted != 1) on a.Id equals b.ProId join c in _rep.Where <BuInfo>(s => s.IsDeleted != 1) on b.BuName equals c.BuName join d in _rep.Where <DepartmentInfo>(s => s.IsDeleted != 1) on b.DeptId equals d.Id select new { Product = a, BU = c, Department = d }; if (!string.IsNullOrEmpty(workUser?.Organization?.BuName)) { //BU的人只能操作自己的BU string buName = workUser.Organization.BuName; buNameList = new List <string>() { buName }; list = list.Where(s => s.BU != null && s.BU.BuName == buName); } else { if (buNameList != null && buNameList.Count > 0) { list = list.Where(s => s.BU != null && buNameList.Contains(s.BU.BuName)); } } if (proIdList != null && proIdList.Count > 0) { list = list.Where(s => s.Product != null && proIdList.Contains(s.Product.Id)); } if (deptIdList != null && deptIdList.Count > 0) { list = list.Where(s => s.Department != null && deptIdList.Contains(s.Department.Id)); } result.BuNameList = from a in list where a.BU != null group a by a.BU into g1 select g1.Key.BuName; if (buNameList != null && buNameList.Count > 0) { result.Products = from a in list where a.Product != null group a by a.Product into g1 select new ProductSelectionViewModel { ProId = g1.Key.Id, ProName = g1.Key.ProductName }; if (proIdList != null && proIdList.Count > 0) { result.Departments = from a in list where a.Department != null && a.Department.DepartmentType == 1 //只要普通科室,去掉其它科室 group a by a.Department into g1 select new DepartmentSelectionViewModel { DeptId = g1.Key.Id, DeptName = g1.Key.DepartmentName, DeptType = g1.Key.DepartmentType }; result.OtherDepartments = from a in _rep.Where <DepartmentInfo>(s => s.IsDeleted != 1) where !result.Departments.Any(s => s.DeptId == a.Id) select new DepartmentSelectionViewModel { DeptId = a.Id, DeptName = a.DepartmentName, DeptType = a.DepartmentType }; } } ReturnValueModel rvm = new ReturnValueModel(); rvm.Success = true; rvm.Msg = ""; rvm.Result = result; return(rvm); }
public IHttpActionResult BuProDeptRelMap(ProductBuDeptSelectionViewModel buProDeptModel) { var ret = _productService.BuProDeptRelMap(buProDeptModel, WorkUser); return(Ok(ret)); }