Browse Source

[MODIFY]增加职位判断,前端按钮根据不同职位进行不同适配

dev-zzj
zhaozhenjing 2 months ago
parent
commit
5ee99b0d21
  1. 1
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/AuthService.cs
  2. 19
      src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs
  3. 24
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs
  4. 1
      src/2.services/ATS.NonCustodial.Application/Impl/Business/AppViolationStatisticsService.cs
  5. 59
      src/2.services/ATS.NonCustodial.Application/Impl/Business/CaseManagements/AppCaseManagementService.cs
  6. 5
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationGetDto.cs
  7. 5
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationListDto.cs
  8. 6
      src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppCaseManagements/AppCaseManagement/Output/AppCaseManagementListDto.cs
  9. 2
      src/5.shared/ATS.NonCustodial.Domain.Shared/Enums/CaseProgressEnum.cs
  10. 5
      src/5.shared/ATS.NonCustodial.Shared/Common/Auth/ClaimAttributes.cs
  11. 5
      src/5.shared/ATS.NonCustodial.Shared/Common/Auth/IUser.cs
  12. 18
      src/5.shared/ATS.NonCustodial.Shared/Common/Auth/User.cs

1
src/2.services/ATS.NonCustodial.Application/Impl/Admins/AuthService.cs

@ -430,6 +430,7 @@ namespace ATS.NonCustodial.Application.Impl.Admins
new Claim(ClaimAttributes.phone,user?.Phone??""),
new Claim(ClaimAttributes.logtime,timeLogin),
new Claim(ClaimAttributes.limits,limits??""),
new Claim(ClaimAttributes.positionId,user.PositionId.ToString()),
new Claim(ClaimAttributes.IsAdmin,user.IsAdmin?"true":"false"),
new Claim(ClaimAttributes.personType,user?.ChatPersonType.ToString()!)
});

19
src/2.services/ATS.NonCustodial.Application/Impl/Admins/UserService.cs

@ -855,7 +855,26 @@ namespace ATS.NonCustodial.Application.Impl.Admins
return (ResultOutput<List<KeyValueDto>>)ResultOutput.Ok(rtn);
}
/// <summary>
/// 新建案件时 根据当前登录用户查询下拉列表
/// </summary>
/// <returns></returns>
public async Task<ResultOutput<List<KeyValueDto>>> GetNewUserSelectList()
{
var userRoles = await this.IsAdmin(null);
// 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)
.Select(w => new KeyValueDto()
{
Id = w.Id,
Text = w.UserName ?? w.Name,
Value = w.Id.ToString(),
Phone = w.Phone.ToString()
}).ToListAsync();
return (ResultOutput<List<KeyValueDto>>)ResultOutput.Ok(rtn);
}
/// <summary>
/// 获取所有的管理员
/// </summary>

24
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppBusinessApplicationService.cs

@ -7,6 +7,7 @@ using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusinessAppl
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusinessApplications.Output;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppCaseManagements.AppCaseManagement;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppCaseManagements.AppCaseManagement.Input;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppCaseManagements.AppCaseManagement.Output;
using ATS.NonCustodial.Application.Contracts.Interfaces.Business.Apps.Output;
using ATS.NonCustodial.Application.Impl.Business.IM;
using ATS.NonCustodial.Domain.Entities.Admins;
@ -121,9 +122,14 @@ namespace ATS.NonCustodial.Application.Impl.Business
express = express.Where(w => caseIdList.Contains(w.CaseId));
var rtn = await base.GetPageAsync<AppBusinessApplication, AppBusinessApplicationGetPageInput, AppBusinessApplicationListDto>(input, express);
//rtn.Data = rtn.Data.Where(w => caseIdList.Contains(w.CaseId)).ToList();
var position = await _appDictionaryService.GetDicByDicId(User.PositionId);
//不同的申请,显示字段不一样
foreach (var item in rtn.Data)
{
var dic= await _appDictionaryService.GetDicByDicId(item.ApplicationTypeId);
if (dic.Code == "end_supervision")
{
item.ActiveTimePeriodBegin = null;
@ -133,6 +139,24 @@ namespace ATS.NonCustodial.Application.Impl.Business
{
item.EndSupervisionDate = null;
}
var caseDto = await base.GetWithDataAsync<AppCaseManagement, AppCaseManagementGetDto, long>(_appCaseManagementRepository, item.CaseId);
item.ReviewPermission = "0";
//当前案件状态和登录人员职位相匹配时,才能修改
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)
{
item.ReviewPermission = "1";
}
}
return ResultOutput.Ok(rtn);
}

