|
@@ -1,8 +1,8 @@
|
|
|
using Hotline.Api.Filter;
|
|
|
+using Hotline.Application.JudicialManagement;
|
|
|
using Hotline.Caching.Interfaces;
|
|
|
using Hotline.File;
|
|
|
using Hotline.JudicialManagement;
|
|
|
-using Hotline.Orders;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Settings;
|
|
|
using Hotline.Settings.TimeLimits;
|
|
@@ -10,7 +10,8 @@ using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.JudicialManagement;
|
|
|
using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Enums.JudicialManagement;
|
|
|
-using Hotline.Share.Enums.Order;
|
|
|
+using Hotline.Share.Requests;
|
|
|
+using Hotline.Tools;
|
|
|
using MapsterMapper;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using SqlSugar;
|
|
@@ -33,6 +34,7 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IFileRepository _fileRepository;
|
|
|
private readonly IJudicialManagementOrdersService _judicialManagementOrdersService;
|
|
|
private readonly IRepository<EnforcementOrdersHandler> _enforcementOrdersHandlerRepository;
|
|
|
+ private readonly IEnforcementApplication _enforcementApplication;
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
@@ -48,6 +50,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="fileRepository"></param>
|
|
|
/// <param name="judicialManagementOrdersService"></param>
|
|
|
/// <param name="enforcementOrdersHandlerRepository"></param>
|
|
|
+ /// <param name="enforcementApplication"></param>
|
|
|
public JudicialManagementOrdersController(
|
|
|
IRepository<JudicialComplaintsEventType> judicialComplaintsEventTypeRepository,
|
|
|
IRepository<EnforcementHotspot> enforcementHotspotRepository,
|
|
@@ -59,7 +62,8 @@ namespace Hotline.Api.Controllers
|
|
|
IRepository<JudicialManagementOrders> judicialManagementOrdersRepository,
|
|
|
IFileRepository fileRepository,
|
|
|
IJudicialManagementOrdersService judicialManagementOrdersService,
|
|
|
- IRepository<EnforcementOrdersHandler> enforcementOrdersHandlerRepository
|
|
|
+ IRepository<EnforcementOrdersHandler> enforcementOrdersHandlerRepository,
|
|
|
+ IEnforcementApplication enforcementApplication
|
|
|
)
|
|
|
{
|
|
|
_judicialComplaintsEventTypeRepository = judicialComplaintsEventTypeRepository;
|
|
@@ -73,6 +77,7 @@ namespace Hotline.Api.Controllers
|
|
|
_fileRepository = fileRepository;
|
|
|
_judicialManagementOrdersService = judicialManagementOrdersService;
|
|
|
_enforcementOrdersHandlerRepository = enforcementOrdersHandlerRepository;
|
|
|
+ _enforcementApplication = enforcementApplication;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -154,53 +159,13 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 受理工单
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("getownorderlist")]
|
|
|
- public async Task<PagedDto<EnforcementOrderListDto>> GetOwnOrderList([FromQuery] QueryEnforcementOrderNewDto dto)
|
|
|
- {
|
|
|
- var (total, items) = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .Where(d => d.CreatorId == _sessionContext.UserId)
|
|
|
- .WhereIF(dto.IsEnforcementOrder.HasValue, d => d.IsEnforcementOrder == dto.IsEnforcementOrder)//是否行政执法类
|
|
|
- .WhereIF(dto.IsPassTheBuckOrder.HasValue, d => d.IsPassTheBuckOrder == dto.IsPassTheBuckOrder)//是否推诿
|
|
|
- .WhereIF(dto.IsTheClueTrue.HasValue, d => d.IsTheClueTrue == dto.IsTheClueTrue)//线索是否属实
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.EventTypeId), d => dto.EventTypeId == d.EventTypeId)//事项分类
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title.Contains(dto.Title!)) //标题
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No)) //工单编码
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptTypeCode), d => d.AcceptTypeCode == dto.AcceptTypeCode) //受理类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ChannelCode), d => d.SourceChannelCode == dto.ChannelCode) //来源渠道
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.HotspotId), d => d.TransferPhone == dto.HotspotId) //热点类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName == dto.FromName) //来电人姓名
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode) //区域
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), d => SqlFunc.JsonListObjectAny(d.EnforcementOrdersHandler, "Value", dto.OrgCode))//执法部门
|
|
|
- .OrderByDescending(d => d.CreationTime)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- var data = _mapper.Map<List<EnforcementOrderListDto>>(items);
|
|
|
-
|
|
|
- if (_sessionContext.RequiredOrgId == "001188")
|
|
|
- {
|
|
|
- foreach (var item in data)
|
|
|
- {
|
|
|
- if (item.IsTheClueTrue.HasValue)
|
|
|
- item.IsShowUpdateButton = true;
|
|
|
- }
|
|
|
- }
|
|
|
- return new PagedDto<EnforcementOrderListDto>(total, data);
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 启用/禁用
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
+ [LogFilter("启用/禁用司法工单")]
|
|
|
public async Task Update(string id)
|
|
|
{
|
|
|
var order = await _judicialManagementOrdersRepository.GetAsync(id, HttpContext.RequestAborted);
|
|
@@ -230,7 +195,6 @@ namespace Hotline.Api.Controllers
|
|
|
{
|
|
|
var ids = order.FileJson.Select(x => x.Id).ToList();
|
|
|
var files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
|
|
|
- //x.Classify == "办理上传" &&
|
|
|
dto.Files = files.Where(x => string.IsNullOrEmpty(x.FlowKey)).ToList();
|
|
|
}
|
|
|
return dto;
|
|
@@ -252,6 +216,51 @@ namespace Hotline.Api.Controllers
|
|
|
await _judicialManagementOrdersRepository.RemoveAsync(order);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 受理工单
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("getownorderlist")]
|
|
|
+ public async Task<PagedDto<EnforcementOrderListDto>> GetOwnOrderList([FromQuery] QueryEnforcementOrderNewDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _enforcementApplication.GetOwnOrderList(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 受理工单--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("getownorderlist_export")]
|
|
|
+ public async Task<FileStreamResult> GetOwnOrderListExport([FromBody] ExportExcelDto<QueryEnforcementOrderNewDto> dto)
|
|
|
+ {
|
|
|
+ var query = _enforcementApplication.GetOwnOrderList(dto.QueryDto);
|
|
|
+ List<JudicialManagementOrders> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var dataDtos = _mapper.Map<ICollection<EnforcementOrderListDto>>(data);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = dataDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EnforcementOrderListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "自定义工单数据");
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 司法行政监督管理工单查询
|
|
|
/// </summary>
|
|
@@ -260,28 +269,7 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("getorderlist")]
|
|
|
public async Task<PagedDto<EnforcementOrderListDto>> GetOrderList([FromQuery] QueryEnforcementOrderNewDto dto)
|
|
|
{
|
|
|
- var areaCode = _sessionContext.OrgAreaCode ?? "511500";
|
|
|
-
|
|
|
- var (total, items) = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .WhereIF(areaCode != "511500", d => d.AreaCode.StartsWith(areaCode))
|
|
|
- .WhereIF(dto.IsEnforcementOrder.HasValue, d => d.IsEnforcementOrder == dto.IsEnforcementOrder)//是否行政执法类
|
|
|
- .WhereIF(dto.IsPassTheBuckOrder.HasValue, d => d.IsPassTheBuckOrder == dto.IsPassTheBuckOrder)//是否推诿
|
|
|
- .WhereIF(dto.IsTheClueTrue.HasValue, d => d.IsTheClueTrue == dto.IsTheClueTrue)//线索是否属实
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.EventTypeId), d => dto.EventTypeId == d.EventTypeId)//事项分类
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title.Contains(dto.Title!)) //标题
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No)) //工单编码
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptTypeCode), d => d.AcceptTypeCode == dto.AcceptTypeCode) //受理类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ChannelCode), d => d.SourceChannelCode == dto.ChannelCode) //来源渠道
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.HotspotId), d => d.TransferPhone == dto.HotspotId) //热点类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName == dto.FromName) //来电人姓名
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode) //区域
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), d => SqlFunc.JsonListObjectAny(d.EnforcementOrdersHandler, "Value", dto.OrgCode))//执法部门
|
|
|
- .OrderByDescending(d => d.CreationTime)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
-
|
|
|
+ var (total, items) = await _enforcementApplication.GetOrderList(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
var data = _mapper.Map<List<EnforcementOrderListDto>>(items);
|
|
|
|
|
|
if (_sessionContext.RequiredOrgId == "001188")
|
|
@@ -295,6 +283,40 @@ namespace Hotline.Api.Controllers
|
|
|
return new PagedDto<EnforcementOrderListDto>(total, data);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 司法行政监督管理工单查询---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("getorderlist_export")]
|
|
|
+ public async Task<FileStreamResult> GetOrderListExport([FromBody] ExportExcelDto<QueryEnforcementOrderNewDto> dto)
|
|
|
+ {
|
|
|
+ var query = _enforcementApplication.GetOrderList(dto.QueryDto);
|
|
|
+ List<JudicialManagementOrders> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var dataDtos = _mapper.Map<ICollection<EnforcementOrderListDto>>(data);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = dataDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EnforcementOrderListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "工单中心数据");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 列表页面基础数据
|
|
|
/// </summary>
|
|
@@ -336,26 +358,38 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 获取省市区树形
|
|
|
+ /// 根据当前部门获取区域
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("area/tree")]
|
|
|
- public async Task<List<SystemArea>> GetAreaTree()
|
|
|
+ public async Task<object> GetAreaTree()
|
|
|
{
|
|
|
var areaCode = _sessionContext.OrgAreaCode;
|
|
|
if (string.IsNullOrEmpty(areaCode))
|
|
|
areaCode = "511500";
|
|
|
if (areaCode == "511500")
|
|
|
{
|
|
|
- return await _systemAreaRepository.Queryable().OrderBy(x => x.Id).ToTreeAsync(x => x.Children, q => q.ParentId, "510000");
|
|
|
+ return await _systemAreaRepository.Queryable()
|
|
|
+ .Where(p => p.Id == "511500" || p.ParentId == "511500")
|
|
|
+ .Select(p => new
|
|
|
+ {
|
|
|
+ p.AreaName,
|
|
|
+ p.Id
|
|
|
+ })
|
|
|
+ .OrderBy(p => p.Id)
|
|
|
+ .ToListAsync();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- string parentId = "510000";
|
|
|
- var data = await _systemAreaRepository.GetAsync(p => p.Id == areaCode);
|
|
|
- if (data != null)
|
|
|
- parentId = data.ParentId;
|
|
|
- return await _systemAreaRepository.Queryable().Where(p => p.Id.StartsWith(areaCode)).OrderBy(x => x.Id).ToTreeAsync(x => x.Children, q => q.ParentId, parentId);
|
|
|
+ return await _systemAreaRepository.Queryable()
|
|
|
+ .Where(p => p.Id == _sessionContext.OrgAreaCode)
|
|
|
+ .Select(p => new
|
|
|
+ {
|
|
|
+ p.AreaName,
|
|
|
+ p.Id
|
|
|
+ })
|
|
|
+ .OrderBy(p => p.Id)
|
|
|
+ .ToListAsync();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -436,11 +470,20 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("event_classification_statistics")]
|
|
|
public async Task<object> GetEventClassificationStatisticsAsync(DateTime StartTime, DateTime EndTime, string Id, string AreaCode)
|
|
|
{
|
|
|
+ string areCodeText = "";
|
|
|
+ if (string.IsNullOrEmpty(AreaCode))
|
|
|
+ {
|
|
|
+ if (_sessionContext.OrgAreaCode != "511500")
|
|
|
+ areCodeText = _sessionContext.OrgAreaCode;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ areCodeText = AreaCode;
|
|
|
|
|
|
- var items = await _judicialComplaintsEventTypeRepository.Queryable()
|
|
|
- .LeftJoin<JudicialManagementOrders>((x, o) => o.EventTypeSpliceName != null && (x.EventTypeName == o.EventTypeSpliceName || o.EventTypeSpliceName.Contains(x.EventTypeName)))
|
|
|
+ var items = await _judicialComplaintsEventTypeRepository.Queryable()
|
|
|
+ .LeftJoin<JudicialManagementOrders>((x, o) => o.EventTypeSpliceName != null &&
|
|
|
+ (x.EventTypeName == o.EventTypeSpliceName || o.EventTypeSpliceName.Contains(x.EventTypeName)))
|
|
|
.Where((x, o) => o.CreationTime >= StartTime && o.CreationTime <= EndTime)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(AreaCode), (x, o) => o.AreaCode.StartsWith(AreaCode))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(areCodeText), (x, o) => o.AreaCode.StartsWith(areCodeText))
|
|
|
.Where((x, o) => x.ParentId == Id)
|
|
|
.GroupBy((x, o) => new { x.Id, x.EventTypeName })
|
|
|
.Select((x, o) => new
|
|
@@ -455,13 +498,15 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
var data = await _judicialManagementOrdersRepository.Queryable()
|
|
|
.Where(d => d.CreationTime >= StartTime && d.CreationTime <= EndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(areCodeText), p => p.AreaCode.StartsWith(areCodeText))
|
|
|
.GroupBy(d => d.Id)
|
|
|
.Select(d => new EventClassificationOrderCountDto
|
|
|
{
|
|
|
TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == true, 1, 0)),
|
|
|
TheClueIsNotTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == false, 1, 0)),
|
|
|
EnforcementOrder = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsEnforcementOrder.HasValue && d.IsEnforcementOrder.Value == true, 1, 0)),
|
|
|
- PassTheBuckOrder = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsPassTheBuckOrder, 1, 0))
|
|
|
+ PassTheBuckOrder = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsPassTheBuckOrder, 1, 0)),
|
|
|
+ ToBeVerified = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue == null, 1, 0)),
|
|
|
})
|
|
|
.ToListAsync();
|
|
|
|
|
@@ -471,6 +516,7 @@ namespace Hotline.Api.Controllers
|
|
|
TheClueIsNotTrue = data.Sum(x => x.TheClueIsNotTrue),
|
|
|
EnforcementOrder = data.Sum(x => x.EnforcementOrder),
|
|
|
PassTheBuckOrder = data.Sum(x => x.PassTheBuckOrder),
|
|
|
+ ToBeVerified = data.Sum(x => x.ToBeVerified)
|
|
|
};
|
|
|
|
|
|
return new { List = items, OrderCount = orderCount };
|
|
@@ -484,47 +530,86 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("event_classification_statistics_order_list")]
|
|
|
public async Task<PagedDto<EnforcementOrderListDto>> GetEventClassificationStatisticsOrderListAsync([FromQuery] QueryEventClassificationStatisticsDto dto)
|
|
|
{
|
|
|
- dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
|
|
|
+ var (total, items) = await _enforcementApplication.GetEventClassificationStatisticsOrderListAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
+ }
|
|
|
|
|
|
- var (total, items) = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .Where(d => d.CreationTime >= dto.StartTime && d.CreationTime <= dto.EndTime && d.EventTypeId != null)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.EventTypeId), d => d.EventTypeId.StartsWith(dto.EventTypeId))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode.StartsWith(dto.AreaCode))
|
|
|
- .OrderByDescending(d => d.CreationTime)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ /// <summary>
|
|
|
+ /// 事项分类统计--明细--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("event_classification_statistics_order_list_export")]
|
|
|
+ public async Task<FileStreamResult> GetEventClassificationStatisticsOrderListExportAsync([FromBody] ExportExcelDto<QueryEventClassificationStatisticsDto> dto)
|
|
|
+ {
|
|
|
+ var query = _enforcementApplication.GetEventClassificationStatisticsOrderListAsync(dto.QueryDto);
|
|
|
+ List<JudicialManagementOrders> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var dataDtos = _mapper.Map<ICollection<EnforcementOrderListDto>>(data);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = dataDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EnforcementOrderListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "事项分类统计明细数据");
|
|
|
|
|
|
- return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 执法部门办件统计
|
|
|
/// </summary>
|
|
|
- /// <param name="StartTime"></param>
|
|
|
- /// <param name="EndTime"></param>
|
|
|
+ /// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("enforcement_departmental_processing_statistics")]
|
|
|
- public async Task<object> GetDepartmentalProcessingStatisticsAsync(DateTime StartTime, DateTime EndTime)
|
|
|
+ public async Task<List<EmDepartmentalProcessingStatisticsDto>> GetDepartmentalProcessingStatisticsAsync([FromQuery] QueryDepartmentalProcessingStatisticsDto dto)
|
|
|
+ {
|
|
|
+ return await _enforcementApplication.GetDepartmentalProcessingStatisticsAsync(dto.StartTime, dto.EndTime).ToListAsync();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 执法部门办件统计--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("enforcement_departmental_processing_statistics_export")]
|
|
|
+ public async Task<FileStreamResult> GetDepartmentalProcessingStatisticsExportAsync([FromBody] ExportExcelDto<QueryDepartmentalProcessingStatisticsDto> dto)
|
|
|
{
|
|
|
- var data = await _enforcementOrdersHandlerRepository.Queryable()
|
|
|
- .LeftJoin<JudicialManagementOrders>((h, o) => h.OrderId == o.Id)
|
|
|
- .Where((x, o) => o.CreationTime >= StartTime && o.CreationTime <= EndTime)
|
|
|
- .GroupBy((x, o) => new
|
|
|
- {
|
|
|
- OrgCode = x.OrgCode,
|
|
|
- OrgName = x.OrgName
|
|
|
- })
|
|
|
- .Select((x, o) => new
|
|
|
- {
|
|
|
- OrgCode = x.OrgCode,
|
|
|
- OrgName = x.OrgName,
|
|
|
- CountNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.OrgCode != null, 1, 0)),
|
|
|
- TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsTheClueTrue.HasValue && o.IsTheClueTrue.Value == true, 1, 0)),
|
|
|
- TheClueIsNotTrue = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsTheClueTrue.HasValue && o.IsTheClueTrue.Value == false, 1, 0)),
|
|
|
- EnforcementOrder = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsEnforcementOrder.HasValue && o.IsEnforcementOrder.Value == true, 1, 0))
|
|
|
- })
|
|
|
- .ToListAsync();
|
|
|
-
|
|
|
- return data;
|
|
|
+ var list = await _enforcementApplication.GetDepartmentalProcessingStatisticsAsync(dto.QueryDto.StartTime, dto.QueryDto.EndTime).ToListAsync();
|
|
|
+
|
|
|
+ list.Add(new EmDepartmentalProcessingStatisticsDto
|
|
|
+ {
|
|
|
+ OrgCode = "",
|
|
|
+ OrgName = "合计",
|
|
|
+ CountNum = list.Sum(p => p.CountNum),
|
|
|
+ TheClueIsTrue = list.Sum(p => p.TheClueIsTrue),
|
|
|
+ TheClueIsNotTrue = list.Sum(p => p.TheClueIsNotTrue),
|
|
|
+ EnforcementOrder = list.Sum(p => p.EnforcementOrder)
|
|
|
+ });
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = list
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EmDepartmentalProcessingStatisticsDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "执法部门办件统计数据");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -535,25 +620,40 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("enforcement_departmental_processing_statistics_order_list")]
|
|
|
public async Task<PagedDto<EnforcementOrderListDto>> GetDepartmentalProcessingStatisticsOrderListAsync([FromQuery] QueryDepartmentalProcessingStatisticsDto dto)
|
|
|
{
|
|
|
- RefAsync<int> total = 0;
|
|
|
- var queryData = await _enforcementOrdersHandlerRepository.Queryable()
|
|
|
- .LeftJoin<JudicialManagementOrders>((h, o) => h.OrderId == o.Id)
|
|
|
- .Where((x, o) => o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime && o.Id != null)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode == "001", (x, o) => x.OrgCode == dto.OrgCode)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode != "001", (x, o) => x.OrgCode.StartsWith(dto.OrgCode))
|
|
|
- .WhereIF(dto.TheClueIsTrue == true, (x, o) => o.IsTheClueTrue == true)
|
|
|
- .WhereIF(dto.TheClueIsNotTrue == true, (x, o) => o.IsTheClueTrue == false)
|
|
|
- .WhereIF(dto.EnforcementOrder == true, (x, o) => o.IsEnforcementOrder == true)
|
|
|
- .OrderByDescending((x, o) => o.CreationTime)
|
|
|
- .Select((x, o) => new { o })
|
|
|
- .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- var dtos = queryData.Select(d =>
|
|
|
+ var (total, items) = await _enforcementApplication.GetDepartmentalProcessingStatisticsOrderListAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<EnforcementOrderListDto>(total, items);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 执法部门办件统计---明细---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("enforcement_departmental_processing_statistics_order_list_export")]
|
|
|
+ public async Task<FileStreamResult> GetDepartmentalProcessingStatisticsOrderListExportAsync([FromBody] ExportExcelDto<QueryDepartmentalProcessingStatisticsDto> dto)
|
|
|
+ {
|
|
|
+ var query = _enforcementApplication.GetDepartmentalProcessingStatisticsOrderListAsync(dto.QueryDto);
|
|
|
+ List<EnforcementOrderListDto> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
{
|
|
|
- var dto = _mapper.Map<EnforcementOrderListDto>(d.o);
|
|
|
- return dto;
|
|
|
- }).ToList();
|
|
|
- return new PagedDto<EnforcementOrderListDto>(total, dtos);
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = data
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EnforcementOrderListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "执法部门办件统计明细数据");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -561,32 +661,38 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("regional_classification_statistics")]
|
|
|
- public async Task<object> GetRegionalClassificationStatisticsAsync(DateTime StartTime, DateTime EndTime)
|
|
|
+ public async Task<object> GetRegionalClassificationStatisticsAsync([FromQuery] QueryRegionalClassificationStatisticsDto dto)
|
|
|
+ {
|
|
|
+ return await _enforcementApplication.GetRegionalClassificationStatisticsAsync(dto.StartTime, dto.EndTime).ToListAsync();
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 区域分类统计--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("regional_classification_statistics_export")]
|
|
|
+ public async Task<FileStreamResult> GetRegionalClassificationStatisticsExportAsync([FromBody] ExportExcelDto<QueryRegionalClassificationStatisticsDto> dto)
|
|
|
{
|
|
|
+ var list= await _enforcementApplication.GetRegionalClassificationStatisticsAsync(dto.QueryDto.StartTime, dto.QueryDto.EndTime).ToListAsync();
|
|
|
|
|
|
- var areaCode = _sessionContext.OrgAreaCode ?? "511500";
|
|
|
- var list = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .Where(x => x.CreationTime >= StartTime && x.CreationTime <= EndTime)
|
|
|
- .LeftJoin<SystemArea>((x, o) => x.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) == o.Id)
|
|
|
- .WhereIF(areaCode != "511500", (x, o) => x.AreaCode.StartsWith(areaCode))
|
|
|
- .GroupBy((x, o) => new
|
|
|
- {
|
|
|
- AreaCode = x.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
- o.AreaName,
|
|
|
- })
|
|
|
- .Select((x, o) => new
|
|
|
- {
|
|
|
- AreaCode = x.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
- AreaName = o.AreaName,
|
|
|
- OrderCountNum = SqlFunc.AggregateCount(x.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
|
|
|
- TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsTheClueTrue.HasValue && x.IsTheClueTrue.Value == true, 1, 0)),
|
|
|
- TheClueIsNotTrue = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsTheClueTrue.HasValue && x.IsTheClueTrue.Value == false, 1, 0)),
|
|
|
- EnforcementOrder = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder.Value == true, 1, 0))
|
|
|
- }).MergeTable()
|
|
|
- .Where(x => x.AreaCode != "519800" && x.AreaCode != "519900")
|
|
|
- .OrderByDescending(it => it.OrderCountNum)
|
|
|
- .ToListAsync();
|
|
|
- return list;
|
|
|
+ list.Add(new RegionalClassificationStatisticsDto()
|
|
|
+ {
|
|
|
+ AreaCode="",
|
|
|
+ AreaName = "总计",
|
|
|
+ OrderCountNum = list.Sum(x => x.OrderCountNum),
|
|
|
+ TheClueIsTrue = list.Sum(x => x.TheClueIsTrue),
|
|
|
+ TheClueIsNotTrue = list.Sum(x => x.TheClueIsNotTrue),
|
|
|
+ EnforcementOrder = list.Sum(x => x.EnforcementOrder)
|
|
|
+ });
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = list
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(RegionalClassificationStatisticsDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "部门满意度统计数据");
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -597,69 +703,53 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("regional_classification_statistics_order_list")]
|
|
|
public async Task<PagedDto<EnforcementOrderListDto>> GetRegionalClassificationStatisticsOrderListAsync([FromQuery] QueryRegionalClassificationStatisticsDto dto)
|
|
|
{
|
|
|
- var (total, items) = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .Where(d => d.CreationTime >= dto.StartTime && d.CreationTime <= dto.EndTime)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode.StartsWith(dto.AreaCode))
|
|
|
- .WhereIF(dto.TheClueIsTrue == true, d => d.IsTheClueTrue == true)
|
|
|
- .WhereIF(dto.TheClueIsNotTrue == true, d => d.IsTheClueTrue == false)
|
|
|
- .WhereIF(dto.EnforcementOrder == true, d => d.IsEnforcementOrder == true)
|
|
|
- .OrderByDescending(d => d.CreationTime)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
-
|
|
|
+ var (total, items) = await _enforcementApplication.GetRegionalClassificationStatisticsOrderListAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 区域分类统计---明细---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("regional_classification_statistics_order_list_export")]
|
|
|
+ public async Task<FileStreamResult> GetRegionalClassificationStatisticsOrderListExportAsync([FromBody] ExportExcelDto<QueryRegionalClassificationStatisticsDto> dto)
|
|
|
+ {
|
|
|
+ var query = _enforcementApplication.GetRegionalClassificationStatisticsOrderListAsync(dto.QueryDto);
|
|
|
+ List<JudicialManagementOrders> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var dataDtos = _mapper.Map<ICollection<EnforcementOrderListDto>>(data);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = dataDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EnforcementOrderListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "区域分类统计明细数据");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 部门满意度统计
|
|
|
/// </summary>
|
|
|
- /// <param name="StartTime"></param>
|
|
|
- /// <param name="EndTime"></param>
|
|
|
- /// <param name="TypeId">1:办件结果 2:办件态度</param>
|
|
|
+ /// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("enforcement_visit_org_satisfaction_statistics")]
|
|
|
- public async Task<object> GetVisitAndOrgSatisfactionStatisticsAsync(DateTime StartTime, DateTime EndTime, int TypeId)
|
|
|
+ public async Task<object> GetVisitAndOrgSatisfactionStatisticsAsync([FromQuery] QueryOrgSatisfactionStatisticsDto dto)
|
|
|
{
|
|
|
- EndTime = EndTime.AddDays(1).AddSeconds(-1);
|
|
|
-
|
|
|
- var list = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .LeftJoin<OrderVisit>((x, o) => x.Id == o.OrderId)
|
|
|
- .LeftJoin<OrderVisitDetail>((x, o, p) => o.Id == p.VisitId)
|
|
|
- .Where((x, o, p) => o.VisitTime >= StartTime && o.VisitTime <= EndTime && p.VisitTarget == EVisitTarget.Org
|
|
|
- && o.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(p.VisitOrgCode) && x.OrderSoure == EOrderSoure.Hotline)
|
|
|
- .GroupBy((x, o, p) => new
|
|
|
- {
|
|
|
- VisitOrgCode = p.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
|
|
|
- })
|
|
|
- .Select((x, o, p) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- {
|
|
|
- OrgCode = p.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
- TotalSumCount = SqlFunc.AggregateCount(p.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
|
|
|
- VerySatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "5", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "5", 1, 0))),//非常满意数
|
|
|
- SatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "4", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "4", 1, 0))), //满意数
|
|
|
- RegardedAsSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "-1", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "-1", 1, 0))),//视为满意
|
|
|
- DefaultSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "0", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "0", 1, 0))),//默认满意
|
|
|
- NoSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "2", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "2", 1, 0))),//不满意
|
|
|
- NoEvaluateCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "7", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "7", 1, 0))),//未做评价
|
|
|
- NoPutThroughCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgProcessingResults, "Key") == "6", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == "6", 1, 0))),//未接通
|
|
|
- })
|
|
|
- .MergeTable()
|
|
|
- .LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id)
|
|
|
- .Select((it, o) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- {
|
|
|
- OrgName = o.Name,
|
|
|
- OrgCode = it.OrgCode,
|
|
|
- OrgType = o.OrgType,
|
|
|
- TotalSumCount = it.TotalSumCount,
|
|
|
- VerySatisfiedCount = it.VerySatisfiedCount,//非常满意数
|
|
|
- SatisfiedCount = it.SatisfiedCount, //满意数
|
|
|
- RegardedAsSatisfiedCount = it.RegardedAsSatisfiedCount,//视为满意
|
|
|
- DefaultSatisfiedCount = it.DefaultSatisfiedCount,//默认满意
|
|
|
- NoSatisfiedCount = it.NoSatisfiedCount,//不满意
|
|
|
- NoEvaluateCount = it.NoEvaluateCount,//未做评价
|
|
|
- NoPutThroughCount = it.NoPutThroughCount,//未接通
|
|
|
- })
|
|
|
- .ToListAsync();
|
|
|
-
|
|
|
+ var list = await _enforcementApplication.GetVisitAndOrgSatisfactionStatisticsAsync(dto.StartTime, dto.EndTime, dto.TypeId).ToListAsync();
|
|
|
|
|
|
var sumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
{
|
|
@@ -674,10 +764,43 @@ namespace Hotline.Api.Controllers
|
|
|
NoPutThroughCount = list.Sum(x => x.NoPutThroughCount),
|
|
|
};
|
|
|
|
|
|
-
|
|
|
return new { DataList = list, SumModel = sumModel };
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 部门满意度统计--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("enforcement_visit_org_satisfaction_statistics_export")]
|
|
|
+ public async Task<object> GetVisitAndOrgSatisfactionStatisticsExportAsync([FromBody] ExportExcelDto<QueryOrgSatisfactionStatisticsDto> dto)
|
|
|
+ {
|
|
|
+ var list = await _enforcementApplication.GetVisitAndOrgSatisfactionStatisticsAsync(dto.QueryDto.StartTime, dto.QueryDto.EndTime, dto.QueryDto.TypeId).ToListAsync();
|
|
|
+
|
|
|
+ list.Add(new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgName = "总计",
|
|
|
+ TotalSumCount = list.Sum(x => x.TotalSumCount),
|
|
|
+ VerySatisfiedCount = list.Sum(x => x.VerySatisfiedCount),
|
|
|
+ SatisfiedCount = list.Sum(x => x.SatisfiedCount),
|
|
|
+ RegardedAsSatisfiedCount = list.Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
+ DefaultSatisfiedCount = list.Sum(x => x.DefaultSatisfiedCount),
|
|
|
+ NoSatisfiedCount = list.Sum(x => x.NoSatisfiedCount),
|
|
|
+ NoEvaluateCount = list.Sum(x => x.NoEvaluateCount),
|
|
|
+ NoPutThroughCount = list.Sum(x => x.NoPutThroughCount),
|
|
|
+ });
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = list
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(VisitAndOrgSatisfactionStatisticsDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "部门满意度统计数据");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 部门满意度统计---明细
|
|
|
/// </summary>
|
|
@@ -686,31 +809,39 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("enforcement_visit_org_satisfaction_statistics_order_list")]
|
|
|
public async Task<PagedDto<EnforcementOrgSatisfactionOrderListDto>> GetVisitAndOrgSatisfactionStatisticsOrderListAsync([FromQuery] QueryOrgSatisfactionStatisticsDto dto)
|
|
|
{
|
|
|
- RefAsync<int> total = 0;
|
|
|
- var queryData = await _judicialManagementOrdersRepository.Queryable()
|
|
|
- .LeftJoin<OrderVisit>((x, o) => x.Id == o.OrderId)
|
|
|
- .LeftJoin<OrderVisitDetail>((x, o, p) => o.Id == p.VisitId)
|
|
|
- .Where((x, o, p) => o.VisitTime >= dto.StartTime && o.VisitTime <= dto.EndTime && p.VisitTarget == EVisitTarget.Org && x.OrderSoure == EOrderSoure.Hotline)
|
|
|
- .Where((x, o, p) => o.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(p.VisitOrgCode))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode == "001", (x, o, p) => p.VisitOrgCode == dto.OrgCode)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.OrgCode != "001", (x, o, p) => p.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
- .WhereIF(dto.TypeId == 1, (x, o, p) => SqlFunc.JsonField(p.OrgProcessingResults, "Key") == dto.DateValue)
|
|
|
- .WhereIF(dto.TypeId == 2, (x, o, p) => SqlFunc.JsonField(p.OrgHandledAttitude, "Key") == dto.DateValue)
|
|
|
- .Select((x, o, p) => new
|
|
|
- {
|
|
|
- x,
|
|
|
- p.VisitId
|
|
|
- })
|
|
|
- .MergeTable()
|
|
|
- .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
|
|
|
+ var (total, items) = await _enforcementApplication.GetVisitAndOrgSatisfactionStatisticsOrderListAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<EnforcementOrgSatisfactionOrderListDto>(total, items);
|
|
|
+ }
|
|
|
|
|
|
- var dtos = queryData.Select(d =>
|
|
|
+ /// <summary>
|
|
|
+ /// 部门满意度统计---明细---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("enforcement_visit_org_satisfaction_statistics_order_list_export")]
|
|
|
+ public async Task<FileStreamResult> GetVisitAndOrgSatisfactionStatisticsOrderListExportAsync([FromBody] ExportExcelDto<QueryOrgSatisfactionStatisticsDto> dto)
|
|
|
+ {
|
|
|
+ var query = _enforcementApplication.GetVisitAndOrgSatisfactionStatisticsOrderListAsync(dto.QueryDto);
|
|
|
+ List<EnforcementOrgSatisfactionOrderListDto> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
{
|
|
|
- var dto = _mapper.Map<EnforcementOrgSatisfactionOrderListDto>(d);
|
|
|
- return dto;
|
|
|
- }).ToList();
|
|
|
- return new PagedDto<EnforcementOrgSatisfactionOrderListDto>(total, dtos);
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = data
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(EnforcementOrgSatisfactionOrderListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "部门满意度统计明细数据");
|
|
|
}
|
|
|
|
|
|
///// <summary>
|