using Infrastructure; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using NetTopologySuite.Features; using NetTopologySuite.Geometries; using NetTopologySuite.IO; using OpenAuth.App.FormModule; using OpenAuth.App.Request; using OpenAuth.App.ServiceApp; using OpenAuth.App.ServiceApp.DroneCaseInfo; using OpenAuth.App.ServiceApp.DroneCaseInfo.Request; using OpenAuth.App.ServiceApp.DroneCaseInfo.Response; using OpenAuth.App.ServiceApp.Jobs; using OpenAuth.App.ServiceApp.Request; using OpenAuth.App.ServiceApp.Response; using OpenAuth.Repository.Domain; using System.IO.Compression; using System.Text; namespace OpenAuth.WebApi.Controllers.ServiceControllers; /// /// 工作管理 /// [Route("api/[controller]/[action]")] [ApiController] class DroneCaseInfoMineralsController : ControllerBase { private readonly DroneCaseInfoMineralsApp _app; private readonly CloudQueryTask _task; private readonly CloudQueryTimeTask _land; private readonly CloudQueryScreenshotTask _shot; public DroneCaseInfoMineralsController(DroneCaseInfoMineralsApp app, CloudQueryTask task, CloudQueryTimeTask land, CloudQueryScreenshotTask shot) { _app = app; _task = task; _land = land; _shot = shot; } /// /// 案件详情 /// /// /// [HttpGet] public async Task> GetCaseInfoById(string id) { var response = new Response(); try { return await _app.GetCaseInfoById(id); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #region 工作管理 // // handle_status_id 1-待填报, 2-待整改, 3-待县级审核, // 4-待市级审核 5-待查处 6. 查处待县级审核 7. 查处待市级审核 // 8. 查处后待整改 9. 整改后待县级审核 10. 整改后待市级审核 99-已归档 // 返回字段 县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积 // todo 关于驳回后违法不违法是否需要判断 图斑调整后,案件是否需要查询 /// /// 图斑调整 /// /// /// 查询待填报图斑 [HttpGet] [Obsolete] public async Task>>> LoadModifyingTaskList([FromQuery] MineralsTaskListReq req) { return await _app.LoadModifyingTaskList(req); } /// /// 图斑填报 /// /// /// 查询待填报,整改的图斑 [HttpGet] public async Task>>> LoadReportingTaskList([FromQuery] MineralsTaskListReq req) { return await _app.LoadReportingTaskList(req); } /// /// 填报审核 /// /// /// 填报及违法整改之后的审核(审核有handle_status_id 3-县级审核, 4-市级审核) [HttpGet] public async Task>>> LoadReportingAuditTaskList([FromQuery] MineralsTaskListReq req) { return await _app.LoadReportingAuditTaskList(req); } /// /// 图斑查处 /// /// /// [HttpGet] public async Task>>> LoadExaminingTaskList([FromQuery] MineralsTaskListReq req) { return await _app.LoadExaminingTaskList(req); } /// /// 查处审核 /// /// /// [HttpGet] [Obsolete(message:"矿产专题已不使用")] public async Task>>> LoadExaminingAuditTaskList([FromQuery] MineralsTaskListReq req) { return await _app.LoadExaminingAuditTaskList(req); } /// /// 图斑整改 /// /// /// [HttpGet] public async Task>>> LoadRectifyingTaskList([FromQuery] MineralsTaskListReq req) { return await _app.LoadRectifyingTaskList(req); } /// /// 整改审核 /// /// /// [HttpGet] public async Task>>> LoadRectifyingAuditTaskList( [FromQuery] MineralsTaskListReq req) { return await _app.LoadRectifyingAuditTaskList(req); } #region 图斑收藏 /// /// 图斑收藏 /// /// /// [HttpPost] public async Task> AddTaskFavorite([FromBody] DroneTaskFavorite model) { Response response = new Response(); try { response = await _app.AddTaskFavorite(model); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 图斑取消收藏 /// /// /// [HttpPost] public async Task> CancelTaskFavorite([FromBody] string id) { Response response = new Response(); try { response = await _app.CancelTaskFavorite(id); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } #endregion #endregion /// /// 图斑列表 /// /// /// [HttpGet] public async Task>>> LoadCaseInfoMineralsTuBanList( [FromQuery] CaseInfoMineralsTuBanReq req) { return await _app.LoadCaseInfoMineralsTuBanList(req); } #region 统计台账 /// /// 开采台账 /// /// /// [HttpGet] public async Task>>> LoadMineralsLedger([FromQuery] QueryCaseOffencetReq req) { return await _app.LoadMineralsLedger(req); } /// /// 导出开采台账 /// /// /// [HttpPost] public async Task ExprotMineralsLedger([FromQuery] QueryCaseOffencetReq req) { var res = new Response(); // 获取列表数据 Response>> response = await _app.LoadMineralsLedger(req); if (response.Code != 200) { res.Code = response.Code; res.Message = "获取数据失败"; return Ok(res); } // 获取模板数据 List headers = GetHeaders(); // 导出Excel var excelRes = _app.ListToExcelMineralsLedger(response.Result.Items, headers); if (excelRes.Code == 200) { return File(excelRes.Result.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"开采台账{DateTime.Now:yyyyMMddHHmmss}.xls"); } else { res.Code = excelRes.Code; res.Message = "导出失败"; } return Ok(res); } private List GetHeaders() { var headers = new List { new() { key = "xuhao", value = "序号" }, new() { key = "syear_base", value = "年" }, new() { key = "xiafatime_base", value = "接收时间" }, new() { key = "tubannum_base", value = "编号" }, new() { key = "laiyuan_base", value = "线索来源" }, new() { key = "miaoshu_base", value = "线索描述" }, new() { key = "weizhixianname_base", value = "县区" }, new() { key = "weizhizhenname_base", value = "乡镇" }, new() { key = "weizhicunname_base", value = "村居" }, new() { key = "kaicaizhuti_kcfill", value = "开采主体" }, new() { key = "zhutitype_kcfill", value = "主体类型" }, new() { key = "fashentime_kcfill", value = "违法行为发生时间" }, new() { key = "endtime_kcfill", value = "违法行为结束时间" }, new() { key = "kuangzhong_kcfill", value = "矿种" }, new() { key = "kaicaiarea_kcfill", value = "开采面积" }, new() { key = "fangliang_kcfill", value = "方量" }, new() { key = "chafengliang_kcfill", value = "采出的矿产品查封方量" }, new() { key = "caichujiazhi_kcfill", value = "采出的矿产品价值" }, new() { key = "hefaqingxing_kcfill", value = "是否村民自采自用" }, new() { key = "ishedaocaisha_kcfill", value = "是否河道采砂" }, new() { key = "hefapanding_fill", value = "是否非法采矿行为" }, new() { key = "islian_punish", value = "是否符合立案条件" }, new() { key = "isnewadd_kcfill", value = "是否新增" }, new() { key = "wefatype_kcfill", value = "违法类型" }, new() { key = "iszhongda_kcfill", value = "是否重大典型问题" }, new() { key = "iszhongdian_kcfill", value = "是否位于重点敏感区域" }, new() { key = "isshexing", value = "是否涉刑" }, new() { key = "tianbaoren_fill", value = "核查人员名单" }, new() { key = "xianshenheren_fill", value = "审核人员名单" }, new() { key = "chulishixian_base", value = "办理时间限定" }, new() { key = "shuoming_fill", value = "是否提交核查报告" }, }; return headers; } /// /// 加工台账 /// /// /// [HttpGet] public async Task>>> LoadMineralsProcess([FromQuery] QueryCaseOffencetReq req) { return await _app.LoadMineralsProcess(req); } /// /// 导出加工台账 /// /// /// [HttpPost] public async Task ExprotMineralsProcess([FromQuery] QueryCaseOffencetReq req) { var res = new Response(); // 获取列表数据 Response>> response = await _app.LoadMineralsProcess(req); if (response.Code != 200) { res.Code = response.Code; res.Message = "获取数据失败"; return Ok(res); } // 获取模板数据 List headers = GetProcessHeaders(); // 导出Excel var excelRes = _app.ListToExcelMineralsProcess(response.Result.Items, headers); if (excelRes.Code == 200) { return File(excelRes.Result.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"加工台账{DateTime.Now:yyyyMMddHHmmss}.xls"); } else { res.Code = excelRes.Code; res.Message = "导出失败"; } return Ok(res); } private List GetProcessHeaders() { var headers = new List { new() { key = "xuhao", value = "序号" }, new() { key = "syear_base", value = "年" }, new() { key = "xiafatime_base", value = "接收时间" }, new() { key = "tubannum_base", value = "编号" }, new() { key = "laiyuan_base", value = "线索来源" }, new() { key = "miaoshu_base", value = "线索描述" }, new() { key = "weizhixianname_base", value = "县区" }, new() { key = "weizhizhenname_base", value = "乡镇" }, new() { key = "weizhicunname_base", value = "村居" }, new() { key = "danweiname_jgzhg", value = "开采主体" }, new() { key = "weifatype_jgfill", value = "违法类型" }, new() { key = "zhenggaitype_jgzhg", value = "整改类型" }, new() { key = "tianbaoren_fill", value = "核查人员名单" }, new() { key = "xianshenheren_fill", value = "审核人员名单" }, new() { key = "chulishixian_base", value = "办理时间限定" }, new() { key = "shuoming_fill", value = "是否提交核查报告" }, }; return headers; } #endregion /// /// 图斑列表excel导出 /// /// /// [HttpPost] public IActionResult ExportCaseInfoMineralsTuBanList([FromQuery] CaseInfoMineralsTuBanReq req) { var res = new Response(); //获取列表数 Response> response = _app.LoadCaseInfoMineralsExportTuBanList(req); //获取模板数据 List headers = new List(); ModuleColumn m01 = new ModuleColumn(); m01.key = "xuhao"; m01.value = "序号"; headers.Add(m01); ModuleColumn m1 = new ModuleColumn(); m1.key = "syear_base"; m1.value = "年度"; headers.Add(m1); ModuleColumn m411 = new ModuleColumn(); m411.key = "tubannum_base"; m411.value = "图斑编号"; headers.Add(m411); ModuleColumn m2 = new ModuleColumn(); m2.key = "weizhixianname_base"; m2.value = "县区名称"; headers.Add(m2); ModuleColumn m3 = new ModuleColumn(); m3.key = "weizhizhenname_base"; m3.value = "乡镇名称"; headers.Add(m3); ModuleColumn m31 = new ModuleColumn(); m31.key = "weizhicunname_base"; m31.value = "社区/村名称"; headers.Add(m31); ModuleColumn m4 = new ModuleColumn(); m4.key = "type_base"; m4.value = "图斑类型"; headers.Add(m4); ModuleColumn m41 = new ModuleColumn(); m41.key = "kuangzhong_kcfill"; m41.value = "矿种"; headers.Add(m41); ModuleColumn m5 = new ModuleColumn(); m5.key = "shuoming_fill"; m5.value = "图斑变化情况说明"; headers.Add(m5); ModuleColumn m6 = new ModuleColumn(); m6.key = "zhongdianname_base"; m6.value = "所属重点矿区名称"; headers.Add(m6); ModuleColumn m711 = new ModuleColumn(); m711.key = "ziranbaohuname_base"; m711.value = "所在国建自然保护区名称"; headers.Add(m711); ModuleColumn m7 = new ModuleColumn(); m7.key = "weifaarea_base"; m7.value = "图斑面积"; headers.Add(m7); ModuleColumn m71 = new ModuleColumn(); m71.key = "jbntarea_base"; m71.value = "耕地面积"; headers.Add(m71); ModuleColumn m8 = new ModuleColumn(); m8.key = "kaicaiarea_kcfill"; m8.value = "违法开采面积"; headers.Add(m8); ModuleColumn m9 = new ModuleColumn(); m9.key = "weifaarea_punish"; m9.value = "违法占地面积"; headers.Add(m9); ModuleColumn m111 = new ModuleColumn(); m111.key = "jieshou_people"; m111.value = "是否持续违法"; headers.Add(m111); ModuleColumn m121 = new ModuleColumn(); m121.key = "status_base"; m121.value = "当前状态"; headers.Add(m121); ModuleColumn m11 = new ModuleColumn(); m11.key = "hefapanding_fill"; m11.value = "判定结果"; headers.Add(m11); ModuleColumn m12 = new ModuleColumn(); m12.key = "xiafatime_base"; m12.value = "下发时间"; headers.Add(m12); ModuleColumn m13 = new ModuleColumn(); m13.key = "kaicaizhuti_kcfill"; m13.value = "项目主体"; headers.Add(m13); ModuleColumn m14 = new ModuleColumn(); m14.key = "wefatype_kcfill"; m14.value = "开采违法类型"; headers.Add(m14); ModuleColumn m221 = new ModuleColumn(); m221.key = "weifatype_jgfill"; m221.value = "加工违法类型"; headers.Add(m221); ModuleColumn m131 = new ModuleColumn(); m131.key = "zhenggaitype_jgzhg"; m131.value = "整改措施"; headers.Add(m131); ModuleColumn m141 = new ModuleColumn(); m141.key = "chulishixian_base"; m141.value = "处理时限"; headers.Add(m141); /* ModuleColumn m10 = new ModuleColumn(); m10.key = "measureName"; m10.value = "整改措施"; headers.Add(m10); ModuleColumn m15 = new ModuleColumn(); m15.key = "transactor_name"; m15.value = "办理人"; headers.Add(m15); ModuleColumn m151 = new ModuleColumn(); m151.key = "transact_time"; m151.value = "办理时间"; headers.Add(m151); ModuleColumn m152 = new ModuleColumn(); m152.key = "remark"; m152.value = "备注"; headers.Add(m152); ModuleColumn m23 = new ModuleColumn(); m23.key = "xjshenhejieguo"; m23.value = "县级审核结果"; headers.Add(m23); ModuleColumn m24 = new ModuleColumn(); m24.key = "xianjiyijian"; m24.value = "县级审核意见"; headers.Add(m24); ModuleColumn m25 = new ModuleColumn(); m25.key = "verifyuser"; m25.value = "县级审核人"; headers.Add(m25); ModuleColumn m26 = new ModuleColumn(); m26.key = "verifytime"; m26.value = "县级审核时间"; headers.Add(m26); ModuleColumn m27 = new ModuleColumn(); m27.key = "sjshenhejieguo"; m27.value = "市级审核结果"; headers.Add(m27); ModuleColumn m28 = new ModuleColumn(); m28.key = "shijiyijian"; m28.value = "市级审核意见"; headers.Add(m28); ModuleColumn m29 = new ModuleColumn(); m29.key = "hexiaoren"; m29.value = "市级审核人"; headers.Add(m29); ModuleColumn m30 = new ModuleColumn(); m30.key = "hexiaotime"; m30.value = "市级审核时间"; headers.Add(m30);*/ var excelRes = _app.ListToExcelTuban(response.Result, headers); if (excelRes.Code == 200) { return File(excelRes.Result.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "数据导出" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"); } else { res.Code = excelRes.Code; res.Message = "导出失败"; } return Ok(res); } /// /// 导出非法采矿shp文件 /// /// /// [HttpPost] public IActionResult ExportIllegalCaiKuangShapefile([FromQuery] CaseInfoMineralsTuBanReq req) { try { string shpFilePath = Path.Combine(Path.GetTempPath(), $"图斑信息{DateTime.Now:yyyyMMddHHmmss}.shp"); string shpFilePathzip = Path.Combine(Path.GetTempPath(), $"图斑信息{DateTime.Now:yyyyMMddHHmmss}.zip"); _app.ExportIllegalCaiKuangShapefile(req, shpFilePath, shpFilePathzip); byte[] fileBytes = System.IO.File.ReadAllBytes(shpFilePathzip); return File(fileBytes, "application/octet-stream", $"图斑信息{DateTime.Now:yyyyMMddHHmmss}.zip"); } catch (Exception ex) { return StatusCode(500, $"Internal server error: {ex.Message}"); } } [HttpGet] public async Task>> LoadMyUncompletedKuangChanTask([FromQuery] MineralsTaskListReq req) { return await _app.LoadMyUncompletedKuangChanTask(req); } [HttpGet] public async Task>> LoadAllKuangChanTask([FromQuery] MineralsTaskListReq req) { return await _app.LoadAllKuangChanTask(req); } /// /// 图斑调整 /// /// /// [HttpGet] public async Task>>> LoadTasklList([FromQuery] TaskListReq req) { return await _app.LoadTaskList(req); } [HttpPost] public Response UpdateDroneCaseInfo(DronCaseSingleCityUpdateReq req) { Response response = new Response(); try { _app.UpdateDroneCaseInfo(req); response.Result = "修改成功"; } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 案件还原合并 /// /// /// [HttpPost] public async Task> CaseRecover([FromBody] CaseRecoverReq req) { Response response = new Response(); try { return await _app.CaseRecover(req); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } [AllowAnonymous] [HttpGet] public async void test() { await _task.Execute1(); } [AllowAnonymous] [HttpGet] public async void test1() { await _land.Execute1(); } [AllowAnonymous] [HttpGet] public async void test2() { await _shot.Execute1(); } /// /// 关闭案件--矿产专题 /// /// /// [HttpPost] public async Task> CloseMineralCaseInfo(CloseCaseInfoReq req) { Response response = new Response(); try { response = await _app.CloseMineralCaseInfo(req.id,req.closereason); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 案件信息列表 /// /// /// [HttpGet] public async Task>>> LoadCaseInfoCheckTuBanList([FromQuery] CaseInfoTypeName req) { return await _app.LoadCaseInfoCheckTuBanList(req); } /// /// 矿产下发待审核shape导出 /// /// /// [HttpPost] public IActionResult ExportApprovalCaseInfoShapefile([FromQuery] CaseInfoTypeName req ) { try { string shpFilePath = Path.Combine(Path.GetTempPath(), $"图斑信息{DateTime.Now:yyyyMMddHHmmss}.shp"); string shpFilePathZip = Path.Combine(Path.GetTempPath(), $"图斑信息{DateTime.Now:yyyyMMddHHmmss}.zip"); _app.ExportApprovalCaseInfoShapefile(req,shpFilePath, shpFilePathZip); byte[] fileBytes = System.IO.File.ReadAllBytes(shpFilePathZip); return File(fileBytes, "application/octet-stream", $"图斑信息{DateTime.Now:yyyyMMddHHmmss}.zip"); } catch (Exception ex) { return StatusCode(500, $"Internal server error: {ex.Message}"); } } #region 采矿统计表 /// /// 采矿汇总表 /// /// /// /// [HttpGet] public Response> CaseOffenceMinerals(DateTime startTime, DateTime endTime) { Response> response = new Response>(); try { response = _app.CaseMineralsForExcel(startTime, endTime); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 导出汇总表 /// /// /// /// [HttpPost] public IActionResult CaseOfMineralsToExcel(DateTime startTime, DateTime endTime) { var res = new Response(); var excelRes = _app.CaseOfMineralsToExcel(startTime, endTime); if (excelRes.Code == 200) { return File(excelRes.Result.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "汇总表.xls"); } else { res.Code = excelRes.Code; res.Message = excelRes.Message; } return Ok(res); } #endregion #region 采矿统计表 /// /// 采矿汇总表 /// /// /// /// [HttpGet] public Response> CaseOffenceMineralsNew(DateTime startTime, DateTime endTime,string tubanlaiyuan) { Response> response = new Response>(); try { response = _app.CaseMineralsForExcelNew(startTime, endTime,tubanlaiyuan); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 导出汇总表 /// /// /// /// [HttpPost] public IActionResult CaseOfMineralsToExcelNew(DateTime startTime, DateTime endTime,string tubanlaiyuan) { var res = new Response(); var excelRes = _app.CaseOfMineralsToExcelNew(startTime, endTime,tubanlaiyuan); if (excelRes.Code == 200) { return File(excelRes.Result.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "汇总表.xls"); } else { res.Code = excelRes.Code; res.Message = excelRes.Message; } return Ok(res); } #endregion /// /// 案件详情 /// /// /// [HttpGet] public async Task> GetCaseInfo(string id) { var response = new Response(); try { return await _app.GetCaseInfo(id); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } }