diff --git a/SafeCampus.API/SafeCampus.Application/Const/ApplicationConst.cs b/SafeCampus.API/SafeCampus.Application/Const/ApplicationConst.cs
index 868984b..9e884dc 100644
--- a/SafeCampus.API/SafeCampus.Application/Const/ApplicationConst.cs
+++ b/SafeCampus.API/SafeCampus.Application/Const/ApplicationConst.cs
@@ -16,4 +16,20 @@ public class ApplicationConst
public const string BIZ_POS = "岗位";
#endregion 别称
+
+ #region 学校基础摄像头分组配置
+ ///
+ /// 图书馆分组id
+ ///
+ public const long TSG = 583660006621253;
+ ///
+ /// 食堂分组id
+ ///
+ public const long ST = 583659984986181;
+ ///
+ /// 学校大门分组id
+ ///
+ public const long XXDM = 583659952070725;
+
+ #endregion
}
diff --git a/SafeCampus.API/SafeCampus.Application/SafeCampus.Application.xml b/SafeCampus.API/SafeCampus.Application/SafeCampus.Application.xml
index 6a60cc3..9b212c2 100644
--- a/SafeCampus.API/SafeCampus.Application/SafeCampus.Application.xml
+++ b/SafeCampus.API/SafeCampus.Application/SafeCampus.Application.xml
@@ -14,6 +14,21 @@
岗位
+
+
+ 图书馆分组id
+
+
+
+
+ 食堂分组id
+
+
+
+
+ 学校大门分组id
+
+
深象智能对接实现
@@ -807,6 +822,21 @@
人员id
+
+
+ 关联底库id 如果为空,表示该人员未匹配到底库
+
+
+
+
+ 人员id
+
+
+
+
+ 所属点名任务
+
+
添加点名记录
@@ -1259,6 +1289,11 @@
院系id
+
+
+ 排序
+
+
专业名称
@@ -1622,7 +1657,7 @@
-
+
获取底库列表
@@ -1888,6 +1923,11 @@
班级id(不是必填)
+
+
+ 人员id
+
+
事件发生时间开始
@@ -1903,6 +1943,11 @@
摄像头id
+
+
+ 摄像头ids(不是必填)
+
+
预警处理状态
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/ClassRoomCallService.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/ClassRoomCallService.cs
index 4706deb..3e8cc2d 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/ClassRoomCallService.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/ClassRoomCallService.cs
@@ -1,4 +1,6 @@
-namespace SafeCampus.Application.Services.Business.ClassRoomCallService;
+using Dm;
+
+namespace SafeCampus.Application.Services.Business.ClassRoomCallService;
public class ClassRoomCallService : DbRepository, IClassRoomCallService
{
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/Dto/ClassRoomCallUpdate.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/Dto/ClassRoomCallUpdate.cs
index 85b2ead..b69591e 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/Dto/ClassRoomCallUpdate.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/ClassRoomCallService/Dto/ClassRoomCallUpdate.cs
@@ -14,4 +14,20 @@ public class ClassRoomCallUpdate
/// 人员id
///
public string PersonId { get; set; }
+}
+
+public class ClassRoomCallInsert
+{
+ ///
+ /// 关联底库id 如果为空,表示该人员未匹配到底库
+ ///
+ public string PersonSetId { get; set; }
+ ///
+ /// 人员id
+ ///
+ public string PersonId { get; set; }
+ ///
+ ///所属点名任务
+ ///
+ public string TaskId { get; set; }
}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/MajorService/Dto/MajorDto.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/MajorService/Dto/MajorDto.cs
index fa66126..a85a6ac 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/MajorService/Dto/MajorDto.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/MajorService/Dto/MajorDto.cs
@@ -1,6 +1,4 @@
-using SafeCampus.Application.Services.Business.DepartmentService;
-
-namespace SafeCampus.Application.Services.Business.MajorService;
+namespace SafeCampus.Application.Services.Business.MajorService;
public class MajorDto
{
@@ -21,6 +19,10 @@ public class MajorDto
/// 院系id
///
public long DepId { get; set; }
+ ///
+ /// 排序
+ ///
+ public int Sort { get; set; }
public string DepartmentName { get; set; }
}
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/Dto/PersonInfoDto.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/Dto/PersonInfoDto.cs
index 15451c5..89ece01 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/Dto/PersonInfoDto.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/Dto/PersonInfoDto.cs
@@ -66,6 +66,9 @@ public class PersonInfoDto
/// 进班时间
///
public DateTime? InsTime { get; set; }
+
+ public string DepName { get; set; }
+ public string MajorName { get; set; }
}
public class PersonInfoDtoMapper : IRegister
{
@@ -76,6 +79,8 @@ public class PersonInfoDtoMapper : IRegister
.Map(dest => dest.PersonSetId, src => src.PersonSetId)
.Map(dest => dest.PersonSetName, src => src.PersonSetInfoItem.PersonSetName)
.Map(dest => dest.Faces, src => src.PersonFacesList)
- .Map(dest => dest.DormitoryName, src => src.DormitoryInfoItem.Name);
+ .Map(dest => dest.DormitoryName, src => src.DormitoryInfoItem.Name)
+ .Map(dest => dest.DepName, src => src.PersonSetInfoItem.MajorInfoItem.DepartmentInfoItem.Name)
+ .Map(dest => dest.MajorName, src => src.PersonSetInfoItem.MajorInfoItem.Name);
}
}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/PersonInfoService.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/PersonInfoService.cs
index 61a1597..0ae680a 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/PersonInfoService.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonInfoService/PersonInfoService.cs
@@ -29,7 +29,7 @@ public class PersonInfoService:DbRepository, IPersonInfoService
{
var model = await Context.Queryable()
.Includes(x => x.DormitoryInfoItem)
- .Includes(x => x.PersonSetInfoItem)
+ .Includes(x => x.PersonSetInfoItem,x=>x.MajorInfoItem,x=>x.DepartmentInfoItem)
.Includes(x => x.PersonFacesList)
.FirstAsync(x => x.PersonId == id);
if (model == null)
@@ -64,7 +64,7 @@ public class PersonInfoService:DbRepository, IPersonInfoService
public async Task> GetPageList(PersonInfoSearch search)
{
var query = Context.Queryable()
- .Includes(x => x.PersonSetInfoItem)
+ .Includes(x => x.PersonSetInfoItem, x => x.MajorInfoItem, x => x.DepartmentInfoItem)
.Includes(x=>x.PersonFacesList)
.Includes(x=>x.DormitoryInfoItem)
.WhereIF(!string.IsNullOrEmpty(search.PersonSetId), x => x.PersonSetId == search.PersonSetId)
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/IPersonSetInfoService.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/IPersonSetInfoService.cs
index 01d60aa..2e8419c 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/IPersonSetInfoService.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/IPersonSetInfoService.cs
@@ -23,5 +23,5 @@ public interface IPersonSetInfoService:ITransient
/// 获取底库列表
///
///
- Task> GetPageList(long? majorId);
+ Task> GetPageList(long? majorId,string setName);
}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/PersonSetInfoService.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/PersonSetInfoService.cs
index 8f2dda1..1f6eb93 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/PersonSetInfoService.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/PersonSetInfoService/PersonSetInfoService.cs
@@ -38,12 +38,13 @@ public class PersonSetInfoService:DbRepository, IPersonSetInfoSer
return true;
}
- public async Task> GetPageList(long? majorId)
+ public async Task> GetPageList(long? majorId, string setName)
{
var list =await Context.Queryable()
.Includes(x=>x.MajorInfoItem,x=>x.DepartmentInfoItem)
.Where(x=>x.PersonSetId!=SafeCampusConst.ZDRY)
.WhereIF(majorId.HasValue,x=>x.MajorId==majorId)
+ .WhereIF(!string.IsNullOrEmpty(setName),x=>x.PersonSetName.Contains(setName))
.Includes(x => x.ClassTeacherItem, st => st.SysUserItem)
.ToListAsync();
return list.Adapt>();
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Dto/WarnInfoSearch.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Dto/WarnInfoSearch.cs
index dffbeb5..dd0ecaa 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Dto/WarnInfoSearch.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Dto/WarnInfoSearch.cs
@@ -15,6 +15,10 @@ public class WarnInfoSearch:BasePageInput
///
public List PersonSetIds { get; set; }
///
+ /// 人员id
+ ///
+ public string PersonId { get; set; }
+ ///
/// 事件发生时间开始
///
public DateTime? StartTick { get; set; }
@@ -27,6 +31,10 @@ public class WarnInfoSearch:BasePageInput
///
public string CameraId { get; set; }
///
+ /// 摄像头ids(不是必填)
+ ///
+ public List CameraIds { get; set; }
+ ///
/// 预警处理状态
///
public int? WarnHand { get; set; }
diff --git a/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Service/WarnInfoService.cs b/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Service/WarnInfoService.cs
index 00b6c24..dd73548 100644
--- a/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Service/WarnInfoService.cs
+++ b/SafeCampus.API/SafeCampus.Application/Services/Business/Warn/Service/WarnInfoService.cs
@@ -137,7 +137,9 @@ public class WarnInfoService:DbRepository, IWarnInfoService,ITransient
.WhereIF(!string.IsNullOrEmpty(search.AlarmType), x => x.AlarmType == search.AlarmType)
.WhereIF(search.AlarmTypes!=null&&search.AlarmTypes.Any(),x=>search.AlarmTypes.Contains(x.AlarmType))
.WhereIF(search.PersonSetIds != null&&search.PersonSetIds.Any(),x=>search.PersonSetIds.Contains(x.PersonSetId))
+ .WhereIF(search.CameraIds != null&&search.CameraIds.Any(),x=>search.CameraIds.Contains(x.CameraId))
.WhereIF(!string.IsNullOrEmpty(search.CameraId), x => x.CameraId == search.CameraId)
+ .WhereIF(!string.IsNullOrEmpty(search.PersonId), x => x.PersonId == search.PersonId)
.WhereIF(search.StartTick.HasValue, x => x.Tick >= search.StartTick)
.WhereIF(search.EndTick.HasValue, x => x.Tick <= search.EndTick);
diff --git a/SafeCampus.API/SafeCampus.Core/Enum/AlarmType.cs b/SafeCampus.API/SafeCampus.Core/Enum/AlarmType.cs
index c75baf3..935a056 100644
--- a/SafeCampus.API/SafeCampus.Core/Enum/AlarmType.cs
+++ b/SafeCampus.API/SafeCampus.Core/Enum/AlarmType.cs
@@ -6,136 +6,163 @@ public enum AlarmType
/// 周界入侵
///
[Description("周界入侵")]
+ [Display(Name = "visual_fence")]
visual_fence,
///
/// 翻越
///
[Description("翻越")]
+ [Display(Name = "climb_over")]
climb_over,
///
/// 人群聚集
///
[Description("人群聚集")]
+ [Display(Name = "crowd")]
crowd,
///
/// 烟火告警
///
[Description("烟火告警")]
+ [Display(Name = "fire_smoke")]
fire_smoke,
///
/// 可疑徘徊
///
[Description("可疑徘徊")]
+ [Display(Name = "wander")]
wander,
///
/// 重点人员布控
///
[Description("重点人员布控")]
+ [Display(Name = "blacklist")]
blacklist,
///
/// 奔跑
///
[Description("奔跑")]
+ [Display(Name = "run")]
run,
///
/// 追逐
///
[Description("追逐")]
+ [Display(Name = "chase")]
chase,
///
/// 摔倒
///
[Description("摔倒")]
+ [Display(Name = "fall_down")]
fall_down,
///
/// 跨线
///
[Description("跨线")]
+ [Display(Name = "cross_line")]
cross_line,
///
/// 教室点名
///
[Description("教室点名")]
+ [Display(Name = "class_room_call")]
class_room_call,
///
/// 趴桌子
///
[Description("趴桌子")]
+ [Display(Name = "lie_on_table")]
lie_on_table,
///
/// 抽烟检测
///
[Description("抽烟检测")]
+ [Display(Name = "person_smoke")]
person_smoke,
///
/// 猫鼠检测
///
[Description("猫鼠检测")]
+ [Display(Name = "animal_break_in")]
animal_break_in,
///
/// 巡更检测
///
[Description("巡更检测")]
+ [Display(Name = "patrol")]
patrol,
///
/// 离岗检测
///
[Description("离岗检测")]
+ [Display(Name = "off_duty")]
off_duty,
///
/// 打闹检测
///
[Description("打闹检测")]
+ [Display(Name = "fight")]
fight,
///
/// 未戴帽子检测
///
[Description("未戴帽子检测")]
+ [Display(Name = "hat_detect")]
hat_detect,
///
/// 未戴口罩检测
///
[Description("未戴口罩检测")]
+ [Display(Name = "mask_detect")]
mask_detect,
///
/// 未穿工作服检测
///
[Description("未穿工作服检测")]
+ [Display(Name = "cloth_detect")]
cloth_detect,
///
/// 洗手行为采集
///
[Description("洗手行为采集")]
+ [Display(Name = "wash_hand")]
wash_hand,
///
/// 车辆违停
///
[Description("车辆违停")]
+ [Display(Name = "vehicle_parking")]
vehicle_parking,
///
/// 车辆超速
///
[Description("车辆超速")]
+ [Display(Name = "vehicle_speeding")]
vehicle_speeding,
///
/// 违规占道
///
[Description("违规占道")]
+ [Display(Name = "violation_occupy")]
violation_occupy,
///
/// 玩手机
///
[Description("玩手机")]
+ [Display(Name = "play_phone")]
play_phone,
///
/// 骑车未戴头盔
///
[Description("骑车未戴头盔")]
+ [Display(Name = "bike_without_helmet")]
bike_without_helmet,
///
/// 儿童骑平衡车
///
[Description("儿童骑平衡车/滑板车")]
+ [Display(Name = "segway_with_child")]
segway_with_child
diff --git a/SafeCampus.API/SafeCampus.SqlSugar/Startup.cs b/SafeCampus.API/SafeCampus.SqlSugar/Startup.cs
index 1f02795..43d2afa 100644
--- a/SafeCampus.API/SafeCampus.SqlSugar/Startup.cs
+++ b/SafeCampus.API/SafeCampus.SqlSugar/Startup.cs
@@ -1,14 +1,4 @@
-
-//
-
-
-
-
-
-
-
-
-namespace SafeCampus.SqlSugar;
+namespace SafeCampus.SqlSugar;
///
/// AppStartup启动类
diff --git a/SafeCampus.API/SafeCampus.System/Entity/MajorInfo.cs b/SafeCampus.API/SafeCampus.System/Entity/MajorInfo.cs
index f4a47d1..98518f9 100644
--- a/SafeCampus.API/SafeCampus.System/Entity/MajorInfo.cs
+++ b/SafeCampus.API/SafeCampus.System/Entity/MajorInfo.cs
@@ -34,6 +34,6 @@ public class MajorInfo : PrimaryKeyEntity
///
/// 院系信息
///
- [Navigate(NavigateType.OneToOne, nameof(DepartmentInfo.Id), nameof(DepId))]
+ [Navigate(NavigateType.OneToOne, nameof(DepId))]
public DepartmentInfo DepartmentInfoItem { get; set; }
}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.System/Entity/PersonSetInfo.cs b/SafeCampus.API/SafeCampus.System/Entity/PersonSetInfo.cs
index eee9061..70c1f27 100644
--- a/SafeCampus.API/SafeCampus.System/Entity/PersonSetInfo.cs
+++ b/SafeCampus.API/SafeCampus.System/Entity/PersonSetInfo.cs
@@ -24,7 +24,7 @@ public class PersonSetInfo
///
/// 专业信息
///
- [Navigate(NavigateType.OneToOne, nameof(MajorInfo.Id), nameof(MajorId))]
+ [Navigate(NavigateType.OneToOne, nameof(MajorId))]
public MajorInfo MajorInfoItem { get; set; }
///
/// 班主任信息
diff --git a/SafeCampus.API/SafeCampus.System/SeedData/CameraGroupSeedData.cs b/SafeCampus.API/SafeCampus.System/SeedData/CameraGroupSeedData.cs
new file mode 100644
index 0000000..4972a3f
--- /dev/null
+++ b/SafeCampus.API/SafeCampus.System/SeedData/CameraGroupSeedData.cs
@@ -0,0 +1,9 @@
+namespace SafeCampus.System;
+
+public class CameraGroupSeedData : ISqlSugarEntitySeedData
+{
+ public IEnumerable SeedData()
+ {
+ return SeedDataUtil.GetSeedData("seed_sys_user.json");
+ }
+}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.System/SeedData/Json/seed_bus_cameraGroup.json b/SafeCampus.API/SafeCampus.System/SeedData/Json/seed_bus_cameraGroup.json
new file mode 100644
index 0000000..894582b
--- /dev/null
+++ b/SafeCampus.API/SafeCampus.System/SeedData/Json/seed_bus_cameraGroup.json
@@ -0,0 +1,23 @@
+{
+ "RECORDS": [
+ {
+ "Id": "583659544297541",
+ "Name": "学校点位配置"
+ },
+ {
+ "Id": "583659952070725",
+ "Name": "学校大门",
+ "ParentId": "583659544297541"
+ },
+ {
+ "Id": "583659984986181",
+ "Name": "食堂",
+ "ParentId": "583659544297541"
+ },
+ {
+ "Id": "583660006621253",
+ "Name": "图书馆",
+ "ParentId": "583659544297541"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.System/SeedData/SysUserSeedData.cs b/SafeCampus.API/SafeCampus.System/SeedData/SysUserSeedData.cs
index 21edb6d..2c2912c 100644
--- a/SafeCampus.API/SafeCampus.System/SeedData/SysUserSeedData.cs
+++ b/SafeCampus.API/SafeCampus.System/SeedData/SysUserSeedData.cs
@@ -1,14 +1,4 @@
-
-//
-
-
-
-
-
-
-
-
-namespace SafeCampus.System;
+namespace SafeCampus.System;
///
/// 用户表种子数据
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/ClassRoomCallApi.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/ClassRoomCallApi.cs
index 182a775..c4e5c60 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/ClassRoomCallApi.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/ClassRoomCallApi.cs
@@ -1,9 +1,11 @@
-using MoYu.FriendlyException;
+using Dm;
+using MoYu.FriendlyException;
using MoYu.RemoteRequest.Extensions;
using Newtonsoft.Json.Linq;
using SafeCampus.Application.Manager.DeepelephManager;
using SafeCampus.Application.Services.Business.ClassRoomCallService;
using SafeCampus.Application.Services.Business.ClassRoomCallTaskService;
+using SafeCampus.Core.Extension;
namespace SafeCampus.Web.Core.Controllers.Application.Business;
///
@@ -141,10 +143,46 @@ public class ClassRoomCallApi : IDynamicApiController
///
///
///
+ [Obsolete]
public async Task Update(ClassRoomCallUpdate input)
{
return await _classRoomCallService.Update(input);
}
+ ///
+ /// 手动点名
+ ///
+ ///
+ public async Task ManualRoll(List input)
+ {
+ var appSettings = App.GetOptionsMonitor();
+ foreach (var item in input)
+ {
+ var model = new ClassRoomCallDto
+ {
+ TenantCode = appSettings.TenantCode,
+ PoiId = appSettings.PoiId,
+ TaskId = item.TaskId,
+ AlarmType = "class_room_call",
+ AlarmTypeDesc = AlarmType.class_room_call.GetDescription(),
+ EventId ="",
+ CameraId = "",
+ Tick = DateTime.Now,
+ PersonSetId = item.PersonSetId,
+ PersonId = item.PersonId,
+ Similarity = 1,
+ FaceScore = 100,
+ SnapshotUrl = "",
+ SnapshotData = "",
+ Rects = "",
+ Extend = "",
+ CreateTime = DateTime.Now,
+ TrackId = ""
+ };
+ await _classRoomCallService.Add(model);
+ }
+
+ return true;
+ }
///
/// 删除点名记录(只可删除待处理的记录)
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DepartmentController.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DepartmentController.cs
index a6df05f..50b24db 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DepartmentController.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DepartmentController.cs
@@ -52,9 +52,10 @@ public class DepartmentController
///
/// id
///
- public async Task Delete(List id)
+ [HttpPost]
+ public async Task Delete(BaseIdListInput id)
{
- return await _departmentService.Delete(id);
+ return await _departmentService.Delete(id.Ids);
}
///
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DfieldApi.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DfieldApi.cs
index 7934b6c..e36aba1 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DfieldApi.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DfieldApi.cs
@@ -45,7 +45,7 @@ public class DfieldApi : IDynamicApiController
var model = JsonConvert.DeserializeObject(str);
if ((bool)model["success"])
{
- await _personSetInfoService.Add(new PersonSetInfoDto{PersonSetId = personSetId ,PersonSetName = input.Name,MajorId = input.MagjorId});
+ await _personSetInfoService.Add(new PersonSetInfoDto{PersonSetId = personSetId ,PersonSetName = input.Name,MajorId = input.MajorId});
return model["data"];
}
@@ -55,9 +55,9 @@ public class DfieldApi : IDynamicApiController
/// 查询底库列表
///
///
- public async Task QueryAll(long? majorId)
+ public async Task QueryAll(long? majorId,string setName)
{
- return await _personSetInfoService.GetPageList(majorId);
+ return await _personSetInfoService.GetPageList(majorId, setName);
var appSettings = App.GetOptionsMonitor();
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/queryAll"
.SetBody(new
@@ -152,7 +152,7 @@ public class DfieldApi : IDynamicApiController
{
PersonSetId = input.Id,
PersonSetName = input.Name,
- MajorId = input.MagjorId
+ MajorId = input.MajorId
});
}
return isOk;
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DormitoryController.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DormitoryController.cs
index 5d2839c..8ac60c8 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DormitoryController.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/DormitoryController.cs
@@ -145,7 +145,7 @@ public class DormitoryController
configId = queryList["data"][0]["configId"].ParseToInt();
}
var time = new { timeBegin = input.TimeBegin, timeEnd = input.TimeEnd };
- var personSetIds = await _personSetInfoService.GetPageList(null);
+ var personSetIds = await _personSetInfoService.GetPageList(null,null);
var cameras = await _cameraInfoService.GetPageList(new CameraSearch{PageSize = 1000,PageNum = 1});
var body = new
{
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/DfieldInput.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/DfieldInput.cs
index 8f9a958..1d1a629 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/DfieldInput.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/DfieldInput.cs
@@ -13,7 +13,7 @@ public class ControllersNameInput
///
/// 专业id
///
- public long MagjorId { get; set; }
+ public long MajorId { get; set; }
}
public class ControllersIdInput
{
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/MajorDepPersonSetModel.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/MajorDepPersonSetModel.cs
new file mode 100644
index 0000000..98301f6
--- /dev/null
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/Dto/MajorDepPersonSetModel.cs
@@ -0,0 +1,8 @@
+namespace SafeCampus.Web.Core.Controllers.Application.Business.Dto;
+
+public class MajorDepPersonSetModel
+{
+ public string Label { get; set; }
+ public object Value { get; set; }
+ public List Children { get; set; }
+}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MajorController.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MajorController.cs
index b06b794..3871817 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MajorController.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MajorController.cs
@@ -51,9 +51,10 @@ public class MajorController
///
/// id
///
- public async Task Delete(List id)
+ [HttpPost]
+ public async Task Delete(BaseIdListInput id)
{
- return await _majorService.Delete(id);
+ return await _majorService.Delete(id.Ids);
}
///
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MobileController.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MobileController.cs
new file mode 100644
index 0000000..7d93a84
--- /dev/null
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Business/MobileController.cs
@@ -0,0 +1,53 @@
+using SafeCampus.Application.Services.Business.DepartmentService;
+using SafeCampus.Application.Services.Business.MajorService;
+using SafeCampus.Application.Services.Business.PersonSetInfoService;
+using SafeCampus.Web.Core.Controllers.Application.Business.Dto;
+
+namespace SafeCampus.Web.Core.Controllers.Application.Business;
+///
+/// 移动端接口
+///
+[ApiDescriptionSettings(ApiGroupConsts.SYSTEM_Business, Order = 81, Tag = "移动端接口")]
+[Route("/business/mobile")]
+[RolePermission]
+public class MobileController
+{
+ private readonly IDepartmentService _departmentService;
+ private readonly IMajorService _majorService;
+ private readonly IPersonSetInfoService _personSetInfoService;
+
+ public MobileController(IDepartmentService departmentService, IMajorService majorService, IPersonSetInfoService personSetInfoService)
+ {
+ _departmentService = departmentService;
+ _majorService = majorService;
+ _personSetInfoService = personSetInfoService;
+ }
+
+ ///
+ /// 移动端获取专业系部班级列表
+ ///
+ ///
+ public async Task> GetMajorDep()
+ {
+ var dep = await _departmentService.GetNoPageList(new DepartmentSearch());
+ var major = await _majorService.GetNoPageList(new MajorSearch());
+ var set = await _personSetInfoService.GetPageList(null, null);
+ var list = dep.Select(item => new MajorDepPersonSetModel
+ {
+ Label = item.Name,
+ Value = item.Id,
+ Children = major.Where(x => x.DepId == item.Id)
+ .Select(x => new MajorDepPersonSetModel
+ {
+ Label = x.Name,
+ Value = x.Id,
+ Children = set.Where(xx => xx.MajorId == x.Id)
+ .Select(xxx => new MajorDepPersonSetModel { Label = xxx.PersonSetName, Value = xxx.PersonSetId })
+ .ToList()
+ })
+ .ToList(),
+ })
+ .ToList();
+ return await Task.FromResult(list);
+ }
+}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/LargeScreen/LargeScreenController.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/LargeScreen/LargeScreenController.cs
index b0f223d..4e41684 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/LargeScreen/LargeScreenController.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/LargeScreen/LargeScreenController.cs
@@ -308,9 +308,9 @@ public class LargeScreenController
/// 获取班级列表
///
///
- public async Task GetPersonSetNoPageList(long? majorId)
+ public async Task GetPersonSetNoPageList(long? majorId,string setName)
{
- return await _personSetInfoService.GetPageList(majorId);
+ return await _personSetInfoService.GetPageList(majorId, setName);
}
///
/// 获取专业
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/Dto/SearchType.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/Dto/SearchType.cs
new file mode 100644
index 0000000..5b8de26
--- /dev/null
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/Dto/SearchType.cs
@@ -0,0 +1,20 @@
+namespace SafeCampus.Web.Core.Controllers.Application.Violation;
+
+public enum SearchType
+{
+ ///
+ /// 本周
+ ///
+ [Description("本周")]
+ ThisWeek=1,
+ ///
+ /// 上周
+ ///
+ [Description("上周")]
+ LastWeek,
+ ///
+ /// 本月
+ ///
+ [Description("本月")]
+ ThisMonth,
+}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/SummarySeach.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/SummarySeach.cs
new file mode 100644
index 0000000..d286f97
--- /dev/null
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/SummarySeach.cs
@@ -0,0 +1,13 @@
+namespace SafeCampus.Web.Core.Controllers.Application.Violation;
+
+public class SummarySeach
+{
+ ///
+ /// 搜索条件
+ ///
+ public SearchType SearchType { get; set; }
+ ///
+ /// 人员id
+ ///
+ public string PersonId { get; set; }
+}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/VioPortraitSummary.cs b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/VioPortraitSummary.cs
index 8ca0ed2..b5e2277 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/VioPortraitSummary.cs
+++ b/SafeCampus.API/SafeCampus.Web.Core/Controllers/Application/Violation/VioPortraitSummary.cs
@@ -1,4 +1,10 @@
-using SafeCampus.Application.Services.Business.PersonInfoService;
+using Masuit.Tools.Systems;
+using SafeCampus.Application.Services.Business.CameraInfoService;
+using SafeCampus.Application.Services.Business.PersonInfoService;
+using SafeCampus.Application.Services.Business.Warn.Dto;
+using SafeCampus.Application.Services.Business.Warn.Service;
+using System;
+
namespace SafeCampus.Web.Core.Controllers.Application.Violation;
///
@@ -10,10 +16,14 @@ namespace SafeCampus.Web.Core.Controllers.Application.Violation;
public class VioPortraitSummary
{
private readonly IPersonInfoService _personInfoService;
+ private readonly ICameraInfoService _cameraInfoService;
+ private readonly IWarnInfoService _warnInfoService;
- public VioPortraitSummary(IPersonInfoService personInfoService)
+ public VioPortraitSummary(IPersonInfoService personInfoService, ICameraInfoService cameraInfoService, IWarnInfoService warnInfoService)
{
_personInfoService = personInfoService;
+ _cameraInfoService = cameraInfoService;
+ _warnInfoService = warnInfoService;
}
///
@@ -64,16 +74,131 @@ public class VioPortraitSummary
return new { label, value };
}
///
- /// 获取学生属性标签
+ /// 学生--告警分类统计
///
///
- public async Task GetStudentDetail()
+ public async Task GetStudentDetail(SummarySeach seach)
{
var random = new Random();
var label = new List { "打闹", "趴桌子", "爱运动", "喜欢读书", "性格孤僻" };
var value = label.Select(item => random.Next(2, 20)).ToList();
- //var value = new List() { 10, 5, 8, 5, 1 };
- return new { label, value };
+ return await Task.FromResult(new { label, value ,PF="93",XF="90"});
+ }
+ ///
+ /// 学生--出勤情况
+ ///
+ ///
+ public async Task Attendance(SummarySeach seach)
+ {
+ switch (seach.SearchType)
+ {
+ case SearchType.ThisWeek:
+ case SearchType.LastWeek:
+ case SearchType.ThisMonth:
+ default:
+ var random = new Random();
+ var label = new List { "正常出勤", "缺勤", "迟到" };
+ var value = label.Select(item => random.Next(2, 20)).ToList();
+ return await Task.FromResult(new { label, value });
+ }
+ }
+ ///
+ /// 学生--出校
+ ///
+ ///
+ public async Task OutsideSchool(SummarySeach seach)
+ {
+ return await StudentSummary(seach, ApplicationConst.XXDM);
+ }
+ ///
+ /// 学生--图书馆
+ ///
+ ///
+ public async Task Library(SummarySeach seach)
+ {
+ return await StudentSummary(seach, ApplicationConst.TSG);
+ }
+ ///
+ /// 学生--食堂
+ ///
+ ///
+ public async Task Canteen(SummarySeach seach)
+ {
+ return await StudentSummary(seach, ApplicationConst.ST);
}
+ ///
+ /// 学生画像统计
+ ///
+ ///
+ ///
+ ///
+ private async Task StudentSummary(SummarySeach seach,long groupId)
+ {
+ var camera = await _cameraInfoService.GetPageList(new CameraSearch { GroupId = groupId, PageSize = 1000, PageNum = 1 });
+ var cameraIds = camera.List.Select(x => x.SensorId).ToList();
+ DateTime endWeek = DateTime.Now;
+ // 获取本周的第一天(假设一周从周一开始)
+ DateTime startOfWeek = endWeek.AddDays(-(int)endWeek.DayOfWeek + (int)DayOfWeek.Monday);
+ var label = new List();
+ var value = new List();
+ switch (seach.SearchType)
+ {
+ case SearchType.ThisWeek:
+ var list = await _warnInfoService.GetListNoPage(new WarnInfoSearch
+ {
+ AlarmType = AlarmType.visual_fence.GetDisplay(),
+ CameraIds = cameraIds,
+ PersonId = seach.PersonId,
+ StartTick = startOfWeek,
+ EndTick = endWeek
+ });
+ for (var i = startOfWeek; i < endWeek;)
+ {
+ label.Add(i.ToString("yyyy-MM-dd"));
+ value.Add(list.Count(x => x.Tick.Year == i.Year && x.Tick.Month == i.Month && x.Tick.Day == i.Day));
+ i = i.AddDays(1);
+ }
+ return new { label, value };
+ case SearchType.LastWeek:
+ DateTime startOfLastWeek = startOfWeek.AddDays(-7);
+ DateTime endOfLastWeek = startOfLastWeek.AddDays(6).Date.AddDays(1).AddTicks(-1); // 上周的最后一刻
+ var list1 = await _warnInfoService.GetListNoPage(new WarnInfoSearch
+ {
+ AlarmType = AlarmType.visual_fence.GetDisplay(),
+ CameraIds = cameraIds,
+ PersonId = seach.PersonId,
+ StartTick = startOfLastWeek,
+ EndTick = endOfLastWeek
+ });
+
+ for (var i = startOfWeek; i < endWeek;)
+ {
+ label.Add(i.ToString("yyyy-MM-dd"));
+ value.Add(list1.Count(x => x.Tick.Year == i.Year && x.Tick.Month == i.Month && x.Tick.Day == i.Day));
+ i = i.AddDays(1);
+ }
+ return new { label, value };
+ case SearchType.ThisMonth:
+ DateTime startOfMonth = new DateTime(endWeek.Year, endWeek.Month, 1);
+ var list2 = await _warnInfoService.GetListNoPage(new WarnInfoSearch
+ {
+ AlarmType = AlarmType.visual_fence.GetDisplay(),
+ CameraIds = cameraIds,
+ PersonId = seach.PersonId,
+ StartTick = startOfMonth,
+ EndTick = endWeek
+ });
+
+ for (var i = startOfWeek; i < endWeek;)
+ {
+ label.Add(i.ToString("yyyy-MM-dd"));
+ value.Add(list2.Count(x => x.Tick.Year == i.Year && x.Tick.Month == i.Month && x.Tick.Day == i.Day));
+ i = i.AddDays(1);
+ }
+ return new { label, value };
+ default:
+ return null;
+ }
+ }
}
\ No newline at end of file
diff --git a/SafeCampus.API/SafeCampus.Web.Core/SafeCampus.Web.Core.xml b/SafeCampus.API/SafeCampus.Web.Core/SafeCampus.Web.Core.xml
index d5d602a..5be2122 100644
--- a/SafeCampus.API/SafeCampus.Web.Core/SafeCampus.Web.Core.xml
+++ b/SafeCampus.API/SafeCampus.Web.Core/SafeCampus.Web.Core.xml
@@ -269,6 +269,12 @@
+
+
+ 手动点名
+
+
+
删除点名记录(只可删除待处理的记录)
@@ -411,7 +417,7 @@
-
+
删除
@@ -516,7 +522,7 @@
-
+
查询底库列表
@@ -837,7 +843,7 @@
结束时间
-
+
专业id
@@ -959,7 +965,7 @@
-
+
删除
@@ -979,6 +985,17 @@
+
+
+ 移动端接口
+
+
+
+
+ 移动端获取专业系部班级列表
+
+
+
客流查询接口
@@ -1225,7 +1242,7 @@
-
+
获取班级列表
@@ -1264,6 +1281,31 @@
包含的班级id
+
+
+ 本周
+
+
+
+
+ 上周
+
+
+
+
+ 本月
+
+
+
+
+ 搜索条件
+
+
+
+
+ 人员id
+
+
预警分析控制器
@@ -1358,10 +1400,42 @@
-
+
+
+ 学生--告警分类统计
+
+
+
+
+
+ 学生--出勤情况
+
+
+
+
+
+ 学生--出校
+
+
+
+
+
+ 学生--图书馆
+
+
+
+
+
+ 学生--食堂
+
+
+
+
- 获取学生属性标签
+ 学生画像统计
+
+
diff --git a/SafeCampus.API/SafeCampus.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user b/SafeCampus.API/SafeCampus.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
index 406f77c..9aafb71 100644
--- a/SafeCampus.API/SafeCampus.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/SafeCampus.API/SafeCampus.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<_PublishTargetUrl>F:\Project\QJKJ\SafeCampus\SafeCampus.API\SafeCampus.Web.Entry\bin\Release\net6.0\publish\
- True|2024-08-19T05:38:29.9236695Z;False|2024-08-19T13:29:18.8873264+08:00;True|2024-08-19T12:31:57.9280692+08:00;True|2024-08-19T11:50:36.7241244+08:00;True|2024-08-19T10:24:05.0018377+08:00;True|2024-08-19T10:23:30.0445364+08:00;True|2024-08-19T10:12:33.8316906+08:00;True|2024-08-19T10:10:48.0967630+08:00;True|2024-08-16T12:17:51.5743944+08:00;True|2024-08-16T11:36:15.1880346+08:00;True|2024-08-12T11:27:42.2864171+08:00;True|2024-08-09T14:54:42.9062124+08:00;True|2024-08-09T11:49:01.0339449+08:00;True|2024-08-09T11:43:21.9947939+08:00;True|2024-08-09T10:43:25.7641675+08:00;True|2024-08-08T15:23:17.0510180+08:00;True|2024-08-08T15:20:50.3450876+08:00;True|2024-08-08T11:06:43.0783261+08:00;True|2024-08-07T17:24:03.0780935+08:00;True|2024-08-07T17:20:50.6266614+08:00;True|2024-08-07T17:18:15.6367265+08:00;True|2024-08-06T17:31:40.3452266+08:00;True|2024-07-31T16:54:03.1890463+08:00;True|2024-07-30T17:11:33.2514194+08:00;True|2024-07-30T17:08:14.5888060+08:00;True|2024-07-30T09:56:08.6349163+08:00;True|2024-07-30T09:50:02.2368269+08:00;True|2024-07-29T16:20:12.3202393+08:00;True|2024-07-29T16:16:29.9634841+08:00;True|2024-07-29T16:09:51.7696392+08:00;True|2024-07-29T16:06:49.4145658+08:00;True|2024-07-29T15:58:50.6654249+08:00;True|2024-07-29T11:32:11.6206514+08:00;True|2024-07-29T11:26:26.1574563+08:00;True|2024-07-29T11:04:41.1896705+08:00;True|2024-07-29T10:38:38.4560275+08:00;True|2024-07-29T10:33:38.5288332+08:00;False|2024-07-29T10:33:21.0642261+08:00;False|2024-07-29T10:33:00.1005216+08:00;True|2024-07-29T09:54:59.2794860+08:00;True|2024-07-29T09:08:54.4899269+08:00;True|2024-07-26T18:02:13.5407348+08:00;True|2024-07-26T17:46:06.7922851+08:00;True|2024-07-26T15:50:48.6986834+08:00;True|2024-07-26T15:11:17.1696147+08:00;True|2024-07-26T13:58:49.6884964+08:00;True|2024-07-25T17:31:33.0050952+08:00;True|2024-07-25T17:09:12.7084910+08:00;True|2024-07-25T17:02:01.2617736+08:00;True|2024-07-25T16:59:51.6271873+08:00;True|2024-07-25T16:58:05.5249148+08:00;True|2024-07-25T14:14:10.2008367+08:00;False|2024-07-25T14:13:54.0300465+08:00;True|2024-07-25T14:08:57.0244482+08:00;True|2024-07-25T13:41:48.8201522+08:00;True|2024-07-25T10:41:30.7277553+08:00;True|2024-07-25T10:16:05.9105335+08:00;True|2024-07-24T15:31:54.7914854+08:00;True|2024-07-24T09:54:17.6182454+08:00;True|2024-07-23T17:01:18.1510211+08:00;True|2024-07-23T16:41:53.3366577+08:00;True|2024-07-23T16:07:25.4129335+08:00;True|2024-07-23T15:50:42.2437488+08:00;True|2024-07-23T15:19:00.1900116+08:00;True|2024-07-23T14:59:22.8551233+08:00;True|2024-07-23T14:19:55.1193373+08:00;True|2024-07-19T18:04:32.2703039+08:00;True|2024-07-19T15:56:25.4103701+08:00;True|2024-07-19T15:09:00.9662436+08:00;True|2024-07-19T15:05:35.7255851+08:00;True|2024-07-19T13:14:42.9559521+08:00;False|2024-07-19T11:37:52.4020673+08:00;True|2024-07-19T11:10:22.8661346+08:00;True|2024-07-19T11:00:00.8819251+08:00;True|2024-07-19T10:45:46.8271770+08:00;True|2024-07-19T10:45:03.8183458+08:00;True|2024-07-18T18:04:42.1000382+08:00;True|2024-07-18T18:01:51.3964409+08:00;True|2024-07-18T17:57:50.3509206+08:00;True|2024-07-18T16:32:46.2184830+08:00;True|2024-07-18T16:00:11.1381449+08:00;True|2024-07-18T15:11:52.6472758+08:00;True|2024-07-18T11:54:49.4848006+08:00;True|2024-07-18T09:25:58.7204846+08:00;True|2024-07-17T17:29:28.6175272+08:00;True|2024-07-17T17:10:54.5184246+08:00;True|2024-07-17T16:57:59.8174060+08:00;True|2024-07-17T16:18:13.8137834+08:00;True|2024-07-17T15:59:16.2360757+08:00;True|2024-07-17T15:31:41.9159909+08:00;True|2024-07-17T14:41:14.6127340+08:00;True|2024-07-17T14:28:53.4455461+08:00;True|2024-07-17T14:09:44.1826222+08:00;True|2024-07-17T13:57:12.3372528+08:00;True|2024-07-17T11:39:19.5754602+08:00;True|2024-07-16T17:44:10.6162562+08:00;True|2024-07-16T17:13:48.3928403+08:00;True|2024-07-16T17:00:47.7458109+08:00;True|2024-07-16T14:07:19.3463408+08:00;True|2024-07-15T16:05:13.3561511+08:00;
+ True|2024-08-27T07:31:21.7026102Z;True|2024-08-20T11:12:26.7141701+08:00;True|2024-08-19T17:23:34.5703879+08:00;True|2024-08-19T15:55:28.3484786+08:00;True|2024-08-19T15:45:49.5623372+08:00;True|2024-08-19T14:56:17.7733738+08:00;True|2024-08-19T14:52:03.2782392+08:00;True|2024-08-19T14:10:57.7043528+08:00;True|2024-08-19T13:38:29.9236695+08:00;False|2024-08-19T13:29:18.8873264+08:00;True|2024-08-19T12:31:57.9280692+08:00;True|2024-08-19T11:50:36.7241244+08:00;True|2024-08-19T10:24:05.0018377+08:00;True|2024-08-19T10:23:30.0445364+08:00;True|2024-08-19T10:12:33.8316906+08:00;True|2024-08-19T10:10:48.0967630+08:00;True|2024-08-16T12:17:51.5743944+08:00;True|2024-08-16T11:36:15.1880346+08:00;True|2024-08-12T11:27:42.2864171+08:00;True|2024-08-09T14:54:42.9062124+08:00;True|2024-08-09T11:49:01.0339449+08:00;True|2024-08-09T11:43:21.9947939+08:00;True|2024-08-09T10:43:25.7641675+08:00;True|2024-08-08T15:23:17.0510180+08:00;True|2024-08-08T15:20:50.3450876+08:00;True|2024-08-08T11:06:43.0783261+08:00;True|2024-08-07T17:24:03.0780935+08:00;True|2024-08-07T17:20:50.6266614+08:00;True|2024-08-07T17:18:15.6367265+08:00;True|2024-08-06T17:31:40.3452266+08:00;True|2024-07-31T16:54:03.1890463+08:00;True|2024-07-30T17:11:33.2514194+08:00;True|2024-07-30T17:08:14.5888060+08:00;True|2024-07-30T09:56:08.6349163+08:00;True|2024-07-30T09:50:02.2368269+08:00;True|2024-07-29T16:20:12.3202393+08:00;True|2024-07-29T16:16:29.9634841+08:00;True|2024-07-29T16:09:51.7696392+08:00;True|2024-07-29T16:06:49.4145658+08:00;True|2024-07-29T15:58:50.6654249+08:00;True|2024-07-29T11:32:11.6206514+08:00;True|2024-07-29T11:26:26.1574563+08:00;True|2024-07-29T11:04:41.1896705+08:00;True|2024-07-29T10:38:38.4560275+08:00;True|2024-07-29T10:33:38.5288332+08:00;False|2024-07-29T10:33:21.0642261+08:00;False|2024-07-29T10:33:00.1005216+08:00;True|2024-07-29T09:54:59.2794860+08:00;True|2024-07-29T09:08:54.4899269+08:00;True|2024-07-26T18:02:13.5407348+08:00;True|2024-07-26T17:46:06.7922851+08:00;True|2024-07-26T15:50:48.6986834+08:00;True|2024-07-26T15:11:17.1696147+08:00;True|2024-07-26T13:58:49.6884964+08:00;True|2024-07-25T17:31:33.0050952+08:00;True|2024-07-25T17:09:12.7084910+08:00;True|2024-07-25T17:02:01.2617736+08:00;True|2024-07-25T16:59:51.6271873+08:00;True|2024-07-25T16:58:05.5249148+08:00;True|2024-07-25T14:14:10.2008367+08:00;False|2024-07-25T14:13:54.0300465+08:00;True|2024-07-25T14:08:57.0244482+08:00;True|2024-07-25T13:41:48.8201522+08:00;True|2024-07-25T10:41:30.7277553+08:00;True|2024-07-25T10:16:05.9105335+08:00;True|2024-07-24T15:31:54.7914854+08:00;True|2024-07-24T09:54:17.6182454+08:00;True|2024-07-23T17:01:18.1510211+08:00;True|2024-07-23T16:41:53.3366577+08:00;True|2024-07-23T16:07:25.4129335+08:00;True|2024-07-23T15:50:42.2437488+08:00;True|2024-07-23T15:19:00.1900116+08:00;True|2024-07-23T14:59:22.8551233+08:00;True|2024-07-23T14:19:55.1193373+08:00;True|2024-07-19T18:04:32.2703039+08:00;True|2024-07-19T15:56:25.4103701+08:00;True|2024-07-19T15:09:00.9662436+08:00;True|2024-07-19T15:05:35.7255851+08:00;True|2024-07-19T13:14:42.9559521+08:00;False|2024-07-19T11:37:52.4020673+08:00;True|2024-07-19T11:10:22.8661346+08:00;True|2024-07-19T11:00:00.8819251+08:00;True|2024-07-19T10:45:46.8271770+08:00;True|2024-07-19T10:45:03.8183458+08:00;True|2024-07-18T18:04:42.1000382+08:00;True|2024-07-18T18:01:51.3964409+08:00;True|2024-07-18T17:57:50.3509206+08:00;True|2024-07-18T16:32:46.2184830+08:00;True|2024-07-18T16:00:11.1381449+08:00;True|2024-07-18T15:11:52.6472758+08:00;True|2024-07-18T11:54:49.4848006+08:00;True|2024-07-18T09:25:58.7204846+08:00;True|2024-07-17T17:29:28.6175272+08:00;True|2024-07-17T17:10:54.5184246+08:00;True|2024-07-17T16:57:59.8174060+08:00;True|2024-07-17T16:18:13.8137834+08:00;True|2024-07-17T15:59:16.2360757+08:00;True|2024-07-17T15:31:41.9159909+08:00;True|2024-07-17T14:41:14.6127340+08:00;True|2024-07-17T14:28:53.4455461+08:00;
\ No newline at end of file