护林员打卡时间更新

DataMaintenance
洁 任 2026-01-30 15:13:00 +08:00
parent c5fbec5fe7
commit c35c0caab0
3 changed files with 125 additions and 59 deletions

View File

@ -40,6 +40,7 @@ using DocumentFormat.OpenXml.Wordprocessing;
using Newtonsoft.Json.Linq;
using DocumentFormat.OpenXml.Vml.Wordprocessing;
using Infrastructure.Cache;
using OpenAuth.App.ServiceApp.FmPreventionPlanManage.Request;
namespace OpenAuth.App.ServiceApp.FireManagement
{
@ -239,13 +240,13 @@ namespace OpenAuth.App.ServiceApp.FireManagement
fm.State = (int)State.;
fm.ReportTime = DateTime.Now;
fm.Lat = obj.Lat;
fm.Lng=obj.Lng;
fm.Address=obj.Address;
fm.AreaName=obj.AreaName;
fm.Image=obj.Image;
fm.Lng = obj.Lng;
fm.Address = obj.Address;
fm.AreaName = obj.AreaName;
fm.Image = obj.Image;
fm.SourceType = 3;
fm.ReportPerson = obj.ReportPerson;
fm.Describe=obj.Describe;
fm.Describe = obj.Describe;
fm.DegreeType = obj.DegreeType;
var today = DateTime.Now.Date;
var tomorrow = today.AddDays(1);
@ -326,13 +327,13 @@ namespace OpenAuth.App.ServiceApp.FireManagement
{
RefAsync<int> totalNumber = 0;
var tasks = await db.FmFireclueTask.AsQueryable()
.Where(r=>r.IsDelete == false)
.Where(r => r.IsDelete == false)
.WhereIF(req.state!=null,r=>r.State==req.state)
.WhereIF(req.type!=null,r=>r.Type==req.type)
.WhereIF(req.tasktimebegin!=null&&req.tasktimeend!=null,r=>r.TaskTime>=req.tasktimebegin&&r.TaskTime<=req.tasktimeend)
.LeftJoin<FmFireclueInfo>((r,f)=>r.Fireclueid==f.Id)
.WhereIF(!string.IsNullOrEmpty(req.name),(r,f)=>r.Content.Contains(req.name)||f.Describe.Contains(req.name))
.Where(r => r.IsDelete == false)
.WhereIF(req.state != null, r => r.State == req.state)
.WhereIF(req.type != null, r => r.Type == req.type)
.WhereIF(req.tasktimebegin != null && req.tasktimeend != null, r => r.TaskTime >= req.tasktimebegin && r.TaskTime <= req.tasktimeend)
.LeftJoin<FmFireclueInfo>((r, f) => r.Fireclueid == f.Id)
.WhereIF(!string.IsNullOrEmpty(req.name), (r, f) => r.Content.Contains(req.name) || f.Describe.Contains(req.name))
.ToPageListAsync(req.page, req.limit, totalNumber);
return new Response<PageInfo<List<FmFireclueTask>>>
{
@ -620,7 +621,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement
info.Id = YitIdHelper.NextId();
info.State = (int)State.;
info.ReportTime = DateTime.Now;
var today = DateTime.Now.Date;
var tomorrow = today.AddDays(1);
var exitinfo = db.FmFireclueInfo
@ -720,8 +721,8 @@ namespace OpenAuth.App.ServiceApp.FireManagement
.WhereIF(req.state != null, r => r.State == req.state)
.WhereIF(req.sourcetype != null, r => r.SourceType == req.sourcetype)
.WhereIF(req.reporttimebegin != null && req.reporttimeend != null, r => r.ReportTime >= req.reporttimebegin && r.ReportTime <= req.reporttimeend)
.WhereIF(!string.IsNullOrEmpty(req.name), r=> r.Describe.Contains(req.name))
.WhereIF(!string.IsNullOrEmpty(req.adress), r=> r.Address.Contains(req.adress))
.WhereIF(!string.IsNullOrEmpty(req.name), r => r.Describe.Contains(req.name))
.WhereIF(!string.IsNullOrEmpty(req.adress), r => r.Address.Contains(req.adress))
.ToPageListAsync(req.page, req.limit, totalNumber);
return new Response<PageInfo<List<FmFireclueInfo>>>
{
@ -827,7 +828,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement
}
}
public async Task<Response<List<FireInfoStateForChart>>> GetFireClueStatisticsByState(int type,List<int> sourcetype)
public async Task<Response<List<FireInfoStateForChart>>> GetFireClueStatisticsByState(int type, List<int> sourcetype)
{
using (var db = base.UnitWork.CreateContext())
{
@ -892,7 +893,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement
// 查询实际数据
var dataQuery = await db.FmFireclueInfo.AsQueryable()
.WhereIF(sourcetype.Count>0,r=>sourcetype.Contains(r.SourceType))
.WhereIF(sourcetype.Count > 0, r => sourcetype.Contains(r.SourceType))
.Where(r => r.ReportTime >= startDate && r.ReportTime <= endDate)
.GroupBy(r => new { r.ReportTime.Date })
.Select(r => new FireInfoState
@ -1020,7 +1021,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement
.Select(date => new
{
Date = date,
DayString =date.Month.ToString()+"." +date.Day.ToString()
DayString = date.Month.ToString() + "." + date.Day.ToString()
})
.ToList();
@ -1663,7 +1664,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement
/// <param name="port">设备端口例1443</param>
/// <param name="protocol"></param>
/// <returns></returns>
public string GetPreviewURL(string cameraIndexCode,string url,string appkey,string appsecret,int port, string protocol)
public string GetPreviewURL(string cameraIndexCode, string url, string appkey, string appsecret, int port, string protocol)
{
HttpUtillib.SetPlatformInfo(appkey, appsecret, url, port, true);
@ -1823,7 +1824,7 @@ ORDER BY
PgSqlIsAutoToLower = false,//增删查改支持驼峰表
}
};
List<FmCamera> fclist=new List<FmCamera>();
List<FmCamera> fclist = new List<FmCamera>();
using (SqlSugarClient db = new SqlSugarClient(connectionConfig))
{
//var list = db.Queryable<ztk_jcjk_jkdw>()
@ -1881,8 +1882,8 @@ ORDER BY
fc.SerialNumberRcx = item.jkdgbidzlrcx;
fclist.Add(fc);
}
var flag= await db.FmCamera.InsertRangeAsync(fclist);
if (db.Commit()&&flag==true)
var flag = await db.FmCamera.InsertRangeAsync(fclist);
if (db.Commit() && flag == true)
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
@ -1902,7 +1903,7 @@ ORDER BY
/// <param name="appkey">appkey</param>
/// <param name="appsecret">appsecret</param>
/// <returns></returns>
public async Task<Response<bool>>AddHaiKangCameraInfo(string ip, int port,string pathid,string appkey, string appsecret,int pageno=1,int pagesize=100)
public async Task<Response<bool>> AddHaiKangCameraInfo(string ip, int port, string pathid, string appkey, string appsecret, int pageno = 1, int pagesize = 100)
{
// 设置平台信息
HttpUtillib.SetPlatformInfo(appkey, appsecret, ip, port, true);
@ -1914,16 +1915,16 @@ ORDER BY
isSubRegion = true,
pageNo = pageno,
pageSize = pagesize, // 建议不要设置过大,海康可能有最大限制
orderBy="name",
orderType= "desc"
orderBy = "name",
orderType = "desc"
};
string body = JsonConvert.SerializeObject(obj);
string uri = "/artemis/api/resource/v2/camera/search";
byte[] result = HttpUtillib.HttpPost(uri, body, 15,1);
byte[] result = HttpUtillib.HttpPost(uri, body, 15, 1);
List<FmCamera> fclist = new List<FmCamera>();
var param = JsonConvert.DeserializeObject<JObject>(Encoding.UTF8.GetString(result));
var data= param["data"]["list"];
var data = param["data"]["list"];
using (var db = base.UnitWork.CreateContext())
{
@ -1933,48 +1934,48 @@ ORDER BY
//var cam=await Repository.AsSugarClient().SqlQueryable<dynamic>(sql).ToListAsync();
//if (cam.Count>0)
//{
FmCamera fc = new FmCamera();
fc.Id = Guid.NewGuid().ToString();
fc.Name = item["name"].ToString();
var type = item["regionPathName"].ToString();
if (type.IndexOf("林场") > -1)
FmCamera fc = new FmCamera();
fc.Id = Guid.NewGuid().ToString();
fc.Name = item["name"].ToString();
var type = item["regionPathName"].ToString();
if (type.IndexOf("林场") > -1)
{
fc.Model = "LinQuSheXiangTou";
}
else
{
if (type.IndexOf("林下") > -1)
{
fc.Model = "LinQuSheXiangTou";
fc.Model = "ShengTaiLinShiPinJianKong";
}
else
{
if (type.IndexOf("林下") > -1)
if (type.IndexOf("高空瞭望") > -1)
{
fc.Model = "ShengTaiLinShiPinJianKong";
fc.Model = "GaoKongLiaoWang";
}
else
{
if (type.IndexOf("高空瞭望") > -1)
{
fc.Model = "GaoKongLiaoWang";
}
else
{
fc.Model = "ShiPinJianKong";
}
fc.Model = "ShiPinJianKong";
}
}
}
fc.Status = "0"; //停用状态
fc.Manufacturer = "海康";
fc.SerialNumber = item["indexCode"].ToString();
fc.Ip = ip;
fc.Channel = 0;
fc.Lng = item["longitude"].ToString();
fc.Lat = item["latitude"].ToString();
fc.UpdateTime = Convert.ToDateTime(item["createTime"].ToString());
fc.AppKey = appkey;
fc.AppSecret = appsecret;
fc.Port = port.ToString();
fc.RegionPathName = item["regionPathName"].ToString();
fc.CameraType = Convert.ToInt32(item["cameraType"]);
fc.SerialNumberRcx = null;
fclist.Add(fc);
fc.Status = "0"; //停用状态
fc.Manufacturer = "海康";
fc.SerialNumber = item["indexCode"].ToString();
fc.Ip = ip;
fc.Channel = 0;
fc.Lng = item["longitude"].ToString();
fc.Lat = item["latitude"].ToString();
fc.UpdateTime = Convert.ToDateTime(item["createTime"].ToString());
fc.AppKey = appkey;
fc.AppSecret = appsecret;
fc.Port = port.ToString();
fc.RegionPathName = item["regionPathName"].ToString();
fc.CameraType = Convert.ToInt32(item["cameraType"]);
fc.SerialNumberRcx = null;
fclist.Add(fc);
//}
//else
//{
@ -2099,7 +2100,7 @@ ORDER BY
RefAsync<int> totalNumber = 0;
var infos = await db.FmCamera.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(req.name), r => r.Name.Contains(req.name))
.WhereIF(!string.IsNullOrEmpty(req.model), r => r.Model==req.model)
.WhereIF(!string.IsNullOrEmpty(req.model), r => r.Model == req.model)
.WhereIF(!string.IsNullOrEmpty(req.manufacturer), r => r.Manufacturer.Contains(req.manufacturer))
.WhereIF(!string.IsNullOrEmpty(req.serialnumber), r => r.SerialNumber.Contains(req.serialnumber))
.ToPageListAsync(req.page, req.limit, totalNumber);
@ -2578,5 +2579,46 @@ ORDER BY
return data;
}
#endregion
#region 护林员打卡时间添加/更新
//添加护林员打卡时间
public async Task<Response<bool>> AddOrUpdateTimeSolt(FmUserTimeSlot info)
{
using (var db = base.UnitWork.CreateContext())
{
if (info.CreateId == 0)
{
throw new Exception("请输入护林员id");
}
if (string.IsNullOrEmpty(info.Id))
{
info.Id = Guid.NewGuid().ToString();
}
//查询人员打卡时间是否已存在
var exitinfo = db.FmUserTimeSlot
.AsQueryable()
.Where(a => a.CreateId == info.CreateId)
.ToList();
//如果存在,删除,覆盖
if (exitinfo.Count > 0)
{
await db.FmUserTimeSlot.DeleteAsync(r => r.CreateId == info.CreateId);
}
var flag = await db.FmUserTimeSlot.InsertAsync(info);
if (flag && db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
// 如果执行到这里,说明操作失败
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
#endregion
}
}

View File

@ -14,7 +14,7 @@ namespace OpenAuth.Repository.Domain.FireManagement
public class FmUserTimeSlot
{
[SugarColumn(IsPrimaryKey = true)]
public long Id { get; set; }
public string Id { get; set; }
public long CreateId { get; set; }
public string TimeSlot { get; set; }
}

View File

@ -14,6 +14,7 @@ using DocumentFormat.OpenXml.EMMA;
using OpenAuth.Repository.Domain;
using Hopetry.App.SugarModel.CommonModel;
using Yitter.IdGenerator;
using OpenAuth.App.ServiceApp.FmPreventionPlanManage.Request;
namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
{
@ -1000,5 +1001,28 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
#endregion
#region 护林员打卡时间添加/更新
/// <summary>
/// 护林员打卡时间添加/更新
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
public async Task<Response<bool>> AddOrUpdateTimeSolt(FmUserTimeSlot info)
{
Response<bool> response = new();
try
{
return await _app.AddOrUpdateTimeSolt(info);
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.InnerException?.Message ?? ex.Message;
}
return response;
}
#endregion
}
}