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 }); }