diff --git a/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs b/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs
index 469c1e4..1daadf1 100644
--- a/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs
+++ b/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs
@@ -1,16 +1,23 @@
-using DocumentFormat.OpenXml.Office2010.Excel;
+using DocumentFormat.OpenXml.Drawing;
+using DocumentFormat.OpenXml.Office2010.Excel;
+using DocumentFormat.OpenXml.Spreadsheet;
+using DocumentFormat.OpenXml.Wordprocessing;
using Infrastructure;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
+using Newtonsoft.Json.Linq;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Const;
using OpenAuth.App.Interface;
+using OpenAuth.App.Response;
using OpenAuth.App.ServiceApp.FireManagement.Request;
+using OpenAuth.App.ServiceApp.FireManagement.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Domain.FireManagement;
using SqlSugar;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -124,7 +131,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement
//{
// throw new Exception("请在护林员巡查范围内设置打卡点");
//}
- await db.FmCheckInPoint.UpdateAsync(r => new FmCheckInPoint
+ await db.FmCheckInPoint.UpdateAsync(r => new FmCheckInPoint
{
PointName = info.PointName,
Lat = info.Lat,
@@ -174,7 +181,69 @@ namespace OpenAuth.App.ServiceApp.FireManagement
};
}
}
-
+ ///
+ /// 获取打卡记录
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>>> GetCheckPointById(long id, int pageIndex = 1, int pageSize = 10)
+ {
+ using (SugarDbContext db = base.UnitWork.CreateContext())
+ {
+ RefAsync totalNumber = 0;
+ var query = await db.FmCheckClockOn.AsQueryable()
+ .LeftJoin((a, b) => a.PointId == b.Id)
+ .LeftJoin((a, b, c) => a.UserId == c.Id)
+ .WhereIF(id != 0, (a, b, c) => a.PointId == id)
+ .Select((a, b, c) => new
+ {
+ a.Id,
+ a.Lng,
+ a.Lat,
+ b.PointName,
+ c.Name,
+ UserId = SqlFunc.Subqueryable().Where(a => a.PointId == id).ToList(a => a.UserId),
+ AreaId = SqlFunc.Subqueryable().Where(a => a.PointId == id).ToList(a => a.AreaId),
+ }).ToPageListAsync(pageIndex, pageSize, totalNumber);
+ return new Response>>
+ {
+ Result = new PageInfo> { Items = query, Total = totalNumber }
+ };
+ }
+ }
+ ///
+ /// 获取打卡记录
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>>> GetCheckInfoByUserId(long id, int pageIndex = 1, int pageSize = 10)
+ {
+ using (SugarDbContext db = base.UnitWork.CreateContext())
+ {
+ RefAsync totalNumber = 0;
+ var query = await db.FmCheckClockOn.AsQueryable()
+ .LeftJoin((a, b) => a.PointId == b.Id)
+ .LeftJoin((a, b, c) => a.UserId == c.Id)
+ .WhereIF(id != 0, (a, b, c) => a.UserId == id)
+ .Select((a, b, c) => new
+ {
+ a.Id,
+ a.Lng,
+ a.Lat,
+ b.PointName,
+ c.Name,
+ a.ClockonTime
+ }).ToPageListAsync(pageIndex, pageSize, totalNumber);
+ return new Response>>
+ {
+ Result = new PageInfo> { Items = query, Total = totalNumber }
+ };
+ }
+ }
///
/// 查询打卡记录
///
@@ -210,6 +279,138 @@ namespace OpenAuth.App.ServiceApp.FireManagement
}
}
+ public async Task> GetStatisticsCount(long areaid, DateTime begintime, DateTime endtime)
+ {
+ using (SugarDbContext db = base.UnitWork.CreateContext())
+ {
+ var orginfo = await db.SysOrg.AsQueryable().Where(r => r.Id == areaid).FirstAsync();
+ var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, areaid)).Select(it => it.Id).ToList();
+ JObject obj = new JObject();
+ //护林员人数
+ var hu = await db.User.AsQueryable().LeftJoin((a, b) => a.Id == b.UserId)
+ .LeftJoin((a, b, c) => a.Id == c.UserId)
+ .Where((a, b, c) => chileorg.Contains(c.OrgId))
+ .Where((a, b, c) => b.RoleId == 555252989157446).ToListAsync();
+ var userId = hu.Select(it => it.Id).Distinct().ToList();
+ //巡查距离
+ var xunchazongshu = await db.FmUserPointHistory.AsQueryable().Where(a => a.CreateTime >= begintime && a.CreateTime <= endtime && userId.Contains(a.CreateId))
+ .SplitTable(begintime, endtime).SumAsync(a => a.Distance);
+ //打卡点
+ var dakadian = await db.FmCheckInPoint.AsQueryable()
+ .LeftJoin((a, b) => a.Id == b.PointId)
+ .Where((a, b) => a.IsDelete == false && chileorg.Contains(b.AreaId)).CountAsync();
+ //打卡次数
+ var dakacishu = await db.FmCheckClockOn.AsQueryable()
+ .Where(a => userId.Contains(a.UserId))
+ .Where(a => a.ClockonTime >= begintime && a.ClockonTime <= endtime).CountAsync();
+ obj.Add("hulinyuan", userId.Count);
+ obj.Add("xunchazongshu", xunchazongshu);
+ obj.Add("dakadian", dakadian);
+ obj.Add("dakacishu", dakacishu);
+ return new Response
+ {
+ Result = obj
+ };
+ }
+ }
+ public async Task> GetstatisticsOld(long areaid, DateTime begintime, DateTime endtime, int pageSize, int pageIndex)
+ {
+ using (SugarDbContext db = base.UnitWork.CreateContext())
+ {
+ var orginfo = await db.SysOrg.AsQueryable().Where(r => r.Id == areaid).FirstAsync();
+ var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, areaid)).Select(it => it.Id).ToList();
+ var userlist = db.User.AsQueryable().LeftJoin((a, b) => a.Id == b.UserId)
+ .LeftJoin((a, b, c) => a.Id == c.UserId)
+ .LeftJoin((a, b, c, d) => c.OrgId == d.Id)
+ .Where((a, b, c, d) => chileorg.Contains(c.OrgId))
+ .Where((a, b, c, d) => b.RoleId == 555252989157446)
+ .Select((a, b, c, d) => new PointstatisticsResp
+ {
+ Id = a.Id,
+ Name = a.Name,
+ Account = a.Account,
+ AreaName = d.Name,
+ dakacishu = SqlFunc.Subqueryable().Where(r => r.UserId == a.Id).Where(r => r.ClockonTime >= begintime && r.ClockonTime <= endtime).Count(),
+ dakadian = SqlFunc.Subqueryable().Where(p => p.UserId == a.Id).Count(),
+ lengths = SqlFunc.Subqueryable().Where(r => r.CreateId == a.Id).Where(r => r.CreateTime >= begintime && r.CreateTime <= endtime).Sum(r => r.Distance),
+
+ }).ToList();
+ return new Response
+ {
+ Result = new JObject()
+ };
+ }
+ }
+ public async Task>>> Getstatistics(long areaid, DateTime begintime, DateTime endtime, int pageIndex, int pageSize)
+ {
+ using (SugarDbContext db = base.UnitWork.CreateContext())
+ {
+ RefAsync totalPage = 0;
+ var orginfo = await db.SysOrg.AsQueryable().Where(r => r.Id == areaid).FirstAsync();
+ var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, areaid)).Select(it => it.Id).ToList();
+ var userlist = await db.User.AsQueryable().LeftJoin((a, b) => a.Id == b.UserId)
+ .LeftJoin((a, b, c) => a.Id == c.UserId)
+ .LeftJoin((a, b, c, d) => c.OrgId == d.Id)
+ .Where((a, b, c, d) => chileorg.Contains(c.OrgId))
+ .Where((a, b, c, d) => b.RoleId == 555252989157446)
+ .Select((a, b, c, d) => new PointstatisticsResp
+ {
+ Id = a.Id,
+ Name = a.Name,
+ Account = a.Account,
+ AreaName = d.Name,
+ })
+ .ToPageListAsync(pageIndex, pageSize, totalPage);
+ foreach (var item in userlist)
+ {
+ item.dakacishu = await db.FmCheckClockOn.AsQueryable()
+ .Where(r => r.UserId == item.Id)
+ .Where(r => r.ClockonTime >= begintime && r.ClockonTime <= endtime).CountAsync();
+ item.dakadian = await db.FmCheckPointUser.AsQueryable()
+ .Where(r => r.UserId == item.Id).CountAsync();
+ var lengths = await db.FmUserPointHistory.AsQueryable()
+ .Where(r => r.CreateId == item.Id && r.Intype == 1)
+ .Where(r => r.CreateTime >= begintime && r.CreateTime <= endtime).SplitTable(begintime, endtime).SumAsync(r => r.Distance);
+
+ item.xunjian = lengths > 0 ? 1 : 0;
+ }
+ return new Response>>
+ {
+ Result = new PageInfo> { Items = userlist, Total = totalPage }
+ };
+ }
+ }
+
+ //导出统计
+ //public MemoryStream ExportStatisticsNew(long areaid, DateTime begintime, DateTime endtime)
+ //{
+ // using (SugarDbContext db = base.UnitWork.CreateContext())
+ // {
+ // var user = _auth.GetCurrentUser().User;
+ // //该用户下包含所有部门
+ // List deplist = new List();
+ // long level = 0;
+ // if (user != null && user.Id != -1)
+ // {
+ // var departs = db.SysUserOrg.AsQueryable().Where(r => r.UserId == user.Id).ToList();
+ // foreach (var item in departs)
+ // {
+ // var list = db.SysOrg.AsQueryable().ToChildList(it => it.ParentId, item.OrgId)
+ // ?.Select(it => it.Id.ToString()).ToList();
+ // deplist = deplist.Union(list).ToList();
+ // }
+ // //获取用户分配部门的最高级别
+ // var uorg = departs.OrderBy(r => r.Level).FirstOrDefault();
+ // if (uorg != null)
+ // {
+ // level = uorg.Level;
+ // }
+ // }
+
+ // }
+
+ //}
+
//上传坐标
//public async Task> UploadLocation(FmUserPoint info)
//{
diff --git a/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs b/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs
index 71d8590..dc1d965 100644
--- a/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs
+++ b/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs
@@ -17,6 +17,9 @@ using DocumentFormat.OpenXml.Spreadsheet;
using OpenAuth.Repository.Domain;
using OpenAuth.App.ServiceApp.FireManagement.Response;
using DocumentFormat.OpenXml.EMMA;
+using OpenAuth.App.Response;
+using NPOI.SS.Formula.PTG;
+using Infrastructure.Extensions;
namespace OpenAuth.App.ServiceApp.FireManagement
{
@@ -369,5 +372,75 @@ namespace OpenAuth.App.ServiceApp.FireManagement
}
}
#endregion
+ ///
+ /// 在线情况
+ ///
+ ///
+ ///
+ public async Task>> GetPointUserOnLine(UserOnLineReq pageReq)
+ {
+ using (var db = base.UnitWork.CreateContext())
+ {
+ RefAsync totalNumber = 0;
+ var user = _auth.GetCurrentUser().User;
+ //该用户下包含所有部门
+ var orgid = _auth.GetCurrentUser().Orgs;
+ var chileorglist = new List();
+ foreach (var item in orgid)
+ {
+ var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, item)).Select(it => it.Id).ToList();
+ chileorglist.AddRange(chileorg);
+ }
+ var userInfoQuery = db.User.AsQueryable()
+ .LeftJoin((a, b) => a.Id == b.CreateId)
+ .LeftJoin((a, b, c) => a.Id == c.UserId)
+ .Where((a, b, c) => a.Status == 0 && chileorglist.Contains(c.UserId));
+ var userinfo = await userInfoQuery
+ .Select((a, b, c) => new UserOnLineResp
+ {
+ CreateId = a.Id,
+ Name = a.Name,
+ Lat = b.Lat,
+ Lng = b.Lng,
+ CreateTime = b.CreateTime,
+ Phone = a.Account,
+ State = b.CreateTime.AddMinutes(2) > DateTime.Now ? "在线" : "离线",
+ IsIn = b.Intype,
+ OnLineTime = SqlFunc.DateDiff(DateType.Minute, b.CreateTime, DateTime.Now),
+ TownName = SqlFunc.Subqueryable()
+ .Where(sf => sf.UserId == a.Id)
+ .LeftJoin((sf, gs) => sf.OrgId == gs.Id)
+ .SelectStringJoin((sf, gs) => gs.Name, ",")
+ })
+ .MergeTable()
+ .Distinct()
+ .WhereIF(!string.IsNullOrEmpty(pageReq.townname), it => it.TownName.Contains(pageReq.townname))
+ .WhereIF(pageReq.isonline != "全部", it => it.State == pageReq.isonline)
+ .OrderByDescending(it => it.CreateTime)
+ .ToPageListAsync(pageReq.page, pageReq.limit, totalNumber);
+
+ var onlineCount = await userInfoQuery
+ .Where((a, b, c) => a.CreateTime.AddMinutes(2) > DateTime.Now)
+ .Select(a => a.Id)
+ .Distinct()
+ .CountAsync();
+
+ // 离线人数
+ var offlineCount = totalNumber - onlineCount;
+
+ var enddata = new
+ {
+ userinfo,
+ online = onlineCount,
+ offline = offlineCount,
+ };
+
+
+ return new Response>
+ {
+ Result = new PageInfo { Items = enddata, Total = totalNumber }
+ };
+ }
+ }
}
}
diff --git a/OpenAuth.App/ServiceApp/FireManagement/FirePatrolApp.cs b/OpenAuth.App/ServiceApp/FireManagement/FirePatrolApp.cs
index b5cd5bf..49b5068 100644
--- a/OpenAuth.App/ServiceApp/FireManagement/FirePatrolApp.cs
+++ b/OpenAuth.App/ServiceApp/FireManagement/FirePatrolApp.cs
@@ -9,6 +9,11 @@ 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
{
@@ -19,7 +24,14 @@ namespace OpenAuth.App.ServiceApp.FireManagement
{
_auth = auth;
}
- public async Task> GetPatrolInfoByUserId(long id, DateTime beginTime, DateTime endTime)
+ ///
+ /// 巡查轨迹
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task>> GetPatrolInfoByUserId(long id, DateTime beginTime, DateTime endTime)
{
using (SugarDbContext db = base.UnitWork.CreateContext())
{
@@ -27,11 +39,101 @@ namespace OpenAuth.App.ServiceApp.FireManagement
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],
+ };
-
- return new Response { Result = false, Message = "操作失败" };
+ 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 = "操作成功" };
+ }
+ }
}
}
diff --git a/OpenAuth.App/ServiceApp/FireManagement/Request/UserOnLineReq.cs b/OpenAuth.App/ServiceApp/FireManagement/Request/UserOnLineReq.cs
new file mode 100644
index 0000000..ef8a6ef
--- /dev/null
+++ b/OpenAuth.App/ServiceApp/FireManagement/Request/UserOnLineReq.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OpenAuth.App.ServiceApp.FireManagement.Request
+{
+ public class UserOnLineReq
+ {
+ public int page { get; set; }
+ public int limit { get; set; }
+ public string townname { get; set; }
+ public string isonline { get; set; }
+ public UserOnLineReq()
+ {
+ page = 1;
+ limit = 10;
+ }
+ }
+}
diff --git a/OpenAuth.App/ServiceApp/FireManagement/Response/PointstatisticsResp.cs b/OpenAuth.App/ServiceApp/FireManagement/Response/PointstatisticsResp.cs
new file mode 100644
index 0000000..b21e06f
--- /dev/null
+++ b/OpenAuth.App/ServiceApp/FireManagement/Response/PointstatisticsResp.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OpenAuth.App.ServiceApp.FireManagement.Response
+{
+ public class PointstatisticsResp
+ {
+ public string Name { get; set; }
+ public string Account { get; set; }
+ public long Id { get; set; }
+ public string TownName { get; set; }
+ public string AreaName { get; set; }
+ public DateTime? BeginTime { get; set; }
+ public DateTime? EndTime { get; set; }
+ public int dakacishu { get; set; }
+ public int xunjian { get; set; }
+ public int dakadian { get; set; }
+ public double lengths { get; set; }
+ public int duration { get; set; }
+ public double effectiverate { get; set; }
+ }
+}
diff --git a/OpenAuth.App/ServiceApp/FireManagement/Response/UserOnLineResp.cs b/OpenAuth.App/ServiceApp/FireManagement/Response/UserOnLineResp.cs
new file mode 100644
index 0000000..d26ba03
--- /dev/null
+++ b/OpenAuth.App/ServiceApp/FireManagement/Response/UserOnLineResp.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OpenAuth.App.ServiceApp.FireManagement.Response
+{
+ public class UserOnLineResp
+ {
+ public long CreateId { get; set; }
+ public string Name { get; set; }
+ public DateTime CreateTime { get; set; }
+ public string Lng { get; set; }
+ public string Lat { get; set; }
+ public string Type { get; set; }
+ public int Identity { get; set; }
+ public string Phone { get; set; }
+ public string State { get; set; }//在线状态
+ public double OnLineTime { get; set; }
+ public int IsIn { get; set; }
+ public string TownName { get; set; }
+ }
+}
diff --git a/OpenAuth.App/ServiceApp/FireManagement/Response/UserPatrolInfoResp.cs b/OpenAuth.App/ServiceApp/FireManagement/Response/UserPatrolInfoResp.cs
new file mode 100644
index 0000000..e38a2b2
--- /dev/null
+++ b/OpenAuth.App/ServiceApp/FireManagement/Response/UserPatrolInfoResp.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OpenAuth.App.ServiceApp.FireManagement.Response
+{
+ public class UserPatrolInfoResp
+ {
+ public long CreateId { get; set; }
+ public string Name { get; set; }
+ public string StartTime { get; set; }
+ public string EndTime { get; set; }
+ }
+}
diff --git a/OpenAuth.Repository/Domain/FireManagement/FmUserPoint.cs b/OpenAuth.Repository/Domain/FireManagement/FmUserPoint.cs
index 84ff18f..80e9e3c 100644
--- a/OpenAuth.Repository/Domain/FireManagement/FmUserPoint.cs
+++ b/OpenAuth.Repository/Domain/FireManagement/FmUserPoint.cs
@@ -37,7 +37,7 @@ namespace OpenAuth.Repository.Domain.FireManagement
///
/// CreateId
///
- public string CreateId { get; set; }
+ public long CreateId { get; set; }
///
/// 是否置顶
///
diff --git a/OpenAuth.Repository/Domain/FireManagement/FmUserPointHistory.cs b/OpenAuth.Repository/Domain/FireManagement/FmUserPointHistory.cs
index a29986b..23a75cd 100644
--- a/OpenAuth.Repository/Domain/FireManagement/FmUserPointHistory.cs
+++ b/OpenAuth.Repository/Domain/FireManagement/FmUserPointHistory.cs
@@ -36,7 +36,7 @@ namespace OpenAuth.Repository.Domain.FireManagement
///
/// CreateId
///
- public string CreateId { get; set; }
+ public long CreateId { get; set; }
///
/// 是否在巡查范围之内0-不是 1-是
///
diff --git a/OpenAuth.Repository/Domain/SysFrontendSettingConfig.cs b/OpenAuth.Repository/Domain/SysFrontendSettingConfig.cs
new file mode 100644
index 0000000..39516dc
--- /dev/null
+++ b/OpenAuth.Repository/Domain/SysFrontendSettingConfig.cs
@@ -0,0 +1,23 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OpenAuth.Repository.Domain
+{
+ [SugarTable("sys_frontendsettingconfig")]
+ public class SysFrontendSettingConfig
+ {
+ ///
+ /// 主键
+ ///
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Code { get; set; }
+ ///
+ /// 值
+ ///
+ public string CodeValue { get; set; }
+ }
+}
diff --git a/OpenAuth.Repository/SugarDbContext.cs b/OpenAuth.Repository/SugarDbContext.cs
index e122c71..274cbe1 100644
--- a/OpenAuth.Repository/SugarDbContext.cs
+++ b/OpenAuth.Repository/SugarDbContext.cs
@@ -46,6 +46,7 @@ namespace OpenAuth.Repository
public SugarRepositiry SysModuleForm { get; set; }
public SugarRepositiry FormModuleEntity { get; set; }
public SugarRepositiry SysDatabaseLink { get; set; }
+ public SugarRepositiry SysFrontendSettingConfig { get; set; }
public SugarRepositiry WFScheme { get; set; }
@@ -76,6 +77,8 @@ namespace OpenAuth.Repository
public SugarRepositiry FmCheckArea { get; set; }
public SugarRepositiry FmCheckClockOn { get; set; }
public SugarRepositiry FmUserTimeSlot { get; set; }
+ public SugarRepositiry FmUserPoint { get; set; }
+ public SugarRepositiry FmUserPointHistory { get; set; }
#endregion
public SugarRepositiry DmModule { get; set; }
diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireGridController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireGridController.cs
index 8450ded..761da5d 100644
--- a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireGridController.cs
+++ b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireGridController.cs
@@ -1,8 +1,10 @@
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
using OpenAuth.App.ServiceApp.FireManagement;
using OpenAuth.App.ServiceApp.FireManagement.Request;
+using OpenAuth.App.ServiceApp.FireManagement.Response;
using OpenAuth.Repository.Domain.FireManagement;
namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
@@ -128,6 +130,52 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
return response;
}
///
+ /// 获取打卡记录
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task>>> GetCheckPointById(long id, int pageIndex = 1, int pageSize = 10)
+ {
+ Response>> response = new Response>>();
+ try
+ {
+ return await _app.GetCheckPointById(id, pageIndex, pageSize);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
+ ///
+ /// 打卡信息
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task>>> GetCheckInfoByUserId(long id, int pageIndex = 1, int pageSize = 10)
+ {
+ Response>> response = new Response>>();
+ try
+ {
+ return await _app.GetCheckInfoByUserId(id, pageIndex, pageSize);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
+ ///
/// 获取打卡记录列表
///
/// 人员ID
@@ -152,5 +200,53 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
}
return response;
}
+ ///
+ /// 数据总览
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task> GetStatisticsCount(long areaid, DateTime begintime, DateTime endtime)
+ {
+ Response response = new Response();
+ try
+ {
+ return await _app.GetStatisticsCount(areaid, begintime, endtime);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
+ ///
+ /// 数据列表
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task>>> Getstatistics(long areaid, DateTime begintime, DateTime endtime, int pageIndex, int pageSize)
+ {
+ Response>> response = new Response>>();
+ try
+ {
+ return await _app.Getstatistics(areaid, begintime, endtime, pageIndex, pageSize);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
}
}
diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireManagementController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireManagementController.cs
index e567b79..5f65357 100644
--- a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireManagementController.cs
+++ b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FireManagementController.cs
@@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.ServiceApp.FireManagement;
+using OpenAuth.App.ServiceApp.FireManagement.Request;
using OpenAuth.App.ServiceApp.FireManagement.Response;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Domain.FireManagement;
@@ -306,6 +307,24 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
return response;
}
#endregion
-
+ ///
+ /// 在线情况
+ ///
+ ///
+ ///
+ public async Task>> GetPointUserOnLine(UserOnLineReq pageReq)
+ {
+ Response> response = new Response>();
+ try
+ {
+ return await _app.GetPointUserOnLine(pageReq);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
}
}
diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FirePatrolController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FirePatrolController.cs
index ee8a192..2924134 100644
--- a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FirePatrolController.cs
+++ b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FirePatrolController.cs
@@ -1,4 +1,11 @@
-using Microsoft.AspNetCore.Mvc;
+using Infrastructure;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using OpenAuth.App.ServiceApp.FireManagement;
+using OpenAuth.App.ServiceApp.FireManagement.Request;
+using OpenAuth.App.ServiceApp.FireManagement.Response;
+using OpenAuth.Repository.Domain.FireManagement;
+using System.Data;
namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
{
@@ -6,6 +13,101 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
[ApiController]
public class FirePatrolController : ControllerBase
{
-
+ private readonly FirePatrolApp _app;
+
+ public FirePatrolController(FirePatrolApp app)
+ {
+ _app = app;
+ }
+ ///
+ /// 获取人员巡查轨迹
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task>> GetPatrolInfoByUserId(long id, DateTime beginTime, DateTime endTime)
+ {
+ Response> response = new Response>();
+ try
+ {
+ return await _app.GetPatrolInfoByUserId(id, beginTime, endTime);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
+ ///
+ /// 巡查坐标
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task>> LoadPatrolPointByTime(long id, DateTime beginTime, DateTime endTime)
+ {
+ Response> response = new Response>();
+ try
+ {
+ return await _app.LoadPatrolPointByTime(id, beginTime, endTime);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
+ ///
+ /// 获取人员范围
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task> GetUserRange(string phone)
+ {
+ Response response = new Response();
+ try
+ {
+ return await _app.GetUserRange(phone);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
+ ///
+ /// 巡查信息
+ ///
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task>> LoadPatrolPointByTimeSubsection(long id, DateTime beginTime, DateTime endTime)
+ {
+ Response> response = new Response>();
+ try
+ {
+ return await _app.LoadPatrolPointByTimeSubsection(id, beginTime, endTime);
+ }
+ catch (Exception ex)
+ {
+ response.Code = 500;
+ response.Message = ex.InnerException?.Message ?? ex.Message;
+ }
+ return response;
+ }
}
}
diff --git a/OpenAuth.WebApi/temp-keys/key-06f500b0-2e7d-469b-a1f5-0568e64f467d.xml b/OpenAuth.WebApi/temp-keys/key-06f500b0-2e7d-469b-a1f5-0568e64f467d.xml
new file mode 100644
index 0000000..5bfbbbf
--- /dev/null
+++ b/OpenAuth.WebApi/temp-keys/key-06f500b0-2e7d-469b-a1f5-0568e64f467d.xml
@@ -0,0 +1,16 @@
+
+
+ 2025-03-28T06:31:03.5905194Z
+ 2025-03-28T08:22:54.9645899Z
+ 2025-06-26T06:31:03.5578076Z
+
+
+
+
+
+
+ HrD/F7qFsCdmhLtgfYiM6gKWddCWz4Yby0ke5V+qT7ekcaUdtPKG1/kUFAH2E1fv50qV2vvzLzqhPftVkXH6uw==
+
+
+
+
\ No newline at end of file