20241124日调试

This commit is contained in:
葛林强 2024-11-25 10:46:38 +08:00
parent 2492eaa9df
commit 6d98f3b987
11 changed files with 238 additions and 14 deletions

View File

@ -22,6 +22,7 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
/// <returns></returns>
public string Send_NO_VERIFY_BUCKET_MOVE(AppWmsTask wmsTask)
{
string vehicleNo = wmsTask.VehicleNo ?? "";
AGVTaskRequest<AGVBucketMove> 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<List<AGVTaskRequest<AGVBucketMove>>, AGVResponseBody<List<AGVTaskResponse>>> ([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<AGVActionRequest, object>(actionRequest, CommonData.AppApiBaseInfos.GetAddress("AGV_ACTION") ?? "");
}

View File

@ -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; }
}

View File

@ -20,10 +20,16 @@ public class AGVController(AGVService agvService) : ControllerBase
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("taskCallBack")]
public AGVResponseLayout<AGVResponseLayout<object>> TaskCallBack(ApiServe.Dto.AGV.AGVRequestLayout<AGVRequestBodyLayout<AGVNoVeBuckMoveRequest>> request) => agvService.TaskCallBack(request);
public AGVResponseLayout<AGVResponseLayout<object>> TaskCallBack([FromBody] Dto.AGV.AGVRequestLayout<AGVRequestBodyLayout<AGVNoVeBuckMoveRequest>> request) => agvService.TaskCallBack(request);
/// <summary>
/// AGV在点位请求动作
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("requestAction")]
public AGVResponseLayout<AGVResponseLayout<object>> RequestAction([FromBody] Dto.AGV.AGVRequestLayout<AGVRequestBodyBaseLayout<AGVRequestActionRequest>> request) => agvService.RequestAction(request);
}

View File

@ -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; }
}

View File

@ -16,6 +16,19 @@ public class AGVRequestBodyLayout<T>
}
public class AGVRequestBodyBaseLayout<T>
{
/// <summary>
/// 数据
/// </summary>
[JsonPropertyName("event")]
public T? Event { get; set; }
}

View File

@ -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)
{
/// <summary>
/// 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 = $"操作异常数据更新失败" }
};
}
/// <summary>
/// AGV请求动作
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public AGVResponseLayout<AGVResponseLayout<object>> RequestAction(Dto.AGV.AGVRequestLayout<AGVRequestBodyBaseLayout<AGVRequestActionRequest>> 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<string, int> 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);
}
}

View File

@ -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)
{
/// <summary>
/// 请求四向车任务
@ -31,6 +32,7 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
{
return new() { Code = "400", Message = "数据连接失败,请重试" };
}
bool apply = false;
if (wmsTasks.Count == 0)
{
/* 请求WMS获取任务 */
@ -49,6 +51,7 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
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;
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",

View File

@ -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
/// <param name="wmsTask"></param>
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<AppWmsTask> 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<AppWmsTask> 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;
}

View File

@ -110,6 +110,43 @@ public class AppWmsTaskDao
}
public List<AppWmsTask>? SelectRunningTask(string? destination)
{
try
{
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
.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<AppWmsTask>? SelectRunningTask2(string? location)
{
try
{
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
.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;
}
}
/// <summary>
/// 查找所有数据
/// </summary>

View File

@ -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;
}
/// <summary>
/// 获取输送机任务号

View File

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>F:\A开发项目\A菲达宝开项目\2024-08_上汽试制仓\应用程序\WcsService\WcsMain\bin\Release\net8.0\publish\</_PublishTargetUrl>
<History>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||;</History>
<History>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||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>