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" }; }
/// <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); }
/// <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)); }