diff --git a/WcsMain/ApiClient/AGV/AGVWebApiAction.cs b/WcsMain/ApiClient/AGV/AGVWebApiAction.cs
index 34df8d1..d6abdb5 100644
--- a/WcsMain/ApiClient/AGV/AGVWebApiAction.cs
+++ b/WcsMain/ApiClient/AGV/AGVWebApiAction.cs
@@ -22,6 +22,7 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
///
public string Send_NO_VERIFY_BUCKET_MOVE(AppWmsTask wmsTask)
{
+ string vehicleNo = wmsTask.VehicleNo ?? "";
AGVTaskRequest request = new()
{
RobotJobId = wmsTask.TaskId,
@@ -39,9 +40,10 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
EndArea = wmsTask.Destination,
EndPoint = wmsTask.Destination,
EndPointName = null,
- BucketTypeCode = "TP",
+ BucketTypeCode = vehicleNo.StartsWith("TP") ? "TP" : "ZYLJ", //
LetDownFlag = 2,
- NeedOut = stand.Contains(wmsTask.Destination) ? 2 : null
+ NeedOut = stand.Contains(wmsTask.Destination) ? 1 : 0,
+ CheckCode = vehicleNo.StartsWith("TP") ? null : 1,
}
};
var response = webApiPost.HttpPost>, AGVResponseBody>> ([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
@@ -106,6 +108,17 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
}
+ public void Send_AGV_Action(string? agvCode, string? commond)
+ {
+ AGVActionRequest actionRequest = new()
+ {
+ AgvCode = agvCode,
+ FeedbackCommand = commond,
+ };
+ webApiPost.HttpPost(actionRequest, CommonData.AppApiBaseInfos.GetAddress("AGV_ACTION") ?? "");
+ }
+
+
diff --git a/WcsMain/ApiClient/AGV/Dto/AGVActionRequest.cs b/WcsMain/ApiClient/AGV/Dto/AGVActionRequest.cs
new file mode 100644
index 0000000..37c5630
--- /dev/null
+++ b/WcsMain/ApiClient/AGV/Dto/AGVActionRequest.cs
@@ -0,0 +1,14 @@
+using Newtonsoft.Json;
+
+namespace WcsMain.ApiClient.AGV.Dto;
+
+public class AGVActionRequest
+{
+ [JsonProperty("agvCode")]
+ public string? AgvCode { get; set; }
+
+ [JsonProperty("feedbackCommand")]
+ public string? FeedbackCommand{ get; set; }
+
+
+}
diff --git a/WcsMain/ApiServe/Controllers/AGVController/AGVController.cs b/WcsMain/ApiServe/Controllers/AGVController/AGVController.cs
index 5a4b962..deb9a20 100644
--- a/WcsMain/ApiServe/Controllers/AGVController/AGVController.cs
+++ b/WcsMain/ApiServe/Controllers/AGVController/AGVController.cs
@@ -20,10 +20,16 @@ public class AGVController(AGVService agvService) : ControllerBase
///
///
[HttpPost("taskCallBack")]
- public AGVResponseLayout> TaskCallBack(ApiServe.Dto.AGV.AGVRequestLayout> request) => agvService.TaskCallBack(request);
-
+ public AGVResponseLayout> TaskCallBack([FromBody] Dto.AGV.AGVRequestLayout> request) => agvService.TaskCallBack(request);
+ ///
+ /// AGV在点位请求动作
+ ///
+ ///
+ ///
+ [HttpPost("requestAction")]
+ public AGVResponseLayout> RequestAction([FromBody] Dto.AGV.AGVRequestLayout> request) => agvService.RequestAction(request);
}
diff --git a/WcsMain/ApiServe/Dto/AGV/AGVRequestActionRequest.cs b/WcsMain/ApiServe/Dto/AGV/AGVRequestActionRequest.cs
new file mode 100644
index 0000000..a777fb8
--- /dev/null
+++ b/WcsMain/ApiServe/Dto/AGV/AGVRequestActionRequest.cs
@@ -0,0 +1,16 @@
+using System.Text.Json.Serialization;
+
+namespace WcsMain.ApiServe.Dto.AGV;
+
+public class AGVRequestActionRequest
+{
+ [JsonPropertyName("agvCode")]
+ public string? AgvCode { get; set; }
+
+ [JsonPropertyName("command")]
+ public string? Command { get; set; }
+
+ [JsonPropertyName("jobId")]
+ public string? JobId { get; set; }
+
+}
diff --git a/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs b/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs
index 66244e9..9c99e5d 100644
--- a/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs
+++ b/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs
@@ -16,6 +16,19 @@ public class AGVRequestBodyLayout
+}
+
+public class AGVRequestBodyBaseLayout
+{
+
+ ///
+ /// 数据
+ ///
+ [JsonPropertyName("event")]
+ public T? Event { get; set; }
+
+
+
}
diff --git a/WcsMain/ApiServe/Service/AGVService/AGVService.cs b/WcsMain/ApiServe/Service/AGVService/AGVService.cs
index 60920b1..1ecb4ee 100644
--- a/WcsMain/ApiServe/Service/AGVService/AGVService.cs
+++ b/WcsMain/ApiServe/Service/AGVService/AGVService.cs
@@ -6,10 +6,11 @@ using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
using WcsMain.EquipOperation.StackerConvey;
+using WcsMain.ApiClient.AGV;
namespace WcsMain.ApiServe.Service.AGVService;
[Service]
-public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent, StackerConveyOperation stackerConveyOperation)
+public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent, StackerConveyOperation stackerConveyOperation, AGVWebApiAction webApiAction)
{
///
/// AGV 任务回告
@@ -85,7 +86,9 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
if (status == "DONE" && (wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.agv))
{
string? setLocation = wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask ? wmsTask.MidPoint : wmsTask.Destination;
- stackerConveyOperation.SetVehicelComplete(setLocation ?? "");
+ string plcLocation = setLocation == null ? "" : setLocation.Trim().Split('_')[0];
+ string? plcErrtext = stackerConveyOperation.SetVehicelComplete(plcLocation ?? "");
+ ConsoleLog.Info($"AGV 放货完成通知PLC结果:{(string.IsNullOrEmpty(plcErrtext) ? "成功" : plcErrtext)},站台:{plcLocation},箱号:{wmsTask.VehicleNo}");
}
});
@@ -156,4 +159,88 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
Body = new() { Code = "ERROR", Success = false, Message = $"操作异常数据更新失败" }
};
}
+
+ ///
+ /// AGV请求动作
+ ///
+ ///
+ ///
+ public AGVResponseLayout> RequestAction(Dto.AGV.AGVRequestLayout> request)
+ {
+ string? agvCode = request.Body?.Event?.AgvCode;
+ string? location = request.Body?.Event?.Command;
+ if(string.IsNullOrWhiteSpace(agvCode)|| string.IsNullOrWhiteSpace(location))
+ {
+ return new()
+ {
+ Header = new() { RequestId = request.Header?.RequestId, Version = request.Header?.version, TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") },
+ Body = new() { Code = "ERROR", Success = false, Message = $"数据无法解析" }
+ };
+ }
+ // [TODO]
+ webApiAction.Send_AGV_Action(agvCode, "TRUE");
+ return new()
+ {
+ Header = new() { RequestId = request.Header?.RequestId, Version = request.Header?.version, TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") },
+ Body = new() { Code = "SUCCESS", Success = true, Message = "操作成功" }
+ };
+ }
+
+
+ public void test()
+ {
+ Dictionary locationIndex = [];
+ /*--------------- 拣选站台 ----------------*/
+ locationIndex.TryAdd("WWYPYA", 0); // 1-1
+ locationIndex.TryAdd("wDj7k3", 1); // 1-2
+ locationIndex.TryAdd("5sNjZj", 2); // 1-3
+ locationIndex.TryAdd("x3hmTx", 3); // 1-4
+ locationIndex.TryAdd("TrkieR", 4); // 2-1
+ locationIndex.TryAdd("fED33G", 5); // 2-2
+ locationIndex.TryAdd("SAwJWb", 6); // 2-3
+ locationIndex.TryAdd("kSyBN2", 7); // 2-4
+ locationIndex.TryAdd("tZQJmY", 8); // 3-1
+ locationIndex.TryAdd("aHB3A4", 9); // 3-2
+ locationIndex.TryAdd("WAdrMA", 10);// 3-3
+ locationIndex.TryAdd("EdW8JH", 11);// 3-4
+ locationIndex.TryAdd("rK5RbX", 12);// 4-1
+ locationIndex.TryAdd("rThaME", 13);// 4-2
+ locationIndex.TryAdd("28PW7p", 14);// 4-3
+ locationIndex.TryAdd("rNH2Bb", 15);// 4-4
+ locationIndex.TryAdd("ZbkKHC", 16);// 5-1
+ locationIndex.TryAdd("YeSNEd", 17);// 5-2
+ locationIndex.TryAdd("QCECwK", 18);// 5-3
+ locationIndex.TryAdd("heYrie", 19);// 5-4
+ locationIndex.TryAdd("byBDnX", 20);// 6
+ /*----------------- 翻包区 -----------------*/
+ locationIndex.TryAdd("TQzNDN", 21);
+ locationIndex.TryAdd("SsNakz", 22);
+ locationIndex.TryAdd("TjtsJf", 23);
+ locationIndex.TryAdd("dM28J8", 24);
+ locationIndex.TryAdd("jAiFNS", 25);
+ locationIndex.TryAdd("AHQGKW", 26);
+ locationIndex.TryAdd("ACEMTS", 27);
+ locationIndex.TryAdd("6HbTKm", 28);
+ /*----------------- 出入库口 -----------------*/
+ locationIndex.TryAdd("FaaZHG", 29);
+ locationIndex.TryAdd("kzxhes", 30);
+ locationIndex.TryAdd("yDN8ZZ", 31);
+ locationIndex.TryAdd("6cDXzi", 32);
+ locationIndex.TryAdd("ranQyi", 33);
+ locationIndex.TryAdd("SxjX8e", 34);
+ locationIndex.TryAdd("jC6x3C", 35);
+ locationIndex.TryAdd("MSP3te", 36);
+
+ locationIndex.TryAdd("611", 29);
+ locationIndex.TryAdd("511", 30);
+ locationIndex.TryAdd("513", 31);
+ locationIndex.TryAdd("411", 32);
+ locationIndex.TryAdd("311", 33);
+ locationIndex.TryAdd("213", 34);
+ locationIndex.TryAdd("211", 35);
+ locationIndex.TryAdd("111", 36);
+
+
+
+ }
}
diff --git a/WcsMain/ApiServe/Service/ContainerService/ContainerService.cs b/WcsMain/ApiServe/Service/ContainerService/ContainerService.cs
index 3384d2e..d0dc717 100644
--- a/WcsMain/ApiServe/Service/ContainerService/ContainerService.cs
+++ b/WcsMain/ApiServe/Service/ContainerService/ContainerService.cs
@@ -8,11 +8,12 @@ using WcsMain.ApiClient.WMS;
using WcsMain.ApiClient.WMS.Dto;
using WcsMain.Common;
using WcsMain.Constant.ExtendMethod;
+using WcsMain.EquipOperation.StackerConvey;
namespace WcsMain.ApiServe.Service.ContainerService;
[Service]
-public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent, WmsBaseWebApi wmsBaseWebApi)
+public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent, WmsBaseWebApi wmsBaseWebApi, StackerConveyOperation stackerConveyOperation)
{
///
/// 请求四向车任务
@@ -31,6 +32,7 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
{
return new() { Code = "400", Message = "数据连接失败,请重试" };
}
+ bool apply = false;
if (wmsTasks.Count == 0)
{
/* 请求WMS获取任务 */
@@ -48,7 +50,8 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
i++;
Thread.Sleep(1000);
wmsTasks = wmsTaskDao.Select(new() { VehicleNo = request.PalleetNo, TaskStatus = (int)WmsTaskStatusEnum.create })?.OrderByDescending(o => o.CreateTime).ToList();
- if (wmsTasks == null || wmsTasks.Count < 1) continue;
+ if (wmsTasks == null || wmsTasks.Count < 1) continue;
+ apply = true;
break;
}
}
@@ -59,8 +62,17 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
}
AppWmsTask wmsTask = wmsTasks.First();
/* 更新状态为前往终点 */
- var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.toDestination, ModifyTime = DateTime.Now });
+ var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, StartTime = apply ? DateTime.Now : null, TaskStatus = (int)WmsTaskStatusEnum.toDestination, ModifyTime = DateTime.Now });
ConsoleLog.Success($"API更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
+ //Task.Factory.StartNew(() =>
+ //{
+ // // 给PLC写完成,原因是四向车给PLC经常写入失败。
+ // Thread.Sleep(500);
+ // for (int i = 0; i < 3; i++)
+ // {
+ // stackerConveyOperation.StandTaskApplyComplete(request.FormCellNo);
+ // }
+ //});
return new()
{
Code = "200",
diff --git a/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs b/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs
index 8a7a523..33ba041 100644
--- a/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs
+++ b/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs
@@ -1,4 +1,5 @@
-using System.Text.RegularExpressions;
+using System.Runtime;
+using System.Text.RegularExpressions;
using CirculateTool.Attribute;
using WcsMain.ApiClient.AGV;
using WcsMain.ApiClient.Shuttle;
@@ -68,6 +69,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
///
private void ExecuteAGVTask(AppWmsTask wmsTask)
{
+ string[] stand = ["FaaZHG", "kzxhes", "yDN8ZZ", "6cDXzi", "ranQyi", "SxjX8e", "jC6x3C", "MSP3te"];
+ if (string.IsNullOrEmpty(wmsTask.Destination)) return;
+ if (stand.Contains(wmsTask.Destination))
+ {
+ // 获取终点的任务,没有任务可以发送
+ List tasks = [];
+ tasks.AddRange(wmsTaskDao.SelectRunningTask(wmsTask.Destination) ?? []);
+ if (tasks == default || tasks.Count > 0) return;
+ }
string errText = agvAction.Send_NO_VERIFY_BUCKET_MOVE(wmsTask);
if (!string.IsNullOrEmpty(errText))
{
@@ -211,14 +221,16 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
}
if (model != 1 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue;
/* 检验任务是否是第一层,若是不是第一层不能分配第一层出入口 */
- if (destination.EndsWith("1"))
+ if (!destination.EndsWith('1'))
{
- if (liftInfo.LiftMode != 2) continue;
+ if (liftInfo.LiftMode == 2) continue;
}
/* 获取这个站台的任务.没有占用任务即可重新使用 */
List tasks = [];
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[0], TaskStatus = (int)WmsTaskStatusEnum.toMid }) ?? []);
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[1], TaskStatus = (int)WmsTaskStatusEnum.toMid }) ?? []);
+ tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[0], TaskStatus = (int)WmsTaskStatusEnum.arriveMid }) ?? []);
+ tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[1], TaskStatus = (int)WmsTaskStatusEnum.arriveMid }) ?? []);
if (tasks == default || tasks.Count > 0) continue;
string location = "";
if (!string.IsNullOrEmpty(liftInfo.Tag))
@@ -251,7 +263,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
}
if (model != 2 || allowAction != (short)TrueFalseEnum.FALSE || errCode != 0) continue;
/* 检验任务是否是第一层,若是不是第一层不能分配第一层出入口 */
- if (!origin.EndsWith("1"))
+ if (!origin.EndsWith('1'))
{
if (liftInfo.LiftMode == 2) continue;
}
diff --git a/WcsMain/DataBase/Dao/AppWmsTaskDao.cs b/WcsMain/DataBase/Dao/AppWmsTaskDao.cs
index 7224005..ee78061 100644
--- a/WcsMain/DataBase/Dao/AppWmsTaskDao.cs
+++ b/WcsMain/DataBase/Dao/AppWmsTaskDao.cs
@@ -110,6 +110,43 @@ public class AppWmsTaskDao
}
+ public List? SelectRunningTask(string? destination)
+ {
+ try
+ {
+ var sqlFuc = CommonTool.DbServe.Queryable()
+ .Where(w => (w.MidPoint!.Contains(destination!) || w.Destination!.Contains(destination!))
+ && (w.TaskStatus == (int)WmsTaskStatusEnum.toMid || w.TaskStatus == (int)WmsTaskStatusEnum.arriveMid))
+ .OrderBy(o => o.CreateTime);
+ _ = sqlFuc.ToSql();
+ return sqlFuc.ToList();
+ }
+ catch (Exception ex)
+ {
+ _ = ex;
+ return default;
+ }
+ }
+
+ public List? SelectRunningTask2(string? location)
+ {
+ try
+ {
+ var sqlFuc = CommonTool.DbServe.Queryable()
+ .Where(w => location!.Contains(w.MidPoint!)
+ && (w.TaskStatus == (int)WmsTaskStatusEnum.toMid || w.TaskStatus == (int)WmsTaskStatusEnum.arriveMid))
+ .OrderBy(o => o.CreateTime);
+ _ = sqlFuc.ToSql();
+ return sqlFuc.ToList();
+ }
+ catch (Exception ex)
+ {
+ _ = ex;
+ return default;
+ }
+ }
+
+
///
/// 查找所有数据
///
diff --git a/WcsMain/EquipOperation/StackerConvey/StackerConveyOperation.cs b/WcsMain/EquipOperation/StackerConvey/StackerConveyOperation.cs
index eee3f51..5b78b19 100644
--- a/WcsMain/EquipOperation/StackerConvey/StackerConveyOperation.cs
+++ b/WcsMain/EquipOperation/StackerConvey/StackerConveyOperation.cs
@@ -92,6 +92,20 @@ public class StackerConveyOperation
return writeResult.Message;
}
+ public string? StandTaskApplyComplete(string location)
+ {
+ if (!CommonData.IsConnectPlc || CommonTool.Siemens == default)
+ {
+ return "设备尚未连接"; // 未连接PLC
+ }
+ (var writeResult, byte[]? data) = CommonTool.Siemens.WritePlcWhithName($"站台任务申请完成{location}", (short)1);
+ if (writeResult.Success)
+ {
+ return string.Empty;
+ }
+ return writeResult.Message;
+ }
+
///
/// 获取输送机任务号
diff --git a/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user b/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user
index 5d04604..cae709d 100644
--- a/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user
+++ b/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<_PublishTargetUrl>F:\A开发项目\A菲达宝开项目\2024-08_上汽试制仓\应用程序\WcsService\WcsMain\bin\Release\net8.0\publish\
- True|2024-11-22T04:34:16.7539579Z||;True|2024-11-22T12:31:12.2247208+08:00||;True|2024-11-22T10:08:38.6674414+08:00||;True|2024-11-22T09:58:07.3694815+08:00||;True|2024-11-22T09:40:25.3466460+08:00||;True|2024-11-21T16:33:23.0082958+08:00||;True|2024-11-21T16:21:46.1852307+08:00||;True|2024-11-21T13:56:06.5543719+08:00||;True|2024-11-21T11:41:50.4634584+08:00||;True|2024-11-21T11:30:54.9747290+08:00||;False|2024-11-21T11:30:18.2738127+08:00||;True|2024-11-21T10:45:42.5524544+08:00||;True|2024-11-20T17:08:23.7162943+08:00||;True|2024-11-20T16:54:01.3629057+08:00||;True|2024-11-20T16:40:49.6894280+08:00||;True|2024-11-20T16:37:47.3670812+08:00||;False|2024-11-20T16:37:04.0777763+08:00||;True|2024-11-20T16:25:26.3145915+08:00||;True|2024-11-20T16:10:13.7558526+08:00||;True|2024-11-20T16:07:37.8681228+08:00||;True|2024-11-20T15:55:28.7196074+08:00||;True|2024-11-20T15:52:40.6653904+08:00||;True|2024-11-20T15:30:21.5138564+08:00||;True|2024-11-20T15:24:40.6286995+08:00||;True|2024-11-18T21:16:47.1821173+08:00||;True|2024-11-18T21:14:40.1209255+08:00||;True|2024-11-18T21:11:32.0010536+08:00||;True|2024-11-18T21:10:56.2142485+08:00||;True|2024-11-18T20:59:50.6846634+08:00||;True|2024-11-16T14:31:14.2653894+08:00||;True|2024-11-16T14:16:17.4271635+08:00||;True|2024-11-16T14:16:08.1284507+08:00||;True|2024-11-16T14:08:02.8639352+08:00||;True|2024-11-16T14:07:06.6785776+08:00||;True|2024-11-16T13:14:33.8282571+08:00||;True|2024-11-16T13:14:09.9233077+08:00||;True|2024-11-16T12:49:45.5891890+08:00||;True|2024-11-16T12:19:05.5997384+08:00||;True|2024-11-16T11:49:43.2660430+08:00||;True|2024-11-16T11:49:12.7318514+08:00||;True|2024-11-16T11:43:41.8128931+08:00||;True|2024-11-16T10:39:25.1387254+08:00||;True|2024-11-16T10:24:19.4879139+08:00||;True|2024-11-15T17:47:10.4630939+08:00||;True|2024-11-15T17:42:25.6985733+08:00||;True|2024-11-15T17:39:43.9409305+08:00||;True|2024-11-15T17:26:18.2886475+08:00||;True|2024-11-15T17:23:05.3112513+08:00||;True|2024-11-15T17:16:40.2960771+08:00||;True|2024-11-15T17:14:12.3416383+08:00||;True|2024-11-15T17:09:43.2642034+08:00||;True|2024-11-15T17:05:04.4694932+08:00||;False|2024-11-15T17:04:34.2335564+08:00||;False|2024-11-15T17:04:12.5281280+08:00||;True|2024-11-15T17:01:49.4325408+08:00||;False|2024-11-15T17:01:29.1872712+08:00||;True|2024-11-15T16:00:18.8617729+08:00||;True|2024-11-15T15:56:13.9285180+08:00||;True|2024-11-15T15:50:53.6121456+08:00||;True|2024-11-15T15:17:41.0508047+08:00||;True|2024-11-15T13:50:06.8021767+08:00||;True|2024-11-15T13:17:48.2695650+08:00||;True|2023-12-21T15:04:28.6290873+08:00||;True|2023-12-21T14:59:03.4454135+08:00||;True|2023-12-21T14:51:08.6690406+08:00||;True|2023-12-21T14:26:42.6801144+08:00||;False|2023-12-21T14:26:14.3256943+08:00||;True|2023-12-21T14:13:42.5511801+08:00||;True|2023-12-21T13:56:38.5871005+08:00||;True|2023-12-19T12:19:57.9900187+08:00||;True|2023-12-19T11:53:33.6930379+08:00||;True|2023-12-17T12:51:32.6510827+08:00||;False|2023-12-17T12:49:32.9022541+08:00||;
+ True|2024-11-24T07:54:22.8370880Z||;True|2024-11-24T13:25:56.1353533+08:00||;True|2024-11-24T11:18:32.6506847+08:00||;True|2024-11-24T10:50:39.8134466+08:00||;True|2024-11-23T15:05:38.5131893+08:00||;True|2024-11-23T14:13:58.0382497+08:00||;True|2024-11-23T14:12:00.7634049+08:00||;True|2024-11-23T13:14:24.2275063+08:00||;True|2024-11-23T12:53:07.7352348+08:00||;True|2024-11-23T12:48:43.3192685+08:00||;True|2024-11-23T12:01:19.9580187+08:00||;True|2024-11-23T11:57:28.7283976+08:00||;True|2024-11-22T12:34:16.7539579+08:00||;True|2024-11-22T12:31:12.2247208+08:00||;True|2024-11-22T10:08:38.6674414+08:00||;True|2024-11-22T09:58:07.3694815+08:00||;True|2024-11-22T09:40:25.3466460+08:00||;True|2024-11-21T16:33:23.0082958+08:00||;True|2024-11-21T16:21:46.1852307+08:00||;True|2024-11-21T13:56:06.5543719+08:00||;True|2024-11-21T11:41:50.4634584+08:00||;True|2024-11-21T11:30:54.9747290+08:00||;False|2024-11-21T11:30:18.2738127+08:00||;True|2024-11-21T10:45:42.5524544+08:00||;True|2024-11-20T17:08:23.7162943+08:00||;True|2024-11-20T16:54:01.3629057+08:00||;True|2024-11-20T16:40:49.6894280+08:00||;True|2024-11-20T16:37:47.3670812+08:00||;False|2024-11-20T16:37:04.0777763+08:00||;True|2024-11-20T16:25:26.3145915+08:00||;True|2024-11-20T16:10:13.7558526+08:00||;True|2024-11-20T16:07:37.8681228+08:00||;True|2024-11-20T15:55:28.7196074+08:00||;True|2024-11-20T15:52:40.6653904+08:00||;True|2024-11-20T15:30:21.5138564+08:00||;True|2024-11-20T15:24:40.6286995+08:00||;True|2024-11-18T21:16:47.1821173+08:00||;True|2024-11-18T21:14:40.1209255+08:00||;True|2024-11-18T21:11:32.0010536+08:00||;True|2024-11-18T21:10:56.2142485+08:00||;True|2024-11-18T20:59:50.6846634+08:00||;True|2024-11-16T14:31:14.2653894+08:00||;True|2024-11-16T14:16:17.4271635+08:00||;True|2024-11-16T14:16:08.1284507+08:00||;True|2024-11-16T14:08:02.8639352+08:00||;True|2024-11-16T14:07:06.6785776+08:00||;True|2024-11-16T13:14:33.8282571+08:00||;True|2024-11-16T13:14:09.9233077+08:00||;True|2024-11-16T12:49:45.5891890+08:00||;True|2024-11-16T12:19:05.5997384+08:00||;True|2024-11-16T11:49:43.2660430+08:00||;True|2024-11-16T11:49:12.7318514+08:00||;True|2024-11-16T11:43:41.8128931+08:00||;True|2024-11-16T10:39:25.1387254+08:00||;True|2024-11-16T10:24:19.4879139+08:00||;True|2024-11-15T17:47:10.4630939+08:00||;True|2024-11-15T17:42:25.6985733+08:00||;True|2024-11-15T17:39:43.9409305+08:00||;True|2024-11-15T17:26:18.2886475+08:00||;True|2024-11-15T17:23:05.3112513+08:00||;True|2024-11-15T17:16:40.2960771+08:00||;True|2024-11-15T17:14:12.3416383+08:00||;True|2024-11-15T17:09:43.2642034+08:00||;True|2024-11-15T17:05:04.4694932+08:00||;False|2024-11-15T17:04:34.2335564+08:00||;False|2024-11-15T17:04:12.5281280+08:00||;True|2024-11-15T17:01:49.4325408+08:00||;False|2024-11-15T17:01:29.1872712+08:00||;True|2024-11-15T16:00:18.8617729+08:00||;True|2024-11-15T15:56:13.9285180+08:00||;True|2024-11-15T15:50:53.6121456+08:00||;True|2024-11-15T15:17:41.0508047+08:00||;True|2024-11-15T13:50:06.8021767+08:00||;True|2024-11-15T13:17:48.2695650+08:00||;True|2023-12-21T15:04:28.6290873+08:00||;True|2023-12-21T14:59:03.4454135+08:00||;True|2023-12-21T14:51:08.6690406+08:00||;True|2023-12-21T14:26:42.6801144+08:00||;False|2023-12-21T14:26:14.3256943+08:00||;True|2023-12-21T14:13:42.5511801+08:00||;True|2023-12-21T13:56:38.5871005+08:00||;True|2023-12-19T12:19:57.9900187+08:00||;True|2023-12-19T11:53:33.6930379+08:00||;True|2023-12-17T12:51:32.6510827+08:00||;False|2023-12-17T12:49:32.9022541+08:00||;
\ No newline at end of file