using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using System.Web.Mvc; using Abp.Application.Services.Dto; using Abp.Auditing; using Abp.Authorization; using Abp.Domain.Repositories; using Abp.Runtime.Caching; using IwbZero.AppServiceBase; using IwbZero.Auditing; using ShwasherSys.Authorization.Permissions; using ShwasherSys.CompanyInfo.Performance.Dto; using ShwasherSys.Lambda; namespace ShwasherSys.CompanyInfo.Performance { [AbpAuthorize] public class PerformanceAppService : IwbZeroAsyncCrudAppService, IPerformanceAppService { public PerformanceAppService( ICacheManager cacheManager, IRepository repository) : base(repository, "PerformanceNo") { CacheManager = cacheManager; } protected override bool KeyIsAuto { get; set; } = false; #region GetSelect [DisableAuditing] public override async Task> GetSelectList() { var list = await Repository.GetAllListAsync(); var sList = new List {new SelectListItem {Text = @"请选择...", Value = "", Selected = true}}; foreach (var l in list) { //sList.Add(new SelectListItem { Value = l.Id, Text = l. }); } return sList; } [DisableAuditing] public override async Task GetSelectStr() { var list = await Repository.GetAllListAsync(); string str = ""; foreach (var l in list) { //str += $""; } return str; } #endregion #region CURD // [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceCreate)] public override async Task Create(PerformanceCreateDto input) { await CreateEntity(input); } // [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceUpdate)] public override async Task Update(PerformanceUpdateDto input) { await UpdateEntity(input); } // [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceDelete)] public override Task Delete(EntityDto input) { return Repository.DeleteAsync(input.Id); } [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task> GetAll(IwbPagedRequestDto input) { var query = CreateFilteredQuery(input); var totalCount = await AsyncQueryableExecuter.CountAsync(query); query = ApplySorting(query, input); query = ApplyPaging(query, input); var entities = await AsyncQueryableExecuter.ToListAsync(query); var dtoList = new PagedResultDto(totalCount, entities.Select(a=>new PerformanceDto() { Id = a.Id, PerformanceNo = a.PerformanceNo, ProductOrderNo = a.ProductOrderNo, EmployeeId = a.EmployeeId, EmployeeNo = a.EmployeeInfo.No, EmployeeName = a.EmployeeInfo.Name, Performance = a.Performance??0, PerformanceUnit = a.PerformanceUnit, PerformanceDesc = a.PerformanceDesc, WorkType = a.WorkType, RelatedNo = a.RelatedNo, CreationTime =a.CreationTime }).ToList()); return dtoList; } #region GetEntity/Dto /// /// 查询实体Dto /// /// /// [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task GetDto(EntityDto input) { var entity = await GetEntity(input); return MapToEntityDto(entity); } /// /// 查询实体Dto /// /// /// [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task GetDtoById(int id) { var entity = await GetEntityById(id); return MapToEntityDto(entity); } /// /// 查询实体Dto(需指明自定义字段) /// /// /// [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task GetDtoByNo(string no) { var entity = await GetEntityByNo(no); return MapToEntityDto(entity); } /// /// 查询实体 /// /// /// [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task GetEntity(EntityDto input) { var entity = await GetEntityById(input.Id); return entity; } /// /// 查询实体 /// /// /// [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task GetEntityById(int id) { return await Repository.FirstOrDefaultAsync(a=>a.Id==id); } /// /// 查询实体(需指明自定义字段) /// /// /// [DisableAuditing] [AbpAuthorize(PermissionNames.PagesCompanyEmployeePerformanceQuery)] public override async Task GetEntityByNo(string no) { //CheckGetPermission(); if (string.IsNullOrEmpty(KeyFiledName)) { ThrowError("NoKeyFieldName"); } return await base.GetEntityByNo(no); } #endregion #region Hide /// /// 根据给定的创建 过滤查询. /// /// The input. protected override IQueryable CreateFilteredQuery(IwbPagedRequestDto input) { var query = Repository.GetAllIncluding(a=>a.EmployeeInfo); var pagedInput = input as IIwbPagedRequest; if (pagedInput == null) { return query; } if (!string.IsNullOrEmpty(pagedInput.KeyWords)) { object keyWords = pagedInput.KeyWords; LambdaObject obj = new LambdaObject() { FieldType = (LambdaFieldType)pagedInput.FieldType, FieldName = pagedInput.KeyField, FieldValue = keyWords, ExpType = (LambdaExpType)pagedInput.ExpType }; var exp = obj.GetExp(); query = exp != null ? query.Where(exp) : query; } if (pagedInput.SearchList != null && pagedInput.SearchList.Count > 0) { List objList = new List(); foreach (var o in pagedInput.SearchList) { if (string.IsNullOrEmpty(o.KeyWords)) continue; if (o.KeyField.ToLower() == "employeeno") { query = query.Where(a => a.EmployeeInfo.No.Contains(o.KeyWords)); continue; } if (o.KeyField.ToLower() == "employeename") { query = query.Where(a => a.EmployeeInfo.Name.Contains(o.KeyWords)); continue; } object keyWords = o.KeyWords; objList.Add(new LambdaObject { FieldType = (LambdaFieldType)o.FieldType, FieldName = o.KeyField, FieldValue = keyWords, ExpType = (LambdaExpType)o.ExpType }); } var exp = objList.GetExp(); query = exp != null ? query.Where(exp) : query; } return query; } //protected override IQueryable ApplySorting(IQueryable query, IwbPagedRequestDto input) //{ // return query.OrderBy(a => a.No); //} //protected override IQueryable ApplyPaging(IQueryable query, IwbPagedRequestDto input) //{ // if (input is IPagedResultRequest pagedInput) // { // return query.Skip(pagedInput.SkipCount).Take(pagedInput.MaxResultCount); // } // return query; //} #endregion #endregion [AuditLog("员工绩效查询")] public async Task PerformanceTotalQuery(PerformanceTotalQueryDto input) { DateTime startDate, endDate; if (input.Month == null) { startDate= new DateTime(input.Year,1,1); endDate = startDate.AddYears(1); } else { startDate= new DateTime(input.Year,input.Month??0,1); endDate = startDate.AddMonths(1); } var query = Repository.GetAll().Where(a => a.EmployeeId == input.EmployeeId && a.WorkType == input.WorkType && a.CreationTime >= startDate && a.CreationTime < endDate); var total =await query.SumAsync(a => a.Performance); return total + ""; } } }