diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoUpdateService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoUpdateService.cs index 820d8ed9..69c9db9e 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoUpdateService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoUpdateService.cs @@ -263,26 +263,26 @@ public class GainfoUpdateService : IGainfoUpdateService { var change = string.Empty; - if (gainfo.Factory != factory || gainfo.Workplace != workplace || gainfo.DepartmentNo != item.appellation) + var hasFactoryChange = gainfo.Factory != factory || gainfo.Workplace != workplace; + var hasDepartmentChange = gainfo.DepartmentNo != item.appellation; + + + if (hasFactoryChange) { - if (gainfo.Factory != factory) - { - change = $"{gainfo.Factory}->{factory}"; - } - - if (gainfo.DepartmentNo != item.appellation) - { - change += $"{gainfo.DepartmentNo}->{item.appellation}"; - } - - if (change.IsPresent()) - { - await _identityUserSyncService.SyncAccountAsync(gainfo.Code, gainfo.Name, gainfo.IdNo, factory); - await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, null, $"异动生成({change})"); - } + await _identityUserSyncService.SyncAccountAsync(gainfo.Code, gainfo.Name, gainfo.IdNo, factory); + change = $"{gainfo.Factory}->{factory}"; + } + + if (hasDepartmentChange) + { + change += $"{gainfo.DepartmentNo}->{item.appellation}"; + } + + if (change.IsPresent()) + { + await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Delete, null, $"异动生成({change})"); } - var hasAllChange = gainfo.Factory != factory || gainfo.Workplace != workplace; await _dbContext.Updateable().SetColumns(g => new GainfoEntity { @@ -304,43 +304,48 @@ public class GainfoUpdateService : IGainfoUpdateService ModifiedTime = DateTime.Now }).Where(x => x.Code == item.ename).ExecuteCommandAsync(); - if (hasAllChange) + //有变更就重新下发 + if (change.IsPresent()) { await _gainfoPermissionService.ResetPermissionsAsync(gainfo.No, DeviceTaskEnumType.Add, null, $"异动生成({change})"); - - var workGridUser = await _dbContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync(); - if (workGridUser != null) + + //只有厂区变更才需要处理工作网格 + if (hasFactoryChange) { - try + var workGridUser = await _dbContext.Queryable().Where(x => x.UserCode == gainfo.Code).SingleAsync(); + if (workGridUser != null) { - var resignationDate = DateOnly.FromDateTime(gainfo.ModifiedTime); - - var workGridSchedules = await _dbContext.Queryable().Where(x => x.UserCode == gainfo.Code) - .Where(x => x.Date >= resignationDate) - .ToListAsync(); - - if (workGridSchedules.Any()) + try { - var dates = workGridSchedules.Select(x => $"{x.Date.ToString("yyyy年-MM月-dd日")}的{x.PeriodType.GetDescription()}").Join(","); - var workGrid = await _dbContext.Queryable().Where(x => x.Code == workGridUser.WorkGridCode).Select(x => new - { - x.LeaderUserCode, x.Name - }).SingleAsync(); - var content = $"{workGrid.Name}的网格长,你好,检测到你网格中 {gainfo.Name}({gainfo.Code}),因发生离职或者异动,现已经删除该员工{dates}的排班信息,请前往系统处理!"; + var resignationDate = DateOnly.FromDateTime(gainfo.ModifiedTime); - await _dingTalkApi.SendWorkMessageAsync(new JinkoSendWorkMessageRequest + var workGridSchedules = await _dbContext.Queryable().Where(x => x.UserCode == gainfo.Code) + .Where(x => x.Date >= resignationDate) + .ToListAsync(); + + if (workGridSchedules.Any()) { - Content = content, - WorkCodes = new List { workGrid.LeaderUserCode } - }); + var dates = workGridSchedules.Select(x => $"{x.Date.ToString("yyyy年-MM月-dd日")}的{x.PeriodType.GetDescription()}").Join(","); + var workGrid = await _dbContext.Queryable().Where(x => x.Code == workGridUser.WorkGridCode).Select(x => new + { + x.LeaderUserCode, x.Name + }).SingleAsync(); + var content = $"{workGrid.Name}的网格长,你好,检测到你网格中 {gainfo.Name}({gainfo.Code}),因发生离职或者异动,现已经删除该员工{dates}的排班信息,请前往系统处理!"; + + await _dingTalkApi.SendWorkMessageAsync(new JinkoSendWorkMessageRequest + { + Content = content, + WorkCodes = new List { workGrid.LeaderUserCode } + }); + } + + await _dbContext.DeleteAsync(workGridUser); + await _dbContext.DeleteAsync(workGridSchedules); + } + catch (Exception e) + { + _logger.LogError(e, "网格异动处理异常:{error}", e.Message); } - - await _dbContext.DeleteAsync(workGridUser); - await _dbContext.DeleteAsync(workGridSchedules); - } - catch (Exception e) - { - _logger.LogError(e, "网格异动处理异常:{error}", e.Message); } } }