feixian_weifajianguan/OpenAuth.App/ServiceApp/DroneCloudQuery/DroneCloudLandQueryApp.cs

235 lines
7.9 KiB
C#
Raw Permalink Normal View History

2026-02-03 16:00:02 +08:00
using Infrastructure;
using Infrastructure.Extensions;
using Infrastructure.Helpers;
using OpenAuth.App.Base;
using OpenAuth.App.BaseApp;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.App.ServiceApp.DroneCloudQueryManage.Request;
using OpenAuth.App.ServiceApp.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using Org.BouncyCastle.Ocsp;
using SqlSugar;
namespace OpenAuth.App.ServiceApp.DroneCloudQuery
{
public partial class DroneCloudLandQueryApp : SqlSugarBaseApp<Repository.Domain.DroneCloudLandQuery, SugarDbContext>
{
ISqlSugarClient client;
private ImMsgApp _immsgApp;
public DroneCloudLandQueryApp(ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<Repository.Domain.DroneCloudLandQuery> repository, ISqlSugarClient sqlSugarClient, IAuth auth,
ImMsgApp immsgApp) : base(unitWork, repository, auth)
{
client = sqlSugarClient;
_immsgApp = immsgApp;
}
//添加任务
public Response<bool> AddDroneTask(string geomData, string caseid, string code, string name)
{
var user = _auth.GetCurrentUser().User;
//初始化查询结果
Repository.Domain.DroneCloudLandQuery droneCloudQuery = new Repository.Domain.DroneCloudLandQuery()
{
Id = Guid.NewGuid().ToString(),
name = name,
CreateTime = DateTime.Now,
CreateUser = user?.Id.ToString() ?? "",
caseid = caseid
};
DroneCloudLandTask droneCloudTask = new DroneCloudLandTask()
{
Id = Guid.NewGuid().ToString(),
GeomData = geomData,
CreateTime = DateTime.Now,
CreateUser = user?.Id.ToString() ?? "",
QueryId = droneCloudQuery.Id,
code = code,
name = name,
caseid = caseid
};
//添加数据
var flag = client.Ado.UseTran(() =>
{
client.Insertable(droneCloudQuery).ExecuteCommand();
client.Insertable(droneCloudTask).ExecuteCommand();
});
if (flag.IsSuccess)
{
return new Response<bool> { Result = true };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
public async Task<Response<List<DroneCloudLandTask>>> DroneCloudLandTask()
{
//返回值
var data = await client.Queryable<DroneCloudLandTask>().Where(r => r.State != 2)
.OrderByDescending(a => a.CreateTime).ToListAsync();
//获取之后,需要把这些任务标记为正在查询
foreach (var item in data)
{
item.State = 1;
}
await client.Updateable<DroneCloudLandTask>(data).ExecuteCommandAsync();
return new Response<List<DroneCloudLandTask>>
{
Result = data
};
}
#region 接收查询结果
public async Task<Response<bool>> UpdateCloudLandQuery(CloudQueryReq req)
{
using (var uow = base.UnitWork.CreateContext())
{
//查询记录
var query = uow.DroneCloudLandQuery.AsQueryable().Where(r => r.Id == req.Id).First();
//更新记录
await uow.DroneCloudLandQuery.UpdateAsync(u => new Repository.Domain.DroneCloudLandQuery
{
ReceiveContent = req.ReceiveContent,
ReceiveTime = req.ReceiveTime
}, u => u.Id == req.Id);
//更新任务状态
await uow.DroneCloudLandTask.UpdateAsync(u => new Repository.Domain.DroneCloudLandTask
{
State = 2,
}, u => u.QueryId == req.Id);
var flag = uow.Commit();
//添加推送数据的用户
List<string> users = new List<string>();
if (query != null)
{
users.Add(query.CreateUser);
}
//推送数据
if (flag == true)
{
try
{
await _immsgApp.SendMsg("CloudLandQuery", users, req.Id, "4", req.Id);
}
catch
{
return new Response<bool>
{
Result = flag,
Message = "数据存储成功,推送失败"
};
}
}
//返回值
return new Response<bool>
{
Result = flag,
Message = flag == true ? "接收数据成功" : "接收数据失败"
};
}
}
#endregion
#region 查询云查询结果
/// <summary>
/// 根据云查询id获取查询结果
/// </summary>
/// <param name="id">结果id消息推送的msg</param>
/// <returns></returns>
public async Task<Response<Repository.Domain.DroneCloudLandQuery>> LoadCloudQueryById(string id)
{
//返回值
var data = await client.Queryable<Repository.Domain.DroneCloudLandQuery>().Where(r => r.Id == id)
.FirstAsync();
return new Response<Repository.Domain.DroneCloudLandQuery>
{
Result = data
};
}
#endregion
public Response<bool> AddOrUpdateDroneLandType(AddOrUpdateDroneLandType req)
{
using (var uow = base.UnitWork.CreateContext())
{
//查询记录
int query = uow.DroneLandType.AsQueryable().ToList().Count;
if (query == req.count)
{
return new Response<bool>
{
Result = true,
Message = "接收数据成功"
};
}
var list = req.landList;
for (int i = 0; i < list.Count; i++)
{
var land = list[i];
var one = uow.DroneLandType.AsQueryable().Where(r => r.id == land.id).First();
if (one != null)
{
uow.DroneLandType.Update(u => new Repository.Domain.DroneLandType
{
name = land.name,
}, u => u.id == land.id);
}
else
{
uow.DroneLandType.Insert(new Repository.Domain.DroneLandType
{
id = land.id,
name = land.name,
});
}
}
var flag = uow.Commit();
return new Response<bool>
{
Result = flag,
Message = flag == true ? "接收数据成功" : "接收数据失败"
};
}
}
public async Task<Response<List<dynamic>>> getLandType()
{
string sql = $"select id,name from drone_land_type";
//返回值
var data = await client.Ado.SqlQueryAsync<dynamic>(sql);
return new Response<List<dynamic>>
{
Result = data
};
}
public async Task<Response<bool>> IsPublic()
{
var config = ConfigHelper.GetConfigRoot();
return new Response<bool>
{
Result = config["IsPublic"].ToBool()
};
}
}
}