235 lines
7.9 KiB
C#
235 lines
7.9 KiB
C#
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()
|
||
};
|
||
}
|
||
}
|
||
} |