1
src/2.services/ATS.NonCustodial.Application/Impl/Business/AppViolationStatisticsService.cs

@ -123,6 +123,7 @@ namespace ATS.NonCustodial.Application.Impl.Business
//查询记录
var query = await _appEarlyWarningRepository
.AsQueryable(false, true).Where(q => spIds.Contains(q.SupervisedPersonId))
.Where(w=> caseIdList.Contains(w.CaseId))
.WhereIf(input.CaseId != default, a => a.CaseId == input.CaseId)
.WhereIf(input.SupervisedPersonId != default, w => w.SupervisedPersonId == input.SupervisedPersonId)
.WhereIf(input.SupervisedPersonName.HasValue(), w => w.SupervisedPersonName.Contains(input.SupervisedPersonName))

59
src/2.services/ATS.NonCustodial.Application/Impl/Business/CaseManagements/AppCaseManagementService.cs

@ -16,7 +16,6 @@ using ATS.NonCustodial.Domain.Shared.Enums;
using ATS.NonCustodial.Domain.Shared.OrmRepositories.Basic.EfCore;
using ATS.NonCustodial.DynamicApi;
using ATS.NonCustodial.DynamicApi.Attributes;
using ATS.NonCustodial.Shared.Common.Auth;
using ATS.NonCustodial.Shared.Common.Dtos;
using ATS.NonCustodial.Shared.Common.Enums;
using ATS.NonCustodial.Shared.Common.UnifiedResults;
@ -30,9 +29,7 @@ using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using SixLabors.ImageSharp;
using System.Linq;
using Yitter.IdGenerator;
@ -155,9 +152,46 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
var rtn = await base.GetPageAsync<AppCaseManagement, AppCaseManagementGetPageInput, AppCaseManagementListDto>(input, express);
var position = await _appDictionaryService.GetDicByDicId(User.PositionId);
foreach (var listDto in rtn.Data)
{
listDto.Supervisor = selectLimits.Where(w => w.CaseId == listDto.Id).Select(w => w.SupervisorName).JoinAsString(",");
listDto.Supervisor = (await _appCaseSupervisorRepository.AsQueryable(false, true)
.Where(w => w.CaseId == listDto.Id).Select(w => w.SupervisorName).ToListAsync()).JoinAsString(",");
if (listDto.CaseProgress == CaseProgressEnum.Pending)
{
listDto.ReviewPermission = "0";//显示编辑按钮
}
else if (listDto.CaseProgress == CaseProgressEnum.InExecution)
{
listDto.ReviewPermission = "1";//显示编辑按钮 移送检察院按钮
}
else if (listDto.CaseProgress == CaseProgressEnum.Examination)
{
if (position.Code == "inquisitor" || User.IsAdmin)
{
listDto.ReviewPermission = "3";//显示移送法院 结束案件
}
else
{
listDto.ReviewPermission = "2";//显示查看按钮
}
}
else if (listDto.CaseProgress == CaseProgressEnum.Hear)
{
if (position.Code == "judge" || User.IsAdmin)
{
listDto.ReviewPermission = "4";//显示查看 结束案件
}
else
{
listDto.ReviewPermission = "2";//显示查看按钮
}
}
else
{
listDto.ReviewPermission = "2";//显示查看按钮
}
}
return ResultOutput.Ok(rtn);
@ -252,7 +286,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
//获取案件信息
var express = await base.GetCurrentUserCaseListAsync();
express = express.Where(w =>w.AppCaseManagement!=null && caseIdList.Contains(w.AppCaseManagement.Id)&& w.AppCaseSupervisedPerson != null && caseIdList.Contains(w.AppCaseSupervisedPerson.CaseId)&& w.AppCaseSupervisor != null && caseIdList.Contains(w.AppCaseSupervisor.CaseId));
express = express.Where(w => w.AppCaseManagement != null && caseIdList.Contains(w.AppCaseManagement.Id) && w.AppCaseSupervisedPerson != null && caseIdList.Contains(w.AppCaseSupervisedPerson.CaseId) && w.AppCaseSupervisor != null && caseIdList.Contains(w.AppCaseSupervisor.CaseId));
//案件信息Id
@ -289,7 +323,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
var diclist = new List<dynamic>();
//获取当前用户能看到的数据Id
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Where(w=>w.AppCaseManagement!=null&& caseIdList.Contains(w.AppCaseManagement.Id)).Select(w => w.AppCaseManagement.Id).ToListAsync();
var caseIds = await (await base.GetCurrentUserCaseListAsync()).Where(w => w.AppCaseManagement != null && caseIdList.Contains(w.AppCaseManagement.Id)).Select(w => w.AppCaseManagement.Id).ToListAsync();
//获取案件信息
var express = await _appCaseManagementRepository.AsQueryable(false, true).Where(q => caseIds.Contains(q.Id)).ToListAsync();
var otherexpress = express;
@ -517,11 +551,11 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
var validSpCase = await ValidSupervisedPerson(input);
if (!validSpCase.Success) return validSpCase;
if(input.Threshold>=int.MaxValue)
if (input.Threshold >= int.MaxValue)
{
return ResultOutput.NotOk("预警阈值输入数字过大");
}
if (input.Threshold <0)
if (input.Threshold < 0)
{
return ResultOutput.NotOk("预警阈值不能为负数");
}
@ -541,7 +575,7 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
else
{
var entity = Mapper.Map<AppCaseManagement>(input);
if(entity.Threshold==0)
if (entity.Threshold == 0)
{
entity.Threshold = 5;
}
@ -1190,8 +1224,8 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
var dataDict = await _appDictionaryService.GetListNoApiAsync(null);
var caseList = (await (await base.GetCurrentUserCaseListAsync()).ToListAsync())
.Where(w => w.AppCaseManagement!=null && w.AppCaseManagement.CaseProgress != CaseProgressEnum.Closed && caseIdList.Contains(w.AppCaseManagement.Id)
&&w.AppCaseSupervisedPerson!=null && caseIdList.Contains(w.AppCaseSupervisedPerson.CaseId)&&w.AppCaseSupervisor !=null && caseIdList.Contains(w.AppCaseSupervisor.CaseId))
.Where(w => w.AppCaseManagement != null && w.AppCaseManagement.CaseProgress != CaseProgressEnum.Closed && caseIdList.Contains(w.AppCaseManagement.Id)
&& w.AppCaseSupervisedPerson != null && caseIdList.Contains(w.AppCaseSupervisedPerson.CaseId) && w.AppCaseSupervisor != null && caseIdList.Contains(w.AppCaseSupervisor.CaseId))
.OrderByDescending(w => w.AppCaseSupervisedPerson?.CreatedTime)
.Skip(0)
.Take(5)
@ -1633,11 +1667,12 @@ namespace ATS.NonCustodial.Application.Impl.Business.CaseManagements
//var appSupervisedlist = from a in base._appCaseManagementRepository.AsQueryable(false, true).Where(q => q.CaseProgress != CaseProgressEnum.Closed)
// join b in _appSupervisedPersonRepository.AsQueryable(false, true) on a.Id equals b.CaseId
// select b;
var caseIdList = caselist.Where(w => caseIds.Contains(w.Id)).Select(s => s.Id);
var appSupervisedlist = from a in base._appCaseManagementRepository.AsQueryable(false, true)
join b in _appSupervisedPersonRepository.AsQueryable(false, true) on a.Id equals b.CaseId
select b;
var data = await appSupervisedlist
.Where(q => caseIds.Contains(q.CaseId))
.Where(q => caseIdList.Contains(q.CaseId))
.WhereIf(input.TimeSearch?.BeginTime != null && input.TimeSearch?.EndTime != null, q => q.CreatedTime >= input.TimeSearch.BeginTime && q.CreatedTime <= $"{input.TimeSearch.EndTime.Value.ToString("yyyy-MM-dd")} 23:59:59".ToDateTime())
.WhereIf(input.name.NotNull(), q => q.SupervisedPersonName.Contains(input.name))
.OrderByDescending(r => r.CreatedTime)

5
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationGetDto.cs

@ -76,5 +76,10 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusiness
/// 审核时间
/// </summary>
public DateTime? AuditTime { get; set; }
/// <summary>
/// 结束监管日期
/// </summary>
public DateTime? EndSupervisionDate { get; set; }
}
}

