From 7b9bd95e1eb3bd54191881049a170bd7a5ae03a0 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 14 Aug 2024 16:35:22 +0800 Subject: [PATCH] fix . --- .../Services/Implements/GainfoService.cs | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs index 57065f80..a4690c83 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs @@ -78,30 +78,43 @@ public class GainfoService : IGainfoService var today = DateTime.Today; - var query = _gainfoStore.Queryable(request.Status) - .WhereIF(!request.IsSearchAll && request.SearchType != GainfoSearchEnumType.BusinessTrip && request.DepartmentSelections?.Any() == true, where) - .WhereIF(request.IsSearchAll && request.DepartmentSelections?.Any() == true, where) - .LeftJoin((gainfo, department) => gainfo.DepartmentNo == department.No) - .LeftJoin((gainfo, department, type) => type.Code == SqlFunc.ToString(gainfo.CardType) && type.Type == "timeperiod") - .WhereIF(request.IsSearchAll && request.DepartmentSelections?.Any() == false, gainfo => factories.Contains(gainfo.Factory)) - .WhereIF(request.IsSearchAll, gainfo => - SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code && factories.Contains(p.Destination) && SqlFunc.DateIsSame(p.BeginDate, today)).Any()) - .WhereIF(!request.IsSearchAll && request.SearchType != GainfoSearchEnumType.BusinessTrip && request.DepartmentSelections?.Any() == false, gainfo => factories.Contains(gainfo.Factory)) - .WhereIF(!request.IsSearchAll && request.SearchType == GainfoSearchEnumType.Internal, gainfo => SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code).NotAny()) - .WhereIF(!request.IsSearchAll && request.SearchType == GainfoSearchEnumType.Outsource, gainfo => SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code).Any()) - .WhereIF(!request.IsSearchAll && request.SearchType == GainfoSearchEnumType.BusinessTrip, gainfo => - SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code && factories.Contains(p.Destination) && SqlFunc.DateIsSame(p.BeginDate, today)).Any()) - .WhereIF(request.Search.IsPresent(), gainfo => - gainfo.Name.Contains(request.Search) - || gainfo.Code == request.Search - || gainfo.IdNo == request.Search) - .Select((gainfo, department, type) => new GainfoPageResponse - { - DepartmentName = department.Name, - CardType = gainfo.CardType, - CardTypeName = type.Display - }, true); - var page = await query.ToPageListAsync(request); + ISugarQueryable queryable = request.IsSearchAll + ? _gainfoStore.Queryable(request.Status) + .WhereIF(request.DepartmentSelections?.Any() == true, where) + .WhereIF(request.DepartmentSelections?.Any() == false, gainfo => factories.Contains(gainfo.Factory)) + .LeftJoin((gainfo, department) => gainfo.DepartmentNo == department.No) + .LeftJoin((gainfo, department, type) => type.Code == SqlFunc.ToString(gainfo.CardType) && type.Type == "timeperiod") + .WhereIF(request.Search.IsPresent(), gainfo => + gainfo.Name.Contains(request.Search) + || gainfo.Code == request.Search + || gainfo.IdNo == request.Search) + .Select((gainfo, department, type) => new GainfoPageResponse + { + DepartmentName = department.Name, + CardType = gainfo.CardType, + CardTypeName = type.Display + }, true) + : _gainfoStore.Queryable(request.Status) + .WhereIF(request.SearchType != GainfoSearchEnumType.BusinessTrip && request.DepartmentSelections?.Any() == true, where) + .LeftJoin((gainfo, department) => gainfo.DepartmentNo == department.No) + .LeftJoin((gainfo, department, type) => type.Code == SqlFunc.ToString(gainfo.CardType) && type.Type == "timeperiod") + .WhereIF(request.SearchType != GainfoSearchEnumType.BusinessTrip && request.DepartmentSelections?.Any() == false, gainfo => factories.Contains(gainfo.Factory)) + .WhereIF(request.SearchType == GainfoSearchEnumType.Internal, gainfo => SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code).NotAny()) + .WhereIF(request.SearchType == GainfoSearchEnumType.Outsource, gainfo => SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code).Any() && today >= gainfo.EntryDate && today <= gainfo.ResignationDate) + .WhereIF(request.SearchType == GainfoSearchEnumType.BusinessTrip, gainfo => + SqlFunc.Subqueryable().Where(p => p.Code == gainfo.Code && factories.Contains(p.Destination) && SqlFunc.DateIsSame(p.BeginDate, today)).Any()) + .WhereIF(request.Search.IsPresent(), gainfo => + gainfo.Name.Contains(request.Search) + || gainfo.Code == request.Search + || gainfo.IdNo == request.Search) + .Select((gainfo, department, type) => new GainfoPageResponse + { + DepartmentName = department.Name, + CardType = gainfo.CardType, + CardTypeName = type.Display + }, true); + + var page = await queryable.ToPageListAsync(request); //外包人员部门号处理 if (request.SearchType == GainfoSearchEnumType.Outsource)