@ -1,4 +1,5 @@
using DocumentFormat.OpenXml.Wordprocessing ;
using DocumentFormat.OpenXml.Office2010.Excel ;
using DocumentFormat.OpenXml.Wordprocessing ;
using Infrastructure ;
using Infrastructure.CloudSdk.minio ;
using Infrastructure.CloudSdk.wayline ;
@ -6,6 +7,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration ;
using Newtonsoft.Json ;
using OpenAuth.App.BaseApp.Base ;
using OpenAuth.App.BasicQueryService ;
using OpenAuth.App.Interface ;
using OpenAuth.App.ServiceApp.Request ;
using OpenAuth.App.ServiceApp.Response ;
@ -14,6 +16,7 @@ using OpenAuth.Repository.Domain;
using OpenAuth.WebApi ;
using OpenAuth.WebApi.CloudSdk ;
using SqlSugar ;
using System.Text ;
namespace OpenAuth.App.ServiceApp
{
@ -21,13 +24,15 @@ namespace OpenAuth.App.ServiceApp
{
private readonly MqttClientManager _mqttClientManager ;
private readonly MinioService _minioService ;
CommonDataManager _commonDataManager ;
public ManageApp ( ISugarUnitOfWork < SugarDbContext > unitWork , ISimpleClient < LasaDronePort > repository , IAuth auth ,
MqttClientManager mqttClientManager , MinioService minioService )
MqttClientManager mqttClientManager , CommonDataManager commonDataManager , MinioService minioService )
: base ( unitWork , repository , auth )
{
_mqttClientManager = mqttClientManager ;
_minioService = minioService ;
_commonDataManager = commonDataManager ;
}
#region 机场管理
@ -315,6 +320,7 @@ namespace OpenAuth.App.ServiceApp
var list = await db . LasaWorkspace . AsQueryable ( )
. WhereIF ( ! string . IsNullOrEmpty ( key ) , a = > a . WorkspaceName . Contains ( key ) )
. Where ( a = > a . IsDelete = = false )
. WhereIF ( state ! = 0 , a = > a . Sate = = state )
. WhereIF ( isjoin = = 1 , a = > ids . Contains ( a . Id ) )
. WhereIF ( isjoin = = 2 , a = > ! ids . Contains ( a . Id ) )
@ -464,21 +470,23 @@ namespace OpenAuth.App.ServiceApp
using ( var db = UnitWork . CreateContext ( ) )
{
WorkSpaceRes res = new WorkSpaceRes ( ) ;
var workspace = await db . LasaWorkspace . AsQueryable ( ) . Where ( r = > r . Id = = id ) . FirstAsync ( ) ;
var sysuser = db . User . AsQueryable ( )
. LeftJoin < LasaSpaceUser > ( ( r , a ) = > r . Id = = a . UserId )
. Where ( ( r , a ) = > a . WorkSpaceId = = id )
. Select ( ( r , a ) = > r ) . ToList ( ) ;
var uav = db . LasaDronePort . AsQueryable ( )
. LeftJoin < LasaSpaceDevice > ( ( r , a ) = > r . Id = = a . DeviceId )
. Where ( ( r , a ) = > a . WorkSpaceId = = id )
. Select ( ( r , a ) = > r ) . ToList ( ) ;
var lockfly = db . LasaSpaceLockFly . AsQueryable ( ) . Where ( r = > r . WorkSpaceId = = id ) . ToList ( ) ;
res . users = sysuser ;
res . LasaDronePort = uav ;
res . lasaSpaceLockFlies = lockfly ;
res . workspace = workspace ;
var workspace = await db . LasaWorkspace . AsQueryable ( ) . Where ( r = > r . Id = = id & & r . IsDelete = = false ) . FirstAsync ( ) ;
if ( workspace ! = null )
{
var sysuser = db . User . AsQueryable ( )
. LeftJoin < LasaSpaceUser > ( ( r , a ) = > r . Id = = a . UserId )
. Where ( ( r , a ) = > a . WorkSpaceId = = id )
. Select ( ( r , a ) = > r ) . ToList ( ) ;
var uav = db . LasaDronePort . AsQueryable ( )
. LeftJoin < LasaSpaceDevice > ( ( r , a ) = > r . Id = = a . DeviceId )
. Where ( ( r , a ) = > a . WorkSpaceId = = id )
. Select ( ( r , a ) = > r ) . ToList ( ) ;
var lockfly = db . LasaSpaceLockFly . AsQueryable ( ) . Where ( r = > r . WorkSpaceId = = id ) . ToList ( ) ;
res . users = sysuser ;
res . LasaDronePort = uav ;
res . lasaSpaceLockFlies = lockfly ;
res . workspace = workspace ;
}
return new Response < WorkSpaceRes >
{
Result = res
@ -658,5 +666,165 @@ namespace OpenAuth.App.ServiceApp
{
return _minioService . UploadFile ( xmlFile , "" ) ;
}
#region 添加地图作业区域
/// <summary>
/// 添加地图作业区域
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task < Response < string > > AddWorkArea ( LasaShpData model )
{
var _user = _auth . GetCurrentUser ( ) . User ;
model . CreateTime = DateTime . Now ;
model . CreateUser = _user . Id . ToString ( ) ;
model . CreateUserName = _user . Name . ToString ( ) ;
using ( var db = base . UnitWork . CreateContext ( ) . Db . CopyNew ( ) )
{
//获取主键
string id = Guid . NewGuid ( ) . ToString ( ) ;
model . Id = id ;
//格式化数据
string _wktModel = _commonDataManager . WktDataConvert ( model . Geom , "MULTIPOLYGON ZM" , 4 ) ;
model . Geom = null ;
StringBuilder geomSql = new StringBuilder ( ) ;
geomSql . AppendFormat ( $" update lasa_shpdata set \" Geom \ " = st_geomfromtext('{_wktModel}',4326) where \"Id\" = '{id}'" ) ;
//更新面积
StringBuilder sql = new StringBuilder ( ) ;
sql . AppendFormat ( $" update lasa_shpdata set \" Area \ " = st_area(st_transform(\"Geom\",4527)) where \"Geom\" is not null and \"Id\" = '{id}'" ) ;
//更新周长
StringBuilder sqlle = new StringBuilder ( ) ;
sqlle . AppendFormat ( $" update lasa_shpdata set \" Length \ " = ST_Perimeter(st_transform(\"Geom\",4527)) where \"Geom\" is not null and \"Id\" = '{id}'" ) ;
//使用事务提交数据
var transFlag = await db . UseTranAsync ( async ( ) = >
{
//插入图斑数据
var flag = await db . Insertable ( model ) . ExecuteCommandAsync ( ) ;
//修改图斑数据
var flagGeom = await db . Ado . ExecuteCommandAsync ( geomSql . ToString ( ) ) ;
//修改图斑面积
var flagUpdate = await db . Ado . ExecuteCommandAsync ( sql . ToString ( ) ) ;
//修改图斑周长
var lengthUpdate = await db . Ado . ExecuteCommandAsync ( sqlle . ToString ( ) ) ;
} ) ;
if ( transFlag . IsSuccess )
return new Response < string >
{
Result = id ,
Message = "新增成功"
} ;
else
return new Response < string >
{
Message = "新增失败"
} ;
}
}
/// <summary>
/// 更新地图作业区域
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task < Response < string > > UpdateWorkArea ( LasaShpData model )
{
using ( var db = base . UnitWork . CreateContext ( ) . Db . CopyNew ( ) )
{
//格式化数据
string _wktModel = _commonDataManager . WktDataConvert ( model . Geom , "MULTIPOLYGON ZM" , 4 ) ;
model . Geom = null ;
StringBuilder geomSql = new StringBuilder ( ) ;
geomSql . AppendFormat ( $" update lasa_shpdata set \" Geom \ " = st_geomfromtext('{_wktModel}',4326) where \"Id\" = '{model.Id}'" ) ;
//更新面积
StringBuilder sql = new StringBuilder ( ) ;
sql . AppendFormat ( $" update lasa_shpdata set \" Area \ " = st_area(st_transform(\"Geom\",4527)) where \"Geom\" is not null and \"Id\" = '{model.Id}'" ) ;
//更新周长
StringBuilder sqlle = new StringBuilder ( ) ;
sqlle . AppendFormat ( $" update lasa_shpdata set \" Length \ " = ST_Perimeter(st_transform(\"Geom\",4527)) where \"Geom\" is not null and \"Id\" = '{model.Id}'" ) ;
//使用事务提交数据
var transFlag = await db . UseTranAsync ( async ( ) = >
{
//插入图斑数据
var flag = await db . Updateable ( model ) . ExecuteCommandAsync ( ) ;
//修改图斑数据
var flagGeom = await db . Ado . ExecuteCommandAsync ( geomSql . ToString ( ) ) ;
//修改图斑面积
var flagUpdate = await db . Ado . ExecuteCommandAsync ( sql . ToString ( ) ) ;
//修改图斑周长
var lengthUpdate = await db . Ado . ExecuteCommandAsync ( sqlle . ToString ( ) ) ;
} ) ;
if ( transFlag . IsSuccess )
return new Response < string >
{
Result = model . Id ,
Message = "更新成功"
} ;
else
return new Response < string >
{
Message = "更新失败"
} ;
}
}
//删除地图作业区域
public async Task < Response < bool > > DeleteWorkArea ( string id )
{
using ( var db = UnitWork . CreateContext ( ) )
{
await db . LasaShpData . DeleteByIdAsync ( id ) ;
if ( db . Commit ( ) )
return new Response < bool > { Result = true , Message = "删除成功" } ;
else
return new Response < bool > { Result = false , Message = "删除失败" } ;
}
}
/// <summary>
/// 获取地图作业区域列表
/// </summary>
/// <param name="workspaceid">项目id</param>
/// <returns></returns>
public async Task < Response < List < LasaShpData > > > GetWorkAreaList ( string workspaceid , int? state , string type )
{
using ( var db = UnitWork . CreateContext ( ) )
{
StringBuilder sql = new StringBuilder ( ) ;
sql . AppendFormat ( $" Select * from lasa_shpdata where \" WorkSpaceId \ " = '{workspaceid}'" ) ;
var list = db . Db . SqlQueryable < LasaShpData > ( sql . ToString ( ) ) . ToList ( ) ;
if ( ! string . IsNullOrEmpty ( type ) & & list . Count > 0 )
{
list = list . Where ( r = > r . Type = = type ) . ToList ( ) ;
}
if ( state ! = null )
{
list = list . Where ( r = > r . State = = state ) . ToList ( ) ;
}
return new Response < List < LasaShpData > >
{
Result = list
} ;
}
}
# endregion
}
}