Browse Source

[MODIFY]单位管理功能

1、删除增加限制,该单位和子单位下有用户时,无法删除单位
2、增加限制,编辑界面无法修改父级单位
3、修改bug,删除单位时,删除所有子级单位
dev_wp
zhaozhenjing 3 months ago
parent
commit
c2d3a2f012
  1. 46
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs
  2. 2
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppEarlyWarningService.cs

46
src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs

@ -18,6 +18,7 @@ using ATS.NonCustodial.Shared.Extensions.AdvancedQuery;
using AutoMapper.QueryableExtensions; using AutoMapper.QueryableExtensions;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Linq;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace ATS.NonCustodial.Application.Impl.Admins namespace ATS.NonCustodial.Application.Impl.Admins
@ -34,12 +35,15 @@ namespace ATS.NonCustodial.Application.Impl.Admins
private readonly IEfRepository<App_Unitcode?, long> _appUnitcodeRepository; private readonly IEfRepository<App_Unitcode?, long> _appUnitcodeRepository;
private readonly IEfRepository<App_Deptcode?, long> _appDeptcodeRepository; private readonly IEfRepository<App_Deptcode?, long> _appDeptcodeRepository;
private readonly IEfRepository<AppUser?, long> _userRepository;
public UnitcodeService(IEfRepository<App_Unitcode?, long> appUnitcodeRepository, public UnitcodeService(IEfRepository<App_Unitcode?, long> appUnitcodeRepository,
IEfRepository<App_Deptcode?, long> appDeptcodeRepository) IEfRepository<App_Deptcode?, long> appDeptcodeRepository,
IEfRepository<AppUser?, long> userRepository)
{ {
_appUnitcodeRepository = appUnitcodeRepository; _appUnitcodeRepository = appUnitcodeRepository;
_appDeptcodeRepository = appDeptcodeRepository; _appDeptcodeRepository = appDeptcodeRepository;
_userRepository = userRepository;
} }
#endregion Identity #endregion Identity
@ -316,6 +320,11 @@ namespace ATS.NonCustodial.Application.Impl.Admins
{ {
if (!(input?.Id > 0)) return ResultOutput.NotOk(); 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); var entity = await _appUnitcodeRepository.FindAsync((long)input.Id);
if (!(entity?.Id > 0)) return ResultOutput.NotOk("编辑失败"); if (!(entity?.Id > 0)) return ResultOutput.NotOk("编辑失败");
@ -334,14 +343,45 @@ namespace ATS.NonCustodial.Application.Impl.Admins
{ {
Uow.BeginTransaction(); 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(); await Uow.CommitAsync();
return ResultOutput.Ok(); return ResultOutput.Ok();
} }
/// <summary>
/// 递归查找该单位下的所有单位
/// </summary>
/// <param name="unitId">单位id</param>
/// <returns>单位id集合</returns>
private List<long> GetUnitIdList(long unitId)
{
List<long> idList=new List<long>();
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 #region Private
/// <summary> /// <summary>

2
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)) .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); .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 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 }); return ResultOutput.Ok(new { TotalCount = express.GroupBy(q => new { q.CaseId, q.CaseName, q.SupervisedPersonId, q.SupervisedPersonName }).Count(), grudlist });
} }

Loading…
Cancel
Save