5
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppBusinessApplications/Output/AppBusinessApplicationListDto.cs

@ -90,6 +90,9 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppBusiness
/// </summary>
public string? ApplicationDescription { get; set; }
/// <summary>
/// 审核权限(1 有权限 2 无权限)
/// </summary>
public string? ReviewPermission { get; set; }
}
}

6
src/3.contracts/ATS.NonCustodial.Application.Contracts/Interfaces/Business/AppCaseManagements/AppCaseManagement/Output/AppCaseManagementListDto.cs

@ -78,5 +78,11 @@ namespace ATS.NonCustodial.Application.Contracts.Interfaces.Business.AppCaseMana
/// 监管人名
/// </summary>
public string? Supervisor { get; set; }
/// <summary>
/// 按钮权限
/// </summary>
public string? ReviewPermission { get; set; }
}
}

2
src/5.shared/ATS.NonCustodial.Domain.Shared/Enums/CaseProgressEnum.cs

@ -34,7 +34,7 @@ namespace ATS.NonCustodial.Domain.Shared.Enums
Examination = 3,
/// <summary>
/// 审查起诉阶段
/// 审阶段
/// </summary>
[Description("审理阶段")]
Hear = 4,

5
src/5.shared/ATS.NonCustodial.Shared/Common/Auth/ClaimAttributes.cs

