feixian_weifajianguan/OpenAuth.App/ServiceApp/MiManager/MiMinePointApp.cs

313 lines
12 KiB
C#
Raw Normal View History

2026-02-04 09:44:49 +08:00
2026-03-04 17:07:24 +08:00
using DocumentFormat.OpenXml.Bibliography;
2026-02-04 09:44:49 +08:00
using Infrastructure;
2026-03-04 17:07:24 +08:00
using Newtonsoft.Json.Linq;
2026-02-04 09:44:49 +08:00
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
2026-02-10 09:49:44 +08:00
using Org.BouncyCastle.Ocsp;
2026-02-04 09:44:49 +08:00
using SqlSugar;
2026-02-10 09:49:44 +08:00
using SqlSugar.Extensions;
using System.Text;
2026-02-04 09:44:49 +08:00
namespace OpenAuth.App
{
public class MiMinePointApp : SqlSugarBaseApp<MiMinePoint, SugarDbContext>
{
public MiMinePointApp(
ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<MiMinePoint> repository,
IAuth auth
) : base(unitWork, repository, auth)
{
}
#region 查询
/// <summary>
/// 分页
/// </summary>
public async Task<Response<PageInfo<List<MiMinePoint>>>> LoadAllPage(PageReq request)
2026-02-10 09:49:44 +08:00
{
2026-02-04 09:44:49 +08:00
RefAsync<int> totalCount = 0;
var result = new PageInfo<SysRole>();
var list = await base.Repository.AsQueryable()
2026-03-04 17:07:24 +08:00
.Where(r => r.IsClose == false)
2026-02-10 09:49:44 +08:00
.WhereIF(!string.IsNullOrEmpty(request.key), r => r.Name.Contains(request.key))
2026-03-04 17:07:24 +08:00
.OrderByDescending(r => r.CreateTime)
2026-02-04 09:44:49 +08:00
.ToPageListAsync(request.page, request.limit, totalCount);
return new Response<PageInfo<List<MiMinePoint>>>
{
Result = new PageInfo<List<MiMinePoint>>
{
Items = list,
Total = totalCount
}
};
}
#endregion
2026-02-10 09:49:44 +08:00
public async Task<MiMinePoint> Get(string id)
2026-02-04 09:44:49 +08:00
{
return await base.Repository.GetByIdAsync(id);
}
/// <summary>
/// 添加
/// </summary>
public async Task<Response<bool>> Add(MiMinePoint model)
2026-02-10 09:49:44 +08:00
{
2026-03-04 17:07:24 +08:00
var user = _auth.GetCurrentUser().User;
2026-02-10 09:49:44 +08:00
using (var uow = base.UnitWork.CreateContext())
2026-02-04 09:44:49 +08:00
{
2026-02-10 09:49:44 +08:00
MiMinePoint point = model.MapTo<MiMinePoint>();
point.Id = Guid.NewGuid().ToString();
point.CreateTime = DateTime.Now;
2026-02-10 15:26:46 +08:00
point.IsDelete = false;
2026-02-10 09:49:44 +08:00
point.geom = null;
2026-03-04 17:07:24 +08:00
point.IsClose = false;
point.CreateUserId = user.Id.ToString();
2026-02-10 09:49:44 +08:00
if (!string.IsNullOrEmpty(model.geom))
{
2026-03-04 17:07:24 +08:00
string _wktModel = model.geom;
JObject xzqh = GetOrgAreaByPoint(_wktModel);
var cc = (string)xzqh["countyid"];
point.CountyId = xzqh["countyid"].ToString();
point.CountyName = xzqh["countyname"].ToString();
point.StreetId = xzqh["streetid"].ToString();
point.StreetName = xzqh["streetname"].ToString();
point.CommunityId = xzqh["communityid"].ToString();
point.CommunityName = xzqh["communityname"].ToString();
//oint = cinfo.countyname + " " + cinfo.streetname + " " + cinfo.communityname;
2026-02-10 09:49:44 +08:00
var flag = await uow.MiMinePoint.InsertAsync(point);
StringBuilder geomSql = new StringBuilder();
geomSql.AppendFormat(
2026-02-10 15:26:46 +08:00
$"UPDATE mi_mine_point SET " +
$"\"geom\" = ST_GeomFromText('{_wktModel}', 4326), " +
$"\"Lng\" = ST_X(ST_Centroid(ST_GeomFromText('{_wktModel}', 4326))), " +
$"\"Lat\" = ST_Y(ST_Centroid(ST_GeomFromText('{_wktModel}', 4326))) " +
$"WHERE \"Id\" = '{point.Id}'");
2026-02-10 09:49:44 +08:00
if (flag)
{
2026-03-04 17:07:24 +08:00
var flag1 = await uow.Db.Ado.ExecuteCommandAsync(geomSql.ToString());
if (uow.Commit() && flag1 > 0)
2026-02-10 09:49:44 +08:00
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
}
}
else
{
var flag = await uow.MiMinePoint.InsertAsync(point);
if (uow.Commit() && flag)
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
}
// 如果执行到这里,说明操作失败
return new Response<bool> { Result = false, Message = "操作失败" };
2026-03-04 17:07:24 +08:00
}
2026-02-04 09:44:49 +08:00
}
2026-03-04 17:07:24 +08:00
/// <summary>
/// 根据经纬度获取组织机构
/// </summary>
/// <param name="lng"></param>
/// <param name="lat"></param>
/// <returns></returns>
public JObject GetOrgAreaByPoint(string geo)
{
//县id
string countyid = "";
string countyname = "";
//镇id
string streetid = "";
string streetname = "";
//村id
string communityid = "";
string communityname = "";
//SqlSugar实例
using (var db = Repository.AsSugarClient())
{
//查询坐标属于哪个县
StringBuilder sql = new StringBuilder();
sql.AppendFormat($" SELECT xzqdm,xzqmc FROM \"shp_drone_county\" where ST_Within(ST_Centroid(ST_GeomFromText('{geo}', 4326)), ST_SetSRID(geom,4326))");
var countyList = db.SqlQueryable<dynamic>(sql.ToString()).ToList();
if (countyList.Count > 0)
{
//县名称
countyname = countyList[0].xzqmc;
//县id
countyid = countyList[0].xzqdm;
}
//查询坐标属于哪个镇
sql = new StringBuilder();
sql.AppendFormat($" SELECT xzqdm,xzqmc FROM \"shp_drone_town\" where ST_Within(ST_Centroid(ST_GeomFromText('{geo}', 4326)), ST_SetSRID(geom,4326))");
var streetList = db.SqlQueryable<dynamic>(sql.ToString()).ToList();
if (streetList.Count > 0)
{
//镇名称
streetname = streetList[0].xzqmc;
//镇id
streetid = streetList[0].xzqdm;
}
if (!string.IsNullOrEmpty(streetid))
{
//查询组织机构属于哪个村
sql = new StringBuilder();
sql.AppendFormat($" SELECT zldwdm,zldwmc FROM \"shp_drone_community\" where ST_Within(ST_Centroid(ST_GeomFromText('{geo}', 4326)), ST_SetSRID(geom,4326))");
var communityidList = db.SqlQueryable<dynamic>(sql.ToString()).ToList();
if (communityidList.Count > 0)
{
//村名称
communityname = communityidList[0].zldwmc;
//村id
communityid = communityidList[0].zldwdm;
}
}
//拼接json数据返回到前台
JObject obj = new JObject();
obj.Add("countyid", countyid);
obj.Add("countyname", countyname);
obj.Add("streetid", streetid);
obj.Add("streetname", streetname);
obj.Add("communityid", communityid);
obj.Add("communityname", communityname);
return obj;
}
}
2026-02-04 09:44:49 +08:00
/// <summary>
/// 删除
/// </summary>
/// <param name="ids"></param>
public async Task<Response<bool>> Delete(List<MiMinePoint> models)
{
2026-02-10 09:49:44 +08:00
var flag = await Repository.DeleteAsync(models);
return new Response<bool>
{
Result = flag,
Message = flag == true ? "success" : "error"
};
2026-02-04 09:44:49 +08:00
}
/// <summary>
/// 更新
/// </summary>
/// <param name="obj"></param>
public async Task<Response<bool>> Update(MiMinePoint model)
{
2026-03-04 17:07:24 +08:00
using (var uow = base.UnitWork.CreateContext())
{
MiMinePoint point = model.MapTo<MiMinePoint>();
if (!string.IsNullOrEmpty(model.geom))
{
string _wktModel = model.geom;
JObject xzqh = GetOrgAreaByPoint(_wktModel);
var cc = (string)xzqh["countyid"];
point.CountyId = xzqh["countyid"].ToString();
point.CountyName = xzqh["countyname"].ToString();
point.StreetId = xzqh["streetid"].ToString();
point.StreetName = xzqh["streetname"].ToString();
point.CommunityId = xzqh["communityid"].ToString();
point.CommunityName = xzqh["communityname"].ToString();
//oint = cinfo.countyname + " " + cinfo.streetname + " " + cinfo.communityname;
var flag = await uow.MiMinePoint.UpdateAsync(point);
2026-02-04 09:44:49 +08:00
2026-03-04 17:07:24 +08:00
StringBuilder geomSql = new StringBuilder();
geomSql.AppendFormat(
$"UPDATE mi_mine_point SET " +
$"\"geom\" = ST_GeomFromText('{_wktModel}', 4326), " +
$"\"Lng\" = ST_X(ST_Centroid(ST_GeomFromText('{_wktModel}', 4326))), " +
$"\"Lat\" = ST_Y(ST_Centroid(ST_GeomFromText('{_wktModel}', 4326))) " +
$"WHERE \"Id\" = '{point.Id}'");
if (flag)
{
var flag1 = await uow.Db.Ado.ExecuteCommandAsync(geomSql.ToString());
if (uow.Commit() && flag1 > 0)
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
}
}
else
{
var flag = await uow.MiMinePoint.UpdateAsync(point);
if (uow.Commit() && flag)
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
}
// 如果执行到这里,说明操作失败
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
/// <summary>
/// 关闭巡检点
/// </summary>
/// <param name="obj"></param>
public async Task<Response<bool>> CloseMinePoint(string pointid)
{
var user = _auth.GetCurrentUser().User;
using (var uow = base.UnitWork.CreateContext())
2026-02-04 09:44:49 +08:00
{
2026-03-04 17:07:24 +08:00
var flag = await uow.MiMinePoint.UpdateAsync(r => new MiMinePoint
{
IsClose = true
}, r => r.Id == pointid);
if (uow.Commit() && flag)
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
// 如果执行到这里,说明操作失败
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
2026-02-04 09:44:49 +08:00
}
/// <summary>
/// 事务示例
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task<Response<bool>> AssignModule()
{
using (var uwo = UnitWork.CreateContext())
2026-02-10 09:49:44 +08:00
{
2026-02-04 09:44:49 +08:00
//await uwo.SysRoleElement.InsertRangeAsync(model.ElementIds.Select(a => new SysRoleElement { RoleId = model.RoleId, ElementId = a }).ToList());
var flag = uwo.Commit();
return new Response<bool>
{
Result = flag,
Message = flag == true ? "success" : "error"
};
}
}
}
}