From a40f4beea1c653e7b6d4d97fd8eb22bcfe3ad9fd Mon Sep 17 00:00:00 2001 From: zhaozhenjing Date: Wed, 22 Oct 2025 17:02:50 +0800 Subject: [PATCH] =?UTF-8?q?[MODIFY]=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impl/Admins/UnitcodeService.cs | 9 +++ .../Impl/Admins/UserService.cs | 70 ++++++++++++------- .../Business/AppBusinessApplicationService.cs | 29 +++++++- .../Unitcode/Output/UnitcodeListOutput.cs | 7 ++ .../Interfaces/Admins/User/IUserService.cs | 4 +- .../Output/AppBusinessApplicationGetDto.cs | 9 +++ .../Output/AppBusinessApplicationListDto.cs | 2 +- 7 files changed, 100 insertions(+), 30 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 6c99467..3b1eba1 100644 --- a/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs +++ b/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UnitcodeService.cs @@ -299,6 +299,15 @@ namespace ATS.NonCustodial.Application.Impl.Admins var entity = Mapper.Map(input); entity.Id = YitIdHelper.NextId(); entity.Limits = entity.Id.ToString(); + if(input.ParentUnitCode.HasValue) + { + var rtn = await base.GetAsync(_appUnitcodeRepository, input.ParentUnitCode.Value); + entity.UnitLevel =(int.Parse(rtn.UnitLevel??"0")+1).ToString(); + } + else + { + entity.UnitLevel = "1"; + } var App_Unitcode = await _appUnitcodeRepository.InsertAsync(entity); //添加父级单位权限 if (entity.ParentUnitCode.HasValue) diff --git a/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs b/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs index e8c85fd..7a607f1 100644 --- a/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs +++ b/src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs @@ -1,5 +1,6 @@ using ATS.NonCustodial.Application.Base; using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.AppDictionaries; +using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.AppDictionaries.Output; using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Auth.Output; using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Menu.Output; using ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Role.Output; @@ -12,7 +13,6 @@ using ATS.NonCustodial.Domain.Shared.OrmRepositories.Basic.EfCore; using ATS.NonCustodial.DynamicApi; using ATS.NonCustodial.DynamicApi.Attributes; using ATS.NonCustodial.Shared.Common.Attributes; -using ATS.NonCustodial.Shared.Common.Auth; using ATS.NonCustodial.Shared.Common.Constants; using ATS.NonCustodial.Shared.Common.Dtos; using ATS.NonCustodial.Shared.Common.Dtos.Query; @@ -27,10 +27,7 @@ using AutoMapper.QueryableExtensions; using Castle.Components.DictionaryAdapter; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Routing; using Microsoft.EntityFrameworkCore; -using System.Collections.Generic; -using System.Xml.Linq; using Yitter.IdGenerator; namespace ATS.NonCustodial.Application.Impl.Admins @@ -111,7 +108,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins [HttpGet] public async Task GetuserroleAsync(long id) { - var userrole = await _userRoleRepository.AsQueryable(false, true).Where(q=>q.RoleId== id).Select(q=>q.UserId).ToListAsync(); + var userrole = await _userRoleRepository.AsQueryable(false, true).Where(q => q.RoleId == id).Select(q => q.UserId).ToListAsync(); return ResultOutput.Ok(userrole); } @@ -134,16 +131,16 @@ namespace ATS.NonCustodial.Application.Impl.Admins // select new {urpm}).ToListAsync(); var usermenulis = await _MenuRepository.AsQueryable(false, true).ToListAsync(); var menulist = Mapper.Map>(usermenulis); - foreach (var item in menulist.Distinct().Where(q => q.pid == 0||q.pid==null).OrderBy(q=>q.sort).ToList()) + foreach (var item in menulist.Distinct().Where(q => q.pid == 0 || q.pid == null).OrderBy(q => q.sort).ToList()) { rtnlist.Add(new { - Id=item.Id, + Id = item.Id, name = item.menuName, route = item.menuUrl, - icon=item.icon, + icon = item.icon, iconName = item.iconName, - Sublevel= menulist.Where(q=>q.pid== item.Id).ToList().OrderBy(q=> q.sort).Select(q=>new { q.Id, name=q.menuName, route=q.menuUrl}).ToList() + Sublevel = menulist.Where(q => q.pid == item.Id).ToList().OrderBy(q => q.sort).Select(q => new { q.Id, name = q.menuName, route = q.menuUrl }).ToList() }); } return ResultOutput.Ok(rtnlist); @@ -159,20 +156,28 @@ namespace ATS.NonCustodial.Application.Impl.Admins { var rtnlist = new List(); //查找当前用户角色权限菜单 - var usermenulist = await (from ur in _userRoleRepository.AsQueryable(false, true).Where(q=>q.UserId==User.Id) + var usermenulist = await (from ur in _userRoleRepository.AsQueryable(false, true).Where(q => q.UserId == User.Id) join urp in _rolePermissionRepository.AsQueryable(false, true) on ur.RoleId equals urp.RoleId join urpm in _MenuRepository.AsQueryable(false, true) on urp.PermissionId equals urpm.Id - select new App_Menu{ Id=urpm.Id, menuName=urpm.menuName, icon=urpm.icon, iconName=urpm.iconName, pid=urpm.pid, sort=urpm.sort, + select new App_Menu + { + Id = urpm.Id, + menuName = urpm.menuName, + icon = urpm.icon, + iconName = urpm.iconName, + pid = urpm.pid, + sort = urpm.sort, route = urpm.route, - menuUrl =urpm.menuUrl }).ToListAsync(); + menuUrl = urpm.menuUrl + }).ToListAsync(); var menulist = Mapper.Map>(usermenulist); if (User.Name.Contains("aks")) { - var list = await _MenuRepository.AsQueryable(false, true).ToListAsync(); - menulist = Mapper.Map>(list); + var list = await _MenuRepository.AsQueryable(false, true).ToListAsync(); + menulist = Mapper.Map>(list); } - menulist= menulist.Where((x, i) => menulist.FindIndex(s => s.Id == x.Id) == i).ToList(); - foreach (var item in menulist.Distinct().Where((q,x) => q.pid == 0 || q.pid == null).OrderBy(q => q.sort).ToList()) + menulist = menulist.Where((x, i) => menulist.FindIndex(s => s.Id == x.Id) == i).ToList(); + foreach (var item in menulist.Distinct().Where((q, x) => q.pid == 0 || q.pid == null).OrderBy(q => q.sort).ToList()) { rtnlist.Add(new { @@ -180,7 +185,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins name = item.menuName, route = item.menuUrl, icon = item.icon, - routes=item.route, + routes = item.route, iconName = item.iconName, Sublevel = menulist.Distinct().Where(q => q.pid == item.Id).ToList().OrderBy(q => q.sort).Select(q => new { q.Id, name = q.menuName, route = q.menuUrl, routes = q.route }).ToList() }); @@ -196,7 +201,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins [HttpPost] public async Task GetPageAsync(UserGetPageDto input) { - var express = GetExpression(input, _userRepository.AsQueryable(false, true).Where(q=>!q.UserName.Contains("aks"))); + var express = GetExpression(input, _userRepository.AsQueryable(false, true).Where(q => !q.UserName.Contains("aks"))); var pageData = await base.GetPageAsync(input, express); var userIds = pageData.Data.Select(w => w.Id).ToList(); @@ -336,7 +341,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins .FirstOrDefault(w => w.Id == userUpdateBasic.PositionId) ?.Name; - + return ResultOutput.Ok(userUpdateBasic); } @@ -416,13 +421,13 @@ namespace ATS.NonCustodial.Application.Impl.Admins var userRole = await IsAdmin(null); if (inputlist == null) return ResultOutput.Ok(); else - await _userRoleRepository.DeleteAsync(q=>q.RoleId== inputlist[0].RoleId);//删除所有用户角色 + await _userRoleRepository.DeleteAsync(q => q.RoleId == inputlist[0].RoleId);//删除所有用户角色 foreach (var item in inputlist) { item.Id = YitIdHelper.NextId(); } - await _userRoleRepository.InsertAsync(Mapper.Map,List>(inputlist)); + await _userRoleRepository.InsertAsync(Mapper.Map, List>(inputlist)); return ResultOutput.Ok(); } @@ -531,7 +536,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins w => w.DeptcodeId!, w => w.Deptcodename!, w => w.DataStatus)!); - if (input.RoleIds != null && input.RoleIds.Count() > 0) + if (input.RoleIds != null && input.RoleIds.Count() > 0) { await _userRoleRepository.DeleteAsync(a => a.UserId == user.Id && input.RoleIds.Contains(a.RoleId)); @@ -837,14 +842,25 @@ namespace ATS.NonCustodial.Application.Impl.Admins /// /// 根据当前登录用户查询下拉列表 /// + /// 移交给检察院 0 移交法院 1 /// - public async Task>> GetUserSelectList() + public async Task>> GetUserSelectList(int isCourt = 0) { var userRoles = await this.IsAdmin(null); + var dataDict = await _appDictionaryService.GetListNoApiAsync("job_position"); + + // 安全地处理可能的空值 + var codeList = dataDict?.FirstOrDefault()?.Dictionaries? + .Where(w => w.Code == (isCourt == 0 ? "inquisitor" : "judge")) + .ToList() ?? new List(); + + + var rtn = await _userRepository.AsQueryable(false, true) - .Where(w => w.ChatPersonType != ChatPersonTypeEnum.SupervisedPerson && w.DataStatus != DataStatusEnum.Disable&&!w.UserName.Contains("_aks")) - // .WhereIf(!userRoles.IsAdmin, w => w.Id == User.Id) 2025 -10-20 段肖确认修改 + .Where(w => w.ChatPersonType != ChatPersonTypeEnum.SupervisedPerson && w.DataStatus != DataStatusEnum.Disable && !w.UserName.Contains("_aks")) + .WhereIf(codeList.Count>0,w=> w.PositionId == codeList.FirstOrDefault().Id) + // .WhereIf(!userRoles.IsAdmin, w => w.Id == User.Id) 2025 -10-20 段肖确认修改 .Select(w => new KeyValueDto() { Id = w.Id, @@ -862,9 +878,9 @@ namespace ATS.NonCustodial.Application.Impl.Admins public async Task>> GetNewUserSelectList() { var userRoles = await this.IsAdmin(null); - // var limits = User.UnitId; + // var limits = User.UnitId; var rtn = await _userRepository.AsQueryable(false, true) - .Where(w => w.ChatPersonType != ChatPersonTypeEnum.SupervisedPerson && w.DataStatus != DataStatusEnum.Disable && !w.UserName.Contains("_aks")&& w.UnitId == User.UnitId) + .Where(w => w.ChatPersonType != ChatPersonTypeEnum.SupervisedPerson && w.DataStatus != DataStatusEnum.Disable && !w.UserName.Contains("_aks") && w.UnitId == User.UnitId) .Select(w => new KeyValueDto() { Id = w.Id, diff --git a/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs b/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs index a05c2db..80a2ba1 100644 --- a/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs +++ b/src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs @@ -100,6 +100,32 @@ namespace ATS.NonCustodial.Application.Impl.Business public async Task GetAsync(long id) { var rtn = await base.GetAsync(_appBusinessApplicationRepository, id); + + if (rtn != null&& User.PositionId !=0) + { + //获取用户职位 + var position = await _appDictionaryService.GetDicByDicId(User.PositionId); + + var caseDto = await base.GetWithDataAsync(_appCaseManagementRepository, rtn.CaseId); + //当前案件状态和登录人员职位相匹配时,才能修改 + var permissionGranted = (caseDto.CaseProgress, position.Code) switch + { + (CaseProgressEnum.Pending, "police") => true, + (CaseProgressEnum.InExecution, "police") => true, + (CaseProgressEnum.Examination, "inquisitor") => true, + (CaseProgressEnum.Hear, "judge") => true, + _ => false + }; + + if (permissionGranted) + { + rtn.ReviewPermission = "1"; + } + else + { + rtn.ReviewPermission = "0"; + } + } return ResultOutput.Ok(rtn); } @@ -128,7 +154,7 @@ namespace ATS.NonCustodial.Application.Impl.Business //不同的申请,显示字段不一样 foreach (var item in rtn.Data) { - var dic= await _appDictionaryService.GetDicByDicId(item.ApplicationTypeId); + var dic = await _appDictionaryService.GetDicByDicId(item.ApplicationTypeId); if (dic.Code == "end_supervision") { @@ -336,6 +362,7 @@ namespace ATS.NonCustodial.Application.Impl.Business }); await _appBusinessApplicationRepository.UpdateAsync(dataList); + //当被监管人申请结束监管,判断此案件只有一个被监管人时,结束案件 foreach (var item in dataList) { var caseType = await _appDictionaryService.GetDicByDicId(item.ApplicationTypeId); diff --git a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Unitcode/Output/UnitcodeListOutput.cs b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Unitcode/Output/UnitcodeListOutput.cs index de791e6..1fd1578 100644 --- a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Unitcode/Output/UnitcodeListOutput.cs +++ b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/Unitcode/Output/UnitcodeListOutput.cs @@ -1,4 +1,6 @@ using ATS.NonCustodial.Domain.Shared.AggRootEntities; +using ATS.NonCustodial.Domain.Shared.Constants; +using System.ComponentModel.DataAnnotations; namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Unitcode.Output { @@ -18,5 +20,10 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.Unitcode.Outp /// 父级编码 /// public long? ParentUnitCode { get; set; } + + /// + /// 单位级别 + /// + public string? UnitLevel { get; set; } } } \ No newline at end of file diff --git a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/User/IUserService.cs b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/User/IUserService.cs index 45d1ab0..8b2da2a 100644 --- a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/User/IUserService.cs +++ b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Admins/User/IUserService.cs @@ -218,8 +218,10 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Admins.User /// ݵǰ¼ûѯб /// /// - Task>> GetUserSelectList(); + Task>> GetUserSelectList(int isCourt = 0); + + Task>> GetNewUserSelectList(); /// /// ȡеĹԱ /// diff --git a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationGetDto.cs b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationGetDto.cs index 4485a3b..0191a4d 100644 --- a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationGetDto.cs +++ b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationGetDto.cs @@ -17,6 +17,10 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusiness /// public AuditStatusEnum AuditStatus { get; set; } + /// + /// 案子Id + /// + public long CaseId { get; set; } /// /// 审核状态描述 /// @@ -81,5 +85,10 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusiness /// 结束监管日期 /// public DateTime? EndSupervisionDate { get; set; } + + /// + /// 审核权限(1 有权限 0 无权限) + /// + public string? ReviewPermission { get; set; } } } \ No newline at end of file diff --git a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationListDto.cs b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationListDto.cs index d01d3ed..6ba196f 100644 --- a/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationListDto.cs +++ b/src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationListDto.cs @@ -91,7 +91,7 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusiness public string? ApplicationDescription { get; set; } /// - /// 审核权限(1 有权限 2 无权限) + /// 审核权限(1 有权限 0 无权限) /// public string? ReviewPermission { get; set; } }