@ -86,7 +86,10 @@ namespace ATS.NonCustodial.Shared.Common.Auth
/// </summary>
public const string personType = "persontype";
/// <summary>
/// 职位类型转换为枚举
/// </summary>
public const string positionId = "positionId";
/// <summary>
/// 查询界限
/// </summary>

5
src/5.shared/ATS.NonCustodial.Shared/Common/Auth/IUser.cs

@ -51,6 +51,11 @@ namespace ATS.NonCustodial.Shared.Common.Auth
/// </summary>
string NickName { get; }
/// <summary>
/// 职位(检察官、公安、法官)
/// </summary>
long PositionId { get; }
/// <summary>
/// 查询界限

18
src/5.shared/ATS.NonCustodial.Shared/Common/Auth/User.cs

@ -159,7 +159,7 @@ namespace ATS.NonCustodial.Shared.Common.Auth
}
/// <summary>
/// 昵称
/// 查询权限
/// </summary>
public string limits
{
@ -175,7 +175,23 @@ namespace ATS.NonCustodial.Shared.Common.Auth
return "";
}
}
/// <summary>
/// 职位(检察官、公安、法官)
/// </summary>
public long PositionId
{
get
{
var positionId = _accessor?.HttpContext?.User?.FindFirst(ClaimAttributes.positionId);
if (positionId != null && positionId.Value.NotNull())
{
return (long)positionId.Value.ToLong();
}
return 0;
}
}
/// <summary>
/// 是否管理员
/// </summary>

Loading…
Cancel
Save