140 lines
6.6 KiB
C#
140 lines
6.6 KiB
C#
using OpenAuth.App.BaseApp.Base;
|
|
using OpenAuth.App.Interface;
|
|
using OpenAuth.Repository.Domain.FireManagement;
|
|
using OpenAuth.Repository;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Infrastructure;
|
|
using OpenAuth.App.ServiceApp.FireManagement.Response;
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
using DocumentFormat.OpenXml.EMMA;
|
|
using OpenAuth.App.Config;
|
|
using System.Data;
|
|
|
|
namespace OpenAuth.App.ServiceApp.FireManagement
|
|
{
|
|
public class FirePatrolApp : SqlSugarBaseApp<FmUserTimeSlot, SugarDbContext>
|
|
{
|
|
public FirePatrolApp(ISugarUnitOfWork<SugarDbContext> unitWork,
|
|
ISimpleClient<FmUserTimeSlot> repository, IAuth auth) : base(unitWork, repository, auth)
|
|
{
|
|
_auth = auth;
|
|
}
|
|
/// <summary>
|
|
/// 巡查轨迹
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <param name="beginTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
public async Task<Response<List<UserPatrolInfoResp>>> GetPatrolInfoByUserId(long id, DateTime beginTime, DateTime endTime)
|
|
{
|
|
using (SugarDbContext db = base.UnitWork.CreateContext())
|
|
{
|
|
var usertime = await db.FmUserTimeSlot.AsQueryable().Where(a => a.CreateId == id).ToListAsync();
|
|
var user = await db.User.GetFirstAsync(r => r.Id == id);
|
|
TimeSpan timeSpan = endTime.AddDays(1).Subtract(beginTime);
|
|
int days = (int)timeSpan.TotalDays;
|
|
List<UserPatrolInfoResp> upinfo = new List<UserPatrolInfoResp>();
|
|
var userpoint = await db.FmUserPointHistory.AsQueryable().Where(a => a.CreateTime >= beginTime && a.CreateTime <= endTime && a.CreateId == id)
|
|
.SplitTable(beginTime, endTime).ToListAsync();
|
|
var list = db.SysFrontendSettingConfig.AsQueryable().Where(r => r.Code == "TimeSlot").ToList();
|
|
for (int i = 0; i < days; i++)
|
|
{
|
|
if (usertime.Count > 0)
|
|
{
|
|
foreach (var item in usertime)
|
|
{
|
|
var begslot = item.TimeSlot.Split('-');
|
|
UserPatrolInfoResp resin = new UserPatrolInfoResp
|
|
{
|
|
CreateId = id,
|
|
Name = user.Name,
|
|
StartTime = beginTime.ToString("yyyy-MM-dd ") + begslot[0],
|
|
EndTime = beginTime.ToString("yyyy-MM-dd ") + begslot[1],
|
|
};
|
|
|
|
if (userpoint.Where(a => a.CreateTime >= DateTime.Parse(resin.StartTime) && a.CreateTime <= DateTime.Parse(resin.EndTime)).Count() > 0)
|
|
{
|
|
upinfo.Add(resin);
|
|
}
|
|
}
|
|
beginTime = beginTime.AddDays(1);
|
|
}
|
|
else
|
|
{
|
|
foreach (var item in list)
|
|
{
|
|
var begslot = item.CodeValue.Split('-');
|
|
UserPatrolInfoResp resin = new UserPatrolInfoResp
|
|
{
|
|
CreateId = id,
|
|
Name = user.Name,
|
|
StartTime = beginTime.ToString("yyyy-MM-dd ") + begslot[0],
|
|
EndTime = beginTime.ToString("yyyy-MM-dd ") + begslot[1],
|
|
};
|
|
if (userpoint.Where(a => a.CreateTime >= DateTime.Parse(resin.StartTime) && a.CreateTime <= DateTime.Parse(resin.EndTime)).Count() > 0)
|
|
{
|
|
upinfo.Add(resin);
|
|
}
|
|
}
|
|
beginTime = beginTime.AddDays(1);
|
|
}
|
|
}
|
|
upinfo = upinfo.OrderByDescending(r => r.StartTime).ToList();
|
|
return new Response<List<UserPatrolInfoResp>> { Result = upinfo, Message = "操作成功" };
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 巡查坐标
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <param name="beginTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
public async Task<Response<List<FmUserPointHistory>>> LoadPatrolPointByTime(long userId, DateTime beginTime, DateTime endTime)
|
|
{
|
|
using (SugarDbContext db = base.UnitWork.CreateContext())
|
|
{
|
|
var userpoint = await db.FmUserPointHistory.AsQueryable().Where(a => a.CreateTime >= beginTime && a.CreateTime <= endTime && a.CreateId == userId)
|
|
.SplitTable(beginTime, endTime).ToListAsync();
|
|
return new Response<List<FmUserPointHistory>> { Result = userpoint, Message = "操作成功" };
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取护林员巡查范围
|
|
/// </summary>
|
|
/// <param name="phone"></param>
|
|
/// <returns></returns>
|
|
public async Task<Response<DataTable>> GetUserRange(string phone)
|
|
{
|
|
using (SugarDbContext db = base.UnitWork.CreateContext())
|
|
{
|
|
string sql = "select \"Id\",\"Hulinyuan\",\"Lianxifang\",st_astext(ST_Boundary(geom)) as geom FROM fm_hulinyuanguanhufanwei WHERE \"Lianxifang\" like '%" + phone + "%'";
|
|
var dt = await db.Db.Ado.GetDataTableAsync(sql);
|
|
if (dt.Rows.Count > 0)
|
|
return new Response<DataTable> { Result = dt, Message = "操作成功" };
|
|
else
|
|
return new Response<DataTable> { Result = null, Message = "暂无数据" };
|
|
}
|
|
}
|
|
//查询单条巡检记录
|
|
public async Task<Response<List<FmUserPointHistory>>> LoadPatrolPointByTimeSubsection(long id, DateTime beginTime, DateTime endTime)
|
|
{
|
|
using (SugarDbContext db = base.UnitWork.CreateContext())
|
|
{
|
|
var check = await db.FmUserPointHistory.AsQueryable()
|
|
.Where(a => a.CreateTime >= beginTime && a.CreateTime <= endTime && a.CreateId == id)
|
|
.SplitTable(beginTime, endTime).Take(10000)
|
|
.OrderBy(a => a.CreateTime, OrderByType.Asc).ToListAsync();
|
|
return new Response<List<FmUserPointHistory>> { Result = check, Message = "操作成功" };
|
|
}
|
|
}
|
|
}
|
|
}
|