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
}
}