Exemplo n.º 1
0
        ///// <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);
        }
Exemplo n.º 2
0
        public IHttpActionResult BuProDeptRelMap(ProductBuDeptSelectionViewModel buProDeptModel)
        {
            var ret = _productService.BuProDeptRelMap(buProDeptModel, WorkUser);

            return(Ok(ret));
        }