From c2d3a2f0121ba2201e06066b4c07b412b6abb545 Mon Sep 17 00:00:00 2001 From: zhaozhenjing Date: Mon, 15 Sep 2025 17:14:30 +0800 Subject: [PATCH] =?UTF-8?q?[MODIFY]=E5=8D=95=E4=BD=8D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=201=E3=80=81=E5=88=A0=E9=99=A4=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=99=90=E5=88=B6=EF=BC=8C=E8=AF=A5=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E5=92=8C=E5=AD=90=E5=8D=95=E4=BD=8D=E4=B8=8B=E6=9C=89=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=97=B6=EF=BC=8C=E6=97=A0=E6=B3=95=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=202=E3=80=81=E5=A2=9E=E5=8A=A0=E9=99=90?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E7=BC=96=E8=BE=91=E7=95=8C=E9=9D=A2=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E4=BF=AE=E6=94=B9=E7=88=B6=E7=BA=A7=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=203=E3=80=81=E4=BF=AE=E6=94=B9bug=EF=BC=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E6=97=B6=EF=BC=8C=E5=88=A0=E9=99=A4=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=AD=90=E7=BA=A7=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impl/Admins/UnitcodeService.cs | 46 +++++++++++++++++-- .../Impl/Business/AppEarlyWarningService.cs | 2 +- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs b/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs index 98d19cc..c4aa07b 100644 --- a/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs +++ b/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs @@ -18,6 +18,7 @@ using ATS.NonCustodial.Shared.Extensions.AdvancedQuery; using AutoMapper.QueryableExtensions; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using System.Linq; using Yitter.IdGenerator; namespace ATS.NonCustodial.Application.Impl.Admins @@ -34,12 +35,15 @@ namespace ATS.NonCustodial.Application.Impl.Admins private readonly IEfRepository _appUnitcodeRepository; private readonly IEfRepository _appDeptcodeRepository; + private readonly IEfRepository _userRepository; public UnitcodeService(IEfRepository appUnitcodeRepository, - IEfRepository appDeptcodeRepository) + IEfRepository appDeptcodeRepository, + IEfRepository userRepository) { _appUnitcodeRepository = appUnitcodeRepository; _appDeptcodeRepository = appDeptcodeRepository; + _userRepository = userRepository; } #endregion Identity @@ -316,6 +320,11 @@ namespace ATS.NonCustodial.Application.Impl.Admins { if (!(input?.Id > 0)) return ResultOutput.NotOk(); + var unitlist = _appUnitcodeRepository.AsQueryable(false, true).Where(q => q.Id == input.Id).ToList(); + foreach (var item in unitlist) + { + if (item.ParentUnitCode != input.ParentUnitCode) { return ResultOutput.NotOk("单位父级无法修改"); } + } var entity = await _appUnitcodeRepository.FindAsync((long)input.Id); if (!(entity?.Id > 0)) return ResultOutput.NotOk("编辑失败"); @@ -334,14 +343,45 @@ namespace ATS.NonCustodial.Application.Impl.Admins { Uow.BeginTransaction(); { + for (int i = 0; i < input.Ids.Count; i++) + { + var idlist= GetUnitIdList(input.Ids[i]); + //校验该单位下是否存在用户账户 + if (_userRepository.AsQueryable(false, true).Where(q => idlist.Contains(q.UnitId??-1)).Any()) + { + return ResultOutput.NotOk("该单位下存在用户账户,无法删除"); + } + + //删除 + await _appUnitcodeRepository.DeleteAsync(w => idlist.Contains(w.Id)); + } //删除 - await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains(w.Id)); + // await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains(w.Id)); //删除 - await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains((long)w.ParentUnitCode)); + // await _appUnitcodeRepository.DeleteAsync(w => input.Ids.Contains((long)w.ParentUnitCode)); } await Uow.CommitAsync(); return ResultOutput.Ok(); } + + /// + /// 递归查找该单位下的所有单位 + /// + /// 单位id + /// 单位id集合 + private List GetUnitIdList(long unitId) + { + List idList=new List(); + idList.Add(unitId); + var unitlist=_appUnitcodeRepository.AsQueryable(false, true).Where(q => q.ParentUnitCode == unitId).ToList() ; + foreach (var item in unitlist) + { + idList.Add(item.Id); + var idlist = GetUnitIdList(item.Id); + idList.AddRange(idlist); + } + return idList; + } #region Private /// diff --git a/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs b/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs index cf154dc..c4857d5 100644 --- a/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs +++ b/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs @@ -282,7 +282,7 @@ namespace ATS.NonCustodial.Application.Impl.Business .WhereIf(input.supname.NotNull(), w => w.SupervisedPersonName.Contains(input.supname)) .GroupBy(q => new { q.CaseId, q.CaseName, q.SupervisedPersonId, q.SupervisedPersonName }).Select(q => new { q.Key.CaseId, q.Key.CaseName, q.Key.SupervisedPersonName, q.Key.SupervisedPersonId, Count = q.ToList().Count() }).Skip((input.PageIndex - 1) * input.PageSize).Take(input.PageSize); var SupervisedPersonIds = grudlist.Select(q => q.SupervisedPersonId); - var grudlistcunot = express.Where(q => SupervisedPersonIds.Contains(q.SupervisedPersonId)).ToList(); + // var grudlistcunot = express.Where(q => SupervisedPersonIds.Contains(q.SupervisedPersonId)).ToList(); return ResultOutput.Ok(new { TotalCount = express.GroupBy(q => new { q.CaseId, q.CaseName, q.SupervisedPersonId, q.SupervisedPersonName }).Count(), grudlist }); }