Example #1
0
            public CurPageViewModel()
            {
                ServerSettings  = AppSet.ServerSetting;
                SearchCondition = new MemberSalarySearch()
                {
                    UserId      = AppSet.LoginUser.Id,
                    PayUnitName = AppSet.LoginUser.UnitName,
                    FillEmpty   = false
                };
                PayYearMonth = DateTime.Now;
                SalaryJArray = new JArray();

                NamesEnCn.Add("Id", "编号");
                NamesEnCn.Add("PayUnitName", "发放单位");
                NamesEnCn.Add("PayYear", "年度");
                NamesEnCn.Add("PayMonth", "月份");
                NamesEnCn.Add("TableType", "发放类型");
                NamesEnCn.Add("MemberId", "身份证号");
                NamesEnCn.Add("MemberName", "姓名");
                NamesEnCn.Add("Remark", "备注");
                NamesEnCn.Add("UpDateTime", "更新时间");
                NamesEnCn.Add("UserId", "操作人员");

                NoPrintItemNames = new string[] { "Id", "PayUnitName", "PayYear", "PayMonth", "TableType", "MemberId", "UpDateTime", "UserId" };
            }
Example #2
0
        /// <summary>
        /// 读取指定条件的记录。上一方法调用
        /// </summary>
        /// <param name="SearchCondition"></param>
        /// <returns></returns>
        private async Task <List <MemberSalaryEntity> > ReadSalarys(MemberSalarySearch SearchCondition)
        {
            IQueryable <MemberSalaryEntity> Items = _GhDbContext.dsMemberSalary.Include(xx => xx.Member).OrderBy(e => e.PayYear).ThenBy(e => e.PayMonth).AsNoTracking() as IQueryable <MemberSalaryEntity>;

            if (!string.IsNullOrWhiteSpace(SearchCondition.PayUnitName))
            {
                Items = Items.Where(e => e.PayUnitName.Equals(SearchCondition.PayUnitName, StringComparison.Ordinal));//查询发放单位。
            }
            //年度只能查询指定年度信息。
            Items = Items.Where(e => e.PayYear == SearchCondition.PayYear);

            if (SearchCondition.PayMonth > 0)
            {
                Items = Items.Where(e => e.PayMonth == SearchCondition.PayMonth);
            }
            if (!string.IsNullOrWhiteSpace(SearchCondition.TableType))
            {
                Items = Items.Where(e => e.TableType.Equals(SearchCondition.TableType, StringComparison.Ordinal));
            }

            if (!string.IsNullOrWhiteSpace(SearchCondition.MemberType))
            {
                Items = Items.Where(e => e.Member.MemberType.Equals(SearchCondition.MemberType, StringComparison.Ordinal));
            }

            if (!string.IsNullOrWhiteSpace(SearchCondition.Id))
            {
                Items = Items.Where(e => e.Id.Equals(SearchCondition.Id, StringComparison.Ordinal));//对两个字符串进行byte级别的比较,性能好、速度快。
            }
            if (!string.IsNullOrWhiteSpace(SearchCondition.MemberId))
            {
                Items = Items.Where(e => e.MemberId.Equals(SearchCondition.MemberId, StringComparison.Ordinal));//查询职工身份证号。
            }
            if (!string.IsNullOrWhiteSpace(SearchCondition.Remark))
            {
                Items = Items.Where(e => e.Remark.Contains(SearchCondition.Remark, StringComparison.Ordinal));
            }

            List <MemberSalaryEntity> SalaryList = await Items.OrderBy(x => x.Member.OrderIndex).ToListAsync().ConfigureAwait(false);

            return(SalaryList);
        }
