From f8b68e7734100eb4628ae42de7ac066d8f8b3699 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 4 Jun 2025 10:13:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E4=B8=8D=E4=B8=8B=E5=8F=91=E6=96=B0=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/GainfoUpdateService.cs | 97 ++++++++++--------- 1 file changed, 51 insertions(+), 46 deletions(-) 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); } } }