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 { public FirePatrolApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth) : base(unitWork, repository, auth) { _auth = auth; } /// /// 巡查轨迹 /// /// /// /// /// public async Task>> 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 upinfo = new List(); 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> { Result = upinfo, Message = "操作成功" }; } } /// /// 巡查坐标 /// /// /// /// /// public async Task>> 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> { Result = userpoint, Message = "操作成功" }; } } /// /// 获取护林员巡查范围 /// /// /// public async Task> 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 { Result = dt, Message = "操作成功" }; else return new Response { Result = null, Message = "暂无数据" }; } } //查询单条巡检记录 public async Task>> 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> { Result = check, Message = "操作成功" }; } } } }