Example #3
0
        /// <summary>
        /// 根据条件查询计划,返回查询的实体列表
        /// </summary>
        /// <param name="mSearchMember">员工查询类对象</param>
        /// <returns></returns>
        public async Task <IEnumerable <MemberSalaryDto> > GetEntitiesAsync(MemberSalarySearch SearchCondition)
        {
            if (SearchCondition != null && !string.IsNullOrWhiteSpace(SearchCondition.UserId))
            {
                int SearchYear  = SearchCondition.PayYear;
                int SearchMonth = SearchCondition.PayMonth;
                List <MemberSalaryEntity> SalaryList = await ReadSalarys(SearchCondition).ConfigureAwait(false);

                if (SalaryList == null || SalaryList.Count == 0)
                {
                    //如果未查到指定月份的数据,且要求填充空数据,则尝试读取上一个月的数据数据
                    if (SearchCondition.FillEmpty)
                    {
                        SearchCondition.PayYear  = SearchCondition.PayMonth == 1 ? SearchCondition.PayYear - 1 : SearchCondition.PayYear;
                        SearchCondition.PayMonth = SearchCondition.PayMonth > 1 ? SearchCondition.PayMonth - 1 : 12;

                        SalaryList = await ReadSalarys(SearchCondition).ConfigureAwait(false);

                        if (SalaryList != null && SalaryList.Count > 0)
                        {
                            //查询到上一个月的数据
                            foreach (MemberSalaryEntity item in SalaryList)
                            {
                                item.Id = null;
                            }
                        }
                    }
                    else
                    {
                        //不要求填充空数据
                        return(new List <MemberSalaryDto>());
                    }
                }

                //查询到了指定月份或指定月份上一个月的数据。
                if (SalaryList != null && SalaryList.Count > 0)
                {
                    //返回查到的数据
                    List <MemberSalaryDto> SearchResultList = SalaryList.Select(x => new MemberSalaryDto
                    {
                        Id          = x.Id,
                        MemberId    = x.Member.Id,
                        MemberName  = x.Member.Name,
                        PayMonth    = SearchMonth > 0 && SearchMonth != SearchCondition.PayMonth ? SearchMonth : x.PayMonth,
                        PayYear     = SearchYear > 0 && SearchYear != SearchCondition.PayYear ? SearchYear : x.PayYear,
                        PayUnitName = SearchCondition.PayUnitName,
                        TableType   = SearchCondition.TableType,
                        SalaryItems = JsonConvert.DeserializeObject <List <SalaryItem> >(x.NameAndAmount),
                        UserId      = x.UserId,
                        Remark      = x.Remark
                    }).ToList();
                    return(SearchResultList);
                }

                //如果仍未查到(包括上一个月数据也没有),则填充空内容
                List <MemberSalaryDto> FillResultList = await _GhDbContext.dsMembers.AsNoTracking().OrderBy(x => x.OrderIndex)
                                                        .Where(x => x.MemberType.Equals(SearchCondition.MemberType, StringComparison.Ordinal) && x.UnitName.Equals(SearchCondition.PayUnitName, StringComparison.Ordinal))
                                                        .Select(x => new MemberSalaryDto
                {
                    MemberId    = x.Id,
                    MemberName  = x.Name,
                    PayMonth    = SearchMonth,
                    PayYear     = SearchYear,
                    PayUnitName = SearchCondition.PayUnitName,
                    TableType   = SearchCondition.TableType,
                    SalaryItems = new List <SalaryItem>()
                }).ToListAsync().ConfigureAwait(false);

                List <MemberPayItemEntity> PayItemList = await _GhDbContext.dsMemberPayItem.AsNoTracking().OrderBy(x => x.OrderIndex)
                                                         .Where(x => x.MemberTypes.Contains(SearchCondition.MemberType, StringComparison.Ordinal) &&
                                                                x.InTableType.Equals(SearchCondition.TableType, StringComparison.Ordinal)).ToListAsync().ConfigureAwait(false);

                List <SalaryItem> salaryItems = new List <SalaryItem>();
                List <string>     ItemNames   = PayItemList.Select(x => x.Name).ToList();
                for (int i = 0; i < ItemNames.Count; i++)
                {
                    salaryItems.Add(new SalaryItem()
                    {
                        Name   = ItemNames[i],
                        Amount = 0f
                    });
                }

                foreach (MemberSalaryDto item in FillResultList)
                {
                    item.SalaryItems.AddRange(salaryItems);
                }
                return(FillResultList);
            }
            return(new List <MemberSalaryDto>());
        }
 public async Task <IEnumerable <MemberSalaryDto> > GetAsync([FromQuery] MemberSalarySearch SearchCondition)
 {
     return(await _PayRepository.GetEntitiesAsync(SearchCondition).ConfigureAwait(false));
 }