diff --git a/WcsMain/ApiClient/AGV/AGVWebApiAction.cs b/WcsMain/ApiClient/AGV/AGVWebApiAction.cs
index 3565fd6..34f44d9 100644
--- a/WcsMain/ApiClient/AGV/AGVWebApiAction.cs
+++ b/WcsMain/ApiClient/AGV/AGVWebApiAction.cs
@@ -4,6 +4,7 @@ using WcsMain.Constant;
using WcsMain.DataBase.TableEntity;
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
using WcsMain.Constant.ExtendMethod;
+using System.Collections.Generic;
namespace WcsMain.ApiClient.AGV;
@@ -21,52 +22,73 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
///
public string Send_NO_VERIFY_BUCKET_MOVE(AppWmsTask wmsTask)
{
- AGVRequestLayout> request = new()
+ //AGVRequestLayout> request = new()
+ //{
+ // Header = new()
+ // {
+ // AppKey = ApplicationBaseConfig.APP_KEY,
+ // AppSecret = ApplicationBaseConfig.APP_SECRET,
+ // RequestId = wmsTask.TaskId,
+ // TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+ // version = "2.9"
+ // },
+ // Body = new()
+ // {
+ // RobotJobId = wmsTask.TaskId,
+ // WareHouseId = 100,
+ // RobotJobGroupId = wmsTask.TaskId,
+ // Sequence = 1,
+ // RobotJobGroupNum = 1,
+ // JobPriority = 1,
+ // JobProorytyType = 0,
+ // JobType = "NO_VERIFY_BUCKET_MOVE",
+ // JobData = new()
+ // {
+ // StartPoint = wmsTask.Origin,
+ // StartPointName = null,
+ // WorkFaces = "0",
+ // EndArea = wmsTask.Destination,
+ // EndPoint = wmsTask.Destination,
+ // EndPointName = null,
+ // BucketTypeCode = "00",
+ // LetDownFlag = 2,
+ // }
+ // }
+ //};
+ AGVTaskRequest request = new()
{
- Header = new()
+ RobotJobId = wmsTask.TaskId,
+ WareHouseId = 1,
+ RobotJobGroupNum = 1,
+ JobPriority = 1,
+ JobProorytyType = 0,
+ JobType = "NO_VERIFY_BUCKET_MOVE",
+ OrderSource = "BK",
+ JobData = new()
{
- AppKey = ApplicationBaseConfig.APP_KEY,
- AppSecret = ApplicationBaseConfig.APP_SECRET,
- RequestId = wmsTask.TaskId,
- TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- version = "2.9"
- },
- Body = new()
- {
- RobotJobId = wmsTask.TaskId,
- WareHouseId = 100,
- RobotJobGroupId = wmsTask.TaskId,
- Sequence = 1,
- RobotJobGroupNum = 1,
- JobPriority = 1,
- JobProorytyType = 0,
- JobType = "NO_VERIFY_BUCKET_MOVE",
- JobData = new()
- {
- StartPoint = wmsTask.Origin,
- StartPointName = null,
- WorkFaces = "0",
- EndArea = wmsTask.Destination,
- EndPoint = wmsTask.Destination,
- EndPointName = null,
- BucketTypeCode = "00",
- LetDownFlag = 2,
- }
+ StartPoint = wmsTask.Origin,
+ StartPointName = null,
+ WorkFaces = "0",
+ EndArea = wmsTask.Destination,
+ EndPoint = wmsTask.Destination,
+ EndPointName = null,
+ BucketTypeCode = "TP",
+ LetDownFlag = 2,
}
};
- var response = webApiPost.HttpPost>, AGVResponseLayout>(request, CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
+ var response = webApiPost.HttpPost>, AGVResponseBody>> ([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
var responseData = response.ResponseEntity;
if (!response.IsSend || responseData == null)
{
return "请求失败,网络故障";
}
- if (responseData.Body!.Success == true && responseData.Body!.Code?.ToLower() == "success")
+ if (responseData.Success == true && responseData.Code?.ToLower() == "success")
{
// 发送成功
return string.Empty;
}
- return responseData.Body.Message ?? "请求失败,未知原因";
+ return responseData.Message ?? "请求失败,未知原因";
}
///
@@ -76,54 +98,76 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
///
///
///
- public string Send_AGV_TASK(string? taskId, string? origin, string? destination)
+ public string Send_AGV_TASK(string? taskId, string? origin, string? destination, int needOut = 0)
{
- AGVRequestLayout> request = new()
+ //AGVRequestLayout> request = new()
+ //{
+ // Header = new()
+ // {
+ // AppKey = ApplicationBaseConfig.APP_KEY,
+ // AppSecret = ApplicationBaseConfig.APP_SECRET,
+ // RequestId = taskId,
+ // TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+ // version = "2.9"
+ // },
+ // Body = new()
+ // {
+ // RobotJobId = taskId,
+ // WareHouseId = 100,
+ // RobotJobGroupId = taskId,
+ // Sequence = 1,
+ // RobotJobGroupNum = 1,
+ // JobPriority = 1,
+ // JobProorytyType = 0,
+ // JobType = "NO_VERIFY_BUCKET_MOVE",
+ // JobData = new()
+ // {
+ // StartPoint = origin,
+ // StartPointName = null,
+ // WorkFaces = "0",
+ // EndArea = destination,
+ // EndPoint = destination,
+ // EndPointName = null,
+ // BucketTypeCode = "00",
+ // LetDownFlag = 2,
+ // }
+ // }
+ //};
+ AGVTaskRequest request = new()
{
- Header = new()
+ RobotJobId = taskId,
+ WareHouseId = 1,
+ RobotJobGroupNum = 1,
+ JobPriority = 1,
+ JobProorytyType = 0,
+ JobType = "NO_VERIFY_BUCKET_MOVE",
+ OrderSource = "BK",
+ JobData = new()
{
- AppKey = ApplicationBaseConfig.APP_KEY,
- AppSecret = ApplicationBaseConfig.APP_SECRET,
- RequestId = taskId,
- TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- version = "2.9"
- },
- Body = new()
- {
- RobotJobId = taskId,
- WareHouseId = 100,
- RobotJobGroupId = taskId,
- Sequence = 1,
- RobotJobGroupNum = 1,
- JobPriority = 1,
- JobProorytyType = 0,
- JobType = "NO_VERIFY_BUCKET_MOVE",
- JobData = new()
- {
- StartPoint = origin,
- StartPointName = null,
- WorkFaces = "0",
- EndArea = destination,
- EndPoint = destination,
- EndPointName = null,
- BucketTypeCode = "00",
- LetDownFlag = 2,
- }
+ StartPoint = origin,
+ StartPointName = null,
+ WorkFaces = "0",
+ EndPoint = destination,
+ EndPointName = null,
+ BucketTypeCode = "TP",
+ LetDownFlag = 2,
+ NeedOut = needOut
}
};
- var response = webApiPost.HttpPost>, AGVResponseLayout>(request, CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
+
+ var response = webApiPost.HttpPost>, AGVResponseBody>>([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
var responseData = response.ResponseEntity;
if (!response.IsSend || responseData == null)
{
return "请求失败,网络故障";
}
- if (responseData.Body!.Success == true && responseData.Body!.Code?.ToLower() == "success")
+ if (responseData.Success == true && responseData.Code?.ToLower() == "success")
{
// 发送成功
return string.Empty;
}
- return responseData.Body.Message ?? "请求失败,未知原因";
+ return responseData.Message ?? "请求失败,未知原因";
}
diff --git a/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs b/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs
index 98a81eb..627b379 100644
--- a/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs
+++ b/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs
@@ -46,7 +46,7 @@ public class AGVBucketMove
///
/// 货架类型编码
///
- [JsonProperty("buckTypeCode")]
+ [JsonProperty("bucketTypeCode")]
public string? BucketTypeCode { get; set; }
///
diff --git a/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs b/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs
index 262a43b..7c3cb0d 100644
--- a/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs
+++ b/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs
@@ -57,7 +57,7 @@ public class AGVResponseHeader
}
-
+// {"code":"ERR_PARTIAL_FAILURE","message":"Partial failure","success":false,"data":[{"code":"ERR_ILLEGAL_WHI","message":"ERR_ILLEGAL_WHI","robotJobId":"1731831975323001000"}]}
///
/// AGV 响应体
///
diff --git a/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs b/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs
index 986364d..5516ba7 100644
--- a/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs
+++ b/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs
@@ -97,6 +97,12 @@ public class AGVTaskRequest where T : class, new()
[JsonProperty("jobType")]
public string? JobType { get; set; }
+ ///
+ /// 订单来源
+ ///
+ [JsonProperty("orderSource")]
+ public string? OrderSource { get; set; }
+
///
/// 任务数据
///
diff --git a/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs b/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs
index 4d7789c..8897374 100644
--- a/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs
+++ b/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs
@@ -25,5 +25,5 @@ public class AGVTaskResponse
[JsonProperty("robotJobId")]
public string? RobotJobId { get; set; }
-
+ // {"code":"ERR_PARTIAL_FAILURE","message":"Partial failure","success":false,"data":[{"code":"ERR_ILLEGAL_WHI","message":"ERR_ILLEGAL_WHI","robotJobId":"1731831975323001000"}]}
}
diff --git a/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs b/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs
index e0343be..66244e9 100644
--- a/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs
+++ b/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs
@@ -7,7 +7,20 @@ namespace WcsMain.ApiServe.Dto.AGV;
///
public class AGVRequestBodyLayout
{
+
+ ///
+ /// 数据
+ ///
+ [JsonPropertyName("event")]
+ public AGVRequestBodyDataLayout? Event { get; set; }
+
+
+}
+
+
+public class AGVRequestBodyDataLayout
+{
///
/// 上游任务号
///
@@ -18,7 +31,7 @@ public class AGVRequestBodyLayout
/// 仓库编号
///
[JsonPropertyName("warehouseId")]
- public string? WarehouseId { get; set; }
+ public int? WarehouseId { get; set; }
///
/// 快仓系统内部任务号
@@ -44,6 +57,4 @@ public class AGVRequestBodyLayout
[JsonPropertyName("jobData")]
public T? JobData { get; set; }
-
-
}
diff --git a/WcsMain/ApiServe/Service/AGVService/AGVService.cs b/WcsMain/ApiServe/Service/AGVService/AGVService.cs
index 7e2b7cd..483ce98 100644
--- a/WcsMain/ApiServe/Service/AGVService/AGVService.cs
+++ b/WcsMain/ApiServe/Service/AGVService/AGVService.cs
@@ -26,8 +26,8 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
Body = new() { Code = "ERROR", Success = false, Message = "Body 未能正确解析" }
};
}
- string? wmsTaskId = bodyData.RobotJobId; // 任务号
- string? status = bodyData.State; // 状态
+ string? wmsTaskId = bodyData.Event?.RobotJobId; // 任务号
+ string? status = bodyData.Event?.State; // 状态
if(status == default || wmsTaskId == default)
{
return new()
diff --git a/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs b/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs
index eb9908f..88a58fb 100644
--- a/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs
+++ b/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs
@@ -86,11 +86,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
///
private void ExecuteInTask(AppWmsTask wmsTask)
{
+ string? midPoint = wmsTask.MidPoint;
if (string.IsNullOrEmpty(wmsTask.Origin)) return;
- string? midPoint = GetEmptyInLift(wmsTask.Destination);
+ if (string.IsNullOrEmpty(midPoint))
+ {
+ midPoint = GetEmptyInLift(wmsTask.Destination);
+ }
if (string.IsNullOrEmpty(midPoint)) return; // 没有可用的站台
/* 发送AGV 搬运任务 */
- string errText = agvAction.Send_AGV_TASK(wmsTask.TaskId, wmsTask.Origin, midPoint);
+ string errText = agvAction.Send_AGV_TASK(wmsTask.TaskId, wmsTask.Origin, midPoint, 1);
if (!string.IsNullOrEmpty(errText))
{
ConsoleLog.Warning($"【警告】入库请求AGV搬运失败,任务号:{wmsTask.TaskId},异常信息:{errText}");
@@ -161,7 +165,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
if (!string.IsNullOrEmpty(errText))
{
- ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
+ //ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
continue;
}
if (model != 2 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue; // 不满足执行条件
@@ -171,7 +175,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
var task = tasks.First();
if (string.IsNullOrEmpty(task.Destination)) continue;
/* 下发任务 */
- string agvErrText = agvAction.Send_AGV_TASK(task.TaskId, task.MidPoint, task.Destination);
+ string agvErrText = agvAction.Send_AGV_TASK(task.TaskId, GetAgvNo(task.MidPoint), task.Destination);
if (!string.IsNullOrEmpty(agvErrText))
{
ConsoleLog.Warning($"【警告】AGV出库任务请求AGV服务失败,任务号:{task.TaskId},异常信息:{agvErrText}");
@@ -201,7 +205,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
if (!string.IsNullOrEmpty(errText))
{
- ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
+ //ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
continue;
}
if (model != 1 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue;
@@ -239,7 +243,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
if (!string.IsNullOrEmpty(errText))
{
- ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
+ //ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
continue;
}
if (model != 2 || allowAction != (short)TrueFalseEnum.FALSE || errCode != 0) continue;
@@ -264,4 +268,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
}
+
+ private string? GetAgvNo(string? lift)
+ {
+ List? liftInfos = liftInfoDao.Query(new() { Status = (int)TrueFalseEnum.TRUE });
+ if (liftInfos == default || liftInfos.Count < 1) return default;
+ AppLiftInfo? appLiftInfo = liftInfos.Find(f => f.Tag!.Contains(lift!));
+ if (appLiftInfo == null) return default;
+ return appLiftInfo.Tag?.Split(',')[1];
+ }
+
+
}
diff --git a/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user b/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user
index 120e1d3..66e4029 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-18T12:59:50.6846634Z||;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-20T09:08:23.7162943Z||;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