From 3b7569285434bb38736627821f7d7eb34fabca28 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 09 四月 2026 16:32:30 +0800
Subject: [PATCH] 优化海康跨楼层任务,处理设备信息写入失败任务
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs | 98 +++----------
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs | 8
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs | 4
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs | 96 +++++++------
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs | 7
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 16 +-
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs | 64 +++++++--
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs | 4
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs | 16 +-
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs | 26 +++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 18 +-
13 files changed, 188 insertions(+), 173 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
index 77fc8ab..87b6ddd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
@@ -37,7 +37,7 @@
/// </summary>
/// <param name="agvcode"></param>
/// <returns></returns>
- public WebResponseContent CheckTheCar()
+ public WebResponseContent CheckTheCar(string hkagvType)
{
WebResponseContent content = new WebResponseContent();
List<HIKROBOTQueryData> dataList = new List<HIKROBOTQueryData>();
@@ -51,7 +51,7 @@
try
{
- var agvInfo = Repository.QueryData();
+ var agvInfo = Repository.QueryData(x => x.HkagvType == hkagvType);
if (agvInfo == null || !agvInfo.Any())
{
content.Error("鏈煡璇㈠埌AGV灏忚溅淇℃伅");
@@ -63,7 +63,7 @@
foreach (var item in agvInfo)
{
- var headers = new Dictionary<string, string>
+ var headers = new Dictionary<string, string>
{
{ "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + item.AGVCode }
};
@@ -156,6 +156,6 @@
}
-
+
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index 74374cd..1031a7d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -124,28 +124,28 @@
/// <summary>
- /// 绛夊緟娴峰悍AGV鎼繍鍒颁綅 19
+ /// 鍛煎彨AGV灏忚溅涓�
/// </summary>
- [Description("绛夊緟娴峰悍AGV鎼繍鍒颁綅")]
+ [Description("鍛煎彨AGV灏忚溅涓�")]
WaitingHkAGVMovePosition,
/// <summary>
- /// 鍛煎彨娴峰悍鎼繍涓�
+ /// 娴峰悍AGV绌鸿溅璺ㄥ眰涓嬪彂
/// </summary>
- [Description("鍛煎彨娴峰悍AGV鎼繍")]
+ [Description("娴峰悍AGV绌鸿溅璺ㄥ眰涓嬪彂")]
CallingHKtransportation,
/// <summary>
- /// 娴峰悍AGV鎼繍涓�
+ /// 娴峰悍AGV绌鸿溅璺ㄥ眰杩愯涓�
/// </summary>
- [Description("娴峰悍AGV鎼繍涓�")]
+ [Description("娴峰悍AGV绌鸿溅璺ㄥ眰杩愯涓�")]
HktransportIng,
/// <summary>
- /// 娴峰悍AGV鎼繍瀹屾垚 22
+ /// 娴峰悍AGV绌鸿溅璺ㄥ眰瀹屾垚
/// </summary>
- [Description("娴峰悍AGV鎼繍瀹屾垚")]
+ [Description("娴峰悍AGV绌鸿溅璺ㄥ眰瀹屾垚")]
HkTransportCompleted,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
index 3041606..0ea2e8e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
@@ -19,6 +19,6 @@
/// 妫�鏌ユ捣搴峰皬杞�
/// </summary>
/// <returns></returns>
- WebResponseContent CheckTheCar();
+ WebResponseContent CheckTheCar(string hkagvType);
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index 78c2736..96d8fab 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -58,7 +58,7 @@
/// </summary>
[ImporterHeader(Name = "鎵樼洏缂栧彿")]
[ExporterHeader(DisplayName = "鎵樼洏缂栧彿")]
- [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+ [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
public string PalletCode { get; set; }
/// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
index 1703ffe..45f0d87 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
@@ -20,9 +20,9 @@
}
[HttpPost,Route("CheckTheCar"), AllowAnonymous]
- public WebResponseContent CheckTheCar()
+ public WebResponseContent CheckTheCar(string hkagvType)
{
- return Service.CheckTheCar();
+ return Service.CheckTheCar(hkagvType);
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
index bc292cc..cfce8e7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
@@ -44,14 +44,14 @@
//鑾峰彇璐т綅淇℃伅
else
hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
- if (taskType==(int)TaskTypeEnum.Q1TSJ4)
+ if (taskType == (int)TaskTypeEnum.Q1TSJ4)
{
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
if (device.IsConnected)
{
var reslu = device.GetValue<HoistEnum, string>(HoistEnum.Emptycontainernumber);
var result = reslu?.TrimEnd('\0')?.Substring(2);
- if (reslu== taskDTO.containerCode&&result!=null)
+ if (reslu == taskDTO.containerCode && result != null)
{
throw new Exception($"褰撳墠鐨勬枡绠卞彿涓簕reslu}涓巤taskDTO.containerCode}鏂欑鍙蜂笉鍖归厤");
}
@@ -246,8 +246,7 @@
hIKROBOTTaskSubmit.initPriority = task.Grade;
hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum;
hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto();
- if (task.TaskType != (int)TaskTypeEnum.MOVE &&task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK &&
- task.TaskType != (int)TaskTypeEnum.F01)
+ if (task.TaskType != (int)TaskTypeEnum.MOVE && task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK && task.TaskType != (int)TaskTypeEnum.F01)
{
CarrierInfoDto carrierInfoDto = new CarrierInfoDto()
{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
index ac17fd7..7380d53 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
@@ -83,12 +83,6 @@
task.TaskState = (int)TaskStatusEnum.HktransportIng;
BaseDal.UpdateData(task);
}
- else if (task.TaskType == (int)TaskTypeEnum.Q3CK|| task.TaskType == (int)TaskTypeEnum.Q3RK)
- {
- //UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Lock);
- task.TaskState = (int)TaskStatusEnum.Takeing;
- TaskFeedback(task, 1);
- }
else
{
task.TaskState = (int)TaskStatusEnum.Takeing;
@@ -97,24 +91,11 @@
break;
case "outbin"://绂诲紑璧风偣
{
- if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK)
- {
- UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Free);
- task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt();
- BaseDal.UpdateData(task);
- TaskFeedback(task, 1);
- }
- else
- {
-
- TaskFromCompleted(task, deviceTypeEnum); //浠诲姟鐘朵綋鏀逛负3鍙栬揣瀹屾垚锛屾洿鏂拌捣鐐硅揣浣嶇姸鎬侊紝骞跺弽棣圵MS璧风偣瀹屾垚
- }
- ///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
+ TaskFromCompleted(task, deviceTypeEnum); //浠诲姟鐘朵綋鏀逛负3鍙栬揣瀹屾垚锛屾洿鏂拌捣鐐硅揣浣嶇姸鎬侊紝骞跺弽棣圵MS璧风偣瀹屾垚
}
break;
case "finish"://绂诲紑鎻愬崌鏈�
{
-
//鍏ユ彁鍗囨満
if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish)
{
@@ -146,7 +127,7 @@
BaseDal.UpdateData(task);
}
//鍥涙ゼ 鍑哄簱
- else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+ else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
{
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
if (device == null) task.ExceptionMessage = "鏈壘鍒版彁鍗囨満淇℃伅";
@@ -160,7 +141,7 @@
BaseDal.UpdateData(task);
}
// //鍥涙ゼ鍑烘彁鍗囨満 鍏ュ簱 涔嬪墠鏄疉GV_ToExecute //瑕佸啓鎴愬彇璐у畬鎴愮姸鎬乀akeFinish
- if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+ else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
{
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
if (device == null) task.ExceptionMessage = "鏈壘鍒版彁鍗囨満淇℃伅";
@@ -175,21 +156,29 @@
BaseDal.UpdateData(task);
}
//璺ㄦゼ灞�
- else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.TakeFinish)
+ else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt()/* && task.TaskState == (int)TaskStatusEnum.TakeFinish*/)
{
- if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()|| task.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
+ var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
+ if (device == null) task.ExceptionMessage = "鏈壘鍒拌川妫�闂ㄤ俊鎭�";
+ else
{
- var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
- if (device == null) task.ExceptionMessage = "鏈壘鍒拌川妫�闂ㄤ俊鎭�";
- else
+ bool Wok = false;
+ var Address = task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? task.TargetAddress : task.SourceAddress;
+ if (device.IsConnected)
{
- if (device.IsConnected)
- //鍐欎互涓�涓嚭搴撳畬鎴愪俊鍙�
- device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, task.TargetAddress);
- else
- task.ExceptionMessage = "璐ㄦ闂ㄤ俊鎭澶囪繛鎺ュけ璐�";
+ int i = 0;
+ while (!Wok && i <= 3)
+ {
+ i++;
+ Wok = device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, Address);
+ Thread.Sleep(500);
+ }
}
-
+ if (!Wok)
+ {
+ task.ExceptionMessage = $"銆恵Address}銆戝叧闂姹傝繘鍏ュけ璐ワ紒";
+ task.Remark = $"{device.DeviceCode}_RequestToEnter_{false}_{Address}";
+ }
}
BaseDal.UpdateData(task);
}
@@ -209,8 +198,8 @@
else
{
if (device.IsConnected)
- //鎵撳紑鎵爜鍣�
- device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
+ //鎵撳紑鎵爜鍣�
+ device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
else
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
@@ -220,16 +209,16 @@
break;
case "end"://浠诲姟瀹屾垚閫氱煡
{
- if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK|| task.TaskType == (int)TaskTypeEnum.MOVE)
+ if (task.TaskType == (int)TaskTypeEnum.MOVE)
{
task.TaskState = TaskStatusEnum.Finish.ObjToInt();
- BaseDal.UpdateData(task);
- TaskFeedback(task, 2);
BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
+ var Task = BaseDal.QueryFirst(x => task.WMSTaskNum.Contains(x.WMSTaskNum));
+ Task.TaskState = TaskStatusEnum.HkTransportCompleted.ObjToInt();
+ BaseDal.UpdateData(Task);
}
else
{
- ///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
TaskCompleted(task, deviceTypeEnum);
}
}
@@ -237,14 +226,14 @@
case "intolift": //杩涘叆鐢垫
{
//鍏ゼ鍒颁竴妤肩殑鍏ュ簱浠诲姟
- if (task.TaskType==(int)TaskTypeEnum.Q3RK||task.TaskType==(int)TaskTypeEnum.MOVE||task.TaskType==(int)TaskTypeEnum.F01)
+ if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01)
{
task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt();
BaseDal.UpdateData(task);
}
}
break;
- case "leavelift": //绂诲紑鐢垫
+ case "leavelift": //绂诲紑鐢垫
{
if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01)
{
@@ -443,7 +432,7 @@
try
{
dt_Task.TaskState = TaskStatusEnum.Finish.ObjToInt();
- TaskFeedback(dt_Task, 2);
+ TaskFeedback(dt_Task, 2, string.IsNullOrEmpty(dt_Task.Remark));
//Db.Ado.BeginTran();
UpdateLocationStatus(dt_Task.TargetAddress, dt_Task.PalletCode, deviceTypeEnum, LocationStatusEnum.InStock);
@@ -517,6 +506,21 @@
stationInfo.StationStatus = locationStatusEnum.ObjToInt();
_stationInfo.UpdateData(stationInfo);
}
+ Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode);
+ if (stationManger != null)
+ {
+ if (locationStatusEnum == LocationStatusEnum.Free) //濡傛灉璧风偣瀹屾垚灏辩粰璐т綅璧嬪�兼墭鐩樺彿
+ {
+ stationManger.Remark = "";
+ stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
+ }
+ else
+ {
+ stationManger.Remark = palletCode;
+ stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt();
+ }
+ _stationMangerService.UpdateData(stationManger);
+ }
}
else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe)
{
@@ -551,7 +555,7 @@
#endregion
#region 鏇存柊涓�妤肩珯鍙扮姸鎬�
- public WebResponseContent UpdateStandStatus(Dt_Task task,string stationCode,LocationStatusEnum locationStatusEnum)
+ public WebResponseContent UpdateStandStatus(Dt_Task task, string stationCode, LocationStatusEnum locationStatusEnum)
{
try
{
@@ -579,7 +583,7 @@
#endregion
#region 涓婃姤WMS
- public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status)
+ public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status, bool Del = true)
{
WebResponseContent content = new WebResponseContent();
WMSInOutBoundCompleteFeedback boundCompleteFeedback = new WMSInOutBoundCompleteFeedback();
@@ -596,7 +600,7 @@
boundCompleteFeedback.toLocationCode = dt_Task.TargetAddress;
boundCompleteFeedback.status = Status;
boundCompleteFeedback.custStatus = "";
- string response = HttpHelper.Post(apiInfo.ApiAddress,boundCompleteFeedback.Serialize());
+ string response = HttpHelper.Post(apiInfo.ApiAddress, boundCompleteFeedback.Serialize());
agvContent = response.DeserializeObject<WMSReturn>();
content.OK(data: agvContent);
if (agvContent.code != 200)
@@ -613,7 +617,7 @@
finally
{
_trackloginfoService.AddTrackLog(boundCompleteFeedback, content, "鍑哄叆搴撲换鍔$姸鎬佸弽棣圵MS", "", "");
- if (agvContent != null && agvContent.code == 200 && Status == 2)
+ if (agvContent != null && agvContent.code == 200 && Del)
BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.鑷姩瀹屾垚);
else
BaseDal.UpdateData(dt_Task);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 50b210d..eae3f6f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -130,7 +130,7 @@
continue;
//throw new Exception($"鎵樼洏鍙枫�恵task.containerCode}銆戝凡瀛樺湪浠诲姟");
}
- if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType&&x.TaskState<TaskStatusEnum.TakeFinish.ObjToInt())!=null)
+ if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType && x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()) != null)
{
objects.Add(new
{
@@ -168,7 +168,7 @@
break;
#endregion
#region 娴峰悍AGV
- case(int)TaskTypeEnum.STURR:
+ case (int)TaskTypeEnum.STURR:
case (int)TaskTypeEnum.Q1TSJ4:
content = CreateHKNewInTask(task, item.taskType);
objects.Add(content.Data);
@@ -178,7 +178,7 @@
content = CreateHKNewOutTask(task, item.taskType);
objects.Add(content.Data);
break;
-
+
case (int)TaskTypeEnum.Q3RK:
case (int)TaskTypeEnum.Q3CK:
content = CarryTask(task, item.taskType);
@@ -243,7 +243,7 @@
//鍥涘悜杞�
bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound;
//娴峰悍
- bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK||dt_Task.TaskType==(int)TaskTypeEnum.STURR;
+ bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK || dt_Task.TaskType == (int)TaskTypeEnum.STURR;
//杩欓噷灏嗙姸鎬佹敼鍙樹簡198鍙栨秷浠诲姟
dt_Task.TaskType = TaskStatusEnum.WMSCancel.ObjToInt();
#region 鍑箰澹�
@@ -331,7 +331,7 @@
Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelHIKROBOTTask));
if (apiInfo == null) throw new Exception("鏈壘鍒板洓鍚戣溅AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
- string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(),headers: headers);
+ string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(), headers: headers);
HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
content.OK(data: hIKROBOTReturn);
if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "鎴愬姛")
@@ -1146,7 +1146,7 @@
LoctionCode = item.LocationCode,
LocationStatus = item.LocationStatus,
EnableStatus = item.EnableStatus,
- PalletCode = item.PalletCode
+ PalletCode = item.PalletCode
});
}
content.OK(data: list);
@@ -1161,7 +1161,7 @@
list.Add(new
{
LoctionCode = value,
- LocationStatus = value!=0? 100 : 0,
+ LocationStatus = value != 0 ? 100 : 0,
EnableStatus = 0,
});
content.OK(data: list);
@@ -1180,7 +1180,7 @@
LoctionCode = item.LocationCode,
LocationStatus = item.LocationStatus,
EnableStatus = item.EnableStatus,
- PalletCode = item.PalletCode
+ PalletCode = item.PalletCode
});
}
content.OK(data: list);
@@ -1191,7 +1191,7 @@
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
if (device == null) throw new Exception("鏈壘鍒�1妤艰川妫�闂ㄨ澶囦俊鎭�");
if (!device.IsConnected) throw new Exception("PLC1妤艰川妫�闂ㄨ澶囪繛鎺ュけ璐�");
- var sta = _stationMangerService.Repository.QueryData(x => x.Remark == "鎴愬搧搴�");
+ var sta = _stationMangerService.Repository.QueryData(x => x.StationName.Contains("鎴愬搧浠�"));
foreach (var item in sta)
{
bool value = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.StationCode);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
index 07b97b6..ba18d44 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
@@ -50,10 +50,10 @@
foreach (var item in tasks)
{
// 鍑哄簱浠诲姟澶勭悊 (浠�1妤煎嚭搴撳埌6妤�)
- if (item.TaskType == (int)TaskTypeEnum.Q3CK)
+ if (item.TaskType == (int)TaskTypeEnum.Q3CK || item.TaskType == (int)TaskTypeEnum.Q3RK)
{
// 璋冪敤鎺ュ彛鑾峰彇灏忚溅淇℃伅
- var result = _agvcartInfoService.CheckTheCar();
+ var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)(YWGP)");
if (result != null && result.Status)
{
var dataList = result.Data as List<HIKROBOTQueryData>;
@@ -61,7 +61,8 @@
{
// 鍑哄簱浠诲姟锛氭鏌ユ槸鍚︽湁鍦�1妤�(AA)鐨勫皬杞�
// Q3CK 鏄疉A鈫扚F鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
- var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == "AA" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+ var code = item.TaskType == (int)TaskTypeEnum.Q3CK ? "AA" : "FF";
+ var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == code);
if (specialCarInAA != null)
{
@@ -75,11 +76,11 @@
else
{
// 娌℃湁涓撶敤灏忚溅鍦�1妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�1妤�
- var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+ var anySpecialCar = dataList.FirstOrDefault();
if (anySpecialCar != null)
{
// 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細1妤肩偣浣�
- var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "AA");
+ var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, code);
if (callCarResult.Status)
{
// 鍘熶换鍔$姸鎬佹敼涓虹瓑寰呯┖杞�
@@ -98,54 +99,10 @@
item.ExceptionMessage = "鑾峰彇AGV灏忚溅淇℃伅澶辫触";
}
}
- // 鍏ュ簱浠诲姟澶勭悊 (浠�6妤煎叆搴撳埌1妤�)
- else if (item.TaskType == (int)TaskTypeEnum.Q3RK)
- {
- var result = _agvcartInfoService.CheckTheCar();
-
- if (result != null && result.Status)
- {
- var dataList = result.Data as List<HIKROBOTQueryData>;
- if (dataList != null && dataList.Any())
- {
- // Q3RK 鏄疐F鈫扐A鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
- var specialCarInFF = dataList.FirstOrDefault(d => d.mapCode == "FF" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
-
- if (specialCarInFF!=null)
- {
- // 鏈夊湪1妤肩殑灏忚溅锛岀洿鎺ユ墽琛屼换鍔�
- var content = _taskService.SendHIKROBOTTask(item);
- item.TaskState = (int)TaskStatusEnum.Execut;
- }
- else
- {
- // 娌℃湁涓撶敤灏忚溅鍦�6妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�6妤�
- var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
- if (anySpecialCar != null)
- {
- // 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細6妤肩偣浣�
- var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "FF");
- if (callCarResult.Status)
- {
- item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
- }
- }
- else
- {
- item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
- }
- }
- }
- }
- else
- {
- item.ExceptionMessage = "鑾峰彇AGV灏忚溅淇℃伅澶辫触";
- }
- }
else if (item.TaskType == (int)TaskTypeEnum.F01)
{
// F01浠诲姟澶勭悊锛氭牴鎹洰鏍囧湴鍧�鍒ゆ柇闇�瑕佸摢涓ゼ灞傜殑灏忚溅
- var result = _agvcartInfoService.CheckTheCar();
+ var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)");
if (result != null && result.Status)
{
@@ -162,9 +119,9 @@
}
// 妫�鏌ユ槸鍚︽湁鍦ㄧ洰鏍囨ゼ灞傜殑灏忚溅
- var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode&&d.CarType== "MR-Q3-600LE-D(M)");
+ var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode);
- if (hasRequiredCar!=null)
+ if (hasRequiredCar != null)
{
// 鏈夊湪鐩爣妤煎眰鐨勫皬杞︼紝鐩存帴鎵ц浠诲姟
var content = _taskService.SendHIKROBOTTask(item);
@@ -193,7 +150,7 @@
}
}
}
- }
+ }
_taskService.UpdateData(item);
}
}
@@ -239,7 +196,7 @@
Dt_Task newTask = new Dt_Task
{
- WMSTaskNum="HKkc"+ DateTime.Now.ToString("yyyyMMddHHmmss"), // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
+ WMSTaskNum = "HK_" + task.WMSTaskNum, // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
SourceAddress = currentFloorInfo.PointCode,
CurrentAddress = currentFloorInfo.PointCode,
@@ -247,16 +204,16 @@
NextAddress = targetFloorInfo.PointCode,
TaskType = (int)TaskTypeEnum.MOVE,
Grade = task.Grade,
- PalletCode = null,
+ PalletCode = "",
TaskState = (int)TaskStatusEnum.CallingHKtransportation,
// 澶嶅埗鍏朵粬蹇呰瀛楁
CreateDate = DateTime.Now,
Creater = "System"
};
- _taskService.AddData(newTask); // 娣诲姞鏂颁换鍔�
var result = _taskService.SendHIKROBOTTask(newTask);
if (result.Status)
{
+ _taskService.AddData(newTask); // 娣诲姞鏂颁换鍔�
content.OK("绌鸿溅鍛煎彨浠诲姟鍒涘缓鎴愬姛", newTask);
}
else
@@ -274,26 +231,22 @@
#endregion
#region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
- public void SendHKWaitTask()
+ public void SendHKWaitTask(List<Dt_Task> Tasks)
{
try
{
- List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.MOVE);
- if (reslut.Count<=0)
+ List<Dt_Task> Uptasks = new List<Dt_Task>();
+ foreach (var item in Tasks)
{
- List<Dt_Task> reslut2 = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Q3RK||x.TaskType==(int)TaskTypeEnum.Q3CK || x.TaskType == (int)TaskTypeEnum.F01);
- foreach (var item in reslut2)
+ var content = _taskService.SendHIKROBOTTask(item);
+ if (content.Status)
{
- var content = _taskService.SendHIKROBOTTask(item);
- }
- reslut.ForEach(x =>
- {
- x.TaskState =(int)TaskStatusEnum.Execut;
- });
-
+ item.TaskState = (int)TaskStatusEnum.Execut;
+ Uptasks.Add(item);
+ }
}
- _taskService.UpdateData(reslut);
-
+ _taskService.UpdateData(Uptasks);
+
}
catch (Exception ex)
{
@@ -314,14 +267,13 @@
// 鍦板潃鏍煎紡绀轰緥 锛欰A 瀵瑰簲 0339050AA0309145
// keys 鏄� AA銆丅B銆丆C銆丏D銆丒E銆丗F锛寁ule鏄搴旂殑鐐逛綅淇℃伅
- foreach (var floorCode in FloorMapping.FloorMap.Keys)
+ foreach (var floorCode in FloorMapping.FloorMap.Keys)
{
- if (address.Contains(floorCode))
+ if (address.Contains(floorCode))
{
return floorCode;//杩斿洖鐨勫氨鏄疉A銆丅B銆丆C銆丏D銆丒E銆丗F涓殑涓�涓紝浠h〃瀵瑰簲鐨勬ゼ灞�
}
}
-
return null;
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs"
index 5c7d346..d1d3cfd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs"
@@ -300,12 +300,12 @@
locationsToUpdate.Add(rGVLocationInfo);
#region 閲婃斁鍏ュ簱绔欏彴
- //var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress);
- //if (stationManger != null)
- //{
- // stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
- // stationsToUpdate.Add(stationManger);
- //}
+ var stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress);
+ if (stationManger != null)
+ {
+ stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
+ stationsToUpdate.Add(stationManger);
+ }
content.OK();
#endregion
}
@@ -412,8 +412,8 @@
_taskService.UpdateData(tasksToUpdate);
if (locationsToUpdate.Any())
_rGVLocationInfoService.UpdateData(locationsToUpdate);
- //if (stationsToUpdate.Any())
- // _stationMangerService.UpdateData(stationsToUpdate);
+ if (stationsToUpdate.Any())
+ _stationMangerService.UpdateData(stationsToUpdate);
_unitOfWorkManage.CommitTran();
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
index 4729c55..a6e4358 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
@@ -113,8 +113,8 @@
#region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
- Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.WaitingHkAGVMovePosition).OrderByDescending(x => x.Grade).ToList();
- if (Tasks.Count > 0) SendHKWaitTask();
+ Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.HkTransportCompleted).OrderByDescending(x => x.Grade).ToList();
+ if (Tasks.Count > 0) SendHKWaitTask(Tasks);
#endregion
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
index a402251..8e37567 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
@@ -2,6 +2,7 @@
using HslCommunication;
using HslCommunication.Core;
using Microsoft.VisualBasic.FileIO;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Quartz;
using SixLabors.ImageSharp.PixelFormats;
using SqlSugar;
@@ -15,12 +16,14 @@
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
namespace WIDESEAWCS_Tasks
@@ -54,6 +57,29 @@
SendNewTask();
SendWaitToTask();
+
+ #region 澶勭悊鍐欏叆璁惧淇″彿寮傚父浠诲姟
+ var tasks = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.Finish.ObjToInt() && !string.IsNullOrEmpty(x.Remark));
+ if (tasks.Count > 0)
+ {
+ List<Dt_Task> list = new List<Dt_Task>();
+ foreach (var item in tasks)
+ {
+ var infos = item.Remark.Split("_");
+ var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == infos[0]) as OtherDevice;
+ if (device != null && device.IsConnected)
+ {
+ DeviceProDTO? devicePro = device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == infos[1] && x.DeviceChildCode == infos[3]);
+ if (devicePro != null)
+ {
+ var W = device.Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, infos[2]);
+ if (W) list.Add(item);
+ }
+ }
+ }
+ _taskService.Repository.DeleteAndMoveIntoHty(list, OperateTypeEnum.鑷姩鍒犻櫎);
+ }
+ #endregion
}
catch (Exception ex)
{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
index b9bf715..77922a3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
@@ -12,6 +12,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.Helper;
@@ -50,9 +51,9 @@
// _taskService.Repository 浠撳偍灞傦紝杩涜鏁版嵁搴撹闂�-
try
{
+ #region 鍥涘悜杞︿换鍔�
List<Dt_Task> Uptasks = new List<Dt_Task>();
var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
- var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()&& (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6鍜�6-1妤间换鍔�
//浠诲姟鐨勭洰鏍囧湴鍧�瀵逛簬绔欏彴鍙凤紱
foreach (var task in taskList)
{
@@ -103,19 +104,57 @@
Uptasks.Add(task);
}
}
+ #endregion
+
+ var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6鍜�6-1妤间换鍔�
foreach (var item in AGVtaskList)
{
-
- if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.SourceAddress))
+ var address = item.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? item.TargetAddress : item.SourceAddress;
+ var stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == address);
+ if (stationManger == null)
{
- item.ExceptionMessage = $"{item.SourceAddress}绔欏彴鏈夎揣,鏃犳硶杩涘叆";
+ item.ExceptionMessage = $"鏈壘鍒般�恵address}銆戠珯鍙颁俊鎭�";
+ Uptasks.Add(item);
continue;
}
- //into杩涘叆涓�妤间綅缃殑鏃跺�欙紝鍐欏叆杩涘叆淇″彿
- device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.SourceAddress);
- if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true)
+ var StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, address);
+ if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
{
- item.ExceptionMessage = $"{item.TargetAddress}绔欏彴鍏夋爡涓嶄负true锛�1锛�!";
+ if (StockAvailableSymbol)
+ {
+ item.ExceptionMessage = $"{address}绔欏彴鍏夌數妫�娴嬫湁璐э紒";
+ Uptasks.Add(item);
+ continue;
+ }
+ if (stationManger.IsOccupied == (int)LocationStatusEnum.Lock)
+ {
+ item.ExceptionMessage = $"绔欏彴鏈夎揣锛�";
+ Uptasks.Add(item);
+ continue;
+ }
+ }
+ else
+ {
+ if (!StockAvailableSymbol)
+ {
+ item.ExceptionMessage = $"{address}绔欏彴鍏夌數妫�娴嬫棤璐э紒";
+ Uptasks.Add(item);
+ continue;
+ }
+ if (stationManger.IsOccupied == (int)LocationStatusEnum.Free)
+ {
+ item.ExceptionMessage = $"绔欏彴鏃犺揣锛�";
+ Uptasks.Add(item);
+ continue;
+ }
+ }
+ //into杩涘叆涓�妤间綅缃殑鏃跺�欙紝鍐欏叆杩涘叆淇″彿
+ device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, address);
+ if (!device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.Blocking, address))
+ {
+ item.ExceptionMessage = $"{address}绔欏彴鍏夋爡涓嶄负true锛�1锛�!";
+ Uptasks.Add(item);
+ continue;
}
var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum);
if (result.Status == false)
@@ -130,15 +169,12 @@
item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
item.ExceptionMessage = "";
Uptasks.Add(item);
-
-
}
-
_taskService.UpdateData(Uptasks);
- WriteInfo(device.DeviceName, "infoLog");
+ //WriteInfo(device.DeviceName, "infoLog");
- WriteDebug(device.DeviceName, "debugLog");
+ //WriteDebug(device.DeviceName, "debugLog");
}
catch (Exception ex)
{
@@ -149,8 +185,6 @@
{
WriteError(nameof(TestJob), "鍙傛暟閿欒,鏈紶閫掕澶囧弬鏁版垨璁惧绫诲瀷閿欒");
}
-
-
return Task.CompletedTask;
}
}
--
Gitblit v1.9.3