From f2b85c65234e0dcdd3fcce4dafbe16933b7f1b48 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期日, 30 十一月 2025 04:22:51 +0800
Subject: [PATCH] 出入库流程代码更新
---
项目代码/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs | 84 -
项目代码/WCSServices/WIDESEAWCS_Tasks/二期线体/ConveyorLineDBName.cs | 44 +
项目资料/AGV通信文档/输送拣选和站台编号.xlsx | 0
项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs | 28
项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 462 ++++--------
项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponseContent.cs | 19
项目代码/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs | 102 ++
项目代码/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 56 +
项目代码/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs | 16
项目资料/接口汇总文件/WMS接口对接文档_V1.1.3.docx | 0
项目代码/WCSServices/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs | 31
项目代码/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_Warehouse.cs | 18
项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs | 43
项目代码/WCSServices/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs | 9
项目代码/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs | 159 ----
项目代码/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 74 -
项目代码/WCSServices/WIDESEAWCS_DTO/WMSResponseContent.cs | 8
项目代码/WCSServices/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj | 4
项目代码/WCSServices/WIDESEAWCS_Common/TaskEnum/SequenceEnum.cs | 6
项目代码/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs | 15
项目代码/WCSServices/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs | 2
项目代码/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs | 260 ++----
项目资料/AGV通信文档/WMS输送线对接协议251126.xls | 0
项目代码/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs | 10
项目代码/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs | 21
项目代码/WCSServices/WIDESEAWCS_IBasicInfoRepository/ILocationInfoRepository.cs | 5
项目代码/WCSServices/WIDESEAWCS_Common/StationOccupiedEnum.cs | 1
项目代码/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs | 46
项目代码/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs | 36
项目代码/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs | 92 +-
项目代码/WCSServices/WIDESEAWCS_IBasicInfoService/ILocationInfoService.cs | 10
项目代码/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs | 2
/dev/null | 35
项目代码/WCSServices/WIDESEAWCS_Tasks/AGV/AGVJob.cs | 4
项目代码/WCSServices/WIDESEAWCS_Tasks/码垛/MDJob_CP.cs | 32
项目代码/WCSServices/WIDESEAWCS_Server/Controllers/BasicInfo/LocationInfoController.cs | 73 +
项目资料/一期对接相关资料/哈尔滨一期输送线对接协议modbusTcp协议V1.1.xlsx | 0
项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs | 117 ++
项目代码/WCSServices/WIDESEAWCS_BasicInfoRepository/LocationInfoRepository.cs | 9
项目代码/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs | 60 -
项目代码/WCSServices/WIDESEAWCS_Tasks/二期线体/ConveyorLineJob2.cs | 92 ++
项目资料/AGV通信文档/点位信息.xlsx | 0
项目代码/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs | 65 +
项目代码/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs | 47
项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs | 13
45 files changed, 1,155 insertions(+), 1,055 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoRepository/LocationInfoRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoRepository/LocationInfoRepository.cs"
index 6216abf..84d4009 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoRepository/LocationInfoRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoRepository/LocationInfoRepository.cs"
@@ -57,5 +57,14 @@
{
return QueryData(x => x.LocationCode, x => x.WarehouseId == warehouseId && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()).Distinct().ToList();
}
+
+ /// <summary>
+ /// 鑾峰彇鏂欑瀵瑰簲鍑哄簱璐т綅
+ /// </summary>
+ /// <returns></returns>
+ public List<Dt_LocationInfo> GetCanOut(List<string> strings)
+ {
+ return QueryData(x => strings.Contains(x.PalletCode)).ToList();
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs"
index 8d28bdd..d26efaa 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs"
@@ -9,18 +9,26 @@
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Basic;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.WareHouseEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_BasicInfoService
{
+ public class LocationCache
+ {
+ public string LocationCode { get; set; }
+
+ public DateTime DateTime { get; set; }
+ }
public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
{
private readonly IUnitOfWorkManage _unitOfWorkManage;
@@ -84,13 +92,101 @@
{
return LocationDisableStatus(new int[] { key });
}
-
+ private readonly static object _locker = new object();
+ private static List<LocationCache> locationCaches = new List<LocationCache>();
/// <summary>
/// 鍒嗛厤璐т綅
/// </summary>
- public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId)
+ public Dt_LocationInfo? AssignLocation()
{
- return new Dt_LocationInfo();
+ lock (_locker)
+ {
+ List<LocationCache> removeItems = locationCaches.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();//鏌ヨ娣诲姞闈欐�佸彉閲忚秴杩�5鍒嗛挓鐨勮揣浣�
+ int count = removeItems.Count;
+ for (int i = 0; i < count; i++)
+ {
+ locationCaches.Remove(removeItems[i]);//绉婚櫎鏌ヨ娣诲姞闈欐�佸彉閲忚秴杩�5鍒嗛挓鐨勮揣浣�
+ }
+
+ List<string> lockLocations = locationCaches.Select(x => x.LocationCode).ToList();
+
+ Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>()
+ {
+ { nameof(Dt_LocationInfo.Row),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Columns),OrderByType.Desc },
+ };
+
+ Dt_LocationInfo locationInfo = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+ if (locationInfo!=null)
+ {
+ LocationCache locationCache = new LocationCache()
+ {
+ LocationCode = locationInfo.LocationCode,
+ DateTime = DateTime.Now,
+ };
+ locationCaches.Add(locationCache);
+ }
+ return locationInfo;
+ }
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栬揣浣�
+ /// </summary>
+ /// <param name="initializationLocationDTO"></param>
+ /// <returns></returns>
+ public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO)
+ {
+ try
+ {
+ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+ for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
+ {
+ for (int j = 0; j < initializationLocationDTO.MaxColumn; j++)
+ {
+ for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
+ {
+ Dt_LocationInfo locationInfo = new Dt_LocationInfo()
+ {
+ WarehouseId = 0,
+ Columns = j + 1,
+ EnableStatus = EnableStatusEnum.Normal.ObjToInt(),
+ Layer = k + 1,
+ LocationStatus = LocationStatusEnum.Free.ObjToInt(),
+ RoadwayNo = $"{initializationLocationDTO.Roadway}",
+ Row = i + 1,
+ };
+ locationInfo.LocationCode = $"{locationInfo.RoadwayNo}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Columns.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}";
+ locationInfo.LocationName = $"{locationInfo.RoadwayNo}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Columns.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞�";
+ int point = 0;
+ if (locationInfo.Row%2==0)
+ {
+ point = locationInfo.Row / 2;
+ }
+ else
+ {
+ if (locationInfo.Row==1)
+ {
+ point = 1;
+ }
+ else
+ {
+ point = (locationInfo.Row / 2)+1;
+ }
+ }
+ locationInfo.AgvPoint = $"{point.ToString().PadLeft(2, '0')}-{locationInfo.Columns.ToString().PadLeft(2, '0')}";
+ locationInfos.Add(locationInfo);
+ }
+ }
+ }
+ BaseDal.AddData(locationInfos);
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
index 0afc6d4..ea9119a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
@@ -14,5 +14,20 @@
/// </summary>
[Description("AGV鍙戦�佷换鍔℃帴鍙�")]
AgvSendTask,
+ /// <summary>
+ /// AGV浠诲姟鏀捐鎺ュ彛
+ /// </summary>
+ [Description("AGV浠诲姟鏀捐鎺ュ彛")]
+ AgvTaskFlow,
+ /// <summary>
+ /// WMS鍏ュ簱鍙嶉瀹屾垚
+ /// </summary>
+ [Description("WMS鍏ュ簱鍙嶉瀹屾垚")]
+ WMSInBoundBack,
+ /// <summary>
+ /// WMS鏂欑鍒拌揪鎷i�変綅涓婃姤
+ /// </summary>
+ [Description("WMS鏂欑鍒拌揪鎷i�変綅涓婃姤")]
+ WMSPickArrivedUp,
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationOccupiedEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationOccupiedEnum.cs"
index fb9f974..0aa651e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationOccupiedEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationOccupiedEnum.cs"
@@ -8,7 +8,6 @@
{
public enum StationOccupiedEnum
{
-
None,
Sure
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs"
index c155e56..ec58375 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs"
@@ -25,15 +25,5 @@
/// 鍑哄叆搴撶珯鍙�
/// </summary>
StationType_InboundAndOutbound = 3,
-
- /// <summary>
- /// 鍑哄叆搴撳彛
- /// </summary>
- StationType_InStartAndOutEnd = 33,
-
- /// <summary>
- /// 鍙犵洏鍙枡绔欏彴
- /// </summary>
- StationType_StackingPlates = 91,
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/SequenceEnum.cs"
similarity index 61%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/SequenceEnum.cs"
index 45aa206..85d2c01 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/SequenceEnum.cs"
@@ -4,10 +4,10 @@
using System.Text;
using System.Threading.Tasks;
-namespace WIDESEAWCS_DTO
+namespace WIDESEAWCS_Common.TaskEnum
{
- public class StackerCarneTaskDTO
+ public enum SequenceEnum
{
-
+ SeqTaskNum
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index b298043..26400db 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -19,6 +19,12 @@
New = 100,
/// <summary>
+ /// 杈撻�佺嚎鎵ц涓�
+ /// </summary>
+ [Description("杈撻�佺嚎鎵ц涓�")]
+ CL_Executing = 210,
+
+ /// <summary>
/// AGV寰呮墽琛�
/// </summary>
[Description("AGV寰呮墽琛�")]
@@ -35,12 +41,6 @@
/// </summary>
[Description("AGV鍙栬揣瀹屾垚")]
AGV_TakeFinish = 320,
-
- /// <summary>
- /// AGV瀹屾垚
- /// </summary>
- [Description("AGV瀹屾垚")]
- AGV_Finish = 330,
/// <summary>
/// 浠诲姟瀹屾垚
@@ -65,6 +65,48 @@
/// </summary>
[Description("浠诲姟寮傚父")]
Exception = 990,
-
+ }
+ /// <summary>
+ ///浣滀笟褰撳墠鐘舵��<br/>
+ ///寮�濮嬬Щ鍔細MOVE_BEGIN<br/>
+ ///鏂� 绠� 鍙� 鏂� 瀹� 鎴�:PICKER_RECEIVE<br/>
+ ///鏂� 绠� 涓� 鏂� 瀹� 鎴�:PICKER_SEND<br/>
+ ///绛夊緟鏀捐锛歐AITFEEDBACK<br/>
+ ///浠诲姟瀹屾垚锛欳OMPLETED<br/>
+ ///浠诲姟鍙栨秷瀹屾垚锛欳ANCELED<br/>
+ ///鍛婅锛歐ARNING<br/>
+ /// </summary>
+ public enum AGVStatusEnum
+ {
+ /// <summary>
+ /// 寮�濮嬬Щ鍔�
+ /// </summary>
+ [Description("寮�濮嬬Щ鍔�")]
+ MOVE_BEGIN,
+ /// <summary>
+ /// 鏂� 绠� 鍙� 鏂� 瀹� 鎴�
+ /// </summary>
+ [Description("鏂� 绠� 鍙� 鏂� 瀹� 鎴�")]
+ PICKER_RECEIVE,
+ /// <summary>
+ /// 鏂� 绠� 涓� 鏂� 瀹� 鎴�
+ /// </summary>
+ [Description("鏂� 绠� 涓� 鏂� 瀹� 鎴�")]
+ PICKER_SEND,
+ /// <summary>
+ /// 浠诲姟瀹屾垚
+ /// </summary>
+ [Description("浠诲姟瀹屾垚")]
+ COMPLETED,
+ /// <summary>
+ /// 浠诲姟鍙栨秷瀹屾垚
+ /// </summary>
+ [Description("浠诲姟鍙栨秷瀹屾垚")]
+ CANCELED,
+ /// <summary>
+ /// 鍛婅
+ /// </summary>
+ [Description("鍛婅")]
+ WARNING,
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index 992b7c0..12b4577 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -10,161 +10,22 @@
public enum TaskTypeEnum
{
/// <summary>
- /// 棰嗘枡鍑哄簱
+ /// 鍑哄簱
/// </summary>
- [Description("棰嗘枡鍑哄簱")]
+ [Description("鍑哄簱")]
Outbound = 100,
/// <summary>
- /// 鐩樼偣鍑哄簱
+ /// 鍏ュ簱
/// </summary>
- [Description("鐩樼偣鍑哄簱")]
- OutInventory = 110,
+ [Description("鍏ュ簱")]
+ Inbound = 500,
- /// <summary>
- /// 鍒嗘嫞鍑哄簱
- /// </summary>
- [Description("鍒嗘嫞鍑哄簱")]
- OutPick = 120,
-
- /// <summary>
- /// 鎴愬搧绌烘墭鍑哄簱
- /// </summary>
- [Description("鎴愬搧绌烘墭鍑哄簱")]
- OutEmpty = 130,
-
- /// <summary>
- /// 鎴愬搧鍑哄簱
- /// </summary>
- [Description("鎴愬搧鍑哄簱")]
- OutProduct = 230,
-
- /// <summary>
- /// 鍘熸枡鑰佸巶鍑哄簱
- /// </summary>
- [Description("鍘熸枡鑰佸巶鍑哄簱")]
- OldYLOutbound = 300,
-
- /// <summary>
- /// 鍘熸枡鍗板埛鍑哄簱
- /// </summary>
- [Description("鍘熸枡鍗板埛鍑哄簱")]
- PrintYLOutbound = 310,
-
- /// <summary>
- /// 鍘熸枡绾歌鍒惰渚涙枡
- /// </summary>
- [Description("鍘熸枡绾歌鍒惰渚涙枡")]
- PaperYLOutZDGL = 330,
-
- /// <summary>
- /// 杈呮枡鏃犵汉甯冨嚭搴�
- /// </summary>
- [Description("杈呮枡鏃犵汉甯冨嚭搴�")]
- OutWFB = 350,
-
- /// <summary>
- /// 浜屾ゼ绾哥渚涙枡
- /// </summary>
- [Description("浜屾ゼ绾哥渚涙枡")]
- OutCarton = 360,
-
- /// <summary>
- /// 鏃犵汉甯冩穻鑶滃嚭搴�
- /// </summary>
- [Description("鏃犵汉甯冩穻鑶滃嚭搴�")]
- OutWFBLM = 370,
-
- /// <summary>
- /// 绾稿紶娣嬭啘鍑哄簱
- /// </summary>
- [Description("绾稿紶娣嬭啘鍑哄簱")]
- OutPaperLM = 380,
-
- /// <summary>
- /// 鍐插垏鍖哄嚭搴�
- /// </summary>
- [Description("鍐插垏鍖哄嚭搴�")]
- OutChongQie = 390,
-
- /// <summary>
- /// 妯″垏鍖哄嚭搴�
- /// </summary>
- [Description("妯″垏鍖哄嚭搴�")]
- OutMoQie = 400,
-
- /// <summary>
- /// 鍒嗗垏鍖哄嚭搴�
- /// </summary>
- [Description("鍒嗗垏鍖哄嚭搴�")]
- OutFenQie = 410,
-
- /// <summary>
- /// 鏃犵汉甯冨埗琚嬩緵鏂�
- /// </summary>
- [Description("鏃犵汉琚嬪埗琚嬩緵鏂�")]
- OutWFBGL = 420,
-
- /// <summary>
- /// 閲囪喘鍏ュ簱
- /// </summary>
- [Description("閲囪喘鍏ュ簱")]
- Inbound = 510,
-
- /// <summary>
- /// 鐩樼偣鍏ュ簱
- /// </summary>
- [Description("鐩樼偣鍏ュ簱")]
- InInventory = 520,
-
- /// <summary>
- /// 鍒嗘嫞鍏ュ簱
- /// </summary>
- [Description("鍒嗘嫞鍏ュ簱")]
- InPick = 530,
-
- /// <summary>
- /// 鎴愬搧鍏ュ簱
- /// </summary>
- [Description("鎴愬搧鍏ュ簱")]
- InProduct = 610,
-
- /// <summary>
- /// 鎴愬搧绌烘墭鍥炲簱
- /// </summary>
- [Description("鎴愬搧绌烘墭鍥炲簱")]
- EmptyProductBack = 630,
-
- /// <summary>
- /// 鍘熸枡鍗板埛鍗婃垚鍝佸叆搴�
- /// </summary>
- [Description("鍘熸枡鍗板埛鍗婃垚鍝佸叆搴�")]
- PrintYLInbound = 710,
-
- /// <summary>
- /// 鍘熸枡鍗板埛浣欐枡閫�搴�
- /// </summary>
- [Description("鍘熸枡鍗板埛浣欐枡閫�搴�")]
- PrintYLBackInbound = 720,
-
- /// <summary>
- /// 鍘熸枡鍗板埛浣欐枡閫�搴�
- /// </summary>
- [Description("鍘熸枡绾歌浣欐枡閫�搴�")]
- PaperYLBackInbound = 730,
-
- /// <summary>
- /// 鍘熸枡鑰佸巶閫�搴�
- /// </summary>
- [Description("鍘熸枡鑰佸巶閫�搴�")]
- PaperOldYLBackInbound = 740,
-
- /// <summary>
- /// 宸烽亾鍐呯Щ搴�
- /// </summary>
- [Description("宸烽亾鍐呯Щ搴�")]
- Relocation = 900
-
+ ///// <summary>
+ ///// 宸烽亾鍐呯Щ搴�
+ ///// </summary>
+ //[Description("宸烽亾鍐呯Щ搴�")]
+ //Relocation = 900
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs"
index c78a355..14c44bd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/WareHouseEnum/WarehouseEnum.cs"
@@ -9,68 +9,8 @@
{
/// <summary>
/// 浠撳簱
- /// HA57 = 娣畨浜屽巶 - 鏉挎枡浠�<br/>
- /// HA58 = 娣畨浜屽巶 - PP浠�<br/>
- /// HA60 = 娣畨浜屽巶 - 杈呮枡浠�<br/>
- /// HA64 = 娣畨浜屽巶 - 娴嬭瘯鏋朵粨<br/>
- /// HA71 = 娣畨浜屽巶 - 鎴愬搧浠�<br/>
- /// HA72 = 娣畨浜屽巶 - 灏炬暟浠�<br/>
- /// HA73 = 娣畨浜屽巶 - 鐮斿彂浠�<br/>
- /// HA101 = 娣畨浜屽巶 - 鎴愬搧浠撳钩搴�<br/>
- /// HA152 = 娣畨浜屽巶 - 骞茶啘浠�<br/>
- /// HA153 = 娣畨浜屽巶 - 娌瑰ⅷ浠�<br/>
/// </summary>
public enum WarehouseEnum
{
- /// <summary>
- /// 鏉挎枡浠�
- /// </summary>
- [Description("鏉挎枡浠�")]
- HA57,
- /// <summary>
- /// PP浠�
- /// </summary>
- [Description("PP浠�")]
- HA58,
- /// <summary>
- /// 杈呮枡浠�
- /// </summary>
- [Description("杈呮枡浠�")]
- HA60,
- /// <summary>
- /// 娴嬭瘯鏋朵粨
- /// </summary>
- [Description("娴嬭瘯鏋朵粨")]
- HA64,
- /// <summary>
- /// 鎴愬搧浠�
- /// </summary>
- [Description("鎴愬搧浠�")]
- HA71,
- /// <summary>
- /// 灏炬暟浠�
- /// </summary>
- [Description("灏炬暟浠�")]
- HA72,
- /// <summary>
- /// 鐮斿彂浠�
- /// </summary>
- [Description("鐮斿彂浠�")]
- HA73,
- /// <summary>
- /// 鎴愬搧浠撳钩搴�
- /// </summary>
- [Description("鎴愬搧浠撳钩搴�")]
- HA101,
- /// <summary>
- /// 骞茶啘浠�
- /// </summary>
- [Description("骞茶啘浠�")]
- HA152,
- /// <summary>
- /// 娌瑰ⅷ浠�
- /// </summary>
- [Description("娌瑰ⅷ浠�")]
- HA153
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponseContent.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponseContent.cs"
index 4344974..eda447d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponseContent.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvResponseContent.cs"
@@ -6,23 +6,26 @@
namespace WIDESEA_DTO.Agv
{
+ /// <summary>
+ /// AGV杩斿洖鍙傛暟
+ /// </summary>
public class AgvResponseContent
{
/// <summary>
- /// 杩斿洖鐮�
+ ///
+ /// </summary>
+ public object Data { get; set; }
+ /// <summary>
+ /// 杩斿洖浠g爜
/// </summary>
public string Code { get; set; }
/// <summary>
- /// 杩斿洖娑堟伅
+ /// 杩斿洖淇℃伅
/// </summary>
public string Message { get; set; }
/// <summary>
- /// 璇锋眰缂栧彿
+ /// 杩斿洖缁撴灉
/// </summary>
- public string ReqCode { get; set; }
- /// <summary>
- /// 鑷畾涔夎繑鍥烇紙杩斿洖浠诲姟鍗曞彿锛�
- /// </summary>
- public string Data { get; set; }
+ public bool Success { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs"
new file mode 100644
index 0000000..e38c2ff
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs"
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.Agv
+{
+ public class AgvTaskFlowDTO
+ {
+ /// <summary>
+ /// 璇锋眰ID
+ /// </summary>
+ public string RequestId { get; set; }
+ /// <summary>
+ /// 鎵ц浠诲姟鐨勬枡绠卞彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+ /// <summary>
+ /// 褰撳墠鎵ц浠诲姟鍙�
+ /// </summary>
+ public string MissionCode { get; set; }
+ /// <summary>
+ /// 褰撳墠鎵ц浣滀笟鐨勮妭鐐�
+ /// </summary>
+ public string Position { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs"
index 019904c..47f085d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs"
@@ -6,44 +6,121 @@
namespace WIDESEAWCS_DTO.Agv
{
+ public class MissionDataItem
+ {
+ /// <summary>
+ /// 鎼繍鏂欑搴忓彿浠�1寮�濮�
+ /// </summary>
+ public int Sequence { get; set; } = 1;
+ /// <summary>
+ /// 鏂欑鍙�
+ /// </summary>
+ public string BinCode { get; set; }
+ /// <summary>
+ /// 鏂欑鎵�鍦ㄧ殑璧峰鐐逛綅
+ /// </summary>
+ public string StartPosition { get; set; }
+ /// <summary>
+ /// 鏂欑鎵�鍦ㄧ殑璧峰妲戒綅
+ /// </summary>
+ public string StartSlotCode { get; set; }
+ /// <summary>
+ /// 鍙栨枡绠辨椂涔嬪墠鏄惁闇�瑕佺‘璁�
+ /// </summary>
+ public bool TakeActionConfirm { get; set; }
+ /// <summary>
+ /// 鍙栨枡绠卞悗鏄惁闇�瑕侀�氱煡
+ /// </summary>
+ public bool TakeActionInform { get; set; }
+ /// <summary>
+ /// 鏂欑鎵�鍦ㄧ殑鐩爣鐐逛綅
+ /// </summary>
+ public string EndPosition { get; set; }
+ /// <summary>
+ /// 鏂欑鎵�鍦ㄧ殑鐩爣妲戒綅
+ /// </summary>
+ public string EndSlotCode { get; set; }
+ /// <summary>
+ /// 鏀炬枡绠辨椂涔嬪墠鏄惁闇�瑕佺‘璁�
+ /// </summary>
+ public bool PutActionConfirm { get; set; }
+ /// <summary>
+ /// 鏀炬枡绠卞悗鏄惁闇�瑕侀�氱煡
+ /// </summary>
+ public bool PutActionInform { get; set; }
+ }
+ /// <summary>
+ /// AGV浠诲姟鍙戦��
+ /// </summary>
public class AgvTaskSendDTO
{
/// <summary>
- /// 澶栨帴绯荤粺鏍囪瘑
+ /// 搴撳瓨缁勭粐ID
/// </summary>
- public string SysToken { get; set; }
+ public string OrgId { get; set; } = "HF";
/// <summary>
- /// 浠诲姟妯$増
+ /// 璇锋眰 id
/// </summary>
- public string TaskCode { get; set; } = "DUIGAO1";
+ public string RequestId { get; set; }
/// <summary>
- /// 鎺ユ敹浠诲姟
+ /// 浠诲姟缂栫爜
/// </summary>
- public string ReceiveTaskID { get; set; }
+ public string MissionCode { get; set; }
/// <summary>
- /// 饣嬭締缂栫爜
+ /// 浠诲姟绫诲瀷锛歅ICKER_MOVE
/// </summary>
- public string AgvCode { get; set; }
+ public string MissionType { get; set; } = "PICKER_MOVE";
/// <summary>
- /// 鍦板浘缂栫爜
+ /// 浠诲姟鐪嬫澘灞曠ず浠诲姟绫诲瀷
/// </summary>
- public string MapCode { get; set; } = "01";
+ public string ViewBoardType { get; set; }
/// <summary>
- /// 杞﹁締闆嗙兢
+ /// 鏈哄櫒浜哄叿浣撳瀷鍙�
/// </summary>
- public string AgvGroupCode { get; set; }
+ public List<string> RobotModels { get; set; }
/// <summary>
- /// 浠诲姟浼樺厛
+ /// 鏈哄櫒浜虹紪鍙�
+ /// </summary>
+ public List<string> RobotIds { get; set; }
+ /// <summary>
+ /// 鏈哄櫒浜哄姛鑳界被鍨婸ICKER
+ /// </summary>
+ public string RobotType { get; set; } = "PICKER";
+ /// <summary>
+ /// 浣滀笟浼樺厛绾�
/// </summary>
public int Priority { get; set; }
/// <summary>
- /// 绔欑偣鍙傛暟
+ /// 瀹瑰櫒妯″瀷缂栫爜
/// </summary>
- public List<PointDetail> Variables { get; set; }
- }
- public class PointDetail
- {
- public string Code { get; set; }
- public string? Value { get; set; }
+ public string ContainerModelCode { get; set; }
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+ /// <summary>
+ /// 浣滀笟娴佺▼妯℃澘缂栧彿
+ /// </summary>
+ public string TemplateCode { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public bool LockRobotAfterFinish { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public string UnlockRobotId { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public string UnlockMissionCode { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public string IdleNode { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public List<MissionDataItem> MissionData { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs"
index 0f3aea6..e2dcd95 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs"
@@ -7,24 +7,45 @@
namespace WIDESEA_DTO.Agv
{
public class AgvUpdateDTO
- {
+{
/// <summary>
- /// 浠诲姟鍗曞彿
+ /// 浠诲姟缂栧彿
/// </summary>
- public string ReceiveTaskID { get; set; }
+ public string MissionCode { get; set; }
/// <summary>
- /// 璋冨害绯荤粺鍗曞彿
+ /// 浣滀笟绫诲瀷
/// </summary>
- public string MakeTaskID { get; set; }
+ public string ViewBoardType { get; set; }
/// <summary>
- /// 浠诲姟鐘舵��
+ /// 褰撳墠鎵�鍦ㄦЫ浣�
/// </summary>
- public string TaskState { get; set; }
+ public string SlotCode { get; set; }
/// <summary>
- /// 鍙栨斁璐у畬鎴愮姸鎬�<br/>
- /// 1鍙栬揣瀹屾垚<br/>
- /// 2鏀捐揣瀹屾垚<br/>
+ /// 鎵ц褰撳墠浠诲姟鐨勬満鍣ㄤ汉 id
/// </summary>
- public string GoodsState { get; set; }
+ public string RobotId { get; set; }
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+ /// <summary>
+ /// 瀹瑰櫒褰撳墠浣嶇疆
+ /// </summary>
+ public string CurrentPosition { get; set; }
+ /// <summary>
+ ///浣滀笟褰撳墠鐘舵��<br/>
+ ///寮�濮嬬Щ鍔細MOVE_BEGIN<br/>
+ ///鏂� 绠� 鍙� 鏂� 瀹� 鎴�:PICKER_RECEIVE<br/>
+ ///鏂� 绠� 涓� 鏂� 瀹� 鎴�:PICKER_SEND<br/>
+ ///绛夊緟鏀捐锛歐AITFEEDBACK<br/>
+ ///浠诲姟瀹屾垚锛欳OMPLETED<br/>
+ ///浠诲姟鍙栨秷瀹屾垚锛欳ANCELED<br/>
+ ///鍛婅锛歐ARNING<br/>
+ /// </summary>
+ public string MissionStatus { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public string Message { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs"
new file mode 100644
index 0000000..6356442
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/BasicInfo/InitializationLocationDTO.cs"
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+ public class InitializationLocationDTO
+ {
+ /// <summary>
+ /// 宸烽亾鍙�
+ /// </summary>
+ public string Roadway { get; set; }
+
+ /// <summary>
+ /// 琛�
+ /// </summary>
+ public int MaxRow { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int MaxColumn { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int MaxLayer { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/RequestAGVArriveDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/RequestAGVArriveDTO.cs"
deleted file mode 100644
index 56e80ef..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/RequestAGVArriveDTO.cs"
+++ /dev/null
@@ -1,35 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO
-{
- /// <summary>
- /// AGV灏忚溅鍒拌揪閫氱煡
- /// </summary>
- public class RequestAGVArriveDTO
- {
- public List<AgvArriveNotice> SD_WorkCentreAgvArriveNoticeInfo { get; set; }
- }
- public class AgvArriveNotice
- {
- /// <summary>
- /// 棰嗘枡鏄庣粏ID
- /// </summary>
- public int DispatchPlanMaterialId { get; set; }
- /// <summary>
- /// 鍔犲伐涓績缂栫爜
- /// </summary>
- public string WorkCentreCode { get; set; }
- /// <summary>
- /// 鍛ㄨ浆浣嶄綅缃紪鐮�
- /// </summary>
- public string LocationCode { get; set; }
- /// <summary>
- /// 鍛煎彨ID
- /// </summary>
- public string CallId { get; set; }
- }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs"
new file mode 100644
index 0000000..6c8d625
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs"
@@ -0,0 +1,65 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.TaskInfo
+{
+ /// <summary>
+ /// 鏂欑鍒拌揪
+ /// </summary>
+ public class ContainerArriveDTO
+ {
+ /// <summary>
+ /// 鎷i�夊伐浣嶇紪鍙�
+ /// </summary>
+ public string SlotCode { get; set; }
+ /// <summary>
+ /// 鏂欑鍙�
+ /// </summary>
+ public string ContainerCode { get; set; }
+ }
+ /// <summary>
+ /// 鏂欑娴佸姩
+ /// </summary>
+ public class ContainerFlowDTO
+ {
+ /// <summary>
+ /// 鎷i�夊伐浣嶇紪鍙�
+ /// </summary>
+ public string SlotCode { get; set; }
+ /// <summary>
+ /// 鏂欑鍙�
+ /// </summary>
+ public string ContainerCode { get; set; }
+ /// <summary>
+ /// 娴佸姩鍘诲悜<br/>
+ /// 100搴撳唴<br/>
+ /// 200鍙栧嚭<br/>
+ /// </summary>
+ public string Direction { get; set; }
+ }
+ /// <summary>
+ /// 鏂欑鍏ュ簱瀹屾垚涓婃姤
+ /// </summary>
+ public class ContainerInFinishDTO
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskCode { get; set; }
+ /// <summary>
+ /// 鏂欑鍙�
+ /// </summary>
+ public string ContainerCode { get; set; }
+ /// <summary>
+ /// 璧峰绔欏彴
+ /// </summary>
+ public string FromStationCode { get; set; }
+ /// <summary>
+ /// 鐩爣璐т綅
+ /// </summary>
+ public string ToLocationCode { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
index 55d9cf3..0377d7b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
@@ -6,80 +6,62 @@
namespace WIDESEAWCS_DTO.TaskInfo
{
- public class WMSTaskDTO
+ /// <summary>
+ /// 浠诲姟鏄庣粏
+ /// </summary>
+ public class TasksItem
{
- /// <summary>
- /// WMS浠诲姟涓婚敭
- /// </summary>
- public int Id { get; set; }
-
/// <summary>
/// 浠诲姟鍙�
/// </summary>
- public int TaskNum { get; set; }
-
+ public string TaskCode { get; set; }
/// <summary>
- /// 鎵樼洏鍙�
+ /// 浠诲姟浼樺厛绾�
/// </summary>
- public string PalletCode { get; set; }
-
+ public int TaskPriority { get; set; }
/// <summary>
- /// Rfid淇℃伅
+ /// 鏂欑鍙�
/// </summary>
- public string RfidCode { get; set; }
-
+ public string ContainerCode { get; set; }
/// <summary>
- /// 宸烽亾鍙�
+ /// 鏂欑绫诲瀷
/// </summary>
- public string RoadWay { get; set; }
+ public string ContainerType { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public string StorageTag { get; set; }
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string FromLocationCode { get; set; }
+ /// <summary>
+ /// 鍑哄簱鐨勭洰鏍囨搷浣滃彴缂栧彿
+ /// </summary>
+ public string ToStationCode { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public string ToLocationCode { get; set; }
+ }
+ public class WMSTaskDTO
+ {
/// <summary>
/// 浠诲姟绫诲瀷
/// </summary>
- public int TaskType { get; set; }
-
+ public string TaskType { get; set; }
/// <summary>
- /// 浠诲姟鐘舵��
+ /// 浠诲姟鍒嗙粍
/// </summary>
- public int TaskStatus { get; set; }
-
+ public string TaskGroupCode { get; set; }
/// <summary>
- /// 璧风偣
+ ///
/// </summary>
- public string SourceAddress { get; set; }
-
+ public string GroupPriority { get; set; }
/// <summary>
- /// 缁堢偣
+ /// 浠诲姟鏄庣粏
/// </summary>
- public string TargetAddress { get; set; }
-
- /// <summary>
- /// 浼樺厛绾�
- /// </summary>
- public int Grade { get; set; }
-
- public int WarehouseId { get; set; }
-
- /// <summary>
- /// 浠诲姟缁�
- /// </summary>
- public string GroupId { get; set; }
-
- /// <summary>
- /// 浠诲姟鐗╂枡闀垮害
- /// </summary>
- public int TaskLength { get; set; }
-
- public string AGVArea { get; set; }
-
- public int PalletType { get; set; }
- /// <summary>
- /// MES璁″垝Id
- /// </summary>
- public int DispatchPlanId { get; set; }
- /// <summary>
- /// 鍔犲伐涓績
- /// </summary>
- public string WorkCentreCode { get; set; }
+ public List<TasksItem> Tasks { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj"
index 677b3e7..01765a3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj"
@@ -10,8 +10,4 @@
<ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
</ItemGroup>
- <ItemGroup>
- <Folder Include="BasicInfo\" />
- </ItemGroup>
-
</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/MESResponse.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WMSResponseContent.cs"
similarity index 76%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/MESResponse.cs"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WMSResponseContent.cs"
index 15741a2..d02f463 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/MESResponse.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/WMSResponseContent.cs"
@@ -7,14 +7,14 @@
namespace WIDESEA_External.Model
{
/// <summary>
- /// MES杩斿洖
+ /// WMS杩斿洖
/// </summary>
- public class MESResponse
+ public class WMSResponseContent
{
/// <summary>
/// 鎴愬姛缁撴灉
/// </summary>
- public bool Result { get; set; }
+ public string Code { get; set; }
/// <summary>
/// 杩斿洖淇℃伅
/// </summary>
@@ -22,6 +22,6 @@
/// <summary>
/// 杩斿洖瀵硅薄
/// </summary>
- public bool Obj { get; set; }
+ public object Data { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoRepository/ILocationInfoRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoRepository/ILocationInfoRepository.cs"
index f0cfede..7fd841f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoRepository/ILocationInfoRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoRepository/ILocationInfoRepository.cs"
@@ -36,5 +36,10 @@
/// <param name="warehouseId"></param>
/// <returns></returns>
List<string> GetCanOutLocationCodes(int warehouseId);
+ /// <summary>
+ /// 鑾峰彇鏂欑瀵瑰簲鍑哄簱璐т綅
+ /// </summary>
+ /// <returns></returns>
+ List<Dt_LocationInfo> GetCanOut(List<string> strings);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoService/ILocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoService/ILocationInfoService.cs"
index 989f42c..6378de9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoService/ILocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_IBasicInfoService/ILocationInfoService.cs"
@@ -4,6 +4,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
+using WIDESEA_DTO.Basic;
using WIDESEAWCS_Common;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
@@ -51,6 +52,13 @@
/// <param name="roadwayNo">宸烽亾鍙�</param>
/// <param name="palletType">鎵樼洏绫诲瀷</param>
/// <returns></returns>
- Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId);
+ Dt_LocationInfo? AssignLocation();
+
+ /// <summary>
+ /// 鍒濆鍖栬揣浣�
+ /// </summary>
+ /// <param name="initializationLocationDTO"></param>
+ /// <returns></returns>
+ WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs"
index 1b36db9..f59a03d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs"
@@ -27,6 +27,6 @@
{
public interface ITaskRepository : IRepository<Dt_Task>
{
-
+ int GetTaskNum(string sequenceName);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index e720fe9..c295c50 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -57,57 +57,8 @@
/// </summary>
/// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
/// <returns>杩斿洖澶勭悊缁撴灉</returns>
- WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs);
-
- /// <summary>
- /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
- /// </summary>
- /// <param name="palletCode">鎵樼洏鍙�</param>
- /// <param name="sourceAddress">璧峰鍦板潃</param>
- /// <returns></returns>
- WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string materielBoxCode = "");
- /// <summary>
- /// 璇锋眰鍘熸枡鍏ュ簱
- /// </summary>
- /// <param name="palletCode">鎵樼洏</param>
- /// <param name="sourceAddress">璧风偣</param>
- /// <returns></returns>
- WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress, int taskNum = 0);
- /// <summary>
- /// 璇锋眰鍏ュ簱宸烽亾
- /// </summary>
- /// <returns></returns>
- WebResponseContent AssignCPRoadwayNo();
-
- // <summary>
- /// 璇锋眰鍘熸枡鍏ュ簱宸烽亾
- /// </summary>
- /// <returns></returns>
- WebResponseContent AssignYLRoadwayNo(string palletCode);
- /// <summary>
- /// 璇锋眰鍏ュ簱浠诲姟
- /// </summary>
- /// <param name="palletCode">鎵樼洏鍙�</param>
- /// <param name="sourceAddress">璧峰鍦板潃</param>
- /// /// <param name="roadWay">宸烽亾</param>
- /// <returns></returns>
- WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay="", int taskType = 630,int taskNum=0,string targetAddress="");
-
- /// <summary>
- /// 鍚慦MS鐢宠鍒嗛厤璐т綅
- /// </summary>
- /// <param name="taskNum">浠诲姟鍙�</param>
- /// <param name="roadwayNo">宸烽亾鍙�</param>
- /// <returns></returns>
- string? RequestAssignLocation(int taskNum, string roadwayNo);
-
- /// <summary>
- /// 鍚慦MS鐢宠鍑哄簱AGV缁堢偣
- /// </summary>
- /// <param name="taskNum">浠诲姟鍙�</param>
- /// <returns></returns>
- string? RequestTargetAddress(int taskNum);
-
+ WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTO);
+
/// <summary>
/// 鏇存柊浠诲姟寮傚父淇℃伅鏄剧ず
/// </summary>
@@ -151,21 +102,28 @@
/// <param name="targetAddress">淇敼鍚庣殑鐩爣鍦板潃</param>
/// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
/// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
- void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "", int heightType = 0);
+ void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "");
/// <summary>
/// 鎺ュ彈WMS鎵嬪姩瀹屾垚浠诲姟
/// </summary>
/// <param name="taskNum"></param>
/// <returns></returns>
- public WebResponseContent RecWMSTaskCompleted(int taskNum);
-
+ WebResponseContent RecWMSTaskCompleted(int taskNum);
/// <summary>
- /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨAGV瀹屾垚鐨勪换鍔�
+ /// WMS鏂欑鍒拌揪鎷i�変綅涓婃姤
/// </summary>
- /// <param name="Barcode">鎵樼洏鍙�</param>
- /// <param name="currentAddress">褰撳墠鍦板潃</param>
/// <returns></returns>
- Dt_Task QueryBarCodeAGVFinishTask(int TaskNum, string currentAddress);
+ WebResponseContent WMSPickUp(string stationCode, string pickCode);
+ /// <summary>
+ /// AGV浠诲姟鏀捐
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent AgvTaskFlow(string code);
+ /// <summary>
+ /// 浠诲姟瀹屾垚
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent TaskCompleted(int taskNum);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs"
index 02e3f0a..615e8ee 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs"
@@ -21,10 +21,16 @@
public int Id { get; set; }
/// <summary>
- /// 浠撳簱缂栧彿
+ /// 搴撳尯缂栧彿
/// </summary>
- [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "搴撳尯缂栧彿")]
public int WarehouseId { get; set; }
+
+ /// <summary>
+ /// 鏂欑缂栧彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鏂欑缂栧彿")]
+ public string PalletCode { get; set; }
/// <summary>
/// 璐т綅缂栧彿
@@ -63,10 +69,10 @@
public int Layer { get; set; }
/// <summary>
- /// 璐т綅绫诲瀷
+ /// AGV鍙栬揣鐐�
/// </summary>
- [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅绫诲瀷")]
- public int LocationType { get; set; }
+ [SugarColumn(IsNullable = true, ColumnDescription = "AGV鍙栬揣鐐�")]
+ public string AgvPoint { get; set; }
/// <summary>
/// 璐т綅鐘舵��
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
index 6502526..3993111 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
@@ -33,16 +33,22 @@
/// 绔欏彴绫诲瀷 <br/>
/// 1锛氬彧鍏� <br/>
/// 2锛氬彧鍑� <br/>
- /// 3锛氬彲鍏ュ彲鍑�
+ /// 3锛氬彲鍏ュ彲鍑�<br/>
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "绔欏彴绫诲瀷")]
public int StationType { get; set; }
/// <summary>
- /// 瀵瑰簲鍫嗗灈鏈烘帓-鍒�-灞�
+ /// 鍙栨斁浣嶇疆
/// </summary>
- [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀵瑰簲鍫嗗灈鏈烘帓-鍒�-灞�")]
- public string StackerCraneStationCode { get; set; }
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍙栨斁浣嶇疆")]
+ public string CraneStationCode { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鎷i�夊伐浣�
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍏宠仈鎷i�夊伐浣�")]
+ public string PickStationCode { get; set; }
/// <summary>
/// 绔欏彴璁惧缂栧彿
@@ -51,41 +57,18 @@
public string StationDeviceCode { get; set; }
/// <summary>
- /// 鍫嗗灈鏈虹紪鍙�
+ /// 鍏宠仈璁惧
/// </summary>
- [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍫嗗灈鏈虹紪鍙�")]
- public string StackerCraneCode { get; set; }
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍏宠仈璁惧")]
+ public string CraneCode { get; set; }
- /// <summary>
- /// AGV绔欏彴缂栧彿
- /// </summary>
- [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "AGV绔欏彴缂栧彿")]
- public string? AGVStationCode { get; set; }
- /// <summary>
- /// AGV绔欏彴鍙栨斁楂樺害
- /// </summary>
- [SugarColumn(IsNullable = true, ColumnDescription = "AGV绔欏彴鍙栨斁楂樺害")]
- public decimal AGVStationHeight { get; set; }
- /// <summary>
- /// AGV鍓嶇疆鐐�
- /// </summary>
- [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "AGV鍓嶇疆鐐�")]
- public string? AGVFrontCode { get; set; }
/// <summary>
/// 绔欏彴鏄惁鍙敤 <br/>
/// 0锛氬彲鐢� <br/>
- /// 1锛氬崰鐢� <br/>
+ /// 1锛氱鐢� <br/>
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "绔欏彴鏄惁鍙敤")]
- public int IsOccupied { get; set; }
-
- /// <summary>
- /// 绔欏彴鏄惁鍙敤 <br/>
- /// 0锛氬彲鐢� <br/>
- /// 1锛氬崰鐢� <br/>
- /// </summary>
- [SugarColumn(IsNullable = true, ColumnDescription = "绔欏彴鏄惁鍙敤")]
- public int IsManual { get; set; }
+ public int Enable { get; set; }
/// <summary>
/// 澶囨敞
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_Warehouse.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_Warehouse.cs"
index 756eb53..fd6d469 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_Warehouse.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_Warehouse.cs"
@@ -9,9 +9,9 @@
namespace WIDESEAWCS_Model.Models
{
/// <summary>
- /// 浠撳簱淇℃伅
+ /// 搴撳尯淇℃伅
/// </summary>
- [SugarTable(nameof(Dt_Warehouse), "浠撳簱淇℃伅")]
+ [SugarTable(nameof(Dt_Warehouse), "搴撳尯淇℃伅")]
public class Dt_Warehouse : BaseEntity
{
/// <summary>
@@ -21,31 +21,25 @@
public int WarehouseId { get; set; }
/// <summary>
- /// 浠撳簱缂栧彿
+ /// 搴撳尯缂栧彿
/// </summary>
[SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱缂栧彿")]
public string WarehouseCode { get; set; }
/// <summary>
- /// 浠撳簱鍚嶇О
+ /// 搴撳尯鍚嶇О
/// </summary>
[SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱鍚嶇О")]
public string WarehouseName { get; set; }
/// <summary>
- /// 浠撳簱绫诲瀷
- /// </summary>
- [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱绫诲瀷")]
- public string WarehouseType { get; set; }
-
- /// <summary>
- /// 浠撳簱鐘舵��
+ /// 搴撳尯鐘舵��
/// </summary>
[SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "浠撳簱鐘舵��")]
public int WarehouseStatus { get; set; }
/// <summary>
- /// 浠撳簱鎻忚堪
+ /// 搴撳尯鎻忚堪
/// </summary>
[SugarColumn(IsNullable = true, ColumnDescription = "浠撳簱鎻忚堪")]
public string WarehouseDes { get; set; }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index d4d2387..21434a4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -22,6 +22,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.Attributes;
using WIDESEAWCS_Core.DB.Models;
@@ -43,40 +44,24 @@
/// </summary>
[ImporterHeader(Name = "浠诲姟鍙�")]
[ExporterHeader(DisplayName = "浠诲姟鍙�")]
- [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鍙�")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鍙�"), Sequence(nameof(SequenceEnum.SeqTaskNum), 100000000)]
public int TaskNum { get; set; }
/// <summary>
- /// 浠撳簱涓婚敭
+ /// 搴撳尯涓婚敭
/// </summary>
- [ImporterHeader(Name = "浠撳簱涓婚敭")]
- [ExporterHeader(DisplayName = "浠撳簱涓婚敭")]
- [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+ [ImporterHeader(Name = "搴撳尯涓婚敭")]
+ [ExporterHeader(DisplayName = "搴撳尯涓婚敭")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "搴撳尯涓婚敭")]
public int WarehouseId { get; set; }
/// <summary>
- /// AGV浠诲姟鍙�
+ /// 鏂欑缂栧彿
/// </summary>
- [ImporterHeader(Name = "AGV浠诲姟鍙�")]
- [ExporterHeader(DisplayName = "AGV浠诲姟鍙�")]
- [SugarColumn(IsNullable = true,Length =50, ColumnDescription = "AGV浠诲姟鍙�")]
- public string AgvTaskNum { get; set; }
-
- /// <summary>
- /// 鎵樼洏缂栧彿
- /// </summary>
- [ImporterHeader(Name = "鎵樼洏缂栧彿")]
- [ExporterHeader(DisplayName = "鎵樼洏缂栧彿")]
- [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+ [ImporterHeader(Name = "鏂欑缂栧彿")]
+ [ExporterHeader(DisplayName = "鏂欑缂栧彿")]
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏂欑缂栧彿")]
public string PalletCode { get; set; }
-
- /// <summary>
- /// RFID淇℃伅
- /// </summary>
- [ImporterHeader(Name = "RFID淇℃伅")]
- [ExporterHeader(DisplayName = "RFID淇℃伅")]
- [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "RFID淇℃伅")]
- public string RfidCode { get; set; }
/// <summary>
/// 鎵樼洏绫诲瀷
@@ -97,7 +82,6 @@
[ExporterHeader(DisplayName = "宸烽亾鍙�")]
[SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "宸烽亾鍙�")]
public string Roadway { get; set; }
-
/// <summary>
/// 浠诲姟绫诲瀷
/// </summary>
@@ -105,7 +89,6 @@
[ExporterHeader(DisplayName = "浠诲姟绫诲瀷")]
[SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟绫诲瀷")]
public int TaskType { get; set; }
-
/// <summary>
/// 浠诲姟鐘舵��
/// </summary>
@@ -113,7 +96,6 @@
[ExporterHeader(DisplayName = "浠诲姟鐘舵��")]
[SugarColumn(IsNullable = false, ColumnDescription = "浠诲姟鐘舵��")]
public int TaskState { get; set; }
-
/// <summary>
/// 璧峰鍦板潃
/// </summary>
@@ -121,7 +103,6 @@
[ExporterHeader(DisplayName = "璧峰鍦板潃")]
[SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "璧峰鍦板潃")]
public string SourceAddress { get; set; }
-
/// <summary>
/// 鐩爣鍦板潃
/// </summary>
@@ -129,7 +110,6 @@
[ExporterHeader(DisplayName = "鐩爣鍦板潃")]
[SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐩爣鍦板潃")]
public string TargetAddress { get; set; }
-
/// <summary>
/// 褰撳墠浣嶇疆
/// </summary>
@@ -137,7 +117,6 @@
[ExporterHeader(DisplayName = "褰撳墠浣嶇疆")]
[SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "褰撳墠浣嶇疆")]
public string CurrentAddress { get; set; }
-
/// <summary>
/// 涓嬩竴鍦板潃
/// </summary>
@@ -145,7 +124,6 @@
[ExporterHeader(DisplayName = "涓嬩竴鍦板潃")]
[SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "涓嬩竴鍦板潃")]
public string NextAddress { get; set; }
-
/// <summary>
/// 寮傚父淇℃伅
/// </summary>
@@ -153,7 +131,6 @@
[ExporterHeader(DisplayName = "寮傚父淇℃伅")]
[SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "寮傚父淇℃伅")]
public string? ExceptionMessage { get; set; }
-
/// <summary>
/// 浼樺厛绾�
/// </summary>
@@ -163,19 +140,13 @@
public int Grade { get; set; }
/// <summary>
- /// WMS浠诲姟涓婚敭
+ /// WMS浠诲姟
/// </summary>
- [ImporterHeader(Name = "WMS浠诲姟涓婚敭")]
- [ExporterHeader(DisplayName = "WMS浠诲姟涓婚敭")]
- [SugarColumn(IsNullable = false, ColumnDescription = "WMS浠诲姟涓婚敭")]
- public int WMSId { get; set; }
- /// <summary>
- /// 楂樺害绫诲瀷
- /// </summary>
- [ImporterHeader(Name = "楂樺害绫诲瀷")]
- [ExporterHeader(DisplayName = "楂樺害绫诲瀷")]
- [SugarColumn(IsNullable = false, ColumnDescription = "楂樺害绫诲瀷")]
- public int HeightType { get; set; }
+ [ImporterHeader(Name = "WMS浠诲姟鍙�")]
+ [ExporterHeader(DisplayName = "WMS浠诲姟鍙�")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "WMS浠诲姟鍙�")]
+ public string WMSId { get; set; }
+
/// <summary>
/// 浠诲姟涓嬪彂鏃堕棿
/// </summary>
@@ -192,34 +163,11 @@
[SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟缁�")]
public string GroupId { get; set; }
/// <summary>
- /// 浠诲姟鐗╂枡闀垮害
- /// </summary>
- [ImporterHeader(Name = "浠诲姟鐗╂枡闀垮害")]
- [ExporterHeader(DisplayName = "浠诲姟鐗╂枡闀垮害")]
- [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鐗╂枡闀垮害")]
- public int TaskLength { get; set; }
- /// <summary>
/// 澶囨敞
/// </summary>
[ImporterHeader(Name = "澶囨敞")]
[ExporterHeader(DisplayName = "澶囨敞")]
[SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "澶囨敞")]
public string Remark { get; set; }
-
- /// <summary>
- /// 鍔犲伐涓績缂栫爜
- /// </summary>
- [ImporterHeader(Name = "鍔犲伐涓績缂栫爜")]
- [ExporterHeader(DisplayName = "鍔犲伐涓績缂栫爜")]
- [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍔犲伐涓績缂栫爜")]
- public string WorkCentreCode { get; set; }
-
- /// <summary>
- /// 鐗╂枡缂栧彿
- /// </summary>
- [ImporterHeader(Name = "MES璁″垝Id")]
- [ExporterHeader(DisplayName = "MES璁″垝Id")]
- [SugarColumn(IsNullable = true, ColumnDescription = "MES璁″垝Id")]
- public int DispatchPlanId { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index 6a3c278..53a6ca1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -1,4 +1,5 @@
-锘縰sing Microsoft.AspNetCore.Authorization;
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Text;
@@ -43,7 +44,38 @@
_taskRepository = taskRepository;
_routerRepository = routerRepository;
}
+ /// <summary>
+ /// AGV浠诲姟鏇存柊
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("Callback"), AllowAnonymous]
+ public WebResponseContent? Callback([FromBody]AgvUpdateDTO agvUpdateDTO)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var task = _taskRepository.QueryFirst(x => agvUpdateDTO.ContainerCode==x.PalletCode) ?? throw new Exception($"鏈壘鍒版枡绠便�恵agvUpdateDTO.ContainerCode}銆戜换鍔�");
+ switch (agvUpdateDTO.MissionStatus)
+ {
+ case nameof(AGVStatusEnum.PICKER_RECEIVE):
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_TakeFinish);
+ break;
+ case nameof(AGVStatusEnum.PICKER_SEND):
+ //WebResponseContent responseContent = _taskService.AgvTaskFlow(task.PalletCode);
+ //if (!responseContent.Status) throw new Exception($"{responseContent.Message}");
+ _taskService.TaskCompleted(task.TaskNum);
+ break;
+ default:
+ break;
+ }
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
-
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/BasicInfo/LocationInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/BasicInfo/LocationInfoController.cs"
new file mode 100644
index 0000000..6e4f8d5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/BasicInfo/LocationInfoController.cs"
@@ -0,0 +1,73 @@
+锘縰sing HslCommunication.WebSocket;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using WIDESEA_Core;
+using WIDESEA_DTO.Basic;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_IBasicInfoService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+ /// <summary>
+ /// 璐т綅
+ /// </summary>
+ [Route("api/LocationInfo")]
+ [ApiController]
+ public class LocationInfoController : ApiBaseController<ILocationInfoService, Dt_LocationInfo>
+ {
+ private readonly ILocationInfoRepository _repository;
+ public LocationInfoController(ILocationInfoService service, ILocationInfoRepository repository) : base(service)
+ {
+ _repository = repository;
+ }
+
+ /// <summary>
+ /// 璐т綅鍒嗛厤
+ /// </summary>
+ /// <param name="roadwayNo"></param>
+ /// <param name="palletType"></param>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("AssignLocation"), AllowAnonymous]
+ public Dt_LocationInfo? AssignLocation()
+ {
+ return Service.AssignLocation();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栬揣浣�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, Route("InitializationLocation"), AllowAnonymous]
+ public WebResponseContent InitializationLocation([FromBody] InitializationLocationDTO initializationLocationDTO)
+ {
+ return Service.InitializationLocation(initializationLocationDTO);
+ }
+ /// <summary>
+ /// 鍚敤璐т綅
+ /// </summary>
+ /// <param name="keys"></param>
+ /// <returns></returns>
+ [HttpPost, Route("LocationEnableStatus")]
+ public WebResponseContent LocationEnableStatus([FromBody] int[] keys)
+ {
+ return Service.LocationEnableStatus(keys); ;
+ }
+
+ /// <summary>
+ /// 绂佺敤璐т綅
+ /// </summary>
+ /// <param name="keys"></param>
+ /// <returns></returns>
+ [HttpPost, Route("LocationDisableStatus")]
+ public WebResponseContent LocationDisableStatus([FromBody] int[] keys)
+ {
+ return Service.LocationDisableStatus(keys); ;
+ }
+
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index dcc11dc..77d542c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -22,28 +22,21 @@
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IRouterExtension _routerExtension;
- //private readonly WebSocketServer _webSocketServer;
private readonly IStationMangerRepository _stationMangerRepository;
- public TaskController(ITaskService service, IHttpContextAccessor httpContextAccessor, IRouterExtension routerExtension/*, WebSocketServer webSocketServer*/, IStationMangerRepository stationMangerRepository) : base(service)
+ public TaskController(ITaskService service, IHttpContextAccessor httpContextAccessor, IRouterExtension routerExtension, IStationMangerRepository stationMangerRepository) : base(service)
{
_httpContextAccessor = httpContextAccessor;
_routerExtension = routerExtension;
_stationMangerRepository=stationMangerRepository;
- //_webSocketServer = webSocketServer;
}
[HttpPost, Route("ReceiveTask"), AllowAnonymous]
- public WebResponseContent ReceiveWMSTask([FromBody] List<WMSTaskDTO> taskDTOs)
+ public WebResponseContent ReceiveWMSTask([FromBody] WMSTaskDTO taskDTO)
{
- return Service.ReceiveWMSTask(taskDTOs);
+ return Service.ReceiveWMSTask(taskDTO);
}
- [HttpPost, HttpGet, Route("RequestAssignLocation"), AllowAnonymous]
- public string? RequestAssignLocation(int taskNum, string roadwayNo)
- {
- return Service.RequestAssignLocation(taskNum, roadwayNo);
- }
[HttpPost, HttpGet, Route("UpdateTaskExceptionMessage")]
public WebResponseContent UpdateTaskExceptionMessage(int taskNum, string message)
@@ -62,16 +55,39 @@
{
return Service.RollbackTaskStatusToLast(taskNum);
}
+ /// <summary>
+ /// 瀹瑰櫒娴佸姩鎺ュ彛
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("ContainerFlow"), AllowAnonymous]
+ public WebResponseContent ContainerFlow([FromBody] ContainerFlowDTO containerFlowDTO)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x=>x.PickStationCode==containerFlowDTO.SlotCode) ?? throw new Exception($"{containerFlowDTO.SlotCode}鎷i�変綅缃笉瀛樺湪");
+ IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+ if (device == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}");
+ }
+ CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
+ string PickBarCode = commonConveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.R_PickBarCode, stationManger.StationCode).Replace("\0", "");
+ if (containerFlowDTO.ContainerCode!= PickBarCode) throw new Exception($"浼犲叆鏂欑鐮亄containerFlowDTO.ContainerCode}锛岃緭閫佹枡绠辩爜{PickBarCode}鏁版嵁閿欒");
+ commonConveyorLine.SetValue(ConveyorLineDBName.W_PickToHode,(short)containerFlowDTO.Direction.ObjToInt(), stationManger.StationCode);
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
[HttpPost, HttpGet, Route("GetRouteEndPoint"), AllowAnonymous]
public WebResponseContent GetRouteEndPoint(string startPoint, int routeType)
{
return WebResponseContent.Instance.OK(data: _routerExtension.GetEndPoint(startPoint, routeType));
- }
- [HttpPost, HttpGet, Route("AssignCPRoadwayNo"), AllowAnonymous]
- public WebResponseContent AssignCPRoadwayNo()
- {
- return Service.AssignCPRoadwayNo();
}
/// <summary>
/// WMS浠诲姟瀹屾垚鍚屾
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs"
index f10edbd..95034e0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs"
@@ -21,7 +21,7 @@
{
CreateMap<Sys_Menu, MenuDTO>();
CreateMap<Dt_DeviceInfo,DeviceInfoDTO>();
- CreateMap<WMSTaskDTO, Dt_Task>().ForMember(a => a.WMSId, b => b.MapFrom(b => b.Id));
+ CreateMap<TasksItem, Dt_Task>().ForMember(a => a.WMSId, b => b.MapFrom(b => b.TaskCode)).ForMember(a => a.PalletCode, b => b.MapFrom(b => b.ContainerCode)).ForMember(a => a.Grade, b => b.MapFrom(b => b.TaskPriority));
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs"
index a5df773..7751c52 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs"
@@ -21,6 +21,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_Model.Models;
@@ -31,5 +32,13 @@
public TaskRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
{
}
+ static object lock_taskNum = new object();
+ public int GetTaskNum(string sequenceName)
+ {
+ lock (lock_taskNum)
+ {
+ return Db.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceName}").ObjToInt();
+ }
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
index 0b7f032..e0e1303 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
@@ -1,4 +1,6 @@
锘縰sing Autofac.Core;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -15,19 +17,24 @@
{
public partial class TaskService
{
+ // 鍒涘缓涓�涓娇鐢ㄥ皬椹煎嘲鍛藉悕娉曠殑搴忓垪鍖栬缃�
+ JsonSerializerSettings settings = new JsonSerializerSettings
+ {
+ ContractResolver = new CamelCasePropertyNamesContractResolver()
+ };
public WebResponseContent AgvSendTask(AgvTaskSendDTO taskModel, APIEnum SendTask = APIEnum.AgvSendTask)
{
WebResponseContent content = new WebResponseContent();
try
{
- string? apiAddress = apiInfos.FirstOrDefault(x => x.ApiCode == SendTask.ToString())?.ApiAddress;
- if (string.IsNullOrEmpty(apiAddress))
- return WebResponseContent.Instance.Error($"鏈壘鍒板彂閫丄GV浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
- string response = HttpHelper.Post(apiAddress, taskModel.Serialize());
- AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>();
- if (agvContent.Code == "0")
+ string? apiAddress = _apiInfoRepository.QueryFirst(x => x.ApiCode == SendTask.ToString())?.ApiAddress;
+ if (string.IsNullOrEmpty(apiAddress)) throw new Exception($"鏈壘鍒板彂閫丄GV浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+ string request = JsonConvert.SerializeObject(taskModel, settings);
+ string response = HttpHelper.Post(apiAddress, request);
+ AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>() ?? throw new Exception("AGV浠诲姟鍙戦�佹湭杩斿洖缁撴灉");
+ if (agvContent.Success)
{
- content.OK(data: agvContent.Data);
+ content.OK();
}
else
{
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index d85473f..bc33716 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -16,19 +16,25 @@
#endregion << 鐗� 鏈� 娉� 閲� >>
using AutoMapper;
using Newtonsoft.Json;
+using NPOI.SS.Formula.Functions;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
+using System.DirectoryServices.Protocols;
using System.Net.Http.Headers;
+using System.Security.Policy;
using WIDESEA_DTO.Agv;
+using WIDESEA_External.Model;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_DTO;
+using WIDESEAWCS_DTO.Agv;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
@@ -44,6 +50,7 @@
public partial class TaskService : ServiceBase<Dt_Task, ITaskRepository>, ITaskService
{
private readonly IMapper _mapper;
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
private readonly ICacheService _cacheService;
private readonly IRouterService _routerService;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
@@ -51,7 +58,7 @@
private readonly IStationMangerRepository _stationMangerRepository;
private readonly IRouterRepository _routerRepository;
private readonly IApiInfoRepository _apiInfoRepository;
- private List<Dt_ApiInfo> apiInfos;
+ private readonly ILocationInfoRepository _locationInfoRepository;
private Dictionary<string, OrderByType> _taskOrderBy = new()
{
@@ -60,7 +67,6 @@
{nameof(Dt_Task.CreateDate),OrderByType.Asc},
};
- private List<Dt_Warehouse>? Warehouses = new List<Dt_Warehouse>();
public Dictionary<string, OrderByType> TaskOrderBy { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
@@ -70,7 +76,7 @@
public List<int> TaskRelocationTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 900 && x < 1000).ToList();
- public TaskService(ITaskRepository BaseDal, IMapper mapper, ICacheService cacheService, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IApiInfoRepository apiInfoRepository) : base(BaseDal)
+ public TaskService(ITaskRepository BaseDal, IMapper mapper, ICacheService cacheService, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IApiInfoRepository apiInfoRepository,ILocationInfoRepository locationInfoRepository,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
{
_mapper = mapper;
_cacheService = cacheService;
@@ -80,278 +86,73 @@
_stationMangerRepository = stationMangerRepository;
_routerRepository = routerRepository;
_apiInfoRepository = apiInfoRepository;
-
- string? cacheStr = _cacheService.Get(nameof(Dt_Warehouse));
- if (!string.IsNullOrEmpty(cacheStr))
- {
- Warehouses = JsonConvert.DeserializeObject<List<Dt_Warehouse>>(cacheStr);
- }
-
-
- string? apiInfoStr = _cacheService.Get("apiInfos");
- if (!string.IsNullOrEmpty(apiInfoStr))
- {
- List<Dt_ApiInfo>? infos = JsonConvert.DeserializeObject<List<Dt_ApiInfo>>(apiInfoStr);
- if (infos == null || infos.Count == 0)
- {
- apiInfos = new List<Dt_ApiInfo>();
- }
- else
- {
- apiInfos = infos;
- }
- }
+ _locationInfoRepository = locationInfoRepository;
+ _unitOfWorkManage = unitOfWorkManage;
}
+ static object lock_taskReceive = new object();
/// <summary>
/// 鎺ユ敹WMS浠诲姟淇℃伅
/// </summary>
/// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
/// <returns>杩斿洖澶勭悊缁撴灉</returns>
- public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs)
+ public WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTO)
{
WebResponseContent content = new WebResponseContent();
try
{
- bool flag = false;
- List<Dt_Task> tasks = new List<Dt_Task>();
- foreach (var item in taskDTOs)
+ lock (lock_taskReceive)
{
- if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum) != null)
+ List<Dt_Task> tasks = new List<Dt_Task>();
+ List<Dt_LocationInfo> locationInfos = _locationInfoRepository.GetCanOut(taskDTO.Tasks.Select(x=>x.ContainerCode).ToList());
+ TasksItem? tasksItem = taskDTO.Tasks.FirstOrDefault(x => !locationInfos.Select(t => t.PalletCode).Contains(x.ContainerCode));
+ if (tasksItem != null) throw new Exception($"浠诲姟{tasksItem.TaskCode}鏂欑鍙穥tasksItem.ContainerCode}涓嶅瓨鍦�");
+ Dt_LocationInfo? noOutLocation = locationInfos.FirstOrDefault(x=>x.LocationStatus != LocationStatusEnum.InStock.ObjToInt() || x.EnableStatus != EnableStatusEnum.Normal.ObjToInt());
+ if (noOutLocation != null) throw new Exception($"鏂欑{noOutLocation.PalletCode}璐т綅{noOutLocation.LocationCode}鐘舵�佷笉鍙嚭搴�");
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData();
+ //涓嬪彂浠诲姟缁�
+ string taskGroup= taskDTO.TaskGroupCode.IsNullOrEmpty() ? Guid.NewGuid().ToString().Replace("-","") : taskDTO.TaskGroupCode;
+ foreach (var item in taskDTO.Tasks)
{
- flag = true;
- continue;
+ if (item.ToStationCode.IsNullOrEmpty()) throw new Exception($"浠诲姟{item.TaskCode}鍑哄簱鐩爣鎿嶄綔鍙颁笉鑳戒负绌�");
+ //鑾峰彇鎿嶄綔鍙�
+ Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.PickStationCode == item.ToStationCode);
+ if (stationManger == null) throw new Exception($"浠诲姟{item.TaskCode}鍑哄簱鐩爣鎿嶄綔鍙皗item.ToStationCode}涓嶅瓨鍦�");
+ Dt_Task task = _mapper.Map<Dt_Task>(item);
+ Dt_LocationInfo locationInfo = locationInfos.FirstOrDefault(x=>x.PalletCode==item.ContainerCode);
+ task.SourceAddress = locationInfo.LocationCode;
+ task.CurrentAddress = locationInfo.LocationCode;
+ task.NextAddress = stationManger.PickStationCode;
+ task.TargetAddress = stationManger.PickStationCode;
+ task.GroupId = taskGroup;
+ task.TaskType = TaskTypeEnum.Outbound.ObjToInt();
+ task.Roadway = locationInfo.RoadwayNo;
+ task.DeviceCode = "AGV";
+ task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt();
+ tasks.Add(task);
}
- Dt_Task task = _mapper.Map<Dt_Task>(item);
- task.Creater = "WMS";
- task.TaskState = (int)TaskStatusEnum.New;
- task.CurrentAddress = item.SourceAddress;
- Dt_Router? router;
-
- }
- BaseDal.AddData(tasks);
-
- _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
-
- content = (flag || tasks.Count > 0) ? WebResponseContent.Instance.OK("鎴愬姛") : WebResponseContent.Instance.Error("澶辫触");
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
- }
- return content;
- }
-
- /// <summary>
- /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
- /// </summary>
- /// <param name="palletCode">鎵樼洏鍙�</param>
- /// <param name="sourceAddress">璧峰鍦板潃</param>
- /// <returns></returns>
- public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string materielBoxCode = "")
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == sourceAddress);
- if (stationManger == null)
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙颁俊鎭�");
- }
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = "";
- if (!string.IsNullOrEmpty(materielBoxCode))
- {
- responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={stationManger.StackerCraneCode}&palletCode={palletCode}&materielBoxCode={materielBoxCode}");
- }
- else
- {
- responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={stationManger.StackerCraneCode}&palletCode={palletCode}");
- }
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
- if (taskDTO != null)
+ locationInfos.ForEach(x =>
{
- content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
- }
- }
+ x.LocationStatus=LocationStatusEnum.Lock.ObjToInt();
+ });
+ //娣诲姞浠诲姟鏇存柊璐т綅鏁版嵁
+ _unitOfWorkManage.BeginTran();
+ BaseDal.AddData(tasks);
+ _locationInfoRepository.UpdateData(locationInfos);
+ _unitOfWorkManage.CommitTran();
+ _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
+
+ content = tasks.Count > 0 ? content.OK("鎴愬姛") : content.Error("澶辫触");
+ }
}
catch (Exception ex)
{
- content = WebResponseContent.Instance.Error(ex.Message);
+ content.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
}
return content;
}
- // <summary>
- /// 璇锋眰鍏ュ簱浠诲姟
- /// </summary>
- /// <param name="palletCode">鎵樼洏鍙�</param>
- /// <param name="sourceAddress">璧峰鍦板潃</param>
- /// /// <param name="roadWay">宸烽亾</param>
- /// <returns></returns>
- public WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress,int taskNum=0)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = HttpHelper.Get($"{address}/api/Task/RequestYLWMSTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}&taskNum{taskNum}");
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
- if (taskDTO != null)
- {
- content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
- }
- }
- else
- {
- content = responseContent ?? content.Error("缁撴灉閿欒");
- }
-
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error(ex.Message);
- }
- return content;
- }
- // <summary>
- /// 璇锋眰鍏ュ簱宸烽亾
- /// </summary>
- /// <returns></returns>
- public WebResponseContent AssignCPRoadwayNo()
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = HttpHelper.Get($"{address}/api/Task/AssignCPRoadwayNo");
-
- if (!responseStr.IsNullOrEmpty())
- {
- content.OK("鎴愬姛", responseStr);
- }
-
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error(ex.Message);
- }
- return content;
- }
-
- // <summary>
- /// 璇锋眰鍘熸枡鍏ュ簱宸烽亾
- /// </summary>
- /// <returns></returns>
- public WebResponseContent AssignYLRoadwayNo(string palletCode)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}");
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- content = responseContent;
- }
-
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error(ex.Message);
- }
- return content;
- }
- // <summary>
- /// 璇锋眰鍏ュ簱浠诲姟
- /// </summary>
- /// <param name="palletCode">鎵樼洏鍙�</param>
- /// <param name="sourceAddress">璧峰鍦板潃</param>
- /// /// <param name="roadWay">宸烽亾</param>
- /// <returns></returns>
- public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress,string roadWay="", int taskType=630, int taskNum = 0, string targetAddress = "")
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- //string address = AppSettings.Get("WMSApiAddress");
- //if (string.IsNullOrEmpty(address))
- //{
- // return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- //}
- //string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
- //WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- //if (responseContent != null && responseContent.Status && responseContent.Data != null)
- //{
- // WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
- // if (taskDTO != null)
- // {
- WMSTaskDTO? taskDTO = new WMSTaskDTO()
- {
- TaskNum = taskNum ==0 ? DateTime.Now.ToString("mmss").ObjToInt(): taskNum,
- PalletCode= palletCode,
- RoadWay= roadWay,
- TaskType= taskType,
- PalletType=1,
- TaskStatus= TaskStatusEnum.New.ObjToInt(),
- SourceAddress= sourceAddress,
- TargetAddress= targetAddress,
- WarehouseId=2,
- Grade=0,
- };
- content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
- // }
- //}
-
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error(ex.Message);
- }
- return content;
- }
- public WebResponseContent MESBoxCodeNotice(string boxCode)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = HttpHelper.Get($"{address}/api/Mes/MESBoxCodeNotice?boxCode={boxCode}");
- return content.OK(responseStr);
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error(ex.Message);
- }
- return content;
- }
+
public static string Post(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null)
{
string result = string.Empty;
@@ -388,47 +189,6 @@
{
Logger.Add(serviceAddress, requestJson == null ? "" : requestJson, result, beginDate);
}
- }
-
- /// <summary>
- /// 鍚慦MS鐢宠鍒嗛厤璐т綅
- /// </summary>
- /// <param name="taskNum">浠诲姟鍙�</param>
- /// <param name="roadwayNo">宸烽亾鍙�</param>
- /// <returns></returns>
- public string? RequestAssignLocation(int taskNum, string roadwayNo)
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
- string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocation?taskNum={taskNum}&roadwayNo={roadwayNo}");
-
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent.Data.ToString();
- }
-
- return "";
- }
- /// <summary>
- /// 鍚慦MS鐢宠鍑哄簱AGV缁堢偣
- /// </summary>
- /// <param name="taskNum">浠诲姟鍙�</param>
- /// <returns></returns>
- /// <exception cref="Exception"></exception>
- public string? RequestTargetAddress(int taskNum)
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
- string responseStr = HttpHelper.Get($"{address}/api/Task/AssignOutTargetAddress?taskNum={taskNum}");
-
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent.Data.ToString();
- }
-
- return "";
}
/// <summary>
@@ -565,10 +325,118 @@
return WebResponseContent.Instance.Error(ex.Message);
}
}
-
- public Dt_Task QueryBarCodeAGVFinishTask(int TaskNum, string currentAddress)
+ /// <summary>
+ /// AGV浠诲姟鏀捐
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent AgvTaskFlow(string code)
{
- return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.AGV_Finish && x.CurrentAddress == currentAddress && x.TaskNum == TaskNum, TaskOrderBy);
+ WebResponseContent content=new WebResponseContent();
+ try
+ {
+ string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.AgvTaskFlow.ToString())?.ApiAddress;
+ if (string.IsNullOrEmpty(url)) throw new Exception($"{code},鏈壘鍒癆GV浠诲姟鏀捐鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+ AgvTaskFlowDTO agvTaskFlowDTO = new AgvTaskFlowDTO()
+ {
+ RequestId = Guid.NewGuid().ToString().Replace("-", ""),
+ ContainerCode = code
+ };
+ string request = JsonConvert.SerializeObject(agvTaskFlowDTO, settings);
+ string response = HttpHelper.Post(url, request);
+ AgvResponseContent agvResponse = JsonConvert.DeserializeObject<AgvResponseContent>(response) ?? throw new Exception($"{code},鏈帴鏀跺埌AGV浠诲姟鏀捐杩斿洖鍊�");
+ if (!agvResponse.Success) throw new Exception($"鏂欑{code},AGV浠诲姟鏀捐閿欒,淇℃伅:{agvResponse.Message}");
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// WMS鏂欑鍒拌揪鎷i�変綅涓婃姤
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent WMSPickUp(string stationCode,string pickCode)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSPickArrivedUp.ToString())?.ApiAddress;
+ if (string.IsNullOrEmpty(url)) throw new Exception($"鏈壘鍒癢MS鏂欑鍒拌揪鎷i�変綅涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+ ContainerArriveDTO containerArriveDTO = new ContainerArriveDTO()
+ {
+ SlotCode = stationCode,
+ ContainerCode = pickCode
+ };
+ string request = JsonConvert.SerializeObject(containerArriveDTO, settings);
+ string response = HttpHelper.Post(url, request);
+ WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{pickCode},鏈帴鏀跺埌WMS鏂欑鍒拌揪鎷i�変綅涓婃姤杩斿洖鍊�");
+ if (wMSResponse.Code != "0") throw new Exception($"鏂欑{pickCode}WMS鏂欑鍒拌揪鎷i�変綅涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}");
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 浠诲姟瀹屾垚
+ /// </summary>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ public WebResponseContent TaskCompleted(int taskNum)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟閫昏緫
+ {
+ Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x=>x.PalletCode==task.PalletCode);
+ if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+ {
+ return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
+ }
+ task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+ locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+ locationInfo.PalletCode = "";
+ _unitOfWorkManage.BeginTran();
+ _locationInfoRepository.UpdateData(locationInfo);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+ _unitOfWorkManage.CommitTran();
+ }
+ else if(task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟閫昏緫
+ {
+ string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInBoundBack.ToString())?.ApiAddress;
+ if (string.IsNullOrEmpty(url))
+ {
+ _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+ UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+ return content.Error($"{taskNum},鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+ }
+ ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+ {
+ TaskCode= task.TaskNum.ToString(),
+ ContainerCode = task.PalletCode,
+ FromStationCode = task.SourceAddress,
+ ToLocationCode = task.TargetAddress
+ };
+ string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+ //璋冪敤鎺ュ彛
+ string response = HttpHelper.Post(url, request);
+ WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ??throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍏ュ簱涓婃姤杩斿洖鍊�");
+ if (wMSResponse.Code!="0") throw new Exception($"鍏ュ簱浠诲姟{task.TaskNum}WMS鍏ュ簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}");
+ }
+ content.OK("浠诲姟瀹屾垚");
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
index 9e80cd0..06efdd4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
@@ -24,7 +24,7 @@
/// <param name="targetAddress">淇敼鍚庣殑鐩爣鍦板潃</param>
/// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
/// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
- public void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "", int heightType = 0)
+ public void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "")
{
StringBuilder stringBuilder = new StringBuilder(App.User?.UserId == 0 ? $"绯荤粺鑷姩娴佺▼" : "浜哄伐鎵嬪姩娴佺▼");
if (task.DeviceCode != deviceCode && !string.IsNullOrEmpty(deviceCode))
@@ -56,10 +56,6 @@
{
stringBuilder.Append($",宸烽亾鍙风敱{task.Roadway}鍙樻洿涓簕roadwayNo}");
task.Roadway = roadwayNo;
- }
- if (heightType!=0)
- {
- task.HeightType= heightType;
}
if (task.TaskState != taskStatus.ObjToInt())
{
@@ -96,14 +92,7 @@
task.TaskState = taskStatus.ObjToInt();
}
-
BaseDal.UpdateData(task);
- //鍚屾鍒癢MS
- string address = AppSettings.Get("WMSApiAddress");
- if (!string.IsNullOrEmpty(address))
- {
- HttpHelper.Post($"{address}/api/Task/UpdateTaskInfo", task.Serialize());
- }
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, stringBuilder.ToString());
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs"
index a7df9df..8e51305 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs"
@@ -22,191 +22,137 @@
{
try
{
- var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()|| x.TaskState == TaskStatusEnum.New.ObjToInt()) && x.DeviceCode=="AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
-
- if (newTasks.Count>0)
+ var newTasksOut = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && x.TaskType==TaskTypeEnum.Outbound.ObjToInt() && x.DeviceCode == "AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
+ var newTasksIn = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && x.TaskType == TaskTypeEnum.Inbound.ObjToInt() && x.DeviceCode == "AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
+ #region 鍑哄簱浠诲姟涓嬪彂
+ if (newTasksOut.Count>0)
{
- foreach (var task in newTasks)
+ List<string> GroupIds = newTasksOut.GroupBy(x => x.GroupId).Select(x => x.Key).ToList();
+ foreach (var GroupId in GroupIds)
{
+ var tasks = newTasksOut.Where(x => x.GroupId == GroupId).ToList();
try
{
- Guid guid = Guid.NewGuid();
AgvTaskSendDTO agvTaskSend = new AgvTaskSendDTO()
{
- SysToken=guid.ToString().Replace("-",""),
- ReceiveTaskID=task.TaskNum.ToString(),
- MapCode="01",
- Variables=new List<PointDetail>()
+ MissionData = new List<MissionDataItem>()
};
- if (task.NextAddress== "涓�妤兼湀鍙扮爜澶�")
+ foreach (var task in tasks)
{
- string? address =_taskService.RequestTargetAddress(task.TaskNum);
- if (address.IsNullOrEmpty())
+ //鑾峰彇鐩爣鐐硅揣浣�
+ Dt_LocationInfo locationInfoStart = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.CurrentAddress);
+ //鑾峰彇鎷i�夊嚭搴撶珯鍙�
+ Dt_StationManger stationMangerEnd = _stationMangerRepository.QueryFirst(x => x.PickStationCode == task.NextAddress);
+
+ if (locationInfoStart == null || stationMangerEnd == null) throw new Exception($"鏈壘鍒颁换鍔″彿${task.TaskNum}璧峰鐐箋task.CurrentAddress}鎴栫洰鏍囩偣{task.NextAddress}浣嶇疆淇℃伅");
+ agvTaskSend.RequestId = GroupId;
+ agvTaskSend.MissionCode = GroupId;
+ if (task.Grade == 0)
{
- task.ExceptionMessage = "鏈壘鍒癆GV绔欑偣";
- continue;
- }
- task.NextAddress = address;
- }
- Dt_StationManger stationMangerStart = _stationMangerRepository.QueryFirst(x=>x.StationCode==task.CurrentAddress);
- Dt_StationManger stationMangerEnd = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress);
- //娣诲姞浠诲姟璺緞鍙婇珮搴�
- if (stationMangerStart !=null && stationMangerEnd != null)
- {
- PointDetail pointDetail1 = new PointDetail()
- {
- Code= "GoodPoint",
- Value=stationMangerStart.AGVStationCode
- };
- //鍒ゆ柇鏄惁鏈夊墠缃偣
- if (!string.IsNullOrEmpty(stationMangerStart.AGVFrontCode))
- {
- PointDetail pointDetail2 = new PointDetail()
- {
- Code = "CostPoint",
- Value = stationMangerStart.AGVFrontCode
- };
- agvTaskSend.Variables.Add(pointDetail2);
- }
- PointDetail pointDetail3 = new PointDetail()
- {
- Code = "PointB",
- Value = stationMangerEnd.AGVStationCode
- };
- //鍒ゆ柇鏄惁鏈夊墠缃偣
- if (!string.IsNullOrEmpty(stationMangerEnd.AGVFrontCode))
- {
- PointDetail pointDetail4 = new PointDetail()
- {
- Code = "PointA",
- Value = stationMangerEnd.AGVFrontCode
- };
- agvTaskSend.Variables.Add(pointDetail4);
- }
- PointDetail pointDetail5 = new PointDetail()
- {
- Code = "QUQTH",
- Value = stationMangerStart.AGVStationHeight.ToString()
- };
- PointDetail pointDetail6 = new PointDetail()
- {
- Code = "FHMH",
- Value = stationMangerEnd.AGVStationHeight.ToString()
- };
- agvTaskSend.Variables.Add(pointDetail1);
- agvTaskSend.Variables.Add(pointDetail3);
- agvTaskSend.Variables.Add(pointDetail5);
- agvTaskSend.Variables.Add(pointDetail6);
- }
- else
- {
- throw new Exception("鏈壘鍒癆GV绔欑偣");
- }
- //鍙栨斁浠诲姟妯$増
- if (stationMangerStart.StationCode.Contains("PNT") && !stationMangerEnd.StationCode.Contains("PNT") && stationMangerEnd.IsManual==0)//璇锋眰鏀�
- {
- agvTaskSend.TaskCode = "DUIGAO1";
- if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
- {
- agvTaskSend.TaskCode = "DUOLUN1";
- }
- }
- else if (!stationMangerStart.StationCode.Contains("PNT") && stationMangerEnd.StationCode.Contains("PNT") && stationMangerStart.IsManual == 0)//璇锋眰鍙�
- {
- agvTaskSend.TaskCode = "DUIGAO2";
- if (stationMangerStart.StationType==998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
- {
- agvTaskSend.TaskCode = "DUOLUN2";
- }
- }
- else if (!stationMangerStart.StationCode.Contains("PNT") && !stationMangerEnd.StationCode.Contains("PNT") && stationMangerStart.IsManual == 0 && stationMangerStart.IsManual == 0)//璇锋眰鍙栨斁
- {
- agvTaskSend.TaskCode = "DUIGAO3";
- if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
- {
- agvTaskSend.TaskCode = "DUOLUN3";
- }
- }
- else//鏃犺姹�
- {
- agvTaskSend.TaskCode = "DUIGAO4";
- if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
- {
- agvTaskSend.TaskCode = "DUOLUN4";
- }
- }
- if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
- {
- agvTaskSend.Variables.FirstOrDefault(x => x.Code == "FHMH").Value = "0";
- agvTaskSend.Variables.FirstOrDefault(x => x.Code == "GoodPoint").Value = "";
- //鍒ゆ柇浜哄伐鎵嬪姩
- PointDetail complete = new();
- if (stationMangerStart.IsManual==1 && stationMangerEnd.IsManual==0)
- {
- complete = new()
- {
- Code = "Complete",
- Value = "1"
- };
- }
- else if (stationMangerStart.IsManual == 0 && stationMangerEnd.IsManual == 1)
- {
- complete = new()
- {
- Code = "Complete",
- Value = "2"
- };
- }
- else if (stationMangerStart.IsManual == 1 && stationMangerEnd.IsManual == 1)
- {
- complete = new()
- {
- Code = "Complete",
- Value = "3"
- };
+ agvTaskSend.Priority = 99;
}
else
{
- complete = new()
- {
- Code = "Complete",
- Value = "0"
- };
+ agvTaskSend.Priority = 99 - task.Grade;
}
- //涓嬪彂浠诲姟AGV浠诲姟闆嗙兢
- agvTaskSend.AgvGroupCode = "QianF";
- PointDetail pointDetail2 = new PointDetail()
+ //鏂欑瀛愭惉杩愪换鍔�
+ MissionDataItem missionDataItem = new MissionDataItem()
{
- Code = "CostPoint",
- Value = stationMangerStart.AGVStationCode
+ Sequence = task.TaskNum,
+ BinCode = task.PalletCode,
+ StartPosition = locationInfoStart.AgvPoint,
+ StartSlotCode = locationInfoStart.LocationCode,
+ EndPosition = stationMangerEnd.StationCode,
+ EndSlotCode = stationMangerEnd.CraneStationCode,
+ TakeActionConfirm = false,
+ TakeActionInform = false,
+ PutActionConfirm = true,
+ PutActionInform = true,
};
- agvTaskSend.Variables.Add(pointDetail2);
- agvTaskSend.Variables.Add(complete);
- }
- if (task.TaskType==TaskTypeEnum.OutCarton.ObjToInt())
- {
- agvTaskSend.AgvGroupCode = "GAOc";
+ agvTaskSend.MissionData.Add(missionDataItem);
}
//鍙戦�丄GV浠诲姟
WebResponseContent content = _taskService.AgvSendTask(agvTaskSend, APIEnum.AgvSendTask);
if (!content.Status)
throw new Exception(content.Message);
- task.Dispatchertime = DateTime.Now;
- _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing);
+ tasks.ForEach(x =>
+ {
+ x.Dispatchertime = DateTime.Now;
+ x.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+ });
+ _taskService.UpdateData(tasks);
+ Thread.Sleep(500);
+ }
+ catch (Exception ex)
+ {
+ tasks.ForEach(x =>
+ {
+ x.TaskState = TaskStatusEnum.Exception.ObjToInt();
+ x.ExceptionMessage = ex.Message;
+ });
+ _taskService.UpdateData(tasks);
+ }
+ }
+ }
+ #endregion
+ #region 鍏ュ簱浠诲姟涓嬪彂
+ if (newTasksIn.Count > 0)
+ {
+ foreach (var task in newTasksIn)
+ {
+ try
+ {
+ AgvTaskSendDTO agvTaskSend = new AgvTaskSendDTO()
+ {
+ MissionData = new List<MissionDataItem>()
+ };
+ //鑾峰彇鐩爣鐐硅揣浣�
+ Dt_LocationInfo locationInfoEnd = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.NextAddress);
+ //鑾峰彇绾夸綋鍏ュ簱绔欏彴
+ Dt_StationManger stationMangerStart = _stationMangerRepository.QueryFirst(x => x.PickStationCode == task.CurrentAddress);
+ if (locationInfoEnd == null || stationMangerStart == null) throw new Exception($"鏈壘鍒颁换鍔″彿${task.TaskNum}璧峰鐐箋task.CurrentAddress}鎴栫洰鏍囩偣{task.NextAddress}浣嶇疆淇℃伅");
+ agvTaskSend.RequestId = Guid.NewGuid().ToString().Replace("-", "");
+ agvTaskSend.MissionCode = task.TaskNum.ToString();
+ if (task.Grade == 0)
+ {
+ agvTaskSend.Priority = 99;
+ }
+ else
+ {
+ agvTaskSend.Priority = 99 - task.Grade;
+ }
+ //鏂欑瀛愭惉杩愪换鍔�
+ MissionDataItem missionDataItem = new MissionDataItem()
+ {
+ Sequence = task.TaskNum,
+ BinCode = task.PalletCode,
+ StartPosition = stationMangerStart.StationCode,
+ StartSlotCode = stationMangerStart.CraneStationCode,
+ EndPosition = locationInfoEnd.AgvPoint,
+ EndSlotCode = locationInfoEnd.LocationCode,
+ TakeActionConfirm = false,
+ TakeActionInform = false,
+ PutActionConfirm = true,
+ PutActionInform = true,
+ };
+ agvTaskSend.MissionData.Add(missionDataItem);
+ //鍙戦�丄GV浠诲姟
+ WebResponseContent content = _taskService.AgvSendTask(agvTaskSend, APIEnum.AgvSendTask);
+ if (!content.Status)
+ throw new Exception(content.Message);
+ task.Dispatchertime = DateTime.Now; task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+ _taskService.UpdateData(task);
Thread.Sleep(500);
}
catch (Exception ex)
{
task.TaskState = TaskStatusEnum.Exception.ObjToInt();
task.ExceptionMessage = ex.Message;
+ _taskService.UpdateData(task);
}
- }
- //鏇存柊浠诲姟
- if (newTasks.Count > 0)
- {
- _taskService.UpdateData(newTasks);
- }
+ }
}
+ #endregion
}
catch (Exception ex)
{
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVJob.cs"
index 5d5a056..0c03019 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVJob.cs"
@@ -19,14 +19,16 @@
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly IRouterService _routerService;
private readonly IStationMangerRepository _stationMangerRepository;
+ private readonly ILocationInfoRepository _locationInfoRepository;
private readonly IMapper _mapper;
- public AGVJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IStationMangerRepository stationMangerRepository, IMapper mapper)
+ public AGVJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IStationMangerRepository stationMangerRepository, ILocationInfoRepository locationInfoRepository, IMapper mapper)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
_routerService = routerService;
_stationMangerRepository = stationMangerRepository;
+ _locationInfoRepository = locationInfoRepository;
_mapper = mapper;
}
public Task Execute(IJobExecutionContext context)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineDBName.cs"
new file mode 100644
index 0000000..6c967f3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineDBName.cs"
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks
+{
+ public enum ConveyorLineDBName
+ {
+ /// <summary>
+ /// 鍏ュ簱鐢宠(璇�)
+ /// </summary>
+ R_InRequest,
+ /// <summary>
+ /// 鍏ュ簱纭(鍐�)
+ /// </summary>
+ W_InResponse,
+ /// <summary>
+ /// 鍏ュ簱閲嶉噺(璇�)
+ /// </summary>
+ R_InWeight,
+ /// <summary>
+ /// 鍏ュ簱鏉$爜(璇�)
+ /// </summary>
+ R_InBarCode,
+ /// <summary>
+ /// 鎷i�夌敵璇�(璇�)
+ /// </summary>
+ R_PickRequest,
+ /// <summary>
+ /// 鎷i�夋潯鐮�(璇�)
+ /// </summary>
+ R_PickBarCode,
+ /// <summary>
+ /// 鎷i�夊幓鍚�(鍐�)
+ /// </summary>
+ W_PickToHode,
+ /// <summary>
+ /// 鎷i�夌‘璁�(鍐�)
+ /// </summary>
+ W_PickResponse,
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs"
new file mode 100644
index 0000000..5a91d08
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs"
@@ -0,0 +1,92 @@
+锘縰sing Autofac.Core;
+using AutoMapper;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Service;
+
+namespace WIDESEAWCS_Tasks
+{
+ [DisallowConcurrentExecution]
+ public partial class ConveyorLineJob2 : JobBase, IJob
+ {
+ public readonly ITaskService _taskService;
+ private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+ private readonly IRouterService _routerService;
+ private readonly IStationMangerRepository _stationMangerRepository;
+ private readonly ILocationInfoRepository _locationInfoRepository;
+ private readonly IMapper _mapper;
+
+ public ConveyorLineJob2(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IStationMangerRepository stationMangerRepository, ILocationInfoRepository locationInfoRepository, IMapper mapper)
+ {
+ _taskService = taskService;
+ _taskExecuteDetailService = taskExecuteDetailService;
+ _routerService = routerService;
+ _stationMangerRepository = stationMangerRepository;
+ _locationInfoRepository = locationInfoRepository;
+ _mapper = mapper;
+ }
+ public Task Execute(IJobExecutionContext context)
+ {
+ try
+ {
+ CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
+ if (conveyorLine != null)
+ {
+ #region 绔欏彴鏂瑰紡
+
+ List<Dt_StationManger> stationManagers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == conveyorLine.DeviceCode);
+
+ foreach (var station in stationManagers)
+ {
+ if (station.StationType==StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) //鎷i�夌敵璇�
+ {
+ bool PickRequest = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.R_PickRequest, station.StationCode);
+ if (PickRequest)
+ {
+ string PickBarCode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.R_PickBarCode, station.StationCode).Replace("\0", "");
+ //涓婃姤WMS鏂欑鍒拌揪
+ if (PickBarCode.IsNotEmptyOrNull())
+ {
+ WebResponseContent content = _taskService.WMSPickUp(station.PickStationCode, PickBarCode);
+ if (content.Status)
+ {
+ //鍐欏叆鎷i�夌‘璁�
+ }
+ }
+ else
+ {
+ WriteError(nameof(conveyorLine.DeviceCode), $"{station.StationCode}鎷i�夌敵璇蜂负{PickRequest}鏉$爜涓虹┖鍊�");
+ }
+ }
+
+ }
+ else
+ {
+
+ }
+
+ }
+ #endregion 绔欏彴鏂瑰紡
+ }
+ }
+ catch (Exception ex)
+ {
+ WriteError(nameof(ConveyorLineJob2), ex.Message);
+ }
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
index da93f50..bf8e9eb 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
@@ -61,46 +61,46 @@
if (flag && value != null)
{
OtherDevice device = (OtherDevice)value;
- List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StackerCraneCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && x.IsOccupied == 0);
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.CraneCode == device.DeviceCode);
foreach (var item in stationMangers)
{
//鑾峰彇鍗忚
- DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StackerCraneCode && x.DeviceProParamType == nameof(R_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
- DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StackerCraneCode && x.DeviceProParamType == nameof(W_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.CraneCode && x.DeviceProParamType == nameof(R_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.CraneCode && x.DeviceProParamType == nameof(W_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
if (deviceProRead != null && deviceProWrite != null)
{
- short Allow = device.GetValue<R_MDDB, short>(R_MDDB.R_MDAllow, item.StackerCraneCode);
+ short Allow = device.GetValue<R_MDDB, short>(R_MDDB.R_MDAllow, item.CraneCode);
#region 璇诲彇宸ヤ綅鐘舵��
- short R_MDStatus1 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus1, item.StackerCraneCode);
- short R_MDStatus2 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus2, item.StackerCraneCode);
- short R_MDStatus3 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus3, item.StackerCraneCode);
- short R_MDStatus4 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus4, item.StackerCraneCode);
+ short R_MDStatus1 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus1, item.CraneCode);
+ short R_MDStatus2 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus2, item.CraneCode);
+ short R_MDStatus3 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus3, item.CraneCode);
+ short R_MDStatus4 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus4, item.CraneCode);
- short ReceiveDoneState = device.GetValue<W_MDDB, short>(W_MDDB.W_MDReceiveDone, item.StackerCraneCode);
+ short ReceiveDoneState = device.GetValue<W_MDDB, short>(W_MDDB.W_MDReceiveDone, item.CraneCode);
#endregion
//鐮佸灈鐘舵��
- short PackState = device.GetValue<R_MDDB, short>(GetPackStateEnum(item.StackerCraneStationCode), item.StackerCraneCode);
+ short PackState = device.GetValue<R_MDDB, short>(GetPackStateEnum(item.CraneStationCode), item.CraneCode);
//鐮佸灈鏁伴噺
- short PackNum = device.GetValue<R_MDDB, short>(GetPackNumEnum(item.StackerCraneStationCode), item.StackerCraneCode);
+ short PackNum = device.GetValue<R_MDDB, short>(GetPackNumEnum(item.CraneStationCode), item.CraneCode);
if (R_MDStatus1 == 1 || R_MDStatus2 == 1 || R_MDStatus3 == 1 || R_MDStatus4 == 1)
{
Thread.Sleep(200);
if (ReceiveDoneState != 0)
{
device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDReceiveDone.ToString()).DeviceProDataBlock, 0);
- WriteInfo(item.StackerCraneCode, $"{item.StackerCraneCode}娓呴櫎涓嬪彂鏍囪瘑淇″彿");
+ WriteInfo(item.CraneCode, $"{item.CraneCode}娓呴櫎涓嬪彂鏍囪瘑淇″彿");
}
continue;
}
if (PackState == 2)
{
Thread.Sleep(200);
- device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.StackerCraneStationCode).ToString()).DeviceProDataBlock, 0);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.CraneStationCode).ToString()).DeviceProDataBlock, 0);
WriteInfo(item.StationName, $"{item.StationName}娓呴櫎宸ヤ綅缁撴墭淇″彿");
continue;
}
- device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.StackerCraneStationCode).ToString()).DeviceProDataBlock, 2);
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.CraneStationCode).ToString()).DeviceProDataBlock, 2);
WriteInfo(item.StationName, $"{item.StationName}鍐欏叆宸ヤ綅缁撴墭淇″彿");
//鑾峰彇褰撳墠浠诲姟
Dt_Task task = _taskRepository.QueryData(x => x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.DeviceCode == device.DeviceCode).OrderBy(x => x.TaskNum).FirstOrDefault();
@@ -108,9 +108,9 @@
if (task != null)
{
//鍐欏叆宸ヤ綅鍙�
- device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDSendID.ToString()).DeviceProDataBlock, Convert.ToInt16(item.StackerCraneStationCode));
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDSendID.ToString()).DeviceProDataBlock, Convert.ToInt16(item.CraneStationCode));
//鍐欏叆宸ヤ綅鍏佽鐮佸灈
- device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.StackerCraneStationCode).ToString()).DeviceProDataBlock, 1);
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.CraneStationCode).ToString()).DeviceProDataBlock, 1);
#region 鑾峰彇鍐欏叆鐮佸灈X銆乊銆乑鍧愭爣
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/WMS\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256251126.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/WMS\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256251126.xls"
new file mode 100644
index 0000000..3f24a27
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/WMS\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256251126.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\347\202\271\344\275\215\344\277\241\346\201\257.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\347\202\271\344\275\215\344\277\241\346\201\257.xlsx"
index d93d6dd..233fdee 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\347\202\271\344\275\215\344\277\241\346\201\257.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\347\202\271\344\275\215\344\277\241\346\201\257.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\350\276\223\351\200\201\346\213\243\351\200\211\345\222\214\347\253\231\345\217\260\347\274\226\345\217\267.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\350\276\223\351\200\201\346\213\243\351\200\211\345\222\214\347\253\231\345\217\260\347\274\226\345\217\267.xlsx"
new file mode 100644
index 0000000..64a7bea
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/\350\276\223\351\200\201\346\213\243\351\200\211\345\222\214\347\253\231\345\217\260\347\274\226\345\217\267.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
index 2cc6c69..2452227 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.3.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.3.docx"
index bfd36a8..63840a7 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.3.docx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\243_V1.1.3.docx"
Binary files differ
--
Gitblit v1.9.3