using Infrastructure; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using OpenAuth.App; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.FormModule; using OpenAuth.App.FormScheme.Request; using OpenAuth.App.ServiceApp.DataMaintenance; using OpenAuth.App.ServiceApp.DataMaintenance.Request; using OpenAuth.Repository.Domain.DataMaintenance; using OpenAuth.WebApi.Model.CustomAttribute; using System.Data; using OpenAuth.App.CodeTable; using System.Threading.Tasks; namespace OpenAuth.WebApi.Controllers.ServiceControllers.DataMaintenance { /// /// 应用管理 /// [Route("api/[controller]/[action]")] [ApiController] public class ApplicationDataController : ControllerBase { readonly ApplicationManagementApp _app; public ApplicationDataController(ApplicationManagementApp app) { _app = app; } /// /// 查询应用列表 /// /// 目录或服务名称1 /// 是否只查询目录 /// [HttpGet] public async Task>> GetApplicationList(string name, int isCatalogue) { return await _app.GetApplicationList(name, isCatalogue); } /// /// 添加应用 /// /// [HttpPost] public async Task> AddApplication(ApplicationData app) { return await _app.Add(app); } /// /// 编辑应用 /// /// [HttpPost] public async Task> UpdateApplication(ApplicationData app) { return await _app.Update(app); } /// /// 删除应用 /// /// [HttpPost] public async Task> DeleteApplication(long id) { return await _app.Delete(id); } /// /// 获取数据库表名及注释 /// /// /// [HttpPost] public async Task> GetGeomTableList(PageReq req) { return await _app.GetGeomTableList(req); } /// /// 查询数据 /// /// /// [HttpPost] public async Task>>> GetDataList(TableDataReq tableDataReq) { var result = new Response>>(); try { result = await _app.GetDataList(tableDataReq); } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } /// /// 获取数据库表及视图字段 /// /// /// /// [HttpGet] public Response> GetTableColumnList(string tableName) { var result = new Response>(); try { result.Result = _app.GetTableAndViewColumnList(tableName); } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } #region 获取导出数据 /// /// 获取导出数据 /// /// 功能id /// id数据 /// 查询参数 /// 编号 /// [HttpPost] [AllowAnonymous] public async Task ExportExcel(TableDataReq tableDataReq) { //查询表头 var tableHeader = _app.GetTableAndViewColumnList(tableDataReq.TableName); List cl = new List(); foreach (var item in tableHeader) { ModuleColumn c = new ModuleColumn(); c.key = item.column_name.ToString(); c.value = item.description.ToString(); cl.Add(c); } var excelRes = await _app.ListToExcel(tableDataReq, cl); if (excelRes.Code == 200) { return File(excelRes.Result.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"{tableDataReq.TableCNName}.xls"); } else { } return Ok(); } /// /// 导出shp文件 /// /// /// [HttpPost] public async Task ExportShapefile(TableDataReq tableDataReq) { try { var tableHeader = _app.GetTableAndViewColumnList(tableDataReq.TableName); List cl = new List(); foreach (var item in tableHeader) { ModuleColumn c = new ModuleColumn(); c.key = item.column_name.ToString(); c.value = item.description.ToString(); cl.Add(c); } string shpFilePath = Path.Combine(Path.GetTempPath(), $"{tableDataReq.TableCNName}.shp"); string shpFilePathzip = Path.Combine(Path.GetTempPath(), $"{tableDataReq.TableCNName}.zip"); await _app.ExportShapefile(tableDataReq, shpFilePath, shpFilePathzip, cl); byte[] fileBytes = System.IO.File.ReadAllBytes(shpFilePathzip); return File(fileBytes, "application/octet-stream", $"{tableDataReq.TableCNName}.zip"); } catch (Exception ex) { return StatusCode(500, $"Internal server error: {ex.Message}"); } } /// /// 批量修改 /// /// /// [HttpPost] public async Task> UpdateBatch(UpdateBatchDataReq req) { var result = new Response(); try { return await _app.UpdateBatch(req); } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } #endregion } }