From 7e69830653c9be2d675c3fb4c5578ac1efa4b89c Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期四, 09 四月 2026 08:58:33 +0800
Subject: [PATCH] 添加跨楼层的接口以及优化
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs | 249 +++++++++++++++++++++++----
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs | 3
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs | 52 +++--
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs | 4
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs | 72 ++++++-
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs | 41 +++-
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs | 9
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs | 16 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs | 22 ++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs | 21 ++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs | 3
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 9
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs | 2
17 files changed, 415 insertions(+), 96 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 6c71744..77fc8ab 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"
@@ -91,7 +91,8 @@
dataList.Add(new HIKROBOTQueryData
{
singleRobotCode = item.AGVCode,
- mapCode = queryData?.mapCode ?? string.Empty
+ mapCode = queryData?.mapCode ?? string.Empty,
+ CarType = item.HkagvType // 浠庢湰鍦版暟鎹簱鑾峰彇灏忚溅绫诲瀷
});
successMessages.Add($"AGV灏忚溅-{item.AGVCode}鎵�鍦ㄦゼ灞倇queryData?.mapCode}鏌ヨ鎴愬姛");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs"
index 569e695..af2eca6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs"
@@ -29,7 +29,7 @@
Outboundmaterialbox,
/// <summary>
- /// 4妤肩┖绠辩鍙�
+ /// 4妤煎嚭搴撶绠�
/// </summary>
Emptycontainernumber,
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 e79e78a..74374cd 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,7 +124,7 @@
/// <summary>
- /// 鍛煎彨娴峰悍鎼繍涓� 19
+ /// 绛夊緟娴峰悍AGV鎼繍鍒颁綅 19
/// </summary>
[Description("绛夊緟娴峰悍AGV鎼繍鍒颁綅")]
WaitingHkAGVMovePosition,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index e228198..b8f6aef 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -84,7 +84,7 @@
/// 绌鸿溅璺ㄦゼ灞�
/// </summary>
[Description("绌鸿溅璺ㄦゼ灞�")]
- Move,
+ MOVE,
/// <summary>
/// 鎴愬搧绉诲簱
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs"
index eadf542..4dddec2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs"
@@ -32,7 +32,29 @@
/// 灏忚溅缂栧彿
/// </summary>
public string singleRobotCode { get; set; }
+
+ /// <summary>
+ /// 灏忚溅绫诲瀷
+ /// </summary>
+ public string CarType { get; set; }
}
+ public class FloorMapping
+ {
+ public static Dictionary<string, FloorInfo> FloorMap = new Dictionary<string, FloorInfo>
+ {
+ { "AA", new FloorInfo { Floor = "1妤�", PointCode = "1A" } },
+ { "BB", new FloorInfo { Floor = "2妤�", PointCode = "2B" } },
+ { "CC", new FloorInfo { Floor = "3妤�", PointCode = "3C" } },
+ { "DD", new FloorInfo { Floor = "4妤�", PointCode = "4D" } },
+ { "EE", new FloorInfo { Floor = "5妤�", PointCode = "5E" } },
+ { "FF", new FloorInfo { Floor = "6妤�", PointCode = "6F" } }
+ };
+ }
+ public class FloorInfo
+ {
+ public string Floor { get; set; }
+ public string PointCode { get; set; }
+ }
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs"
index afb6bdc..2a1b4fa 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs"
@@ -10,6 +10,6 @@
{
public string warehouseID { get; set; } = "HETU";
public string clientCode { get; set; } = "WCS";
- public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmss");
+ public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmssfff");
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs"
index 05c5b34..b4e9619 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs"
@@ -20,8 +20,15 @@
/// <summary>
/// 灏忚溅缂栧彿
/// </summary>
- [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "绔欏彴缂栧彿")]
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "灏忚溅缂栧彿")]
public string AGVCode { get; set; }
+
+
+ /// <summary>
+ /// 灏忚溅绫诲瀷
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "灏忚溅绫诲瀷")]
+ public string HkagvType { get; set; }
/// <summary>
/// 澶囨敞
/// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
index b7054da..20d0848 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
@@ -9,7 +9,7 @@
{
public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity
{
- public new DateTime CreateDate { get; set; } = DateTime.Now;
+ public new DateTime CreateDate { get; set; }
public int SourceId { get; set; }
public string OperateType { get; set; }
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 b5d3eb1..bc292cc 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"
@@ -14,6 +14,7 @@
using WIDESEAWCS_DTO.AGV.HIKROBOT;
using System.Diagnostics.CodeAnalysis;
using System.Reflection.PortableExecutable;
+using WIDESEAWCS_QuartzJob;
namespace WIDESEAWCS_TaskInfoService
{
@@ -43,6 +44,23 @@
//鑾峰彇璐т綅淇℃伅
else
hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+ 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)
+ {
+ throw new Exception($"褰撳墠鐨勬枡绠卞彿涓簕reslu}涓巤taskDTO.containerCode}鏂欑鍙蜂笉鍖归厤");
+ }
+ }
+ else
+ {
+ throw new Exception("鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�");
+ }
+ }
Dt_Task dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -111,6 +129,8 @@
Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
if (hKLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵hKLocationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
+ //搴撳唴鍒板簱澶栫殑鐐瑰埌鐐逛换鍔★紝鏄惁闇�瑕佸垽鏂揣浣嶇姸鎬侊紵
+
Dt_Task dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -226,21 +246,23 @@
hIKROBOTTaskSubmit.initPriority = task.Grade;
hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum;
hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto();
- CarrierInfoDto carrierInfoDto = new CarrierInfoDto()
+ if (task.TaskType != (int)TaskTypeEnum.MOVE &&task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK &&
+ task.TaskType != (int)TaskTypeEnum.F01)
{
- carrierCode = task.PalletCode,
- carrierType = task.PalletCode.Contains("LXM") ? "DX" : "SX"
- };
- extraDto.carrierInfo.Add(carrierInfoDto);
- hIKROBOTTaskSubmit.extra = extraDto;
+ CarrierInfoDto carrierInfoDto = new CarrierInfoDto()
+ {
+ carrierCode = task.PalletCode,
+ carrierType = task.PalletCode.Contains("LXM") ? "DX" : "SX"
+ };
+ extraDto.carrierInfo.Add(carrierInfoDto);
+ hIKROBOTTaskSubmit.extra = extraDto;
+ }
switch (tasktype)
{
case TaskTypeEnum.CPInbound:
case TaskTypeEnum.CPOutbound:
case TaskTypeEnum.MLInbound:
case TaskTypeEnum.MLOutbound:
- break;
- case TaskTypeEnum.F01:
break;
case TaskTypeEnum.RK3F:
case TaskTypeEnum.CK3F:
@@ -310,7 +332,8 @@
break;
case TaskTypeEnum.Q3RK:
case TaskTypeEnum.Q3CK:
- case TaskTypeEnum.Move:
+ case TaskTypeEnum.MOVE:
+ case TaskTypeEnum.F01:
{
TargetRouteDto target = new TargetRouteDto()
{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
index 3bf1406..3051285 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
@@ -14,6 +14,7 @@
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_QuartzJob;
+using System.Reflection.Metadata;
namespace WIDESEAWCS_TaskInfoService
{
@@ -208,8 +209,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_HKLocationInfo? hKLocationInfo = null;
- Dt_StationInfo? stationInfo = null;
+ Dt_StationManger? stationInfo = null;
Dt_Task dt_Task = null;
//鍏ュ簱 鍒颁竴妤间笁涓珯鍙扮殑浣嶇疆
if (taskType == (int)TaskTypeEnum.Q3RK)
@@ -229,7 +229,7 @@
WMSTaskNum = taskDTO.taskCode,
Grade = taskDTO.taskPriority,
PalletCode = taskDTO.containerCode,
- Roadway = hKLocationInfo.RoadwayNo,
+ Roadway = "1",
TaskState = (int)TaskStatusEnum.New,
TaskType = taskType,
SourceAddress = taskDTO.fromLocationCode,
@@ -238,22 +238,20 @@
TargetAddress = taskDTO.toLocationCode,
Creater = "WMS",
};
-
}
//鍑哄簱
if (taskType == (int)TaskTypeEnum.Q3CK)
{
- stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.toLocationCode}銆戯紒");
- if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.toLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
- if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.toLocationCode}銆戠粦瀹氭枡绠卞彿銆恵stationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
- dt_Task = new Dt_Task()
+ //stationInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+ //if (stationInfo.IsOccupied != (int)LocationStatusEnum.InStock) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
+ dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
WMSTaskNum = taskDTO.taskCode,
//WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
Grade = taskDTO.taskPriority,
PalletCode = taskDTO.containerCode,
- Roadway = hKLocationInfo.RoadwayNo,
+ Roadway = "1",
TaskState = (int)TaskStatusEnum.New,
TaskType = taskType,
SourceAddress = taskDTO.fromLocationCode,
@@ -267,8 +265,6 @@
{
Db.Ado.BeginTran();
BaseDal.AddData(dt_Task);
- _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
- _stationInfo.Repository.UpdateData(stationInfo);
Db.Ado.CommitTran();
}
catch (Exception ex)
@@ -295,8 +291,23 @@
public WebResponseContent CJCarryTaske(TaskDTO taskDTO, int taskType)
{
WebResponseContent content = new WebResponseContent();
+ Dt_StationInfo? stationInfo = null;
try
{
+ //#region 鏄惁闇�瑕佸垽鏂钩搴撳簱浣嶇姸鎬�
+ //if (taskType!= (int)TaskTypeEnum.CK3F)
+ //{
+ // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+ // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
+ // if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵stationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
+ //}
+ //else
+ //{
+ // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱浣嶃�恵taskDTO.toLocationCode}銆戯紒");
+ // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.toLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
+ //}
+ //#endregion
+
Dt_Task dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -326,5 +337,44 @@
return content;
}
#endregion
+
+
+ #region 5绌鸿溅杞繍
+ public WebResponseContent HKF01Transport(TaskDTO taskDTO, int taskType)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+ var dt_Task = new Dt_Task()
+ {
+ TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ WMSTaskNum = taskDTO.taskCode,
+ //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ Grade = taskDTO.taskPriority,
+ PalletCode = taskDTO.containerCode,
+ Roadway = "1",
+ TaskState = (int)TaskStatusEnum.New,
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = taskDTO.toLocationCode,
+ TargetAddress = taskDTO.toLocationCode,
+ Creater = "WMS",
+ };
+ content = SendHIKROBOTTask(dt_Task);
+ if (!content.Status) throw new Exception(content.Message);
+ dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ dt_Task.Dispatchertime = DateTime.Now;
+ BaseDal.AddData(dt_Task);
+ }
+ catch (Exception ex)
+ {
+
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ #endregion
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs"
index fe6687c..83f6a96 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs"
@@ -53,6 +53,7 @@
CurrentAddress = taskDTO.fromLocationCode,
NextAddress = stationManger.RGVStationCode,
TargetAddress = "",
+ Dispatchertime=DateTime.Now,
Creater = "WMS",
};
BaseDal.AddData(dt_Task);
@@ -104,6 +105,7 @@
CurrentAddress = taskDTO.fromLocationCode,
NextAddress = taskDTO.toLocationCode,
TargetAddress = taskDTO.toLocationCode,
+ Dispatchertime = DateTime.Now,
Creater = "WMS",
};
rGVLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
@@ -134,6 +136,7 @@
};
return content.Error(ex.Message);
}
+
}
#endregion
/// <summary>
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 a116186..5f476de 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"
@@ -78,11 +78,18 @@
switch (hIKROBOT.extra.values.method)
{
case "start":
- if (task.TaskState == (int)TaskStatusEnum.CallingHKtransportation && task.TaskType == (int)TaskTypeEnum.Move)
+ if (task.TaskState == (int)TaskStatusEnum.CallingHKtransportation && task.TaskType == (int)TaskTypeEnum.MOVE)
{
task.TaskState = (int)TaskStatusEnum.HktransportIng;
+ BaseDal.UpdateData(task);
}
- else if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK)
+ else if (task.TaskType == (int)TaskTypeEnum.Q3CK)
+ {
+ UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Lock);
+ task.TaskState = (int)TaskStatusEnum.Takeing;
+ TaskFeedback(task, 1);
+ }
+ else if (task.TaskType == (int)TaskTypeEnum.Q3RK)
{
UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Lock);
task.TaskState = (int)TaskStatusEnum.Takeing;
@@ -98,12 +105,14 @@
{
if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK)
{
- UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Free);
+ UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Free);
task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt();
+ BaseDal.UpdateData(task);
TaskFeedback(task, 1);
}
else
{
+
TaskFromCompleted(task, deviceTypeEnum); //浠诲姟鐘朵綋鏀逛负3鍙栬揣瀹屾垚锛屾洿鏂拌捣鐐硅揣浣嶇姸鎬侊紝骞跺弽棣圵MS璧风偣瀹屾垚
}
///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
@@ -125,10 +134,11 @@
else
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
+ BaseDal.UpdateData(task);
}
- //鍑烘彁鍗囨満
- else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+ //3 鍑烘彁鍗囨満 涔嬪墠鏄疉GV_ToExecute
+ else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.TakeFinish)
{
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
if (device == null) task.ExceptionMessage = "鏈壘鍒版彁鍗囨満淇℃伅";
@@ -139,6 +149,7 @@
else
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
+ BaseDal.UpdateData(task);
}
//鍥涙ゼ 鍑哄簱
else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
@@ -152,9 +163,10 @@
else
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
+ BaseDal.UpdateData(task);
}
- //鍥涙ゼ 鍏ュ簱
- else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+ // //鍥涙ゼ鍑烘彁鍗囨満 鍏ュ簱 涔嬪墠鏄疉GV_ToExecute
+ if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.TakeFinish)
{
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
if (device == null) task.ExceptionMessage = "鏈壘鍒版彁鍗囨満淇℃伅";
@@ -166,14 +178,15 @@
else
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
+ BaseDal.UpdateData(task);
}
- else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+ //璺ㄦゼ灞�
+ 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
{
if (device.IsConnected)
@@ -184,7 +197,7 @@
}
}
-
+ BaseDal.UpdateData(task);
}
}
break;
@@ -202,8 +215,8 @@
else
{
if (device.IsConnected)
- //鍐欎互涓�涓嚭搴撳畬鎴愪俊鍙�
- device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress);
+ //鎵撳紑鎵爜鍣�
+ device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
else
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
@@ -213,15 +226,10 @@
break;
case "end"://浠诲姟瀹屾垚閫氱煡
{
- if (task.TaskType==(int)TaskTypeEnum.Move &&task.TaskState==(int)TaskStatusEnum.HkTransportCompleted)
+ if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK|| task.TaskType == (int)TaskTypeEnum.MOVE)
{
task.TaskState = TaskStatusEnum.Finish.ObjToInt();
- TaskFeedback(task, 2);
- BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
- }
- else if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK)
- {
- task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+ BaseDal.UpdateData(task);
TaskFeedback(task, 2);
BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
}
@@ -235,17 +243,19 @@
case "intolift": //杩涘叆鐢垫
{
//鍏ゼ鍒颁竴妤肩殑鍏ュ簱浠诲姟
- if (task.TaskType==(int)TaskTypeEnum.Q3RK)
+ if (task.TaskType==(int)TaskTypeEnum.Q3RK||task.TaskType==(int)TaskTypeEnum.MOVE)
{
task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt();
+ BaseDal.UpdateData(task);
}
}
break;
case "leavelift": //绂诲紑鐢垫
{
- if (task.TaskType == (int)TaskTypeEnum.Q3RK)
+ if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE)
{
task.TaskState = TaskStatusEnum.HKleavelift.ObjToInt();
+ BaseDal.UpdateData(task);
}
}
break;
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 7557685..50b210d 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"
@@ -178,13 +178,17 @@
content = CreateHKNewOutTask(task, item.taskType);
objects.Add(content.Data);
break;
- case (int)TaskTypeEnum.F01:
+
case (int)TaskTypeEnum.Q3RK:
case (int)TaskTypeEnum.Q3CK:
content = CarryTask(task, item.taskType);
objects.Add(content.Data);
break;
+ case (int)TaskTypeEnum.F01:
+ content = HKF01Transport(task, item.taskType);
+ break;
case (int)TaskTypeEnum.F04:
+ case (int)TaskTypeEnum.F03:
case (int)TaskTypeEnum.F02:
case (int)TaskTypeEnum.RK3F:
case (int)TaskTypeEnum.CK3F:
@@ -1153,13 +1157,14 @@
var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
if (device == null) throw new Exception("鏈壘鍒版彁鍗囨満璁惧淇℃伅");
if (!device.IsConnected) throw new Exception("PLC1鎻愬崌鏈鸿澶囪繛鎺ュけ璐�");
- var value = device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJ");
+ var value = device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJC3F");
list.Add(new
{
LoctionCode = value,
LocationStatus = value!=0? 100 : 0,
EnableStatus = 0,
});
+ content.OK(data: list);
}
else if (getLocationInfo.WarehouseId == 4)
{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
index b2ae635..d6d47e9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
@@ -146,6 +146,7 @@
}
continue;
}
+
if (device.GetValue<HoistEnum, short>(HoistEnum.ROutScanningCompletionSignal, task.SourceAddress) != 1)
{
if (task.ExceptionMessage != "4妤兼彁鍗囨満鍑哄彛鎵爜瀹屾垚淇″彿娌℃湁瀹屾垚")
@@ -180,9 +181,9 @@
var RK3FTasks = _taskService.Repository.QueryFirst(x => x.TaskType == TaskTypeEnum.RK3F.ObjToInt() && x.TaskState == (int)TaskStatusEnum.CheckPalletCodeing);
if (RK3FTasks != null)
{
- var Barcode = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
//妫�鏌�3妤煎叆搴撶鍙锋槸澶氬皯锛岀劧鍚庝紶缁檞ms
var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Inboxnumber, RK3FTasks.TargetAddress);
+ BinNumber = BinNumber?.TrimEnd('\0')?.Substring(2);
if (device.GetValue<HoistEnum, short>(HoistEnum.RInScanningCompletionSignal, RK3FTasks.TargetAddress ) !=1 )
{
RK3FTasks.ExceptionMessage = "3妤兼壂鐮佸畬鎴愪俊鍙锋病鏈夊畬鎴�";
@@ -212,6 +213,7 @@
Uptasks.Add(RK3FTasks);
}
}
+ RK3FTasks.ExceptionMessage = "";
RK3FTasks.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish;
}
Uptasks.Add(RK3FTasks);
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 0dbd942..07b97b6 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"
@@ -1,6 +1,8 @@
-锘縰sing System;
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection.Emit;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
@@ -47,78 +49,225 @@
{
foreach (var item in tasks)
{
- if (item.TaskState == (int)TaskTypeEnum.Q3CK)
+ // 鍑哄簱浠诲姟澶勭悊 (浠�1妤煎嚭搴撳埌6妤�)
+ if (item.TaskType == (int)TaskTypeEnum.Q3CK)
{
// 璋冪敤鎺ュ彛鑾峰彇灏忚溅淇℃伅
var result = _agvcartInfoService.CheckTheCar();
-
- // 鍒ゆ柇鏄惁鏈� AA 鎴� FF
- bool hasAAOrFF = false;
-
- if (item.TaskState == (int)TaskTypeEnum.Q3CK)
+ if (result != null && result.Status)
{
- if (result != null && result.Status)
+ var dataList = result.Data as List<HIKROBOTQueryData>;
+ if (dataList != null && dataList.Any())
{
- var dataList = result.Data as List<HIKROBOTQueryData>;
- if (dataList != null && dataList.Any())
+ // 鍑哄簱浠诲姟锛氭鏌ユ槸鍚︽湁鍦�1妤�(AA)鐨勫皬杞�
+ // Q3CK 鏄疉A鈫扚F鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
+ var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == "AA" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+
+ if (specialCarInAA != null)
{
- // 妫�鏌ヨ繑鍥炵殑 mapCode 鍒楄〃涓槸鍚︽湁 AA
- hasAAOrFF = dataList.Any(d => d.mapCode == "AA");
- if (hasAAOrFF)
+ // 鏈夊湪1妤肩殑灏忚溅锛岀洿鎺ユ墽琛屼换鍔�
+ var content = _taskService.SendHIKROBOTTask(item);
+ if (content.Status)
{
- var content = _taskService.SendHIKROBOTTask(item);
item.TaskState = (int)TaskStatusEnum.Execut;
}
- else//杩欓噷鎴戝氨瑕佸懠鍙┖杞︽潵
+ }
+ else
+ {
+ // 娌℃湁涓撶敤灏忚溅鍦�1妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�1妤�
+ var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+ if (anySpecialCar != null)
{
- //娣诲姞绌鸿溅杩愯緭浠诲姟
- AddAGVCartInfo(item);
- item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ // 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細1妤肩偣浣�
+ var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "AA");
+ if (callCarResult.Status)
+ {
+ // 鍘熶换鍔$姸鎬佹敼涓虹瓑寰呯┖杞�
+ item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ }
+ }
+ else
+ {
+ item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
}
}
-
}
}
else
{
- if (result != null && result.Status)
+ 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())
{
- if (hasAAOrFF)
+ // 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//杩欓噷鎴戝氨瑕佸懠鍙┖杞︽潵
+ else
{
- //娣诲姞绌鸿溅杩愯緭浠诲姟
- AddAGVCartInfo(item);
- item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ // 娌℃湁涓撶敤灏忚溅鍦�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();
+
+ if (result != null && result.Status)
+ {
+ var dataList = result.Data as List<HIKROBOTQueryData>;
+ if (dataList != null && dataList.Any())
+ {
+ // 浠庝换鍔$殑璧峰鍦板潃涓彁鍙栭渶瑕佺殑妤煎眰浠g爜
+ string requiredMapCode = GetMapCodeFromAddress(item.SourceAddress);
+ if (string.IsNullOrEmpty(requiredMapCode))
+ {
+ item.ExceptionMessage = $"鏃犳硶浠庣洰鏍囧湴鍧� {item.SourceAddress} 涓瘑鍒ゼ灞備俊鎭�";
+ _taskService.UpdateData(item);
+ continue;
+ }
+
+ // 妫�鏌ユ槸鍚︽湁鍦ㄧ洰鏍囨ゼ灞傜殑灏忚溅
+ var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode&&d.CarType== "MR-Q3-600LE-D(M)");
+
+ if (hasRequiredCar!=null)
+ {
+ // 鏈夊湪鐩爣妤煎眰鐨勫皬杞︼紝鐩存帴鎵ц浠诲姟
+ var content = _taskService.SendHIKROBOTTask(item);
+ if (content.Status)
+ {
+ item.TaskState = (int)TaskStatusEnum.Execut;
+ }
+ }
+ else
+ {
+ // 娌℃湁鐩爣妤煎眰鐨勫皬杞︼紝闇�瑕佸懠鍙┖杞︿粠褰撳墠浣嶇疆鍒扮洰鏍囨ゼ灞�
+ var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)");
+
+ if (anySpecialCar != null)
+ {
+ var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, requiredMapCode);
+ if (callCarResult.Status)
+ {
+ item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ }
+ }
+ else
+ {
+ item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
+ }
+ }
+ }
+ }
+ }
+ _taskService.UpdateData(item);
}
- _taskService.UpdateData(tasks);
}
+
#endregion
#region 澶勭悊娴峰悍agv鎼繍浠诲姟
- public WebResponseContent AddAGVCartInfo(Dt_Task task)
+ /// <summary>
+ /// 鍒涘缓绌鸿溅鍛煎彨浠诲姟锛氭牴鎹皬杞﹀綋鍓嶄綅缃拰鐩爣妤煎眰锛岃缃换鍔$殑璧风偣銆佸綋鍓嶄綅缃拰鐩爣鐐癸紝骞朵笅鍙戠粰娴峰悍鎺ュ彛
+ /// </summary>
+ /// <param name="task"></param>
+ /// <param name="currentMapCode">褰撳墠浣嶇疆</param>
+ /// <param name="targetMapCode">鐩爣鍦板潃</param>
+ /// <returns></returns>
+ public WebResponseContent AddAGVCartInfo(Dt_Task task, string currentMapCode, string targetMapCode)
{
WebResponseContent content = new WebResponseContent();
try
{
- task.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- task.WMSTaskNum = null;
- task.TaskType = (int)TaskTypeEnum.Move;//鎹㈠眰浠诲姟
- task.TaskState = (int)TaskStatusEnum.CallingHKtransportation;
- var result = _taskService.SendHIKROBOTTask(task);
- _taskService.AddData(task);
+ // 鑾峰彇璧风偣妤煎眰淇℃伅
+ if (!FloorMapping.FloorMap.ContainsKey(currentMapCode))
+ {
+ content.Error($"鏃犳晥鐨勮捣鐐规ゼ灞備唬鐮侊細{currentMapCode}");
+ return content;
+ }
+
+ // 鑾峰彇鐩爣妤煎眰淇℃伅
+ if (!FloorMapping.FloorMap.ContainsKey(targetMapCode))
+ {
+ content.Error($"鏃犳晥鐨勭洰鏍囨ゼ灞備唬鐮侊細{targetMapCode}");
+ return content;
+ }
+
+ var currentFloorInfo = FloorMapping.FloorMap[currentMapCode];
+ var targetFloorInfo = FloorMapping.FloorMap[targetMapCode];
+
+ // 璁剧疆浠诲姟淇℃伅
+ //task.SourceAddress = currentFloorInfo.PointCode; // 璧风偣锛氬皬杞﹀綋鍓嶄綅缃殑鐐逛綅
+ //task.CurrentAddress = currentFloorInfo.PointCode; // 褰撳墠浣嶇疆锛氬皬杞﹀綋鍓嶄綅缃殑鐐逛綅
+ //task.TargetAddress = targetFloorInfo.PointCode; // 鐩爣鐐癸細鐩爣妤煎眰鐐逛綅
+ //task.NextAddress = targetFloorInfo.PointCode; // 璁板綍鐩爣妤煎眰浠g爜
+
+ Dt_Task newTask = new Dt_Task
+ {
+ WMSTaskNum="HKkc"+ DateTime.Now.ToString("yyyyMMddHHmmss"), // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
+ TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ SourceAddress = currentFloorInfo.PointCode,
+ CurrentAddress = currentFloorInfo.PointCode,
+ TargetAddress = targetFloorInfo.PointCode,
+ NextAddress = targetFloorInfo.PointCode,
+ TaskType = (int)TaskTypeEnum.MOVE,
+ Grade = task.Grade,
+ PalletCode = null,
+ TaskState = (int)TaskStatusEnum.CallingHKtransportation,
+ // 澶嶅埗鍏朵粬蹇呰瀛楁
+ CreateDate = DateTime.Now,
+ Creater = "System"
+ };
+ _taskService.AddData(newTask); // 娣诲姞鏂颁换鍔�
+ var result = _taskService.SendHIKROBOTTask(newTask);
+ if (result.Status)
+ {
+ content.OK("绌鸿溅鍛煎彨浠诲姟鍒涘缓鎴愬姛", newTask);
+ }
+ else
+ {
+ content.Error("绌鸿溅鍛煎彨浠诲姟涓嬪彂澶辫触");
+ }
+ return content;
}
catch (Exception ex)
{
- content.Error($"鍒涘缓澶辫触锛歿ex.Message}");
+ content.Error($"鍒涘缓绌鸿溅鍛煎彨浠诲姟澶辫触锛歿ex.Message}");
}
return content;
}
@@ -129,10 +278,11 @@
{
try
{
- List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Move);
- if (reslut.Count<0)
+ List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.MOVE);
+ if (reslut.Count<=0)
{
- foreach (var item in reslut)
+ 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);
}
@@ -151,5 +301,30 @@
}
}
#endregion
+
+ /// <summary>
+ /// 浠庡湴鍧�涓彁鍙栨ゼ灞備唬鐮侊紙AA銆丅B銆丆C銆丏D銆丒E銆丗F锛�
+ /// </summary>
+ /// <param name="address">鐐逛綅鍦板潃</param>
+ /// <returns>妤煎眰浠g爜</returns>
+ private string GetMapCodeFromAddress(string address)
+ {
+ if (string.IsNullOrEmpty(address))
+ return null;
+
+ // 鍦板潃鏍煎紡绀轰緥 锛欰A 瀵瑰簲 0339050AA0309145
+ // keys 鏄� AA銆丅B銆丆C銆丏D銆丒E銆丗F锛寁ule鏄搴旂殑鐐逛綅淇℃伅
+ foreach (var floorCode in FloorMapping.FloorMap.Keys)
+ {
+ 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 d75095a..5c7d346 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"
@@ -65,6 +65,7 @@
task.RGVTaskId = fOURBO.taskID;
task.ExceptionMessage = "";
task.TaskState = (int)TaskStatusEnum.Execut;
+ task.Dispatchertime=DateTime.Now;
}
catch (Exception ex)
{
@@ -119,6 +120,7 @@
keepRobot = 1,
keepRobotTimeout = 1
};
+ fOURBOTnewMovePodTask.requestID += item.TaskId;
fOURBOTnewMovePodTask.desType = 1;
fOURBOTnewMovePodTask.desNodeID = item.NextAddress;
string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
@@ -134,6 +136,7 @@
}
//FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("鏈幏鍙栧埌鍥涘悜杞﹁繑鍥炵殑浠诲姟ID");
item.RGVTaskId = fOURBO.taskID;
+ item.Dispatchertime = DateTime.Now;
item.TaskState = (int)TaskStatusEnum.TakeFinish;
}
}
@@ -206,7 +209,10 @@
#endregion
var responseContent = AddMoveTask(item.blockPods, task);//娣诲姞绉诲簱浠诲姟
if (!responseContent.Status) task.ExceptionMessage = responseContent.Message;
- else task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute;
+ else
+ {
+ task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute;
+ }
dt_Tasks.Add(task);
}
else
@@ -274,6 +280,7 @@
{
autoToRest = 1
};
+ fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId;
item.CurrentAddress = item.NextAddress;
item.NextAddress = rGVLocationInfo.LocationCode;
item.TargetAddress = rGVLocationInfo.LocationCode;
@@ -288,8 +295,8 @@
var fOURBO = data.DeserializeObject<FOURBOTnewMovePodTaskResponseData>();
item.RGVTaskId = fOURBO.taskID;
item.TaskState = (int)TaskStatusEnum.Puting;
-
rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+ item.Dispatchertime = DateTime.Now;
locationsToUpdate.Add(rGVLocationInfo);
#region 閲婃斁鍏ュ簱绔欏彴
@@ -316,6 +323,10 @@
item.ExceptionMessage = $"澶勭悊浠诲姟寮傚父锛歿ex.Message}";
//WriteError($"{nameof(TaskJob)}-{item.TaskId}", ex.Message, ex);
content.Error($"鍥涘悜杞︽帴鍙h繑鍥為敊璇細{ex.Message}");
+ }
+ finally
+ {
+
}
}
#region MyRegion
@@ -467,6 +478,7 @@
}
item.RGVTaskId = fOURBO.taskID;
item.TaskState = (int)TaskStatusEnum.Puting;
+ item.Dispatchertime = DateTime.Now;
}
}
_taskService.UpdateData(tasks);
@@ -571,6 +583,7 @@
var task = tasks.First(x => x.PalletCode == item.podID);
task.RGVTaskId = item.taskID;
task.TaskState = TaskStatusEnum.RGV_MoveTaskSend.ObjToInt();
+ task.Dispatchertime = DateTime.Now;
dt_Tasks.Add(task);
}
_taskService.UpdateData(dt_Tasks);
@@ -599,6 +612,7 @@
if (takes == null)
{
item.TaskState = (int)TaskStatusEnum.RGV_WaitSend;
+ item.Dispatchertime = DateTime.Now;
}
}
_taskService.UpdateData(tasks);
@@ -643,7 +657,7 @@
autoToRest = 1
};
fOURBOTnewMovePodTask.desType = 5;
- fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmss") + item.TaskId;
+ fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId;
string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
content.OK(data: fOURBOTReturn);
@@ -657,6 +671,7 @@
}
item.RGVTaskId = fOURBO.taskID;
item.TaskState = (int)TaskStatusEnum.Execut;
+ item.Dispatchertime = DateTime.Now;
//stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt();
//_stationMangerService.UpdateData(stationManger);
}
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 9b4d943..f2339f2 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"
@@ -67,10 +67,6 @@
var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress);
//瓒呴珮璀﹀憡
var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress);
- //鍐欏叆鍋滄璐ㄦ淇″彿
- device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
- Thread.Sleep(500);
- device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
if (qualityResult)
{
//濡傛灉璐ㄦ閫氳繃浜嗭紝灏辨妸浠诲姟鐘舵�佹敼涓鸿川妫�瀹屾垚
@@ -89,6 +85,10 @@
//鍐欏叆澶嶄綅淇″彿
//device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
}
+ //鍐欏叆鍋滄璐ㄦ淇″彿
+ device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
+ Thread.Sleep(500);
+ device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
}
//else
//{
@@ -96,12 +96,18 @@
// device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
// device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
//}
+ else
+ {
+ task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
+ task.ExceptionMessage = "鏈娴嬪埌璐ㄦ瀹屾垚淇″彿";
+ Uptasks.Add(task);
+ }
}
foreach (var item in AGVtaskList)
{
//into杩涘叆涓�妤间綅缃殑鏃跺�欙紝鍐欏叆杩涘叆淇″彿
- device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.TargetAddress);
+ device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.SourceAddress);
if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true)
{
item.ExceptionMessage = $"{item.TargetAddress}绔欏彴鍏夋爡涓嶄负true锛�1锛�!";
--
Gitblit v1.9.3