using Infrastructure; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using NPOI.HPSF; using OpenAuth.App.Interface; using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.App; using System.Text; using OpenAuth.App.DroneScreenDisplay; using OpenAuth.App.DroneScreenDisplay.Response; using OpenAuth.App.ServiceApp.Response; using OpenAuth.App.ServiceApp.DroneScreenDisplay.Response; using NPOI.SS.Formula.Functions; namespace OpenAuth.WebApi.Controllers { /// /// 无人机执法 大屏展示 /// [Route("api/[controller]/[action]")] [ApiController] public class DroneScreenDisplayController : ControllerBase { IConfiguration _configuration; DroneScreenDisplayApp _app; IAuth _auth; ILogger _logger; public DroneScreenDisplayController(IConfiguration configuration, DroneScreenDisplayApp app, IAuth auth, ILogger logger) { _configuration = configuration; _app = app; _auth = auth; _logger = logger; } /// /// 正式案件记录、最新上报案件 /// /// [HttpGet] public Response> LoadDroneCase(string streetid) { Response> response = new Response>(); try { response.Result = _app.LoadDroneCase(streetid); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 案件详情 /// /// /// [HttpGet] public async Task> GetCaseInfo(string id) { Response response = new Response(); try { response = await _app.GetCaseInfo(id); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 处理详情 /// /// /// [HttpGet] public Response GetDroneCaseDeal(string id, string caseid) { Response response = new Response(); try { response.Result = _app.GetDroneCaseDeal(id, caseid); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 最新案件处理 /// /// [HttpGet] public Response LoadDroneCaseDeal(int? today, string areaid) { Response response = new Response(); try { response.Result = _app.LoadDroneCaseDeal(today, areaid); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 上报和处理案件数量 /// /// 县区id /// [HttpGet] public Response GetTodayReportAndDealCount(string streetid) { Response response = new Response(); try { response.Result = _app.GetTodayReportAndDealCount(streetid); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 案件数量统计 /// /// [HttpGet] public Response GetDroneCaseCount() { Response response = new Response(); try { response.Result = _app.GetDroneCaseCount(); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 违建分类统计 /// /// [HttpGet] public Response GetDroneTypeCount(string areaid) { Response response = new Response(); try { response.Result = _app.GetDroneTypeCount(areaid); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 按乡镇统计 /// /// 行政区划id /// [HttpGet] public Response GetDroneOrgCount(string areaid) { Response response = new Response(); try { response.Result = _app.GetDroneOrgCount(areaid); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 案件线索统计-费城街道工作区 /// /// [HttpGet] public Response GetDroneCityOrgCount() { Response response = new Response(); try { response.Result = _app.GetDroneCityOrgCount(); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 数据统计,按天统计图表 /// /// [HttpGet] public Response GetDroneCaseDateCount(string type, string streetId) { Response response = new Response(); try { response.Result = _app.GetDroneCaseDateCount(type, streetId); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 查询案件的GeoJson、地图展示上报案件 /// /// [HttpGet] public Response GetDroneGeoJson() { Response response = new Response(); try { response.Result = _app.GetDroneGeoJson(); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 获取无人机的位置 /// /// [HttpGet] [AllowAnonymous] public object GetDroneLocationPoints() { Response response = new Response(); try { response.Result = _app.GetDroneLocationPoints(); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 获取无人机的历史轨迹 /// /// 开始时间 /// 结束时间 /// 人员Id /// [HttpGet] [AllowAnonymous] public object GetDroneLocationPointsHistory(DateTime startTime, DateTime endTime, string userId) { Response response = new Response(); try { response.Result = _app.GetDroneLocationPointsHistory(startTime, endTime, userId); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 无人机飞行 假数据 /// /// [HttpGet] public Response GetDroneLocationPointsFalse() { Response response = new Response(); try { response.Result = _app.GetDroneLocationPointsFalse(); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 获取无人机的在线率 /// /// [HttpGet] public Response GetDroneOnlinePercent() { Response response = new Response(); try { response.Result = _app.GetDroneOnlinePercent(); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 统计图表已完成未完成数量 /// /// [HttpGet] public Response GetDroneCaseCompleteCount(string areaid) { Response res = new Response(); try { res.Result = _app.GetDroneCaseCompleteCount(areaid); } catch (Exception ex) { res.Code = 500; res.Message = ex.InnerException?.Message ?? ex.Message; } return res; } ///// ///// 切片 ///// ///// ///// ///// ///// //[AllowAnonymous] //[HttpGet] //public IActionResult getVectorTile(int x, int y, int z) //{ // List lons = Util.getLon(x, z); // List lats = Util.getLat(y, z); // double lonmin = lons[0]; // double lonmax = lons[1]; // double latmin = lats[1]; // double latmax = lats[0]; // StringBuilder sql = new StringBuilder(); // sql.AppendFormat($" SELECT ST_AsMVT(tile, 'lines', 4096, 'geom') tile FROM (SELECT 'shp_drone_community', ST_AsMVTGeom(geom, ST_Transform(ST_MakeEnvelope({lonmin},{latmin},{lonmax},{latmax}, 4326),4326),4096, 256, true) AS geom FROM public.shp_drone_community ) AS tile"); // using (var db = SqlSugarOper.GetInstance(_configuration)) // { // var dataTable = db.Ado.GetDataTable(sql.ToString()); // byte[] result = (Byte[])dataTable.Rows[0]["tile"]; // return File(result, "application/octet-stream"); // } //} /// /// 是否是费城街道 /// /// [HttpGet] public Response IsFeiChengStreet() { var res = new Response(); try { res.Result = _app.IsFeiChengStreet(); } catch (Exception ex) { res.Code = 500; res.Message = ex.InnerException?.Message ?? ex.Message; } return res; } #region 新版大屏 /// /// 总数与面积统计 /// /// 地区id /// 案件类型 /// [HttpGet] public Response GetTotalAndArea(string countyid, string type) { Response response = new Response(); try { response.Result = _app.GetTotalAndArea(countyid, type); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 右上角统计 /// /// /// /// [HttpGet] public Response GetTotalAndAreaByType(string countyid, string type) { Response response = new Response(); try { response.Result = _app.GetTotalAndAreaByType(countyid, type); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 图斑汇总统计 /// /// 县区 /// /// [HttpGet] public Response> GetTuBanSummary(string countyid, string type) { Response> response = new Response>(); try { response = _app.GetTuBanSummary(countyid, type); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 获取图斑图例 舍弃 /// /// /// /// [NonAction] [HttpGet] public Response>> GetTuBanInfoByType(string countyid, string type) { Response>> response = new Response>>(); try { response = _app.GetTuBanInfoByType(countyid, type); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 趋势统计 /// /// 时间类型(0按天统计,1按月统计) /// 开始时间(不传统计10天或者10个月) /// 结束时间(可以不传) /// 县区id /// 类型 /// [HttpGet] public Response> GetTrendData(int datatype, string begindate, string enddate, string countyid, string type) { Response> response = new Response>(); try { response = _app.GetTrendData(datatype, begindate, enddate, countyid, type); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #endregion #region 新版大屏 2.0 /// /// 新版大屏 右上角柱状图 /// /// 类型1-下发,2-核实,3-整改 /// 全部-0 /// [HttpGet] public Response> CaseOffenceEcharts(int type, DateTime month) { Response> response = new Response>(); try { response = _app.CaseOffenceEcharts(type, month); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 新版右上角趋势图 /// /// 时间类型(0按天统计,1按月统计) /// 开始时间(不传统计10天或者10个月) /// 结束时间(可以不传) /// 县区id /// 类型1-下发,2-核实,3-整改 /// [HttpGet] public Response> GetTrendEchartsData(int datatype, string begindate, string enddate, string countyid, int type) { Response> response = new Response>(); try { response = _app.GetTrendEchartsData(datatype, begindate, enddate, countyid, type); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 数据分析 /// /// 县区id,全部不传 /// 月份,必传 /// [HttpGet] public Response GetAnalysisData(string countyid, DateTime month) { Response response = new Response(); try { response = _app.GetAnalysisData(countyid, month); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #endregion /// /// 下发图斑 /// /// 月份,必传 /// [HttpGet] public Response CaseOffenceXiaFa(DateTime month) { Response response = new Response(); try { response = _app.CaseOffenceXiaFa( month); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 核实新增 /// /// 月份,必传 /// [HttpGet] public Response CaseOffenceCheckAdd(DateTime month) { Response response = new Response(); try { response = _app.CaseOffenceCheckAdd( month); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 整改剩余 /// /// 月份,必传 /// [HttpGet] public Response CaseOffenceModifyRemain(DateTime month) { Response response = new Response(); try { response = _app.CaseOffenceModifyRemain( month); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } } }