From f1d8d7b04a81619cb29457fa88538bbaf37d8c20 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 26 二月 2026 18:22:04 +0800
Subject: [PATCH] 优化WCS跟四向车接口
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs | 19 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs | 10
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs | 6
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs | 69 ----
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs | 7
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs | 157 ------------
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs | 107 ++++++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 22 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs | 7
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs | 58 ++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs | 19 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs | 2
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs | 117 +++++++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs | 43 +++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs | 88 ++++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs | 4
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 1
19 files changed, 510 insertions(+), 230 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs"
index e1707b7..fda7004 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs"
@@ -1,10 +1,13 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_Model.Models;
@@ -15,7 +18,19 @@
public RGVLocationInfoService(IRepository<Dt_RGVLocationInfo> BaseDal) : base(BaseDal)
{
}
-
+ private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
+ {
+ { nameof(Dt_RGVLocationInfo.Depth), OrderByType.Desc },
+ { nameof(Dt_RGVLocationInfo.Layer), OrderByType.Asc },
+ //{ nameof(Dt_RGVLocationInfo.Column), OrderByType.Asc },
+ { nameof(Dt_RGVLocationInfo.Row), OrderByType.Asc },
+ };
public IRepository<Dt_RGVLocationInfo> Repository => BaseDal;
+
+ public Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode)
+ {
+ Dt_RGVLocationInfo? rGVLocationInfo = BaseDal.QueryFirst(x => x.WarehouseId.ToString() == AreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
+ return rGVLocationInfo;
+ }
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs"
index 0f206ac..cf89f02 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs"
@@ -3,8 +3,10 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Common;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_Model.Models;
@@ -17,5 +19,10 @@
}
public IRepository<Dt_StationManger> Repository => BaseDal;
+
+ public Dt_StationManger GetInStationInfo(string fromLocationCode)
+ {
+ return BaseDal.QueryFirst(x => x.StationCode == fromLocationCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt());
+ }
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs"
new file mode 100644
index 0000000..e80ef83
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StationTypeEnum.cs"
@@ -0,0 +1,43 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common
+{
+ public enum StationTypeEnum
+ {
+ /// <summary>
+ /// 鍏ュ簱绔欏彴
+ /// </summary>
+ StationType_OnlyInbound = 1,
+
+ /// <summary>
+ /// 鍑哄簱绔欏彴
+ /// </summary>
+ StationType_OnlyOutbound = 2,
+
+ /// <summary>
+ /// 鍑哄叆搴撶珯鍙�
+ /// </summary>
+ StationType_InboundAndOutbound = 3,
+
+ /// <summary>
+ /// 鍑哄叆搴撳彛
+ /// </summary>
+ StationType_InStartAndOutEnd = 33,
+ /// <summary>
+ /// 鎴愬搧鑷姩鍙栫珯鍙�
+ /// </summary>
+ StationType_ProductBackTake = 95,
+ /// <summary>
+ /// 鎴愬搧鑷姩琛ユ
+ /// </summary>
+ StationType_ProductBack = 98,
+ /// <summary>
+ /// 鐮佺洏鏈虹珯鍙�
+ /// </summary>
+ StationType_PakcPallet = 99,
+ }
+}
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 02fd846..6781704 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"
@@ -15,14 +15,14 @@
/// </summary>
[Description("鏂板缓浠诲姟")]
New,
- ///// <summary>
- ///// 寰呮墽琛�
- ///// </summary>
+ /// <summary>
+ /// 寰呮墽琛�
+ /// </summary>
[Description("寰呮墽琛�")]
Execut,
- ///// <summary>
- ///// 鍙栬揣涓�
- ///// </summary>
+ /// <summary>
+ /// 鍙栬揣涓�
+ /// </summary>
[Description("鍙栬揣涓�")]
Takeing,
/// <summary>
@@ -47,6 +47,16 @@
[Description("澶栧舰妫�娴嬩腑")]
CheckShapeing,
/// <summary>
+ /// 澶栧舰妫�娴嬫垚鍔�
+ /// </summary>
+ [Description("澶栧舰妫�娴嬫垚鍔�")]
+ CheckShapeingOk,
+ /// <summary>
+ /// 澶栧舰妫�娴嬪け璐�
+ /// </summary>
+ [Description("澶栧舰妫�娴嬪け璐�")]
+ CheckShapeingNG,
+ /// <summary>
/// 鎵樼洏鍙风‘璁や腑
/// </summary>
[Description("鎵樼洏鍙风‘璁や腑")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs"
index 22d78c3..be0bafc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs"
@@ -15,7 +15,7 @@
/// <summary>
/// 浼樺厛绾�
/// </summary>
- public int priority { get; set; } = 3;
+ public int priority { get; set; }
/// <summary>
/// 鎼繍绫诲瀷
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs"
index b8de979..972e772 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs"
@@ -29,7 +29,7 @@
/// <summary>
/// 鍝嶅簲鏁版嵁
/// </summary>
- public object data { get; set; }
+ public FOURBOTnewMovePodTaskResponseData data { get; set; }
}
/// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs"
index 76794cd..60761a0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs"
@@ -12,5 +12,12 @@
public interface IRGVLocationInfoService : IService<Dt_RGVLocationInfo>
{
public IRepository<Dt_RGVLocationInfo> Repository { get; }
+ /// <summary>
+ /// 鑾峰彇鍙敤绌鸿揣浣�
+ /// </summary>
+ /// <param name="AreaCode"></param>
+ /// <param name="containerType"></param>
+ /// <returns></returns>
+ Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode);
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs"
index 450d3b1..c1d0dc1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IStationMangerService.cs"
@@ -12,5 +12,11 @@
public interface IStationMangerService : IService<Dt_StationManger>
{
public IRepository<Dt_StationManger> Repository { get; }
+ /// <summary>
+ /// 鑾峰彇鍏ュ簱绔欏彴
+ /// </summary>
+ /// <param name="fromLocationCode"></param>
+ /// <returns></returns>
+ Dt_StationManger GetInStationInfo(string fromLocationCode);
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
index a5488dd..f1b351f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
@@ -69,7 +69,7 @@
[SugarColumn(IsNullable = false, ColumnDescription = "绔欏彴鏄惁鍙敤")]
public int IsOccupied { get; set; }
/// <summary>
- /// 澶囨敞
+ /// 澶囨敞(澶栧舰妫�娴嬬偣ID)
/// </summary>
[SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
public string Remark { get; set; }
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 1aa0f22..b02b728 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"
@@ -134,12 +134,12 @@
public int Grade { get; set; }
/// <summary>
- /// WMS浠诲姟涓婚敭
+ /// 鍥涘悜杞︿换鍔D
/// </summary>
- [ImporterHeader(Name = "WMS浠诲姟涓婚敭")]
- [ExporterHeader(DisplayName = "WMS浠诲姟涓婚敭")]
- [SugarColumn(IsNullable = true, ColumnDescription = "WMS浠诲姟涓婚敭")]
- public int WMSId { get; set; }
+ [ImporterHeader(Name = "鍥涘悜杞︿换鍔D")]
+ [ExporterHeader(DisplayName = "鍥涘悜杞︿换鍔D")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "鍥涘悜杞︿换鍔D")]
+ public int RGVTaskId { get; set; }
/// <summary>
/// 浠诲姟涓嬪彂鏃堕棿
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"
new file mode 100644
index 0000000..518a8ee
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
@@ -0,0 +1,107 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Core.Helper;
+
+namespace WIDESEAWCS_TaskInfoService
+{
+ public partial class TaskService
+ {
+
+ #region 娴峰悍AGV浠诲姟鍒涘缓
+ /// <summary>
+ /// 鍒涘缓娴峰悍AGV鍏ュ簱浠诲姟
+ /// </summary>
+ /// <param name="taskDTO"></param>
+ /// <param name="taskType"></param>
+ /// <returns></returns>
+ public WebResponseContent CreateHKNewInTask(TaskDTO taskDTO, int taskType)
+ {
+ try
+ {
+ int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();//杩欓噷鎴戜笉鐭ラ亾鏄粈涔堢被鍨�
+ //鑾峰彇璐т綅淇℃伅
+ Dt_HKLocationInfo? kLSLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == containerType);
+ if (kLSLocationInfo == null) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+ Dt_Task 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 = kLSLocationInfo.RoadwayNo,
+ TaskState = TaskStatusEnum.New.ObjToInt(),
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = kLSLocationInfo.LocationCode,
+ TargetAddress = kLSLocationInfo.LocationCode,
+ Creater = "WMS",
+ };
+ kLSLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+ Db.Ado.BeginTran();
+ BaseDal.AddData(dt_Task);
+ _hKLocationInfoService.Repository.UpdateData(kLSLocationInfo);
+ Db.Ado.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ Db.Ado.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ }
+ /// <summary>
+ /// 鍒涘缓娴峰悍AGV鍑哄簱浠诲姟
+ /// </summary>
+ /// <param name="taskDTO"></param>
+ /// <param name="taskType"></param>
+ /// <returns></returns>
+ public WebResponseContent CreateHKNewOutTask(TaskDTO taskDTO, int taskType)
+ {
+ try
+ {
+ Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode);
+ if (hKLocationInfo == null) throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+ if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
+ Dt_Task 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,
+ TaskState = TaskStatusEnum.New.ObjToInt(),
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = taskDTO.toLocationCode,
+ TargetAddress = taskDTO.toLocationCode,
+ Creater = "WMS",
+ };
+ hKLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
+ Db.Ado.BeginTran();
+ BaseDal.AddData(dt_Task);
+ _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
+ Db.Ado.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ Db.Ado.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ }
+ #endregion
+ }
+}
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 b5c2829..5253d68 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"
@@ -74,7 +74,7 @@
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
WMSTaskNum = taskDTO.taskCode,
- WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
Grade = taskDTO.taskPriority,
PalletCode = taskDTO.containerCode,
Roadway = kLSLocationInfo.RoadwayNo,
@@ -100,161 +100,6 @@
}
}
#endregion
-
- #region RGV浠诲姟鍒涘缓
- /// <summary>
- /// 鍒涘缓鍥涘悜杞﹀叆搴撲换鍔�
- /// </summary>
- /// <param name="taskDTO"></param>
- /// <param name="taskType"></param>
- /// <returns></returns>
- public WebResponseContent CreateRGVNewInTask(TaskDTO taskDTO, int taskType)
- {
- try
- {
- List<Dt_RGVLocationInfo>? rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt());
- if (rGVLocationInfos.Count < 1) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
- var rGVLocationInfo = rGVLocationInfos.OrderBy(x => x.Depth).First();
- Dt_Task 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 = rGVLocationInfo.RoadwayNo,
- TaskState = TaskStatusEnum.New.ObjToInt(),
- TaskType = taskType,
- SourceAddress = taskDTO.fromLocationCode,
- CurrentAddress = taskDTO.fromLocationCode,
- NextAddress = rGVLocationInfo.LocationCode,//鎵惧叆搴撶珯鍙板搴旂殑澶栧舰妫�娴嬬紪鍙�
- TargetAddress = rGVLocationInfo.LocationCode,
- Creater = "WMS",
- };
- rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
- Db.Ado.BeginTran();
- BaseDal.AddData(dt_Task);
- _rGVLocationInfoService.Repository.UpdateData(rGVLocationInfo);
- Db.Ado.CommitTran();
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- Db.Ado.RollbackTran();
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
- /// <summary>
- /// 鍒涘缓鍥涘悜杞﹀嚭搴撲换鍔�
- /// </summary>
- /// <param name="taskDTO"></param>
- /// <param name="taskType"></param>
- /// <returns></returns>
- public WebResponseContent CreateRGVNewOutTask(TaskDTO taskDTO, int taskType)
- {
- try
- {
- Db.Ado.BeginTran();
-
- Db.Ado.CommitTran();
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- Db.Ado.RollbackTran();
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
- #endregion
-
- #region 娴峰悍AGV浠诲姟鍒涘缓
- /// <summary>
- /// 鍒涘缓娴峰悍AGV鍏ュ簱浠诲姟
- /// </summary>
- /// <param name="taskDTO"></param>
- /// <param name="taskType"></param>
- /// <returns></returns>
- public WebResponseContent CreateHKNewInTask(TaskDTO taskDTO, int taskType)
- {
- try
- {
- int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();//杩欓噷鎴戜笉鐭ラ亾鏄粈涔堢被鍨�
- //鑾峰彇璐т綅淇℃伅
- Dt_HKLocationInfo? kLSLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == containerType);
- if (kLSLocationInfo == null) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
- Dt_Task 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 = kLSLocationInfo.RoadwayNo,
- TaskState = TaskStatusEnum.New.ObjToInt(),
- TaskType = taskType,
- SourceAddress = taskDTO.fromLocationCode,
- CurrentAddress = taskDTO.fromLocationCode,
- NextAddress = kLSLocationInfo.LocationCode,
- TargetAddress = kLSLocationInfo.LocationCode,
- Creater = "WMS",
- };
- kLSLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
- Db.Ado.BeginTran();
- BaseDal.AddData(dt_Task);
- _hKLocationInfoService.Repository.UpdateData(kLSLocationInfo);
- Db.Ado.CommitTran();
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- Db.Ado.RollbackTran();
- throw new Exception(ex.Message);
- }
- }
- /// <summary>
- /// 鍒涘缓娴峰悍AGV鍑哄簱浠诲姟
- /// </summary>
- /// <param name="taskDTO"></param>
- /// <param name="taskType"></param>
- /// <returns></returns>
- public WebResponseContent CreateHKNewOutTask(TaskDTO taskDTO, int taskType)
- {
- try
- {
- Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode);
- if (hKLocationInfo == null) throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
- if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
- Dt_Task 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,
- TaskState = TaskStatusEnum.New.ObjToInt(),
- TaskType = taskType,
- SourceAddress = taskDTO.fromLocationCode,
- CurrentAddress = taskDTO.fromLocationCode,
- NextAddress = taskDTO.toLocationCode,
- TargetAddress = taskDTO.toLocationCode,
- Creater = "WMS",
- };
- hKLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
- Db.Ado.BeginTran();
- BaseDal.AddData(dt_Task);
- _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
- Db.Ado.CommitTran();
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- Db.Ado.RollbackTran();
- throw new Exception(ex.Message);
- }
- }
- #endregion
-
#region 5 璺ㄦゼ灞傝繍杈撲换鍔″垱寤�
public WebResponseContent CarryTask(TaskDTO taskDTO, int taskType)
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"
new file mode 100644
index 0000000..f7f99f9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs"
@@ -0,0 +1,88 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Core.Helper;
+
+namespace WIDESEAWCS_TaskInfoService
+{
+ public partial class TaskService
+ {
+ #region RGV浠诲姟鍒涘缓
+ /// <summary>
+ /// 鍒涘缓鍥涘悜杞﹀叆搴撲换鍔�
+ /// </summary>
+ /// <param name="taskDTO"></param>
+ /// <param name="taskType"></param>
+ /// <returns></returns>
+ public WebResponseContent CreateRGVNewInTask(TaskDTO taskDTO, int taskType)
+ {
+ try
+ {
+ //List<Dt_RGVLocationInfo>? rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt());
+ //if (rGVLocationInfos.Count < 1) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+ //var rGVLocationInfo = rGVLocationInfos.OrderBy(x => x.Depth).First();
+ //var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
+ Dt_StationManger stationManger = _stationMangerService.GetInStationInfo(taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐逛綅缃�恵taskDTO.fromLocationCode}銆戠珯鍙颁俊鎭紒");
+ //if (stationManger.IsOccupied == 1) throw new Exception($"璧风偣浣嶇疆銆恵taskDTO.fromLocationCode}銆戠珯鍙拌鍗犵敤锛岃閲婃斁锛�");
+ Dt_Task dt_Task = new()
+ {
+ TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ WMSTaskNum = taskDTO.taskCode,
+ //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ Grade = taskDTO.taskPriority,
+ PalletCode = taskDTO.containerCode,
+ Roadway = taskDTO.toAreaCode,
+ TaskState = TaskStatusEnum.New.ObjToInt(),
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = stationManger.Remark,//鎵惧叆搴撶珯鍙板搴旂殑澶栧舰妫�娴嬬紪鍙�
+ TargetAddress = "",
+ //Remark = taskDTO.toAreaCode,
+ Creater = "WMS",
+ };
+ //rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+ //Db.Ado.BeginTran();
+ BaseDal.AddData(dt_Task);
+ //_rGVLocationInfoService.Repository.UpdateData(rGVLocationInfo);
+ //Db.Ado.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ Db.Ado.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+ /// <summary>
+ /// 鍒涘缓鍥涘悜杞﹀嚭搴撲换鍔�
+ /// </summary>
+ /// <param name="taskDTO"></param>
+ /// <param name="taskType"></param>
+ /// <returns></returns>
+ public WebResponseContent CreateRGVNewOutTask(TaskDTO taskDTO, int taskType)
+ {
+ try
+ {
+ Db.Ado.BeginTran();
+
+ Db.Ado.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ Db.Ado.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+ #endregion
+ }
+}
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 9c0bf7a..92506be 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"
@@ -46,6 +46,7 @@
private readonly IRGVLocationInfoService _rGVLocationInfoService;
private readonly IRepository<Dt_TaskExecuteDetail> _taskExecuteDetailRepository;
private readonly IApiInfoService _apiInfoService;
+ private readonly IStationMangerService _stationMangerService;
private readonly IMapper _mapper;
private Dictionary<string, OrderByType> _taskOrderBy = new()
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"
new file mode 100644
index 0000000..bc40d17
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+ public partial class TaskJob
+ {
+ #region 涓嬪彂娴峰悍AGV浠诲姟
+ public void SendHIKROBOTTask(List<Dt_Task> tasks)
+ {
+
+ }
+ #endregion
+ }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs"
new file mode 100644
index 0000000..3edca3b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs"
@@ -0,0 +1,58 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+ public partial class TaskJob
+ {
+
+ #region 涓嬪彂鍑箰澹獳GV浠诲姟
+ public void SendGALAXISTask(List<Dt_Task> tasks)
+ {
+ GALAXISTaskInfo gALAXISTaskInfo = new();
+ try
+ {
+ gALAXISTaskInfo.groupId = DateTime.Now.ToString("yyMMddHHmmss");
+ gALAXISTaskInfo.msgTime = DateTime.Now.ToString();
+ gALAXISTaskInfo.tasks = new List<GALAXISTask>();
+ foreach (var task in tasks)
+ {
+ GALAXISTask gALAXISTask = new GALAXISTask()
+ {
+ taskId = task.WMSTaskNum,
+ taskType = task.TaskType == (int)TaskTypeEnum.MLInbound ? 0 : 1,
+ barCode = task.PalletCode,
+ endNode = task.TargetAddress,
+ startNode = task.SourceAddress,
+ priorityCode = task.Grade
+ };
+ gALAXISTaskInfo.tasks.Add(gALAXISTask);
+ }
+ Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GALAXISTaskInfo)) ?? throw new Exception("鏈壘鍒板嚡涔愬+AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+ string response = HttpHelper.Post(apiInfo.ApiAddress, gALAXISTaskInfo.Serialize());
+ GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
+ if (agvContent.success)
+ {
+ if (agvContent.data.returnStatus != 0) throw new Exception(agvContent.data.returnInfo);
+ tasks.ForEach(task =>
+ {
+ task.TaskState = (int)TaskStatusEnum.Execut;
+ });
+ _taskService.UpdateData(tasks);
+ }
+ }
+ catch (Exception ex)
+ {
+ WriteError(nameof(TaskJob), ex.Message, ex);
+ }
+ }
+ #endregion
+ }
+}
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"
new file mode 100644
index 0000000..f057da7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs"
@@ -0,0 +1,117 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_DTO.RGV.FOURBOT;
+using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+ public partial class TaskJob
+ {
+
+ #region 涓嬪彂鍥涘悜杞︿换鍔�
+ public void SendRGVTask(List<Dt_Task> tasks)
+ {
+ FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
+ try
+ {
+ Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("鏈壘鍒板洓鍚戣溅浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+ #region 鍏ュ簱
+ var intasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).ToList();
+ foreach (var item in intasks)
+ {
+ fOURBOTnewMovePodTask.priority = item.Grade;
+ fOURBOTnewMovePodTask.podID = item.PalletCode;
+ fOURBOTnewMovePodTask.destination = item.NextAddress;
+ fOURBOTnewMovePodTask.desExt = new
+ {
+ unload = 0//鏄惁鏀句笅瀹瑰櫒,0鍚�1鏄�
+ };
+ fOURBOTnewMovePodTask.desType = 2;
+ string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
+ FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
+ if (fOURBOTReturn.returnCode == 0)
+ {
+ item.RGVTaskId = fOURBOTReturn.data.taskID;
+ item.TaskState = (int)TaskStatusEnum.Execut;
+ }
+ }
+ _taskService.UpdateData(intasks);
+ #endregion
+
+ #region 鍑哄簱
+ var outtasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
+ foreach (var item in outtasks)
+ {
+ ///鍒ゆ柇鏄惁闇�瑕佺Щ搴�
+ }
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ WriteError(nameof(TaskJob), ex.Message, ex);
+ }
+ }
+ #endregion
+ /// <summary>
+ /// 涓嬪彂澶栧舰妫�娴嬫垚鍔熶换鍔�
+ /// </summary>
+ /// <param name="tasks"></param>
+ public void SendCheckShapeingOkTask(List<Dt_Task> tasks)
+ {
+ FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
+ try
+ {
+ Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("鏈壘鍒板洓鍚戣溅浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+ List<Dt_RGVLocationInfo> rGVLocationInfos = new List<Dt_RGVLocationInfo>();
+ foreach (var item in tasks)
+ {
+ #region 鑾峰彇璐т綅
+ var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway);
+ if (rGVLocationInfo == null)
+ {
+ item.ExceptionMessage = $"鏈壘鍒扮粓鐐瑰簱鍖恒�恵item.Roadway}銆戝彲鐢ㄧ┖璐т綅锛�";
+ }
+ #endregion
+ else
+ {
+ item.CurrentAddress = item.NextAddress;
+ item.NextAddress = rGVLocationInfo.LocationCode;
+ fOURBOTnewMovePodTask.priority = item.Grade;
+ fOURBOTnewMovePodTask.podID = item.PalletCode;
+ fOURBOTnewMovePodTask.destination = item.NextAddress;
+ fOURBOTnewMovePodTask.desExt = new
+ {
+ unload = 1//鏄惁鏀句笅瀹瑰櫒,0鍚�1鏄�
+ };
+ fOURBOTnewMovePodTask.desType = 2;
+ string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
+ FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
+ if (fOURBOTReturn.returnCode == 0)
+ {
+ item.RGVTaskId = fOURBOTReturn.data.taskID;
+ item.TaskState = (int)TaskStatusEnum.Puting;
+ rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
+ rGVLocationInfos.Add(rGVLocationInfo);
+ }
+ }
+ }
+ _taskService.Db.Ado.BeginTran();
+ _taskService.UpdateData(tasks);
+ _rGVLocationInfoService.UpdateData(rGVLocationInfos);
+ _taskService.Db.Ado.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ WriteError(nameof(TaskJob), ex.Message, ex);
+ }
+ }
+ }
+}
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 45158be..6b4a81c 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"
@@ -29,6 +29,16 @@
var Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.MLInbound || x.TaskType == (int)TaskTypeEnum.MLOutbound).ToList();
if (Tasks.Count > 0) SendGALAXISTask(Tasks);
#endregion
+
+ #region 鏌ユ壘RGV浠诲姟
+ Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound || x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
+ if (Tasks.Count > 0) SendRGVTask(Tasks);
+ #endregion
+
+ #region 鏌ユ壘娴峰悍AGV浠诲姟
+ Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.Carry || x.TaskType == (int)TaskTypeEnum.CJCarry || x.TaskType == (int)TaskTypeEnum.CJInbound || x.TaskType == (int)TaskTypeEnum.CJOutbound).ToList();
+ if (Tasks.Count > 0) SendHIKROBOTTask(Tasks);
+ #endregion
}
}
catch (Exception ex)
@@ -46,68 +56,13 @@
{
try
{
-
+ var Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.CheckShapeingOk).ToList();
+ SendCheckShapeingOkTask(Tasks);
}
catch (Exception ex)
{
WriteError(nameof(TaskJob), ex.Message, ex);
}
- }
- #endregion
-
- #region 涓嬪彂鍑箰澹獳GV浠诲姟
- public void SendGALAXISTask(List<Dt_Task> tasks)
- {
- GALAXISTaskInfo gALAXISTaskInfo = new GALAXISTaskInfo();
- try
- {
- gALAXISTaskInfo.groupId = DateTime.Now.ToString("yyMMddHHmmss");
- gALAXISTaskInfo.msgTime = DateTime.Now.ToString();
- gALAXISTaskInfo.tasks = new List<GALAXISTask>();
- foreach (var task in tasks)
- {
- GALAXISTask gALAXISTask = new GALAXISTask()
- {
- taskId = task.WMSTaskNum,
- taskType = task.TaskType == (int)TaskTypeEnum.MLInbound ? 0 : 1,
- barCode = task.PalletCode,
- endNode = task.TargetAddress,
- startNode = task.SourceAddress,
- priorityCode = task.Grade
- };
- gALAXISTaskInfo.tasks.Add(gALAXISTask);
- }
- Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GALAXISTaskInfo)) ?? throw new Exception("鏈壘鍒板嚡涔愬+AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
- string response = HttpHelper.Post(apiInfo.ApiAddress, gALAXISTaskInfo.Serialize());
- GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
- if (agvContent.success)
- {
- if (agvContent.data.returnStatus != 0) throw new Exception(agvContent.data.returnInfo);
- tasks.ForEach(task =>
- {
- task.TaskState = (int)TaskStatusEnum.Execut;
- });
- _taskService.UpdateData(tasks);
- }
- }
- catch (Exception ex)
- {
- WriteError(nameof(TaskJob), ex.Message, ex);
- }
- }
- #endregion
-
- #region 涓嬪彂鍥涘悜杞︿换鍔�
- public void SendRGVTask(List<Dt_Task> tasks)
- {
-
- }
- #endregion
-
- #region 涓嬪彂娴峰悍AGV浠诲姟
- public void SendHIKROBOTTask(List<Dt_Task> 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 47e7144..21b41a2 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"
@@ -28,10 +28,12 @@
{
private readonly ITaskService _taskService;
private readonly IApiInfoService _apiInfoService;
- public TaskJob(ITaskService taskService, IApiInfoService apiInfoService)
+ private readonly IRGVLocationInfoService _rGVLocationInfoService;
+ public TaskJob(ITaskService taskService, IApiInfoService apiInfoService, IRGVLocationInfoService rGVLocationInfoService)
{
_taskService = taskService;//娉ㄥ叆
_apiInfoService = apiInfoService;
+ _rGVLocationInfoService = rGVLocationInfoService;
}
public Task Execute(IJobExecutionContext context)
--
Gitblit v1.9.3