巡检管理
parent
030f0ff1e3
commit
16cf9ea056
|
|
@ -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
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取打卡记录
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <param name="pageIndex"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Response<PageInfo<List<dynamic>>>> GetCheckPointById(long id, int pageIndex = 1, int pageSize = 10)
|
||||
{
|
||||
using (SugarDbContext db = base.UnitWork.CreateContext())
|
||||
{
|
||||
RefAsync<int> totalNumber = 0;
|
||||
var query = await db.FmCheckClockOn.AsQueryable()
|
||||
.LeftJoin<FmCheckInPoint>((a, b) => a.PointId == b.Id)
|
||||
.LeftJoin<SysUser>((a, b, c) => a.UserId == c.Id)
|
||||
.WhereIF(id != 0, (a, b, c) => a.PointId == id)
|
||||
.Select<dynamic>((a, b, c) => new
|
||||
{
|
||||
a.Id,
|
||||
a.Lng,
|
||||
a.Lat,
|
||||
b.PointName,
|
||||
c.Name,
|
||||
UserId = SqlFunc.Subqueryable<FmCheckPointUser>().Where(a => a.PointId == id).ToList(a => a.UserId),
|
||||
AreaId = SqlFunc.Subqueryable<FmCheckArea>().Where(a => a.PointId == id).ToList(a => a.AreaId),
|
||||
}).ToPageListAsync(pageIndex, pageSize, totalNumber);
|
||||
return new Response<PageInfo<List<dynamic>>>
|
||||
{
|
||||
Result = new PageInfo<List<dynamic>> { Items = query, Total = totalNumber }
|
||||
};
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取打卡记录
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <param name="pageIndex"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Response<PageInfo<List<dynamic>>>> GetCheckInfoByUserId(long id, int pageIndex = 1, int pageSize = 10)
|
||||
{
|
||||
using (SugarDbContext db = base.UnitWork.CreateContext())
|
||||
{
|
||||
RefAsync<int> totalNumber = 0;
|
||||
var query = await db.FmCheckClockOn.AsQueryable()
|
||||
.LeftJoin<FmCheckInPoint>((a, b) => a.PointId == b.Id)
|
||||
.LeftJoin<SysUser>((a, b, c) => a.UserId == c.Id)
|
||||
.WhereIF(id != 0, (a, b, c) => a.UserId == id)
|
||||
.Select<dynamic>((a, b, c) => new
|
||||
{
|
||||
a.Id,
|
||||
a.Lng,
|
||||
a.Lat,
|
||||
b.PointName,
|
||||
c.Name,
|
||||
a.ClockonTime
|
||||
}).ToPageListAsync(pageIndex, pageSize, totalNumber);
|
||||
return new Response<PageInfo<List<dynamic>>>
|
||||
{
|
||||
Result = new PageInfo<List<dynamic>> { Items = query, Total = totalNumber }
|
||||
};
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 查询打卡记录
|
||||
/// </summary>
|
||||
|
|
@ -210,6 +279,138 @@ namespace OpenAuth.App.ServiceApp.FireManagement
|
|||
}
|
||||
}
|
||||
|
||||
public async Task<Response<JObject>> 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<SysUserRole>((a, b) => a.Id == b.UserId)
|
||||
.LeftJoin<SysUserOrg>((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<FmCheckArea>((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<JObject>
|
||||
{
|
||||
Result = obj
|
||||
};
|
||||
}
|
||||
}
|
||||
public async Task<Response<JObject>> 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<SysUserRole>((a, b) => a.Id == b.UserId)
|
||||
.LeftJoin<SysUserOrg>((a, b, c) => a.Id == c.UserId)
|
||||
.LeftJoin<SysOrg>((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<FmCheckClockOn>().Where(r => r.UserId == a.Id).Where(r => r.ClockonTime >= begintime && r.ClockonTime <= endtime).Count(),
|
||||
dakadian = SqlFunc.Subqueryable<FmCheckPointUser>().Where(p => p.UserId == a.Id).Count(),
|
||||
lengths = SqlFunc.Subqueryable<FmUserPointHistory>().Where(r => r.CreateId == a.Id).Where(r => r.CreateTime >= begintime && r.CreateTime <= endtime).Sum(r => r.Distance),
|
||||
|
||||
}).ToList();
|
||||
return new Response<JObject>
|
||||
{
|
||||
Result = new JObject()
|
||||
};
|
||||
}
|
||||
}
|
||||
public async Task<Response<PageInfo<List<PointstatisticsResp>>>> Getstatistics(long areaid, DateTime begintime, DateTime endtime, int pageIndex, int pageSize)
|
||||
{
|
||||
using (SugarDbContext db = base.UnitWork.CreateContext())
|
||||
{
|
||||
RefAsync<int> 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<SysUserRole>((a, b) => a.Id == b.UserId)
|
||||
.LeftJoin<SysUserOrg>((a, b, c) => a.Id == c.UserId)
|
||||
.LeftJoin<SysOrg>((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<PageInfo<List<PointstatisticsResp>>>
|
||||
{
|
||||
Result = new PageInfo<List<PointstatisticsResp>> { 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<string> deplist = new List<string>();
|
||||
// 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<Response<bool>> UploadLocation(FmUserPoint info)
|
||||
//{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
/// <summary>
|
||||
/// 在线情况
|
||||
/// </summary>
|
||||
/// <param name="pageReq"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Response<PageInfo<dynamic>>> GetPointUserOnLine(UserOnLineReq pageReq)
|
||||
{
|
||||
using (var db = base.UnitWork.CreateContext())
|
||||
{
|
||||
RefAsync<int> totalNumber = 0;
|
||||
var user = _auth.GetCurrentUser().User;
|
||||
//该用户下包含所有部门
|
||||
var orgid = _auth.GetCurrentUser().Orgs;
|
||||
var chileorglist = new List<long>();
|
||||
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<FmUserPoint>((a, b) => a.Id == b.CreateId)
|
||||
.LeftJoin<SysUserOrg>((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<SysUserOrg>()
|
||||
.Where(sf => sf.UserId == a.Id)
|
||||
.LeftJoin<SysOrg>((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<PageInfo<dynamic>>
|
||||
{
|
||||
Result = new PageInfo<dynamic> { Items = enddata, Total = totalNumber }
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Response<bool>> GetPatrolInfoByUserId(long id, DateTime beginTime, DateTime endTime)
|
||||
/// <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())
|
||||
{
|
||||
|
|
@ -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<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],
|
||||
};
|
||||
|
||||
|
||||
return new Response<bool> { 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<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 = "操作成功" };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ namespace OpenAuth.Repository.Domain.FireManagement
|
|||
/// <summary>
|
||||
/// CreateId
|
||||
/// </summary>
|
||||
public string CreateId { get; set; }
|
||||
public long CreateId { get; set; }
|
||||
/// <summary>
|
||||
/// 是否置顶
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace OpenAuth.Repository.Domain.FireManagement
|
|||
/// <summary>
|
||||
/// CreateId
|
||||
/// </summary>
|
||||
public string CreateId { get; set; }
|
||||
public long CreateId { get; set; }
|
||||
/// <summary>
|
||||
/// 是否在巡查范围之内0-不是 1-是
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 主键
|
||||
/// </summary>
|
||||
[SugarColumn(IsPrimaryKey = true)]
|
||||
public string Code { get; set; }
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public string CodeValue { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -46,6 +46,7 @@ namespace OpenAuth.Repository
|
|||
public SugarRepositiry<SysModuleForm> SysModuleForm { get; set; }
|
||||
public SugarRepositiry<FormModuleEntity> FormModuleEntity { get; set; }
|
||||
public SugarRepositiry<SysDatabaseLink> SysDatabaseLink { get; set; }
|
||||
public SugarRepositiry<SysFrontendSettingConfig> SysFrontendSettingConfig { get; set; }
|
||||
|
||||
|
||||
public SugarRepositiry<WFScheme> WFScheme { get; set; }
|
||||
|
|
@ -76,6 +77,8 @@ namespace OpenAuth.Repository
|
|||
public SugarRepositiry<FmCheckArea> FmCheckArea { get; set; }
|
||||
public SugarRepositiry<FmCheckClockOn> FmCheckClockOn { get; set; }
|
||||
public SugarRepositiry<FmUserTimeSlot> FmUserTimeSlot { get; set; }
|
||||
public SugarRepositiry<FmUserPoint> FmUserPoint { get; set; }
|
||||
public SugarRepositiry<FmUserPointHistory> FmUserPointHistory { get; set; }
|
||||
#endregion
|
||||
|
||||
public SugarRepositiry<DmModule> DmModule { get; set; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取打卡记录
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="pageIndex"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<PageInfo<List<dynamic>>>> GetCheckPointById(long id, int pageIndex = 1, int pageSize = 10)
|
||||
{
|
||||
Response<PageInfo<List<dynamic>>> response = new Response<PageInfo<List<dynamic>>>();
|
||||
try
|
||||
{
|
||||
return await _app.GetCheckPointById(id, pageIndex, pageSize);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 打卡信息
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="pageIndex"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<PageInfo<List<dynamic>>>> GetCheckInfoByUserId(long id, int pageIndex = 1, int pageSize = 10)
|
||||
{
|
||||
Response<PageInfo<List<dynamic>>> response = new Response<PageInfo<List<dynamic>>>();
|
||||
try
|
||||
{
|
||||
return await _app.GetCheckInfoByUserId(id, pageIndex, pageSize);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取打卡记录列表
|
||||
/// </summary>
|
||||
/// <param name="userId">人员ID</param>
|
||||
|
|
@ -152,5 +200,53 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
|
|||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 数据总览
|
||||
/// </summary>
|
||||
/// <param name="areaid"></param>
|
||||
/// <param name="begintime"></param>
|
||||
/// <param name="endtime"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<JObject>> GetStatisticsCount(long areaid, DateTime begintime, DateTime endtime)
|
||||
{
|
||||
Response<JObject> response = new Response<JObject>();
|
||||
try
|
||||
{
|
||||
return await _app.GetStatisticsCount(areaid, begintime, endtime);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 数据列表
|
||||
/// </summary>
|
||||
/// <param name="areaid"></param>
|
||||
/// <param name="begintime"></param>
|
||||
/// <param name="endtime"></param>
|
||||
/// <param name="pageIndex"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<PageInfo<List<PointstatisticsResp>>>> Getstatistics(long areaid, DateTime begintime, DateTime endtime, int pageIndex, int pageSize)
|
||||
{
|
||||
Response<PageInfo<List<PointstatisticsResp>>> response = new Response<PageInfo<List<PointstatisticsResp>>>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
/// <summary>
|
||||
/// 在线情况
|
||||
/// </summary>
|
||||
/// <param name="pageReq"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Response<PageInfo<dynamic>>> GetPointUserOnLine(UserOnLineReq pageReq)
|
||||
{
|
||||
Response<PageInfo<dynamic>> response = new Response<PageInfo<dynamic>>();
|
||||
try
|
||||
{
|
||||
return await _app.GetPointUserOnLine(pageReq);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取人员巡查轨迹
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="beginTime"></param>
|
||||
/// <param name="endTime"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<List<UserPatrolInfoResp>>> GetPatrolInfoByUserId(long id, DateTime beginTime, DateTime endTime)
|
||||
{
|
||||
Response<List<UserPatrolInfoResp>> response = new Response<List<UserPatrolInfoResp>>();
|
||||
try
|
||||
{
|
||||
return await _app.GetPatrolInfoByUserId(id, beginTime, endTime);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 巡查坐标
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="beginTime"></param>
|
||||
/// <param name="endTime"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<List<FmUserPointHistory>>> LoadPatrolPointByTime(long id, DateTime beginTime, DateTime endTime)
|
||||
{
|
||||
Response<List<FmUserPointHistory>> response = new Response<List<FmUserPointHistory>>();
|
||||
try
|
||||
{
|
||||
return await _app.LoadPatrolPointByTime(id, beginTime, endTime);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取人员范围
|
||||
/// </summary>
|
||||
/// <param name="phone"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<DataTable>> GetUserRange(string phone)
|
||||
{
|
||||
Response<DataTable> response = new Response<DataTable>();
|
||||
try
|
||||
{
|
||||
return await _app.GetUserRange(phone);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
/// <summary>
|
||||
/// 巡查信息
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="beginTime"></param>
|
||||
/// <param name="endTime"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<List<FmUserPointHistory>>> LoadPatrolPointByTimeSubsection(long id, DateTime beginTime, DateTime endTime)
|
||||
{
|
||||
Response<List<FmUserPointHistory>> response = new Response<List<FmUserPointHistory>>();
|
||||
try
|
||||
{
|
||||
return await _app.LoadPatrolPointByTimeSubsection(id, beginTime, endTime);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.InnerException?.Message ?? ex.Message;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<key id="06f500b0-2e7d-469b-a1f5-0568e64f467d" version="1">
|
||||
<creationDate>2025-03-28T06:31:03.5905194Z</creationDate>
|
||||
<activationDate>2025-03-28T08:22:54.9645899Z</activationDate>
|
||||
<expirationDate>2025-06-26T06:31:03.5578076Z</expirationDate>
|
||||
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
|
||||
<descriptor>
|
||||
<encryption algorithm="AES_256_CBC" />
|
||||
<validation algorithm="HMACSHA256" />
|
||||
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
|
||||
<!-- Warning: the key below is in an unencrypted form. -->
|
||||
<value>HrD/F7qFsCdmhLtgfYiM6gKWddCWz4Yby0ke5V+qT7ekcaUdtPKG1/kUFAH2E1fv50qV2vvzLzqhPftVkXH6uw==</value>
|
||||
</masterKey>
|
||||
</descriptor>
|
||||
</descriptor>
|
||||
</key>
|
||||
Loading…
Reference in New Issue