Browse Source

修改司法工单按照部门区域查询

tangjiang 11 months ago
parent
commit
a24ac0806a
1 changed files with 36 additions and 3 deletions
  1. 36 3
      src/Hotline.Api/Controllers/EnforcementOrderController.cs

+ 36 - 3
src/Hotline.Api/Controllers/EnforcementOrderController.cs

@@ -30,6 +30,7 @@ namespace Hotline.Api.Controllers
         private readonly ISystemDicDataCacheManager _sysDicDataCacheManager;
         private readonly IRepository<SystemOrganize> _systemOrganizeRepository;
         private readonly ISessionContext _sessionContext;
+        private readonly IRepository<SystemArea> _systemAreaRepository;
 
         /// <summary>
         /// 
@@ -37,11 +38,12 @@ namespace Hotline.Api.Controllers
         /// <param name="enforcementOrdersRepository"></param>
         /// <param name="judicialComplaintsEventTypeRepository"></param>
         /// <param name="enforcementHotspotRepository"></param>
-        /// <param name="mapper"></param> 
+        /// <param name="mapper"></param>
         /// <param name="workflowApplication"></param>
         /// <param name="sysDicDataCacheManager"></param>
         /// <param name="systemOrganizeRepository"></param>
         /// <param name="sessionContext"></param>
+        /// <param name="systemAreaRepository"></param>
         public EnforcementOrderController(IRepository<EnforcementOrders> enforcementOrdersRepository,
          IRepository<JudicialComplaintsEventType> judicialComplaintsEventTypeRepository,
          IRepository<EnforcementHotspot> enforcementHotspotRepository,
@@ -49,7 +51,9 @@ namespace Hotline.Api.Controllers
          IWorkflowApplication workflowApplication,
          ISystemDicDataCacheManager sysDicDataCacheManager,
          IRepository<SystemOrganize> systemOrganizeRepository,
-         ISessionContext sessionContext)
+         ISessionContext sessionContext,
+         IRepository<SystemArea> systemAreaRepository
+         )
         {
             _enforcementOrdersRepository = enforcementOrdersRepository;
             _judicialComplaintsEventTypeRepository = judicialComplaintsEventTypeRepository;
@@ -59,6 +63,7 @@ namespace Hotline.Api.Controllers
             _sysDicDataCacheManager = sysDicDataCacheManager;
             _systemOrganizeRepository = systemOrganizeRepository;
             _sessionContext = sessionContext;
+            _systemAreaRepository = systemAreaRepository;
         }
 
         /// <summary>
@@ -69,9 +74,12 @@ namespace Hotline.Api.Controllers
         [HttpGet("getorderlist")]
         public async Task<PagedDto<EnforcementOrderListDto>> GetOrderList([FromQuery] QueryEnforcementOrderDto dto)
         {
+            var areaCode = _sessionContext.OrgAreaCode ?? "511500";
+
             var (total, items) = await _enforcementOrdersRepository.Queryable()
            .Includes(x => x.Order)
            .Where(d => d.Order.Id != null)
+           .WhereIF(areaCode != "511500", d => d.Order.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)//线索是否属实
@@ -156,6 +164,30 @@ namespace Hotline.Api.Controllers
             return rsp;
         }
 
+        /// <summary>
+        /// 获取省市区树形
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("area/tree")]
+        public async Task<List<SystemArea>> 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");
+            }
+            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);
+            }
+        }
+
         /// <summary>
         /// 线索核实  
         /// </summary>
@@ -408,13 +440,14 @@ namespace Hotline.Api.Controllers
         public async Task<object> GetRegionalClassificationStatisticsAsync(DateTime StartDate, DateTime EndDate)
         {
             EndDate = EndDate.AddDays(1).AddSeconds(-1);
-
+            var areaCode = _sessionContext.OrgAreaCode ?? "511500";
             var list = await _enforcementOrdersRepository.Queryable()
                .Includes(x => x.Order)
                .Where(x => x.Order.Id != null)
                .Where(x => x.Order.StartTime >= StartDate && x.Order.StartTime <= EndDate)
                .LeftJoin<SystemArea>((x, o) => x.Order.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) == o.Id)
                .Where((x, o) => x.Order.Status >= EOrderStatus.Filed)
+               .WhereIF(areaCode != "511500", (x, o) => x.Order.AreaCode.StartsWith(areaCode))
                .GroupBy((x, o) => new
                {
                    AreaCode = x.Order.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),