From b9cbf1f99ab52b972352562d8e01e0766263b4dc Mon Sep 17 00:00:00 2001 From: liguoyang Date: Sat, 7 Dec 2024 09:56:06 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=88=A4=E6=96=AD=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=8F=B7=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=E5=92=8C=E7=A7=BB=E9=99=A4=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/SapBusinessTripService.cs | 119 +++++++++--------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs index 8c0eabec..f55262fc 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/SapBusinessTripService.cs @@ -77,80 +77,85 @@ public class SapBusinessTripService : ISapBusinessTripService var deviceCodes = await _dbContext.Queryable().Where(x => x.GroupCode == tripGroup.Code).Select(x => x.DeviceCode).ToListAsync(); - var userCodes = tripInfos.Select(x => x.Code).Distinct().ToList(); - var gainfos = await _dbContext.Queryable().Where(x => userCodes.Contains(x.Code)).Select(x => new { x.No, x.Code }).ToListAsync(); - - foreach (var gainfo in gainfos) + if (deviceCodes.Any()) { - try + var userCodes = tripInfos.Select(x => x.Code).Distinct().ToList(); + var gainfos = await _dbContext.Queryable().Where(x => userCodes.Contains(x.Code)).Select(x => new { x.No, x.Code }).ToListAsync(); + + foreach (var gainfo in gainfos) { - var myTripInfos = tripInfos.Where(x => x.Code == gainfo.Code).ToList(); - - var yesterdayTripInfo = myTripInfos.FirstOrDefault(x => x.BeginDate == yesterday && x.EndDate == yesterday); //昨天出差数据 - var todayTripInfo = myTripInfos.FirstOrDefault(x => x.BeginDate == today && x.EndDate == today); //今天出差数据 - - //都为空不处理 - if (yesterdayTripInfo == null && todayTripInfo == null) continue; - - //都不为空则更新数据状态 - if (yesterdayTripInfo != null && todayTripInfo != null) + try { - todayTripInfo.Status = BusinessTripStatusEnumType.Generated; - await _dbContext.UpdateAsync(todayTripInfo); + var myTripInfos = tripInfos.Where(x => x.Code == gainfo.Code).ToList(); - //下发 - } + var yesterdayTripInfo = myTripInfos.FirstOrDefault(x => x.BeginDate == yesterday && x.EndDate == yesterday); //昨天出差数据 + var todayTripInfo = myTripInfos.FirstOrDefault(x => x.BeginDate == today && x.EndDate == today); //今天出差数据 - if (yesterdayTripInfo != null) - { - //todayTripInfo == null - yesterdayTripInfo.Status = BusinessTripStatusEnumType.Deleted; - await _dbContext.Updateable() - .SetColumns(x => x.IsDeleted == true) - .Where(x => x.AssignType == AssignTypeEnumType.User) - .Where(x => x.AssignValue == gainfo.No) - .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) - .Where(x => x.UniqueValue == tripGroup.Code) - .Where(x => x.Type == tripGroup.Type) - .Where(x => x.TenantId == factory) - .ExecuteCommandAsync(); + //都为空不处理 + if (yesterdayTripInfo == null && todayTripInfo == null) continue; - await _dbContext.UpdateAsync(yesterdayTripInfo); - await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes); - } + //都不为空则更新数据状态 + if (yesterdayTripInfo != null && todayTripInfo != null) + { + todayTripInfo.Status = BusinessTripStatusEnumType.Generated; + await _dbContext.UpdateAsync(todayTripInfo); - if (yesterdayTripInfo == null) - { - //todayTripInfo != null - if (!await _dbContext.Queryable() + //下发 + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, null); + continue; + } + + if (yesterdayTripInfo != null) + { + //todayTripInfo == null + yesterdayTripInfo.Status = BusinessTripStatusEnumType.Deleted; + await _dbContext.Updateable() + .SetColumns(x => x.IsDeleted == true) .Where(x => x.AssignType == AssignTypeEnumType.User) .Where(x => x.AssignValue == gainfo.No) .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) .Where(x => x.UniqueValue == tripGroup.Code) .Where(x => x.Type == tripGroup.Type) .Where(x => x.TenantId == factory) - .AnyAsync()) - { - await _dbContext.InsertAsync(new DevicePermissionEntity - { - AssignType = AssignTypeEnumType.User, - AssignValue = gainfo.No, - UniqueType = DeviceAssignmentTypeEnumType.Group, - UniqueValue = tripGroup.Code, - Type = tripGroup.Type, - TenantId = factory - }); + .ExecuteCommandAsync(); + + await _dbContext.UpdateAsync(yesterdayTripInfo); + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, deviceCodes); } - todayTripInfo.Status = BusinessTripStatusEnumType.Generated; - await _dbContext.UpdateAsync(todayTripInfo); + if (yesterdayTripInfo == null) + { + //todayTripInfo != null + if (!await _dbContext.Queryable() + .Where(x => x.AssignType == AssignTypeEnumType.User) + .Where(x => x.AssignValue == gainfo.No) + .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) + .Where(x => x.UniqueValue == tripGroup.Code) + .Where(x => x.Type == tripGroup.Type) + .Where(x => x.TenantId == factory) + .AnyAsync()) + { + await _dbContext.InsertAsync(new DevicePermissionEntity + { + AssignType = AssignTypeEnumType.User, + AssignValue = gainfo.No, + UniqueType = DeviceAssignmentTypeEnumType.Group, + UniqueValue = tripGroup.Code, + Type = tripGroup.Type, + TenantId = factory + }); + } - await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, null); + todayTripInfo.Status = BusinessTripStatusEnumType.Generated; + await _dbContext.UpdateAsync(todayTripInfo); + + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, null); + } + } + catch (Exception e) + { + _logger.LogError(e, "出差自动下发任务失败:{message}", e.Message); } - } - catch (Exception e) - { - _logger.LogError(e, "出差自动下发任务失败:{message}", e.Message); } } }