From ff24fa06ba2d3a5e271789b8f81f3a3131d19470 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 20 四月 2026 09:29:14 +0800
Subject: [PATCH] 更新代码
---
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/IBaseHistoryEntity.cs | 37 +
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_ApiInfo.cs | 50 +
项目代码/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs | 178 ++++-
项目代码/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvResponseContent.cs | 31 +
项目代码/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs | 100 --
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs | 65 -
项目代码/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs | 85 ++
项目代码/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/ApiInfoRepository.cs | 18
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs | 85 --
项目代码/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs | 2
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs | 197 ------
项目代码/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs | 22
项目代码/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 56 -
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 308 +--------
项目代码/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvTaskSendDTO.cs | 154 ++++
项目代码/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvStatusUpdateDTO.cs | 51 +
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Common/APIEnum/APIEnum.cs | 33 +
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs | 101 +++
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs | 5
/dev/null | 45 -
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs | 74 ++
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs | 79 ++
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/OperateTypeEnum.cs | 20
项目代码/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IApiInfoRepository.cs | 14
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj | 6
25 files changed, 976 insertions(+), 840 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/ApiInfoRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/ApiInfoRepository.cs"
new file mode 100644
index 0000000..9566b7a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/ApiInfoRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicInfoRepository
+{
+ public class ApiInfoRepository : RepositoryBase<Dt_ApiInfo>, IApiInfoRepository
+ {
+ public ApiInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+ {
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/APIEnum/APIEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
new file mode 100644
index 0000000..31c8df2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
@@ -0,0 +1,33 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common.APIEnum
+{
+ public enum APIEnum
+ {
+ /// <summary>
+ /// AGV鍙戦�佷换鍔℃帴鍙�
+ /// </summary>
+ [Description("AGV鍙戦�佷换鍔℃帴鍙�")]
+ AgvSendTask,
+ /// <summary>
+ /// AGV浠诲姟鏀捐鎺ュ彛
+ /// </summary>
+ [Description("AGV浠诲姟鏀捐鎺ュ彛")]
+ AgvTaskFlow,
+ /// <summary>
+ /// AGV鐘舵�佹煡璇㈡帴鍙�
+ /// </summary>
+ [Description("AGV鐘舵�佹煡璇㈡帴鍙�")]
+ AgvSearchStatus,
+ /// <summary>
+ /// AGV浠诲姟鍙栨秷
+ /// </summary>
+ [Description("AGV浠诲姟鍙栨秷")]
+ AgvTaskCancel
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs"
index e83e71f..6aec555 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs"
@@ -18,29 +18,9 @@
public static TaskTypeGroup GetTaskTypeGroup(this int taskType)
{
- if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(taskType.ToString()).ToString(), out int result))
- {
- return TaskTypeGroup.OutbondGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(taskType.ToString()).ToString(), out result))
- {
- return TaskTypeGroup.InboundGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(taskType.ToString()).ToString(), out result))
- {
- return TaskTypeGroup.RelocationGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(taskType.ToString()).ToString(), out result))
- {
- return TaskTypeGroup.OtherGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskAGVCarryTypeEnum>(taskType.ToString()).ToString(), out result))
+ if (!int.TryParse(Enum.Parse<TaskAGVCarryTypeEnum>(taskType.ToString()).ToString(), out int result))
{
return TaskTypeGroup.CarryGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskAcrossFloorTypeEnum>(taskType.ToString()).ToString(), out result))
- {
- return TaskTypeGroup.AcrossFloorGroup;
}
else
{
@@ -50,29 +30,9 @@
public static TaskStateGroup GetTaskStateGroup(this int taskState)
{
- if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
- {
- return TaskStateGroup.OutbondGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
- {
- return TaskStateGroup.InboundGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskRelocationStatusEnum>(taskState.ToString()).ToString(), out result))
- {
- return TaskStateGroup.RelocationGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskOtherStateEnum>(taskState.ToString()).ToString(), out result))
- {
- return TaskStateGroup.OtherGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskAGVCarryStatusEnum>(taskState.ToString()).ToString(), out result))
+ if (!int.TryParse(Enum.Parse<TaskAGVCarryStatusEnum>(taskState.ToString()).ToString(), out int result))
{
return TaskStateGroup.CarryGroup;
- }
- else if (!int.TryParse(Enum.Parse<TaskAcrossFloorStatusEnum>(taskState.ToString()).ToString(), out result))
- {
- return TaskStateGroup.AcrossFloorGroup;
}
else
{
@@ -85,26 +45,9 @@
Type type = typeof(T);
if (type is null) throw new ArgumentNullException();
if (!type.IsEnum) return 0;
- if (type == typeof(TaskInStatusEnum))
+ if (type == typeof(TaskAGVCarryStatusEnum))
{
- List<int> taskInboundTypes = type.GetEnumIndexList();
- return taskInboundTypes.Where(x => x > currentStatus && x < (int)TaskInStatusEnum.InFinish).OrderBy(x => x).FirstOrDefault();
- }
- else if (type == typeof(TaskOutStatusEnum))
- {
- return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskOutStatusEnum.OutFinish).OrderBy(x => x).FirstOrDefault();
- }
- else if (type == typeof(TaskRelocationStatusEnum))
- {
- return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskRelocationStatusEnum.RelocationFinish).OrderBy(x => x).FirstOrDefault();
- }
- else if (type == typeof(TaskAGVCarryStatusEnum))
- {
- return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskAGVCarryStatusEnum.CarryFinish).OrderBy(x => x).FirstOrDefault();
- }
- else if (type == typeof(TaskAcrossFloorStatusEnum))
- {
- return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskAcrossFloorStatusEnum.CarryFinish).OrderBy(x => x).FirstOrDefault();
+ return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskAGVCarryStatusEnum.AGV_CarryFinish).OrderBy(x => x).FirstOrDefault();
}
else
{
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index 14b852e..39cefe1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -7,315 +7,103 @@
namespace WIDESEAWCS_Common.TaskEnum
{
- public enum TaskInStatusEnum
- {
- /// <summary>
- /// 鏂板缓鍏ュ簱浠诲姟
- /// </summary>
- [Description("鏂板缓鍏ュ簱浠诲姟")]
- InNew = 200,
-
- /// <summary>
- /// AGV鍏ュ簱鎵ц涓�
- /// </summary>
- [Description("AGV鍏ュ簱鎵ц涓�")]
- AGV_InExecuting = 210,
-
- /// <summary>
- /// AGV鍏ュ簱瀹屾垚
- /// </summary>
- [Description("AGV鎼繍瀹屾垚")]
- AGV_InFinish = 215,
-
- /// <summary>
- /// 杈撻�佺嚎鍏ュ簱鎵ц涓�
- /// </summary>
- [Description("杈撻�佺嚎鍏ュ簱鎵ц涓�")]
- Line_InExecuting = 220,
-
- /// <summary>
- /// 杈撻�佺嚎鍏ュ簱瀹屾垚
- /// </summary>
- [Description("杈撻�佺嚎鍏ュ簱瀹屾垚")]
- Line_InFinish = 225,
-
- /// <summary>
- /// 鍫嗗灈鏈哄叆搴撴墽琛屼腑
- /// </summary>
- [Description("鍫嗗灈鏈哄叆搴撴墽琛屼腑")]
- SC_InExecuting = 230,
-
- /// <summary>
- /// 鍫嗗灈鏈哄叆搴撳畬鎴�
- /// </summary>
- [Description("鍫嗗灈鏈哄叆搴撳畬鎴�")]
- SC_InFinish = 235,
-
- /// <summary>
- /// 鍏ュ簱浠诲姟瀹屾垚
- /// </summary>
- [Description("鍏ュ簱浠诲姟瀹屾垚")]
- InFinish = 290,
-
- /// <summary>
- /// 鍏ュ簱浠诲姟鎸傝捣
- /// </summary>
- [Description("鍏ュ簱浠诲姟鎸傝捣")]
- InPending = 297,
-
- /// <summary>
- /// 鍏ュ簱浠诲姟鍙栨秷
- /// </summary>
- [Description("鍏ュ簱浠诲姟鍙栨秷")]
- InCancel = 298,
-
- /// <summary>
- /// 鍏ュ簱浠诲姟寮傚父
- /// </summary>
- [Description("鍏ュ簱浠诲姟寮傚父")]
- InException = 299,
- }
-
- public enum TaskOutStatusEnum
- {
- /// <summary>
- /// 鏂板缓鍑哄簱浠诲姟
- /// </summary>
- [Description("鏂板缓鍑哄簱浠诲姟")]
- OutNew = 100,
-
- /// <summary>
- /// 鍫嗗灈鏈哄嚭搴撴墽琛屼腑
- /// </summary>
- [Description("鍫嗗灈鏈哄嚭搴撴墽琛屼腑")]
- SC_OutExecuting = 110,
-
- /// <summary>
- /// 鍫嗗灈鏈哄嚭搴撳畬鎴�
- /// </summary>
- [Description("鍫嗗灈鏈哄嚭搴撳畬鎴�")]
- SC_OutFinish = 115,
-
- /// <summary>
- /// 杈撻�佺嚎鍑哄簱鎵ц涓�
- /// </summary>
- [Description("杈撻�佺嚎鍑哄簱鎵ц涓�")]
- Line_OutExecuting = 120,
-
- /// <summary>
- /// 杈撻�佺嚎鍑哄簱瀹屾垚
- /// </summary>
- [Description("杈撻�佺嚎鍑哄簱瀹屾垚")]
- Line_OutFinish = 125,
-
-
- /// <summary>
- /// AGV鍑哄簱鎵ц涓�
- /// </summary>
- [Description("AGV鍑哄簱鎵ц涓�")]
- AGV_OutExecuting = 130,
-
- /// <summary>
- /// AGV鍑哄簱瀹屾垚
- /// </summary>
- [Description("AGV鎼繍瀹屾垚")]
- AGV_OutFinish = 135,
-
- /// <summary>
- /// 鍑哄簱浠诲姟瀹屾垚
- /// </summary>
- [Description("鍑哄簱浠诲姟瀹屾垚")]
- OutFinish = 190,
-
- /// <summary>
- /// 鍑哄簱浠诲姟鎸傝捣
- /// </summary>
- [Description("鍑哄簱浠诲姟鎸傝捣")]
- OutPending = 197,
-
- /// <summary>
- /// 鍑哄簱浠诲姟鍙栨秷
- /// </summary>
- [Description("鍑哄簱浠诲姟鍙栨秷")]
- OutCancel = 198,
-
- /// <summary>
- /// 鍑哄簱浠诲姟寮傚父
- /// </summary>
- [Description("鍑哄簱浠诲姟寮傚父")]
- OutException = 199,
- }
- public enum TaskOtherStateEnum
- {
-
- }
- public enum TaskRelocationStatusEnum
- {
- /// <summary>
- /// 鏂板缓绉诲簱浠诲姟
- /// </summary>
- [Description("鏂板缓绉诲簱浠诲姟")]
- RelocationNew = 300,
-
- /// <summary>
- /// 鍫嗗灈鏈虹Щ搴撴墽琛屼腑
- /// </summary>
- [Description("鍫嗗灈鏈虹Щ搴撴墽琛屼腑")]
- SC_RelocationExecuting = 310,
-
- /// <summary>
- /// 鍫嗗灈鏈虹Щ搴撳畬鎴�
- /// </summary>
- [Description("鍫嗗灈鏈虹Щ搴撳畬鎴�")]
- SC_RelocationFinish = 315,
-
- /// <summary>
- /// 鏂板缓AGV绉诲簱浠诲姟
- /// </summary>
- [Description("鏂板缓AGV绉诲簱浠诲姟")]
- RelocationNewAGV = 320,
-
- /// <summary>
- /// AGV绉诲簱鎵ц涓�
- /// </summary>
- [Description("AGV绉诲簱鎵ц涓�")]
- AGV_RelocationExecuting = 325,
-
- /// <summary>
- /// AGV绉诲簱瀹屾垚
- /// </summary>
- [Description("AGV绉诲簱瀹屾垚")]
- AGV_RelocationFinish = 330,
-
- /// <summary>
- /// 绉诲簱浠诲姟瀹屾垚
- /// </summary>
- [Description("绉诲簱浠诲姟瀹屾垚")]
- RelocationFinish = 390,
-
- /// <summary>
- /// 绉诲簱浠诲姟鎸傝捣
- /// </summary>
- [Description("绉诲簱浠诲姟鎸傝捣")]
- RelocationPending = 397,
-
- /// <summary>
- /// 绉诲簱浠诲姟鍙栨秷
- /// </summary>
- [Description("绉诲簱浠诲姟鍙栨秷")]
- RelocationCancel = 398,
-
- /// <summary>
- /// 绉诲簱浠诲姟寮傚父
- /// </summary>
- [Description("绉诲簱浠诲姟寮傚父")]
- RelocationException = 399,
- }
-
public enum TaskAGVCarryStatusEnum
{
/// <summary>
/// 鏂板缓AGV鎼繍浠诲姟
/// </summary>
[Description("鏂板缓AGV鎼繍浠诲姟")]
- CarryNew = 400,
+ AGV_CarryNew = 400,
/// <summary>
/// AGV鎼繍鎵ц涓�
/// </summary>
[Description("AGV鎼繍鎵ц涓�")]
- AGV_CarryExecuting = 410,
+ AGV_CarryExecuting = 405,
+
+ /// <summary>
+ /// AGV鍙栬揣瀹屾垚
+ /// </summary>
+ [Description("AGV鎼繍鍙栬揣瀹屾垚")]
+ AGV_CarryTakeFinish = 410,
/// <summary>
/// AGV鎼繍瀹屾垚
/// </summary>
- [Description("AGV鎼繍瀹屾垚")]
- AGV_CarryFinish = 415,
-
+ [Description("AGV鎼繍鏀捐揣瀹屾垚")]
+ AGV_CarryReleaseFinish = 415,
+
/// <summary>
/// AGV鎼繍浠诲姟瀹屾垚
/// </summary>
[Description("AGV鎼繍浠诲姟瀹屾垚")]
- CarryFinish = 490,
+ AGV_CarryFinish = 490,
/// <summary>
/// AGV鎼繍浠诲姟鎸傝捣
/// </summary>
[Description("AGV鎼繍浠诲姟鎸傝捣")]
- CarryPending = 497,
+ AGV_CarryPending = 497,
/// <summary>
/// AGV鎼繍浠诲姟鍙栨秷
/// </summary>
[Description("AGV鎼繍浠诲姟鍙栨秷")]
- CarryCancel = 498,
+ AGV_CarryCancel = 498,
/// <summary>
/// AGV鎼繍浠诲姟寮傚父
/// </summary>
[Description("AGV鎼繍浠诲姟寮傚父")]
- CarryException = 499,
+ AGV_CarryException = 499,
}
- public enum TaskAcrossFloorStatusEnum
+
+ /// <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("鏂板缓璺ㄦゼ灞備换鍔�")]
- CarryNew = 500,
-
+ [Description("寮�濮嬬Щ鍔�")]
+ MOVE_BEGIN,
/// <summary>
- /// 璺ㄦゼ灞傛惉杩�1
+ /// 鏂� 绠� 鍙� 鏂� 瀹� 鎴�
/// </summary>
- [Description("璺ㄦゼ灞傛惉杩�1")]
- FirstCarry = 510,
-
+ [Description("鏂� 绠� 鍙� 鏂� 瀹� 鎴�")]
+ PICKER_RECEIVE,
/// <summary>
- /// 涓�妤兼惉杩愬畬鎴�
+ /// 鏂� 绠� 涓� 鏂� 瀹� 鎴�
/// </summary>
- [Description("璺ㄦゼ灞傛惉杩�1瀹屾垚")]
- FirstCarryFinish = 515,
-
+ [Description("鏂� 绠� 涓� 鏂� 瀹� 鎴�")]
+ PICKER_SEND,
/// <summary>
- /// 璺ㄦゼ灞傛惉杩�2
+ /// 浠诲姟瀹屾垚
/// </summary>
- [Description("璺ㄦゼ灞傛惉杩�2")]
- SecondCarry = 520,
-
+ [Description("浠诲姟瀹屾垚")]
+ COMPLETED,
/// <summary>
- /// 璺ㄦゼ灞傜粓鐐规墽琛�
+ /// 绛夊緟鏀捐
/// </summary>
- [Description("璺ㄦゼ灞傜粓鐐规墽琛�")]
- EndAddressExecuting = 525,
-
+ [Description("绛夊緟鏀捐")]
+ WAITFEEDBACK,
/// <summary>
- /// 璺ㄦゼ灞傛惉杩�2瀹屾垚
+ /// 浠诲姟鍙栨秷瀹屾垚
/// </summary>
- [Description("璺ㄦゼ灞傛惉杩�2瀹屾垚")]
- SecondCarryFinish = 530,
-
+ [Description("浠诲姟鍙栨秷瀹屾垚")]
+ CANCELED,
/// <summary>
- /// 璺ㄦゼ灞備换鍔″畬鎴�
+ /// 鍛婅
/// </summary>
- [Description("璺ㄦゼ灞備换鍔″畬鎴�")]
- CarryFinish = 590,
-
- /// <summary>
- /// 璺ㄦゼ灞備换鍔℃寕璧�
- /// </summary>
- [Description("璺ㄦゼ灞備换鍔℃寕璧�")]
- CarryPending = 597,
-
- /// <summary>
- /// 璺ㄦゼ灞備换鍔″彇娑�
- /// </summary>
- [Description("璺ㄦゼ灞備换鍔″彇娑�")]
- CarryCancel = 598,
-
- /// <summary>
- /// AGV鎼繍浠诲姟寮傚父
- /// </summary>
- [Description("AGV鎼繍浠诲姟寮傚父")]
- CarryException = 599,
+ [Description("鍛婅")]
+ WARNING,
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index c9f37b7..cd961c0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -7,94 +7,19 @@
namespace WIDESEAWCS_Common.TaskEnum
{
- public enum TaskInboundTypeEnum
- {
- /// <summary>
- /// 鍏ュ簱
- /// </summary>
- [Description("鍏ュ簱")]
- Inbound = 200,
-
- /// <summary>
- /// 鍏朵粬鍏ュ簱
- /// </summary>
- [Description("鍏朵粬鍏ュ簱")]
- InOther = 205,
- }
-
- public enum TaskOutboundTypeEnum
- {
- /// <summary>
- /// 鍑哄簱
- /// </summary>
- [Description("鍑哄簱")]
- Outbound = 100,
-
- /// <summary>
- /// 璋冩嫧鍑哄簱
- /// </summary>
- [Description("璋冩嫧鍑哄簱")]
- OutAllocate = 105,
-
- /// <summary>
- /// 鍏朵粬鍑哄簱
- /// </summary>
- [Description("鍏朵粬鍑哄簱")]
- OutOther = 110,
-
- /// <summary>
- /// 鐢熶骇棰嗘枡鍑哄簱
- /// </summary>
- [Description("鐢熶骇棰嗘枡鍑哄簱")]
- MaterialRequisition = 115,
-
- /// <summary>
- /// 鍘熸潗鏂欏嚭搴�
- /// </summary>
- [Description("鍘熸潗鏂欏嚭搴�")]
- RawMaterials = 120,
- }
-
- public enum TaskRelocationTypeEnum
- {
- /// <summary>
- /// 搴撳唴绉诲簱
- /// </summary>
- [Description("搴撳唴绉诲簱")]
- Relocation = 300,
-
- /// <summary>
- /// 搴撳绉诲簱
- /// </summary>
- [Description("搴撳绉诲簱")]
- RelocationIn = 301
- }
-
- public enum TaskOtherTypeEnum
- {
-
- }
public enum TaskAGVCarryTypeEnum
{
/// <summary>
- /// AGV鎼繍
+ /// AGV涓婃枡鎼繍
/// </summary>
- [Description("AGV鎼繍")]
+ [Description("AGV涓婃枡鎼繍")]
Carry = 400,
/// <summary>
- /// AGV绉诲簱鎼繍
+ /// AGV绌鸿浇鍏锋惉杩�
/// </summary>
- [Description("AGV绉诲簱鎼繍")]
- CarryReloction = 410
- }
- public enum TaskAcrossFloorTypeEnum
- {
- /// <summary>
- /// 璺ㄦゼ灞傛惉杩�
- /// </summary>
- [Description("璺ㄦゼ灞傛惉杩�")]
- AcrossFloorCarry = 500
+ [Description("AGV绌鸿浇鍏锋惉杩�")]
+ CarryEmpty = 410
}
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj"
index 7db8830..84faaa8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj"
@@ -7,11 +7,13 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+ <Compile Remove="Http\**" />
+ <EmbeddedResource Remove="Http\**" />
+ <None Remove="Http\**" />
</ItemGroup>
<ItemGroup>
- <Folder Include="Http\" />
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs"
index a2702d9..97637e5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs"
@@ -7,6 +7,7 @@
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Core.Enums;
namespace WIDESEAWCS_Core.BaseRepository
{
@@ -414,5 +415,9 @@
// Expression<Func<T, T2, T3, TResult>> selectExpression,
// Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new();
//Task<PageModel<TEntity>> QueryPage(PaginationModel pagination);
+
+ bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType);
+
+ bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs"
index 2bfd6fa..22448da 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs"
@@ -16,6 +16,9 @@
using WIDESEAWCS_Core.Const;
using WIDESEAWCS_Core.AOP;
using OfficeOpenXml.FormulaParsing.ExpressionGraph;
+using WIDESEAWCS_Core.DB.Models;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_Core.Enums;
namespace WIDESEAWCS_Core.BaseRepository
{
@@ -852,5 +855,103 @@
// Expression<Func<T, T2, T3, TResult>> selectExpression,
// Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new(){throw new NotImplementedException();}
//Task<PageModel<TEntity>> QueryPage(PaginationModel pagination){throw new NotImplementedException();}
+
+ public bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType)
+ {
+ Type type = entity.GetType();
+ Assembly assembly = type.Assembly;
+ Type? htyType = assembly.GetType(type.FullName + "_Hty");
+ if (htyType != null)
+ {
+ object? obj = Activator.CreateInstance(htyType);
+ PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+ PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+ PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+ if (obj != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+ {
+ operateTypePro.SetValue(obj, operateType.ToString());
+ sourceIdPro.SetValue(obj, keyPro.GetValue(entity));
+
+ List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+
+ for (int i = 0; i < propertyInfos.Count; i++)
+ {
+ PropertyInfo propertyInfo = propertyInfos[i];
+ PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+ if (property != null)
+ {
+ if (propertyInfo.Name == nameof(BaseEntity.Modifier))
+ {
+ propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+ }
+ else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
+ {
+ propertyInfo.SetValue(obj, DateTime.Now);
+ }
+ else
+ {
+ propertyInfo.SetValue(obj, property.GetValue(entity));
+ }
+ }
+ }
+ _db.InsertableByObject(obj).AS(type.Name + "_Hty").ExecuteCommand();
+ }
+ }
+ return DeleteData(entity);
+ }
+
+ public bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType)
+ {
+ Type type = typeof(TEntity);
+ Assembly assembly = type.Assembly;
+ Type? htyType = assembly.GetType(type.FullName + "_Hty");
+ if (htyType != null)
+ {
+ object? obj2 = Activator.CreateInstance(htyType);
+ PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+ PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+ PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+ if (obj2 != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+ {
+ List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+ List<object> list = new List<object>();
+ foreach (var item in entities)
+ {
+ object? obj = Activator.CreateInstance(htyType);
+ if (obj != null)
+ {
+ operateTypePro.SetValue(obj, operateType.ToString());
+ sourceIdPro.SetValue(obj, keyPro.GetValue(item));
+ for (int i = 0; i < propertyInfos.Count; i++)
+ {
+ PropertyInfo propertyInfo = propertyInfos[i];
+ PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+ if (property != null)
+ {
+ if (propertyInfo.Name == nameof(BaseEntity.Modifier))
+ {
+ propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+ }
+ else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
+ {
+ propertyInfo.SetValue(obj, DateTime.Now);
+ }
+ else
+ {
+ propertyInfo.SetValue(obj, property.GetValue(item));
+ }
+ }
+ }
+ list.Add(obj);
+ }
+ }
+ _db.InsertableByObject(list).AS(type.Name + "_Hty").ExecuteCommand();
+
+ }
+ }
+ return DeleteData(entities);
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/IBaseHistoryEntity.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/IBaseHistoryEntity.cs"
new file mode 100644
index 0000000..534c60a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/IBaseHistoryEntity.cs"
@@ -0,0 +1,37 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Core.DB.Models
+{
+ public interface IBaseHistoryEntity
+ {
+ /// <summary>
+ /// 鍘熻〃涓婚敭
+ /// </summary>
+ [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+ [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+ [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+ public int SourceId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绫诲瀷
+ /// </summary>
+ [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+ [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+ public string OperateType { get; set; }
+
+ /// <summary>
+ /// 绉诲叆鍘嗗彶鏃堕棿
+ /// </summary>
+ [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+ [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+ public DateTime InsertTime { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/OperateTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/OperateTypeEnum.cs"
new file mode 100644
index 0000000..55edce1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/OperateTypeEnum.cs"
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Core.Enums
+{
+ public enum OperateTypeEnum
+ {
+ 浜哄伐鍒犻櫎 = 1,
+ 鑷姩鍒犻櫎 = 2,
+ 浜哄伐鎭㈠ = 3,
+ 鑷姩鎭㈠ = 4,
+ 浜哄伐瀹屾垚 = 5,
+ 鑷姩瀹屾垚 = 6,
+ 鍏抽棴 = 7,
+ 鍏朵粬 = 99
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs"
deleted file mode 100644
index 8c08c2e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs"
+++ /dev/null
@@ -1,40 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.AGV
-{
- public class AGVReceiveDTO
- {
- /// <summary>
- /// 浠诲姟鍙�
- /// </summary>
- public string orderId { get; set; }
-
-
- public string subOrderId { get; set; }
- public string qrContent { get; set; }
- public string deviceNum { get; set; }
- public string deviceCode { get; set; }
-
- /// <summary>
- /// 鐘舵�侊細 PutFinish鏀捐揣瀹屾垚銆丳ickUpFinish鍙栬揣瀹屾垚銆丷equestPickUp璇锋眰鍙栬揣銆丷equestPut璇锋眰鏀捐揣
- /// </summary>
- public int status { get; set; }
-
-
- public string storageNum { get; set; }
- public string modelProcessCode { get; set; }
- public string errorDesc { get; set; }
- public string shelfNumber { get; set; }
- public string shelfCurrPosition { get; set; }
- public string subTaskStatus { get; set; }
- public string subTaskTypeId { get; set; }
- public string subTaskId { get; set; }
- public string subTaskSeq { get; set; }
- public string extraInfo { get; set; }
- public string icsTaskOrderDetailId { get; set; }
- }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs"
deleted file mode 100644
index 03bf861..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs"
+++ /dev/null
@@ -1,15 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.AGV
-{
- public class AgvRespone
- {
- public int code { get; set; }
- public string data { get; set; }
- public string desc { get; set; }
- }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvResponseContent.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvResponseContent.cs"
new file mode 100644
index 0000000..aa0d58d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvResponseContent.cs"
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_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 bool Success { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvStatusUpdateDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvStatusUpdateDTO.cs"
new file mode 100644
index 0000000..06887ff
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvStatusUpdateDTO.cs"
@@ -0,0 +1,51 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.Agv
+{
+ public class AgvStatusUpdateDTO
+{
+ /// <summary>
+ /// 浠诲姟缂栧彿
+ /// </summary>
+ public string MissionCode { get; set; }
+ /// <summary>
+ /// 浣滀笟绫诲瀷
+ /// </summary>
+ public string ViewBoardType { get; set; }
+ /// <summary>
+ /// 褰撳墠鎵�鍦ㄦЫ浣�
+ /// </summary>
+ public string SlotCode { get; set; }
+ /// <summary>
+ /// 鎵ц褰撳墠浠诲姟鐨勬満鍣ㄤ汉 id
+ /// </summary>
+ 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/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvTaskSendDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvTaskSendDTO.cs"
new file mode 100644
index 0000000..a3c444b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvTaskSendDTO.cs"
@@ -0,0 +1,154 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+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 OrgId { get; set; } = "HF";
+ /// <summary>
+ /// 璇锋眰 id
+ /// </summary>
+ public string RequestId { get; set; }
+ /// <summary>
+ /// 浠诲姟缂栫爜
+ /// </summary>
+ public string MissionCode { get; set; }
+ /// <summary>
+ /// 浠诲姟绫诲瀷锛歅ICKER_MOVE
+ /// </summary>
+ public string MissionType { get; set; } = "PICKER_MOVE";
+ /// <summary>
+ /// 浠诲姟鐪嬫澘灞曠ず浠诲姟绫诲瀷
+ /// </summary>
+ public string ViewBoardType { get; set; }
+ /// <summary>
+ /// 鏈哄櫒浜哄叿浣撳瀷鍙�
+ /// </summary>
+ 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 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; }
+ }
+
+ public class AgvTaskCancelDTO
+ {
+ /// <summary>
+ /// 璇锋眰id
+ /// </summary>
+ public string RequestId { get; set; }
+ /// <summary>
+ /// 浠诲姟缂栧彿
+ /// </summary>
+ public string MissionCode { get; set; }
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+ /// <summary>
+ /// 鑺傜偣缂栧彿
+ /// </summary>
+ public string Position { get; set; }
+ /// <summary>
+ /// 鍙栨秷妯″紡
+ /// </summary>
+ public string CancelMode { get; set; }
+ /// <summary>
+ /// 鍙栨秷鍘熷洜
+ /// </summary>
+ public string Reason { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs"
deleted file mode 100644
index 2490e83..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs"
+++ /dev/null
@@ -1,59 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.AGV
-{
- public class SendTask
- {
- /// <summary>
- /// 浠诲姟妯℃澘
- /// </summary>
- public string modelProcessCode { get; set; }
-
- /// <summary>
- /// 浼樺厛绾�
- /// </summary>
- public int priority { get; set; }
-
- /// <summary>
- /// 鏉ユ簮绯荤粺
- /// </summary>
- public string fromSystem { get; set; }
-
- /// <summary>
- /// 浠诲姟鍙�
- /// </summary>
- public string orderId { get; set; }
-
- /// <summary>
- /// 璁㈠崟鏄庣粏
- /// </summary>
- public List<taskOrderDetail> taskOrderDetail { get; set; }
- }
- public class taskOrderDetail
- {
- public string subOrderId { get; set; }
-
- public string taskPath { get; set; }
-
- public string shelfNumber { get; set; }
-
- public string assignRobotIds { get; set; }
-
- public string releaseRobot { get; set; }
-
- public string deviceNum { get; set; }
-
- public string loadType { get; set; }
-
- public string robotType { get; set; }
-
- public string extraInfo { get; set; }
-
- public string shelfModel { get; set; }
-
- }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs"
deleted file mode 100644
index f5c114a..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs"
+++ /dev/null
@@ -1,45 +0,0 @@
-锘縩amespace WIDESEAWCS_DTO.WMS
-{
- public class RequestTaskDto
- {
- /// <summary>
- /// 褰撳墠浣嶇疆
- /// </summary>
- public string Position { get; set; }
-
- /// <summary>
- /// 鎵樼洏鍙�
- /// </summary>
- public string PalletCode { get; set; }
-
- /// <summary>
- /// 绌烘墭鐩樺彲鍏ュ贩鍒�
- /// </summary>
- public string PositionList { get; set; }
-
- /// <summary>
- /// 浠诲姟绫诲瀷
- /// </summary>
- public string RequestType { get; set; } = string.Empty;
-
- public int TaskNum { get; set; }
- }
-
- public class RequestAcrossFloorTaskDto
- {
- /// <summary>
- /// 浠诲姟鍙�
- /// </summary>
- public int TaskNum { get; set; }
-
- /// <summary>
- /// 鎵樼洏鍙�
- /// </summary>
- public string PalletCode { get; set; }
-
- /// <summary>
- /// 涓嬩竴浣嶇疆
- /// </summary>
- public string NextAddress { get; set; }
- }
-}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IApiInfoRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IApiInfoRepository.cs"
new file mode 100644
index 0000000..98f001b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IApiInfoRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicInfoRepository
+{
+ public interface IApiInfoRepository : IRepository<Dt_ApiInfo>
+ {
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs"
index da4f5da..f048d8e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs"
@@ -1,19 +1,8 @@
-锘�#region << 鐗� 鏈� 娉� 閲� >>
-/*----------------------------------------------------------------
- * 鍛藉悕绌洪棿锛歐IDESEAWCS_ITaskInfoRepository
- * 鍒涘缓鑰咃細鑳$搴�
- * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
- * 鐗堟湰锛歏1.0.0
- * 鎻忚堪锛�
- *
- * ----------------------------------------------------------------
- * 淇敼浜猴細
- * 淇敼鏃堕棿锛�
- * 鐗堟湰锛歏1.0.1
- * 淇敼璇存槑锛�
- *
- *----------------------------------------------------------------*/
-#endregion << 鐗� 鏈� 娉� 閲� >>
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Model.Models;
@@ -21,6 +10,5 @@
{
public interface IDt_StationManagerRepository : IRepository<Dt_StationManager>
{
-
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs"
index 210d039..6383481 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs"
@@ -34,7 +34,5 @@
WebResponseContent GetDetailInfo(int taskNum);
WebResponseContent GetDetailDatas(int taskNum);
-
- void AddTaskExecuteDetail(List<int> taskNums, string description = "");
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index ebe6a7d..45bbb57 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -31,6 +31,8 @@
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_DTO.MES;
+using WIDESEAWCS_Common.APIEnum;
+using WIDESEAWCS_DTO.Agv;
namespace WIDESEAWCS_ITaskInfoService
{
@@ -40,37 +42,6 @@
/// 浠诲姟鎺掑簭
/// </summary>
public Dictionary<string, OrderByType> TaskOrderBy { get; set; }
-
- /// <summary>
- /// 鎵�鏈夊叆搴撲换鍔$被鍨�
- /// </summary>
- public List<int> TaskInboundTypes { get; }
-
- /// <summary>
- /// 鎵�鏈夊嚭搴撲换鍔$被鍨�
- /// </summary>
- public List<int> TaskOutboundTypes { get; }
-
- /// <summary>
- /// 鎵�鏈夌Щ搴撲换鍔$被鍨�
- /// </summary>
- public List<int> TaskRelocationboundTypes { get; }
-
- /// <summary>
- /// 鎵�鏈夊叆搴撲换鍔$姸鎬�
- /// </summary>
- public List<int> TaskInboundStates { get; }
-
- /// <summary>
- /// 鎵�鏈夊嚭搴撲换鍔$姸鎬�
- /// </summary>
- public List<int> TaskOutboundStates { get; }
-
- /// <summary>
- /// 鎵�鏈夌Щ搴撲换鍔$姸鎬�
- /// </summary>
- public List<int> TaskRelocationboundStates { get; }
-
/// <summary>
/// 鎺ユ敹MES浠诲姟
@@ -112,5 +83,28 @@
/// <param name="taskNum">浠诲姟鍙�</param>
/// <returns>杩斿洖澶勭悊缁撴灉</returns>
WebResponseContent RollbackTaskStatusToLast(int taskNum);
+ /// <summary>
+ /// AGV浠诲姟鍙戦��
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent AgvSendTask(AgvTaskSendDTO taskModel, APIEnum SendTask = APIEnum.AgvSendTask);
+
+ /// <summary>
+ /// 鏇存柊浠诲姟淇℃伅鍙婃坊鍔犱换鍔℃槑缁嗚褰�
+ /// </summary>
+ /// <param name="task">浠诲姟鍘熷璞″疄渚�(鏈慨鏀圭殑鏁版嵁瀵硅薄)</param>
+ /// <param name="taskStatus">淇敼鍚庣殑浠诲姟鐘舵��</param>
+ /// <param name="deviceCode">淇敼鍚庣殑璁惧缂栧彿</param>
+ /// <param name="sourceAddress">淇敼鍚庣殑璧峰鍦板潃</param>
+ /// <param name="targetAddress">淇敼鍚庣殑鐩爣鍦板潃</param>
+ /// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
+ /// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
+ void UpdateTask(Dt_Task task, TaskAGVCarryStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "");
+
+ /// <summary>
+ /// 浠诲姟瀹屾垚棰�
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent TaskCompleted(int taskNum);
}
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_ApiInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_ApiInfo.cs"
new file mode 100644
index 0000000..f08521a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_ApiInfo.cs"
@@ -0,0 +1,50 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+ [SugarTable(nameof(Dt_ApiInfo), "鎺ュ彛淇℃伅")]
+ public class Dt_ApiInfo : BaseEntity
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// 鎺ュ彛缂栧彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎺ュ彛缂栧彿")]
+ public string ApiCode { get; set; }
+
+ /// <summary>
+ /// 鎺ュ彛鍚嶇О
+ /// </summary>
+ [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鎺ュ彛鍚嶇О")]
+ public string ApiName { get; set; }
+
+ /// <summary>
+ /// 鎺ュ彛鍦板潃
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鎺ュ彛鍦板潃")]
+ public string ApiAddress { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍚敤
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍚敤")]
+ public int Enable { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index 2862c62..778fd4c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -1,29 +1,85 @@
-锘縰sing Microsoft.AspNetCore.Authorization;
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
-using System.Reflection;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using System.Text;
+using System.Text.RegularExpressions;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
-using WIDESEAWCS_DTO.AGV;
+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;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_TaskInfoService;
using WIDESEAWCS_Tasks;
-namespace WIDESEAWCS_Server.Controllers.AGV
+namespace WIDESEAWCS_Server.Controllers
{
- [Route("api/AGV")]
+ [Route("api/[controller]")]
[ApiController]
public class AGVController : ControllerBase
{
- private readonly ITaskRepository _taskRepository;
+ private readonly IDt_StationManagerRepository _stationMangerRepository;
private readonly ITaskService _taskService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly IRouterRepository _routerRepository;
- public AGVController(ITaskRepository taskRepository,ITaskService taskService)
+ public AGVController(IDt_StationManagerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository,IRouterRepository routerRepository)
{
- _taskRepository = taskRepository;
+ _stationMangerRepository = stationMangerRepository;
_taskService = taskService;
+ _taskRepository = taskRepository;
+ _routerRepository = routerRepository;
+ }
+ /// <summary>
+ /// AGV浠诲姟鏇存柊
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("Callback"), AllowAnonymous]
+ public WebResponseContent? Callback([FromBody]AgvStatusUpdateDTO agvUpdateDTO)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var task = _taskRepository.QueryFirst(x => (agvUpdateDTO.ContainerCode ?? "") == x.PalletCode);
+ switch (agvUpdateDTO.MissionStatus)
+ {
+ case nameof(AGVStatusEnum.PICKER_RECEIVE):
+ if (task == null) throw new Exception($"鏈壘鍒版枡绠便�恵agvUpdateDTO.ContainerCode}銆戜换鍔�");
+ _taskService.UpdateTask(task, TaskAGVCarryStatusEnum.AGV_CarryTakeFinish);
+ break;
+ case nameof(AGVStatusEnum.PICKER_SEND):
+ if (task == null) throw new Exception($"鏈壘鍒版枡绠便�恵agvUpdateDTO.ContainerCode}銆戜换鍔�");
+ _taskService.UpdateTask(task, TaskAGVCarryStatusEnum.AGV_CarryReleaseFinish);
+ break;
+ case nameof(AGVStatusEnum.COMPLETED):
+ if (task == null) throw new Exception($"鏈壘鍒版枡绠便�恵agvUpdateDTO.ContainerCode}銆戜换鍔�");
+ _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/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs"
index a03b8df..f37542e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs"
@@ -186,94 +186,6 @@
{
List<object> data = new List<object>();
- #region TaskInboundTypeEnum
- {
- Type type = typeof(TaskInboundTypeEnum);
- List<int> enums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskInboundTypeEnum).GetField(((TaskInboundTypeEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
- #region TaskOutboundTypeEnum
- {
- Type type = typeof(TaskOutboundTypeEnum);
- List<int> enums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskOutboundTypeEnum).GetField(((TaskOutboundTypeEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
- #region TaskRelocationTypeEnum
- {
- Type type = typeof(TaskRelocationTypeEnum);
- List<int> enums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskRelocationTypeEnum).GetField(((TaskRelocationTypeEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
- #region TaskOtherTypeEnum
- {
- Type type = typeof(TaskOtherTypeEnum);
- List<int> enums = Enum.GetValues(typeof(TaskOtherTypeEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskOtherTypeEnum).GetField(((TaskOtherTypeEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
#region TaskAGVCarryTypeEnum
{
Type type = typeof(TaskAGVCarryTypeEnum);
@@ -296,100 +208,12 @@
}
#endregion
- #region TaskAcrossFloorTypeEnum
- {
- Type type = typeof(TaskAcrossFloorTypeEnum);
- List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorTypeEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskAcrossFloorTypeEnum).GetField(((TaskAcrossFloorTypeEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
}
break;
case "taskState":
{
List<object> data = new List<object>();
-
- #region TaskInStatusEnum
- {
- Type type = typeof(TaskInStatusEnum);
- List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
- #region TaskOutStatusEnum
- {
- Type type = typeof(TaskOutStatusEnum);
- List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
-
- #region TaskRelocationStatusEnum
- {
- Type type = typeof(TaskRelocationStatusEnum);
- List<int> enums = Enum.GetValues(typeof(TaskRelocationStatusEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskRelocationStatusEnum).GetField(((TaskRelocationStatusEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
#region TaskAGVCarryStatusEnum
{
@@ -413,27 +237,6 @@
}
#endregion
- #region TaskAcrossFloorStatusEnum
- {
- Type type = typeof(TaskAcrossFloorStatusEnum);
- List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorStatusEnum)).Cast<int>().ToList();
- int index = 0;
- foreach (var item in enums)
- {
- FieldInfo? fieldInfo = typeof(TaskAcrossFloorStatusEnum).GetField(((TaskAcrossFloorStatusEnum)item).ToString());
- DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (description != null)
- {
- data.Add(new { key = item.ToString(), value = description.Description });
- }
- else
- {
- data.Add(new { key = item.ToString(), value = item.ToString() });
- }
- index++;
- }
- }
- #endregion
result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
new file mode 100644
index 0000000..fd3ebb7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
@@ -0,0 +1,85 @@
+锘縰sing Autofac.Core;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.Log;
+using WIDESEAWCS_Common.APIEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Agv;
+using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_TaskInfoService
+{
+ public partial class TaskService
+ {
+ // 鍒涘缓涓�涓娇鐢ㄥ皬椹煎嘲鍛藉悕娉曠殑搴忓垪鍖栬缃�
+ JsonSerializerSettings settings = new JsonSerializerSettings
+ {
+ ContractResolver = new CamelCasePropertyNamesContractResolver()
+ };
+ /// <summary>
+ /// AGV浠诲姟鍙戦��
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent AgvSendTask(AgvTaskSendDTO taskModel, APIEnum SendTask = APIEnum.AgvSendTask)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+
+ 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);
+ WriteLog.Write_Log("AGV鍏ュ簱浠诲姟涓嬪彂", "鍑哄簱浠诲姟涓嬪彂鎺ュ彛", "璇锋眰浠诲姟", $"璇锋眰锛歿request},鍥炰紶锛歿response}");
+ AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>() ?? throw new Exception("AGV浠诲姟鍙戦�佹湭杩斿洖缁撴灉");
+ if (agvContent.Success)
+ {
+ content.OK();
+ }
+ else
+ {
+ content.Error(agvContent.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ public WebResponseContent AgvCancelTask(AgvTaskCancelDTO taskModel, APIEnum SendTask = APIEnum.AgvTaskCancel)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ 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();
+ }
+ else
+ {
+ content.Error(agvContent.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs"
index c6d4fb6..a2fd18f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs"
@@ -53,14 +53,9 @@
int taskNum = task.TaskNum;
int taskState = task.TaskState;
- if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
+ if (!int.TryParse(Enum.Parse<TaskAGVCarryStatusEnum>(taskState.ToString()).ToString(), out int result))
{
- if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
- isNormal = false;
- }
- else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
- {
- if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
+ if ((int)(TaskAGVCarryStatusEnum)result > (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
isNormal = false;
}
@@ -93,14 +88,9 @@
int NewtaskNum = task.TaskNum;
int taskState = task.TaskState;
- if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
+ if (!int.TryParse(Enum.Parse<TaskAGVCarryStatusEnum>(taskState.ToString()).ToString(), out int result))
{
- if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
- isNormal = false;
- }
- else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
- {
- if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
+ if ((int)(TaskAGVCarryStatusEnum)result > (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
isNormal = false;
}
@@ -124,52 +114,6 @@
}
}
- public void AddTaskExecuteDetail(List<int> taskNums, string description = "")
- {
- try
- {
- List<Dt_TaskExecuteDetail> taskExecuteDetails = new List<Dt_TaskExecuteDetail>();
- foreach (var item in taskNums)
- {
- bool isNormal = true;
- Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == item);
- if (task == null) return;
- int taskNum = task.TaskNum;
- int taskState = task.TaskState;
-
- if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
- {
- if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
- isNormal = false;
- }
- else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
- {
- if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
- isNormal = false;
- }
-
- Dt_TaskExecuteDetail taskExecuteDetail = new()
- {
- IsManual = App.User.UserId > 0,
- IsNormal = isNormal,
- TaskNum = taskNum,
- TaskId = task.TaskId,
- TaskState = taskState,
- Description = description,
- CurrentAddress = task.CurrentAddress,
- NextAddress = task.NextAddress,
- };
- taskExecuteDetails.Add(taskExecuteDetail);
- }
-
- BaseDal.AddData(taskExecuteDetails);
- }
- catch (Exception ex)
- {
-
- }
- }
-
public WebResponseContent GetDetailInfo(int taskNum)
{
WebResponseContent content = new();
@@ -182,14 +126,14 @@
if (task != null)
{
- if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result))
+ if (!int.TryParse(Enum.Parse<TaskAGVCarryTypeEnum>(task.TaskType.ToString()).ToString(), out int result))
{
- steps = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().Where(x => x <= (int)TaskOutStatusEnum.OutFinish).ToList();
+ steps = Enum.GetValues(typeof(TaskAGVCarryStatusEnum)).Cast<int>().Where(x => x <= (int)TaskAGVCarryStatusEnum.AGV_CarryFinish).ToList();
foreach (var item in steps)
{
object obj;
- FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
+ FieldInfo? fieldInfo = typeof(TaskAGVCarryStatusEnum).GetField(((TaskAGVCarryStatusEnum)item).ToString());
DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
if (descriptionAttribute != null)
{
@@ -197,38 +141,10 @@
}
else
{
- obj = new { title = item, description = ((TaskOutStatusEnum)item).ToString() };
+ obj = new { title = item, description = ((TaskAGVCarryStatusEnum)item).ToString() };
}
list.Add(obj);
}
- }
- else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result))
- {
- steps = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().Where(x => x <= (int)TaskInStatusEnum.InFinish).ToList();
- foreach (var item in steps)
- {
- object obj;
- FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
- DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
- if (descriptionAttribute != null)
- {
- obj = new { title = item, description = descriptionAttribute.Description };
- }
- else
- {
- obj = new { title = item, description = ((TaskInStatusEnum)item).ToString() };
- }
- list.Add(obj);
- }
- }
-
- else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(task.TaskType.ToString()).ToString(), out result))
- {
- //todo 璋冪敤WMS绉诲簱瀹屾垚
- }
- else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(task.TaskType.ToString()).ToString(), out result))
- {
-
}
else
{
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs"
index f374b24..5907898 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -5,19 +5,25 @@
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using SqlSugar;
+using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
+using System.Reflection;
+using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.Log;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_BasicInfoService;
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.MES;
using WIDESEAWCS_DTO.TaskInfo;
-using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_ISystemServices;
@@ -43,6 +49,8 @@
private readonly IDt_StationManagerRepository _stationManagerRepository;
private readonly IRouterRepository _routerRepository;
private readonly ITask_HtyRepository _taskHtyRepository;
+ private readonly IApiInfoRepository _apiInfoRepository;
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
private Dictionary<string, OrderByType> _taskOrderBy = new()
{
@@ -56,20 +64,12 @@
#region 鑾峰彇鎵�鏈変换鍔$被鍨嬨�佺姸鎬�
- public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList();
- public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
- public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList();
-
- public List<int> TaskInboundStates => typeof(TaskInStatusEnum).GetEnumIndexList();
-
- public List<int> TaskOutboundStates => typeof(TaskOutStatusEnum).GetEnumIndexList();
- public List<int> TaskRelocationboundStates => typeof(TaskRelocationStatusEnum).GetEnumIndexList();
#endregion 鑾峰彇鎵�鏈変换鍔$被鍨嬨�佺姸鎬�
- public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository) : base(BaseDal)
+ public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IApiInfoRepository apiInfoRepository,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
{
_routerService = routerService;
_taskExecuteDetailService = taskExecuteDetailService;
@@ -80,6 +80,8 @@
_stationManagerRepository = stationManagerRepository;
_routerRepository = routerRepository;
_taskHtyRepository = htyRepository;
+ _apiInfoRepository = apiInfoRepository;
+ _unitOfWorkManage = unitOfWorkManage;
}
/// <summary>
@@ -139,13 +141,9 @@
{
var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
- if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+ if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.CarryGroup)
{
- task.TaskState = (int)TaskOutStatusEnum.OutPending;
- }
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
- {
- task.TaskState = (int)TaskInStatusEnum.InPending;
+ task.TaskState = (int)TaskAGVCarryStatusEnum.AGV_CarryException;
}
task.ExceptionMessage = message;
task.ModifyDate = DateTime.Now;
@@ -196,29 +194,15 @@
int oldState = task.TaskState;
if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
{
- int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+ int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
task.TaskState = nextStatus;
- if (task.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish)
+ if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
{
- task.ModifyDate = DateTime.Now;
- task.Modifier = "System";
-
- Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
- task_Hty.TaskId = 0;
-
- BaseDal.DeleteData(task);
- _taskHtyRepository.AddData(task_Hty);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
}
- }
- else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
- {
- int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
- task.TaskState = nextStatus;
-
-
}
else
{
@@ -273,7 +257,7 @@
{
var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
- if (task.TaskState != (int)TaskInStatusEnum.InPending && task.TaskState != (int)TaskOutStatusEnum.OutPending)
+ if (task.TaskState != (int)TaskAGVCarryStatusEnum.AGV_CarryException && task.TaskState != (int)TaskAGVCarryStatusEnum.AGV_CarryException)
{
return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙仮澶�,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
}
@@ -285,14 +269,7 @@
}
else
{
- if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
- {
- task.TaskState = (int)TaskOutStatusEnum.OutNew;
- }
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
- {
- task.TaskState = (int)TaskInStatusEnum.InNew;
- }
+ throw new Exception($"鏈壘鍒颁换鍔″彿{taskNum}鎭㈠鐘舵��");
}
task.ExceptionMessage = string.Empty;
@@ -379,5 +356,122 @@
#endregion 閲嶅啓鏂规硶
+
+ /// <summary>
+ /// 鏇存柊浠诲姟淇℃伅鍙婃坊鍔犱换鍔℃槑缁嗚褰�
+ /// </summary>
+ /// <param name="task">浠诲姟鍘熷璞″疄渚�(鏈慨鏀圭殑鏁版嵁瀵硅薄)</param>
+ /// <param name="taskStatus">淇敼鍚庣殑浠诲姟鐘舵��</param>
+ /// <param name="deviceCode">淇敼鍚庣殑璁惧缂栧彿</param>
+ /// <param name="sourceAddress">淇敼鍚庣殑璧峰鍦板潃</param>
+ /// <param name="targetAddress">淇敼鍚庣殑鐩爣鍦板潃</param>
+ /// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
+ /// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
+ public void UpdateTask(Dt_Task task, TaskAGVCarryStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "")
+ {
+ StringBuilder stringBuilder = new StringBuilder(App.User?.UserId == 0 ? $"绯荤粺鑷姩娴佺▼" : "浜哄伐鎵嬪姩娴佺▼");
+ if (task.SourceAddress != sourceAddress && !string.IsNullOrEmpty(sourceAddress))
+ {
+ stringBuilder.Append($",璧峰鍦板潃鐢眥task.SourceAddress}鍙樻洿涓簕sourceAddress}");
+ task.SourceAddress = sourceAddress;
+ }
+ if (task.TargetAddress != targetAddress && !string.IsNullOrEmpty(targetAddress))
+ {
+ stringBuilder.Append($",鐩爣鍦板潃鐢眥task.TargetAddress}鍙樻洿涓簕targetAddress}");
+ task.TargetAddress = targetAddress;
+ }
+ if (task.CurrentAddress != currentAddress && !string.IsNullOrEmpty(currentAddress))
+ {
+ stringBuilder.Append($",褰撳墠浣嶇疆鐢眥task.CurrentAddress}鍙樻洿涓簕currentAddress}");
+ task.CurrentAddress = currentAddress;
+ }
+ if (task.NextAddress != nextAddress && !string.IsNullOrEmpty(nextAddress))
+ {
+ stringBuilder.Append($",涓嬩竴浣嶇疆鐢眥task.NextAddress}鍙樻洿涓簕nextAddress}");
+ task.NextAddress = nextAddress;
+ }
+ if (task.Roadway != roadwayNo && !string.IsNullOrEmpty(roadwayNo))
+ {
+ stringBuilder.Append($",宸烽亾鍙风敱{task.Roadway}鍙樻洿涓簕roadwayNo}");
+ task.Roadway = roadwayNo;
+ }
+ if (task.TaskState != taskStatus.ObjToInt())
+ {
+ string newStatus = $"{taskStatus}";
+ try
+ {
+ List<int> enums = Enum.GetValues(typeof(TaskAGVCarryStatusEnum)).Cast<int>().ToList();
+ FieldInfo? fieldInfo = typeof(TaskAGVCarryStatusEnum).GetField((taskStatus).ToString());
+ if (fieldInfo != null)
+ {
+ DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+ if (description != null)
+ {
+ newStatus = $"{description.Description}({taskStatus})";
+ }
+ }
+ }
+ catch { }
+ string oldStatus = $"{task.TaskState}";
+ try
+ {
+ FieldInfo? fieldInfo2 = typeof(RouterInOutType).GetField(((TaskAGVCarryStatusEnum)task.TaskState).ToString());
+ if (fieldInfo2 != null)
+ {
+ DescriptionAttribute? description2 = fieldInfo2.GetCustomAttribute<DescriptionAttribute>();
+ if (description2 != null)
+ {
+ oldStatus = $"{description2.Description}({task.TaskState})";
+ }
+ }
+ }
+ catch { }
+ stringBuilder.Append($",浠诲姟鐘舵�佺敱{oldStatus}鍙樻洿涓簕newStatus}");
+
+ task.TaskState = taskStatus.ObjToInt();
+ }
+ BaseDal.UpdateData(task);
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, stringBuilder.ToString());
+ }
+
+ // 鍦ㄧ被涓坊鍔犻潤鎬侀攣瀵硅薄
+ private static readonly object _taskCompleteLock = new object();
+
+ /// <summary>
+ /// 浠诲姟瀹屾垚
+ /// </summary>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ public WebResponseContent TaskCompleted(int taskNum)
+ {
+ WebResponseContent content = new WebResponseContent();
+
+ // 浣跨敤閿佺‘淇濆悓涓�浠诲姟涓嶄細骞跺彂澶勭悊
+ lock (_taskCompleteLock)
+ {
+ try
+ {
+ WriteLog.Write_Log("浠诲姟瀹屾垚", "浠诲姟瀹屾垚鎺ュ彛", "浠诲姟鍙�", $"浠诲姟锛歿taskNum}");
+
+ // 鍐嶆鏌ヨ浠诲姟鐘舵�侊紝闃叉鍦ㄩ攣绛夊緟鏈熼棿浠诲姟鐘舵�佸凡鏀瑰彉
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task == null)
+ {
+ return content.Error($"浠诲姟{taskNum}涓嶅瓨鍦�");
+ }
+ //浠诲姟瀹屾垚閫昏緫
+ _unitOfWorkManage.BeginTran();
+
+ _unitOfWorkManage.CommitTran();
+ content.OK("浠诲姟瀹屾垚");
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ }
}
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs"
index 110d9cc..4b89083 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs"
@@ -10,12 +10,15 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.Log;
using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.Agv;
using WIDESEAWCS_DTO.TaskInfo;
-using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
@@ -30,15 +33,87 @@
private readonly ITaskRepository _taskRepository;
private readonly ITaskService _taskService;
private readonly ISys_ConfigService _sys_ConfigService;
- public CommonAGVJob(ITaskRepository taskRepository,ITaskService taskService,ISys_ConfigService configService)
+ private readonly IDt_StationManagerRepository _stationManagerRepository;
+ public CommonAGVJob(ITaskRepository taskRepository,ITaskService taskService,ISys_ConfigService configService,IDt_StationManagerRepository stationManagerRepository)
{
_taskRepository = taskRepository;
_taskService = taskService;
_sys_ConfigService = configService;
+ _stationManagerRepository = stationManagerRepository;
}
public Task Execute(IJobExecutionContext context)
{
+ var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskAGVCarryStatusEnum.AGV_CarryNew.ObjToInt())).ToList().OrderBy(x => x.Grade).ThenBy(x => x.TaskNum).ToList();
+ #region 浠诲姟涓嬪彂
+ if (newTasks.Count > 0)
+ {
+ WriteLog.Write_Log("AGV浠诲姟涓嬪彂", "浠诲姟涓嬪彂鎺ュ彛", "娣诲姞浠诲姟", $"浠诲姟锛歿newTasks.ToJson()}");
+ try
+ {
+ AgvTaskSendDTO agvTaskSend = new AgvTaskSendDTO()
+ {
+ MissionData = new List<MissionDataItem>()
+ };
+ string taskGroupId = Guid.NewGuid().ToString().Replace("-", "");
+
+ foreach (var task in newTasks)
+ {
+ //鑾峰彇鐩爣鐐硅揣浣�
+ Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationLocation == task.CurrentAddress);
+ //鑾峰彇鎷i�夊嚭搴撶珯鍙�
+ Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationLocation == task.NextAddress);
+
+ if (stationManagerStart == null || stationManagerStart == null) throw new Exception($"鏈壘鍒颁换鍔″彿${task.TaskNum}璧峰鐐箋task.CurrentAddress}鎴栫洰鏍囩偣{task.NextAddress}浣嶇疆淇℃伅");
+ agvTaskSend.RequestId = taskGroupId;
+ agvTaskSend.MissionCode = task.TaskNum.ToString();
+ agvTaskSend.ViewBoardType = "W01";
+ //鏂欑瀛愭惉杩愪换鍔�
+ MissionDataItem missionDataItem = new MissionDataItem()
+ {
+ Sequence = task.TaskNum,
+ BinCode = task.PalletCode,
+ StartPosition = stationManagerStart.stationLocation,
+ EndPosition = stationManagerEnd.stationLocation,
+ TakeActionConfirm = false,
+ TakeActionInform = false,
+ PutActionConfirm = true,
+ PutActionInform = true,
+ };
+ agvTaskSend.MissionData.Add(missionDataItem);
+ }
+ if (newTasks.OrderByDescending(x => x.Grade).FirstOrDefault()?.Grade == 0)
+ {
+ agvTaskSend.Priority = 99;
+ }
+ else
+ {
+ agvTaskSend.Priority = 99 - newTasks.OrderByDescending(x => x.Grade).FirstOrDefault().Grade;
+ }
+ //鍙戦�丄GV浠诲姟
+ WebResponseContent content = _taskService.AgvSendTask(agvTaskSend, APIEnum.AgvSendTask);
+ if (!content.Status)
+ throw new Exception(content.Message);
+ newTasks.ForEach(x =>
+ {
+ x.Dispatchertime = DateTime.Now;
+ x.TaskState = TaskAGVCarryStatusEnum.AGV_CarryExecuting.ObjToInt();
+ });
+ _taskService.UpdateData(newTasks);
+ Thread.Sleep(500);
+ }
+ catch (Exception ex)
+ {
+ newTasks.ForEach(x =>
+ {
+ x.TaskState = TaskAGVCarryStatusEnum.AGV_CarryException.ObjToInt();
+ x.ExceptionMessage = ex.Message;
+ });
+ _taskService.UpdateData(newTasks);
+ }
+
+ }
+ #endregion
return Task.CompletedTask;
}
--
Gitblit v1.9.3