From 3dedd7d65f61d09a1117e2586dd71b9e433e6b8b Mon Sep 17 00:00:00 2001
From: 陈勇 <chenyong@hnkhzn.com>
Date: 星期一, 18 十一月 2024 18:49:00 +0800
Subject: [PATCH] 优化结构
---
.gitignore | 16 +
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs | 19 +
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs | 36 ++
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 198 +++++-------
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 2
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj | 1
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 102 +++---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/CateGoryConst.cs | 19 +
/dev/null | 3
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 309 +++++++------------
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.MvcApplicationPartsAssemblyInfo.cs | 2
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs | 47 +++
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs | 14
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_ConfigService.cs | 38 ++
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Config.cs | 54 +++
15 files changed, 497 insertions(+), 363 deletions(-)
diff --git a/.gitignore b/.gitignore
index 6ce55a7..3c927c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1323,3 +1323,19 @@
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/project.nuget.cache
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/WIDESEA_Tasks.csproj.nuget.dgspec.json
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/Debug/net6.0/staticwebassets.removed.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/鍖栨垚鍏ュ簱杈撻�佺嚎/Logs_20241118165252.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/闄堝寲1鍙峰爢鍨涙満/Logs_20241118165246.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/闄堝寲鍏ュ簱杈撻�佺嚎/Logs_20241118165251.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/闄堝寲鍑哄簱杈撻�佺嚎/Logs_20241118165251.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/闈欑疆1鍙峰爢鍨涙満/Logs_20241118165301.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/闈欑疆杈撻�佺嚎/Logs_20241118165311.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/WIDESEAWCS_Server.staticwebassets.endpoints.json
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/EndpointInfo/WIDESEAWCS_Server.OpenApiFiles.cache
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/EndpointInfo/WIDESEAWCS_Server_V1.json
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/EndpointInfo/WIDESEAWCS_Server_V2.json
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.build.WIDESEAWCS_Server.props
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.WIDESEAWCS_Server.Microsoft.AspNetCore.StaticWebAssetEndpoints.props
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.WIDESEAWCS_Server.Microsoft.AspNetCore.StaticWebAssets.props
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.build.endpoints.json
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.references.upToDateCheck.txt
+/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.upToDateCheck.txt
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/CateGoryConst.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/CateGoryConst.cs
new file mode 100644
index 0000000..97e05b7
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/CateGoryConst.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common
+{
+ /// <summary>
+ /// 鍒嗙被甯搁噺
+ /// </summary>
+ public class CateGoryConst
+ {
+ /// <summary>
+ /// IP鎺ュ彛鍦板潃
+ /// </summary>
+ public const string CONFIG_SYS_IPAddress = "SYS_IPAddress";
+ }
+}
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
new file mode 100644
index 0000000..78d6eb9
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Common
+{
+ public class SysConfigKeyConst
+ {
+ /// <summary>
+ /// WMS BASE
+ /// </summary>
+ public const string WMSIP_BASE = "WMSIPBASE";
+
+ /// <summary>
+ /// 璇锋眰浠诲姟
+ /// </summary>
+ public const string RequestTask = "RequestTask";
+
+ /// <summary>
+ /// 璇锋眰浠诲姟璐т綅
+ /// </summary>
+ public const string RequestLocation = "RequestLocation";
+
+ /// <summary>
+ /// 淇敼浠诲姟鐘舵��
+ /// </summary>
+
+ public const string UpdateTask = "UpdateTask";
+
+ /// <summary>
+ /// 浠诲姟瀹屾垚
+ /// </summary>
+ public const string CompleteTask = "CompleteTask";
+
+ /// <summary>
+ /// 璇锋眰绌烘墭鐩樹换鍔�
+ /// </summary>
+ public const string RequestTrayInTask = "RequestTrayInTask";
+
+ /// <summary>
+ /// 绌烘墭鐩樺疄鐩樺嚭搴撲换鍔�
+ /// </summary>
+ public const string RequestTrayOutTask = "RequestTrayOutTask";
+ }
+}
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs
new file mode 100644
index 0000000..2d55ffb
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.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_ISystemRepository
+{
+ public interface ISys_ConfigRepository : IRepository<Sys_Config>
+ {
+ }
+}
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs
new file mode 100644
index 0000000..4796527
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs
@@ -0,0 +1,36 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_ISystemServices
+{
+ public interface ISys_ConfigService : IService<Sys_Config>
+ {
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夌郴缁熼厤缃�
+ /// </summary>
+ /// <returns></returns>
+ List<Sys_Config> GetAll();
+
+ /// <summary>
+ /// 鏍规嵁绫诲埆鑾峰彇绯荤粺閰嶇疆
+ /// </summary>
+ /// <param name="category">绫诲埆</param>
+ /// <returns></returns>
+ List<Sys_Config> GetConfigsByCategory(string category);
+
+ /// <summary>
+ /// 鏍规嵁绫诲埆鍜孠ey鑾峰彇绯荤粺閰嶇疆
+ /// </summary>
+ /// <param name="category">绫诲埆</param>
+ /// <param name="configKey">閰嶇疆Key</param>
+ /// <returns></returns>
+ Sys_Config GetByConfigKey(string category, string configKey);
+ }
+}
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
index 1a50def..8a41a26 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -63,7 +63,7 @@
/// <param name="palletCode">鎵樼洏鍙�</param>
/// <param name="sourceAddress">璧峰鍦板潃</param>
/// <returns></returns>
- WebResponseContent RequestWMSTask(string palletCode, string sourceAddress);
+ Task<WebResponseContent> RequestWMSTask(string palletCode, string sourceAddress);
/// <summary>
/// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Config.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Config.cs
new file mode 100644
index 0000000..bf89f4b
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Config.cs
@@ -0,0 +1,54 @@
+锘縰sing SqlSugar;
+using WIDESEAWCS_Core.DB.Models;
+using WIDESEAWCS_Core.Tenants;
+
+namespace WIDESEAWCS_Model.Models;
+
+/// <summary>
+/// 绯荤粺閰嶇疆琛�
+/// </summary>
+[SugarTable("Sys_Config", "绯荤粺閰嶇疆琛�"), MultiTenant]
+public class Sys_Config : BaseEntity
+{
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆閿�
+ /// </summary>
+ [SugarColumn(ColumnDescription = "閰嶇疆閿�", Length = 255, IsNullable = false)]
+ public string ConfigKey { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆鍊�
+ /// </summary>
+ [SugarColumn(ColumnDescription = "閰嶇疆鍊�", IsNullable = false, ColumnDataType = "text")]
+ public string ConfigValue { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被
+ /// </summary>
+ [SugarColumn(ColumnDescription = "鍒嗙被", Length = 255, IsNullable = false)]
+ public string Category { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(ColumnDescription = "澶囨敞", Length = 255, IsNullable = true)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鐮�
+ /// </summary>
+ [SugarColumn(ColumnDescription = "鎺掑簭鐮�", IsNullable = true)]
+ public int? SortCode { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ [SugarColumn(ColumnDescription = "鐘舵��", Length = 20, IsNullable = true)]
+ public string Status { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.MvcApplicationPartsAssemblyInfo.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.MvcApplicationPartsAssemblyInfo.cs
index 5233109..3d23fae 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.MvcApplicationPartsAssemblyInfo.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.MvcApplicationPartsAssemblyInfo.cs
@@ -28,7 +28,7 @@
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("WIDESEAWCS_SystemRepository")]
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("WIDESEAWCS_SystemServices")]
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("WIDESEAWCS_TaskInfoRepository")]
-[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("WIDESEAWCS_TaskInfoService")]
+[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("WIDESEAWCs_TaskInfoService")]
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("WIDESEAWCS_Tasks")]
// 鐢� MSBuild WriteCodeFragment 绫荤敓鎴愩��
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.WIDESEAWCS_Server.Microsoft.AspNetCore.StaticWebAssets.props b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.WIDESEAWCS_Server.Microsoft.AspNetCore.StaticWebAssets.props
deleted file mode 100644
index 056a461..0000000
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.WIDESEAWCS_Server.Microsoft.AspNetCore.StaticWebAssets.props
+++ /dev/null
@@ -1,84 +0,0 @@
-锘�<Project>
- <ItemGroup>
- <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\css\style.css))">
- <SourceType>Package</SourceType>
- <SourceId>WIDESEAWCS_Server</SourceId>
- <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
- <BasePath>_content/WIDESEAWCS_Server</BasePath>
- <RelativePath>css/style.css</RelativePath>
- <AssetKind>All</AssetKind>
- <AssetMode>All</AssetMode>
- <AssetRole>Primary</AssetRole>
- <RelatedAsset></RelatedAsset>
- <AssetTraitName></AssetTraitName>
- <AssetTraitValue></AssetTraitValue>
- <CopyToOutputDirectory>Never</CopyToOutputDirectory>
- <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
- <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\css\style.css))</OriginalItemSpec>
- </StaticWebAsset>
- <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\favicon.ico))">
- <SourceType>Package</SourceType>
- <SourceId>WIDESEAWCS_Server</SourceId>
- <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
- <BasePath>_content/WIDESEAWCS_Server</BasePath>
- <RelativePath>favicon.ico</RelativePath>
- <AssetKind>All</AssetKind>
- <AssetMode>All</AssetMode>
- <AssetRole>Primary</AssetRole>
- <RelatedAsset></RelatedAsset>
- <AssetTraitName></AssetTraitName>
- <AssetTraitValue></AssetTraitValue>
- <CopyToOutputDirectory>Never</CopyToOutputDirectory>
- <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
- <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\favicon.ico))</OriginalItemSpec>
- </StaticWebAsset>
- <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\js\anime.min.js))">
- <SourceType>Package</SourceType>
- <SourceId>WIDESEAWCS_Server</SourceId>
- <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
- <BasePath>_content/WIDESEAWCS_Server</BasePath>
- <RelativePath>js/anime.min.js</RelativePath>
- <AssetKind>All</AssetKind>
- <AssetMode>All</AssetMode>
- <AssetRole>Primary</AssetRole>
- <RelatedAsset></RelatedAsset>
- <AssetTraitName></AssetTraitName>
- <AssetTraitValue></AssetTraitValue>
- <CopyToOutputDirectory>Never</CopyToOutputDirectory>
- <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
- <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\js\anime.min.js))</OriginalItemSpec>
- </StaticWebAsset>
- <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\logo.jpg.jpg))">
- <SourceType>Package</SourceType>
- <SourceId>WIDESEAWCS_Server</SourceId>
- <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
- <BasePath>_content/WIDESEAWCS_Server</BasePath>
- <RelativePath>logo.jpg.jpg</RelativePath>
- <AssetKind>All</AssetKind>
- <AssetMode>All</AssetMode>
- <AssetRole>Primary</AssetRole>
- <RelatedAsset></RelatedAsset>
- <AssetTraitName></AssetTraitName>
- <AssetTraitValue></AssetTraitValue>
- <CopyToOutputDirectory>Never</CopyToOutputDirectory>
- <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
- <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\logo.jpg.jpg))</OriginalItemSpec>
- </StaticWebAsset>
- <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\swg-login.html))">
- <SourceType>Package</SourceType>
- <SourceId>WIDESEAWCS_Server</SourceId>
- <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
- <BasePath>_content/WIDESEAWCS_Server</BasePath>
- <RelativePath>swg-login.html</RelativePath>
- <AssetKind>All</AssetKind>
- <AssetMode>All</AssetMode>
- <AssetRole>Primary</AssetRole>
- <RelatedAsset></RelatedAsset>
- <AssetTraitName></AssetTraitName>
- <AssetTraitValue></AssetTraitValue>
- <CopyToOutputDirectory>Never</CopyToOutputDirectory>
- <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
- <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\swg-login.html))</OriginalItemSpec>
- </StaticWebAsset>
- </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.build.WIDESEAWCS_Server.props b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.build.WIDESEAWCS_Server.props
deleted file mode 100644
index 5a6032a..0000000
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets/msbuild.build.WIDESEAWCS_Server.props
+++ /dev/null
@@ -1,3 +0,0 @@
-锘�<Project>
- <Import Project="Microsoft.AspNetCore.StaticWebAssets.props" />
-</Project>
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs
new file mode 100644
index 0000000..c0f6b58
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_ISystemRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_SystemRepository
+{
+ public class Sys_ConfigRepository : RepositoryBase<Sys_Config>, ISys_ConfigRepository
+ {
+ public Sys_ConfigRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+ {
+
+ }
+ }
+}
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_ConfigService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_ConfigService.cs
new file mode 100644
index 0000000..b70e48d
--- /dev/null
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_ConfigService.cs
@@ -0,0 +1,38 @@
+锘�
+using System.Net;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_ISystemRepository;
+using WIDESEAWCS_ISystemServices;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEA_Services
+{
+ public class Sys_ConfigService : ServiceBase<Sys_Config, ISys_ConfigRepository>, ISys_ConfigService
+ {
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+ public Sys_ConfigService(ISys_ConfigRepository repository, IUnitOfWorkManage unitOfWorkManage) : base(repository)
+ {
+ _unitOfWorkManage = unitOfWorkManage;
+ }
+
+ /// <inheritdoc/>
+ public List<Sys_Config> GetAll()
+ {
+ return BaseDal.QueryData();
+ }
+
+ /// <inheritdoc/>
+ public List<Sys_Config> GetConfigsByCategory(string category)
+ {
+ return BaseDal.QueryData(x => x.Category == category).ToList();
+ }
+
+ /// <inheritdoc/>
+ public Sys_Config GetByConfigKey(string category, string configKey)
+ {
+ return BaseDal.QueryData(x => x.Category == category && x.ConfigKey == configKey).FirstOrDefault();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 4316572..95ef445 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,34 +1,18 @@
-锘�#region << 鐗� 鏈� 娉� 閲� >>
-
-/*----------------------------------------------------------------
- * 鍛藉悕绌洪棿锛歐IDESEAWCS_TaskInfoService
- * 鍒涘缓鑰咃細鑳$搴�
- * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
- * 鐗堟湰锛歏1.0.0
- * 鎻忚堪锛�
- *
- * ----------------------------------------------------------------
- * 淇敼浜猴細
- * 淇敼鏃堕棿锛�
- * 鐗堟湰锛歏1.0.1
- * 淇敼璇存槑锛�
- *
- *----------------------------------------------------------------*/
-
-#endregion << 鐗� 鏈� 娉� 閲� >>
-
+锘�
using AutoMapper;
using HslCommunication;
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
+using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
@@ -42,13 +26,14 @@
private readonly IRouterService _routerService;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
+ private readonly ISys_ConfigService _sys_ConfigService;
private readonly IMapper _mapper;
private Dictionary<string, OrderByType> _taskOrderBy = new()
- {
- {nameof(Dt_Task.Grade),OrderByType.Desc },
- {nameof(Dt_Task.CreateDate),OrderByType.Asc},
- };
+ {
+ {nameof(Dt_Task.Grade), OrderByType.Desc },
+ {nameof(Dt_Task.CreateDate), OrderByType.Asc},
+ };
public Dictionary<string, OrderByType> TaskOrderBy
{ get { return _taskOrderBy; } set { _taskOrderBy = value; } }
@@ -57,12 +42,13 @@
public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
- public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper) : base(BaseDal)
+ public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService) : base(BaseDal)
{
_routerService = routerService;
_taskExecuteDetailService = taskExecuteDetailService;
_taskExecuteDetailRepository = taskExecuteDetailRepository;
_mapper = mapper;
+ _sys_ConfigService = sys_ConfigService;
}
/// <summary>
@@ -87,7 +73,6 @@
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
- //鏆備笉鑰冭檻澶氳矾寰�
if (routers.Count > 0)
{
task.TaskState = (int)TaskOutStatusEnum.OutNew;
@@ -98,7 +83,6 @@
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
{
List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
- //鏆備笉鑰冭檻澶氳矾寰�
if (routers.Count > 0)
{
task.TaskState = (int)TaskInStatusEnum.InNew;
@@ -127,71 +111,42 @@
/// <param name="palletCode">鎵樼洏鍙�</param>
/// <param name="sourceAddress">璧峰鍦板潃</param>
/// <returns></returns>
- public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress)
+ public async Task<WebResponseContent> RequestWMSTask(string palletCode, string sourceAddress)
{
WebResponseContent content = new WebResponseContent();
try
{
- var hasTask = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
+ var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
if (hasTask != null)
{
- return content;
+ return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
}
- #region 璇锋眰鍏ュ簱浠诲姟宸烽亾
- // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧�
- // 鍒涘缓璇锋眰瀵硅薄
- RequestTaskDto request = new RequestTaskDto()
+
+ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+ var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue;
+ if (wmsBase == null || requestTask == null)
{
- Position = sourceAddress,
- PalletCode = palletCode,
- };
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddrss = wmsBase + requestTask;
- // 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
- var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
-
- // 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
+ var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = sourceAddress, PalletCode = palletCode }.ToJsonString());
content = JsonConvert.DeserializeObject<WebResponseContent>(result);
- WMSTaskDTO task = new WMSTaskDTO();
- // 妫�鏌ョ姸鎬佸苟杩斿洖
if (!content.Status)
{
- task = new WMSTaskDTO()
- {
- TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
- Grade = 1,
- PalletCode = palletCode,
- RoadWay = "CHSC01",
- SourceAddress = sourceAddress,
- TargetAddress = "1020",
- TaskState = (int)TaskOutStatusEnum.Line_OutExecuting,
- Id = 0,
- TaskType = (int)TaskOutboundTypeEnum.Outbound
- };
-
- Dt_Task task1 = _mapper.Map<Dt_Task>(task);
- task1.CurrentAddress = task.SourceAddress;
- task1.NextAddress = "1020";
- BaseDal.AddData(task1);
- return content.OK();
- }
- else
- {
- // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
- task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
- // 澶勭悊浠诲姟骞惰繑鍥炵粨鏋�
- content = ReceiveWMSTask(new List<WMSTaskDTO> { task });
+ // wms澶辫触杩斿洖鍘籒G鍙d换鍔�
+ return content;
}
-
-
- #endregion
+ var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+ return ReceiveWMSTask(new List<WMSTaskDTO> { task });
}
catch (Exception ex)
{
- content = WebResponseContent.Instance.Error(ex.Message);
+ return WebResponseContent.Instance.Error(ex.Message);
}
- return content;
}
/// <summary>
@@ -340,7 +295,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
@@ -372,7 +327,7 @@
/// <param name="status">浠诲姟鐘舵��</param>
public void UpdateTaskStatus(int taskNum, int status)
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return;
task.TaskState = status;
task.ModifyDate = DateTime.Now;
@@ -388,7 +343,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
return UpdateTaskStatusToNext(task);
}
@@ -412,11 +367,6 @@
int oldState = task.TaskState;
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
- //if (task.TaskState >= (int)TaskOutStatusEnum.OutFinish)
- //{
- // return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
- //}
-
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
task.TaskState = nextStatus;
@@ -430,11 +380,6 @@
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
{
- //if (task.TaskState >= (int)TaskInStatusEnum.InFinish)
- //{
- // return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
- //}
-
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
task.TaskState = nextStatus;
@@ -444,14 +389,24 @@
#region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
// TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
// 鍒涘缓璇锋眰瀵硅薄
- RequestTaskDto taskDto = new RequestTaskDto()
+ var taskDto = new RequestTaskDto()
{
Position = task.NextAddress,
PalletCode = task.PalletCode,
};
+ // 鑾峰彇WMSip鍦板潃
+ var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
+ var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue;
+ if (wmsBasez == null || requestLocation == null)
+ {
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddrss = wmsBasez + requestLocation;
+
// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
- var abc = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestLocationTaskAsync", taskDto.ToJsonString()).Result;
+ var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
if (abc == null)
return content.Error();
// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
@@ -462,7 +417,7 @@
return content;
// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
- WMSTaskDTO taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+ var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
task.CurrentAddress = task.NextAddress;
task.NextAddress = taskResult.TargetAddress;
@@ -496,12 +451,17 @@
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�");
#region 鏇存柊浠诲姟鐘舵��
- object request = new
+ // 鑾峰彇WMSip鍦板潃
+ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+ var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
+ if (wmsBase == null || updateTask == null)
{
- TaskNum = task.TaskNum,
- TaskState = task.TaskState
- };
- var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result;
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddress = wmsBase + updateTask;
+
+ var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
content = JsonConvert.DeserializeObject<WebResponseContent>(result);
#endregion
@@ -524,13 +484,13 @@
{
try
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress);
+ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress);
if (task == null) throw new Exception($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
string oldCurrentPos = task.CurrentAddress;
string oldNextPos = task.NextAddress;
- List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
+ var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
if (!routers.Any()) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
task.CurrentAddress = task.NextAddress;
@@ -559,12 +519,12 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
{
- List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
+ var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
@@ -589,8 +549,6 @@
task.Modifier = "System";
BaseDal.UpdateData(task);
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
-
-
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
{
@@ -607,19 +565,34 @@
#region WMS鍚屾浠诲姟瀹屾垚
var keys = new Dictionary<string, object>()
+ {
+ {"taskNum", taskNum}
+ };
+ // 鑾峰彇WMSip鍦板潃
+ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+ var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+ if (wmsBase == null || completeTask == null)
{
- {"taskNum", taskNum}
- };
- var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result;
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddress = wmsBase + completeTask;
+
+ var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
content = JsonConvert.DeserializeObject<WebResponseContent>(result);
#endregion
+
+
#region 鏇存柊浠诲姟鐘舵��
- object request = new
+
+ var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+ if (wmsBase == null || updateTask == null)
{
- TaskNum = task.TaskNum,
- TaskState = task.TaskState
- };
- result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result;
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ wmsIpAddress = wmsBase + updateTask;
+
+ result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
content = JsonConvert.DeserializeObject<WebResponseContent>(result);
#endregion
//content = WebResponseContent.Instance.OK();
@@ -641,14 +614,14 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ 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)
{
return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙仮澶�,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
}
- Dt_TaskExecuteDetail taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.IsNormal, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
+ var taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.IsNormal, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
if (taskExecuteDetail != null)
{
task.TaskState = taskExecuteDetail.TaskState;
@@ -663,7 +636,6 @@
{
task.TaskState = (int)TaskInStatusEnum.InNew;
}
- //todo
}
task.ExceptionMessage = string.Empty;
@@ -688,14 +660,14 @@
/// <returns>杩斿洖澶勭悊缁撴灉</returns>
public WebResponseContent RollbackTaskStatusToLast(int taskNum)
{
- WebResponseContent content = new();
+ WebResponseContent content = new WebResponseContent();
try
{
- Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
int oldState = task.TaskState;
- Dt_TaskExecuteDetail taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.TaskState < task.TaskState && x.TaskState > 0, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
+ var taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.TaskState < task.TaskState && x.TaskState > 0, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
if (taskExecuteDetail != null)
{
task.TaskState = taskExecuteDetail.TaskState;
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
index f1fe745..a3b8daf 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
@@ -9,6 +9,7 @@
<ItemGroup>
<ProjectReference Include="..\WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj" />
<ProjectReference Include="..\WIDESEAWCS_ITaskInfoService\WIDESEAWCS_ITaskInfoService.csproj" />
+ <ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" />
</ItemGroup>
</Project>
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index 3bd8816..246cca2 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -1,33 +1,16 @@
-锘�#region << 鐗� 鏈� 娉� 閲� >>
-
-/*----------------------------------------------------------------
- * 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob
- * 鍒涘缓鑰咃細鑳$搴�
- * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
- * 鐗堟湰锛歏1.0.0
- * 鎻忚堪锛�
- *
- * ----------------------------------------------------------------
- * 淇敼浜猴細
- * 淇敼鏃堕棿锛�
- * 鐗堟湰锛歏1.0.1
- * 淇敼璇存槑锛�
- *
- *----------------------------------------------------------------*/
-
-#endregion << 鐗� 鏈� 娉� 閲� >>
-
-using AutoMapper;
+锘縰sing AutoMapper;
using HslCommunication;
using Newtonsoft.Json;
using Quartz;
using SqlSugar;
using System.Reflection;
+using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IProcessRepository;
+using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
@@ -47,9 +30,10 @@
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly IRouterService _routerService;
private readonly IPlatFormRepository _platFormRepository;
+ private readonly ISys_ConfigService _sys_ConfigService;
private readonly IMapper _mapper;
- public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository)
+ public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository, ISys_ConfigService sys_ConfigService)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
@@ -57,9 +41,10 @@
_mapper = mapper;
_taskRepository = taskRepository;
_platFormRepository = platFormRepository;
+ _sys_ConfigService = sys_ConfigService;
}
- public Task Execute(IJobExecutionContext context)
+ public async Task Execute(IJobExecutionContext context)
{
try
{
@@ -67,89 +52,9 @@
if (conveyorLine != null)
{
List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
- List<Task> tasks = new List<Task>();
foreach (string childDeviceCode in childDeviceCodes)
{
- //Task task = Task.Run(() =>
- //{
- ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
- ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand");
- if (command != null && commandWrite != null)
- {
- var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray();
-
- List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList();
-
- if (deviceProtocolDetails != null)
- {
- foreach (var item in deviceProtocolDetails)
- {
- var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode);
- if (structs[item.ProtocalDetailValue.ObjToInt()] == true)
- {
- MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType);
- if (method != null)
- {
- command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() });
- }
- }
- else
- {
- DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
- string[] x = devicePro.DeviceProAddress.Split('.');
- x[x.Length - 1] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString();
- string DeviceProAddress = string.Join(".", x);
- var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress);
- if (writeRead)
- {
- ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false);
- }
- }
- }
- }
-
- Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
- if (platform != null)
- {
- if (command.InteractiveSignal != 2)
- {
- MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
- if (method != null)
- {
- command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
- int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1;
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
- }
- }
- else
- {
- if (!string.IsNullOrEmpty(platform.Location))
- {
- var strings = platform.Location.Split(',').ToList();
- foreach (var ite in strings)
- {
- int index = strings.FindIndex(p => p == ite);
- ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite);
- if (command1.InteractiveSignal != 2)
- {
- MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
- if (method != null)
- {
- command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
- int count = strings.Count - index;
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
- }
- }
- }
- }
- }
- }
- }
- //});
-
- //tasks.Add(task);
- Task.WaitAll(tasks.ToArray());
+ await ProcessDeviceAsync(conveyorLine, childDeviceCode);
}
}
}
@@ -157,13 +62,84 @@
{
Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
}
- finally
- {
- //WriteDebug("CommonConveyorLineJob", "test");
- //Console.Out.WriteLine(DateTime.Now);
- }
+ }
- return Task.CompletedTask;
+ private async Task ProcessDeviceAsync(CommonConveyorLine conveyorLine, string childDeviceCode)
+ {
+ ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
+ ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand");
+ if (command != null && commandWrite != null)
+ {
+ var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray();
+
+ List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList();
+
+ if (deviceProtocolDetails != null)
+ {
+ foreach (var item in deviceProtocolDetails)
+ {
+ var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode);
+ if (structs[item.ProtocalDetailValue.ObjToInt()] == true)
+ {
+ MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType);
+ if (method != null)
+ {
+ command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() });
+ }
+ }
+ else
+ {
+ DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ string[] x = devicePro.DeviceProAddress.Split('.');
+ x[x.Length - 1] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString();
+ string DeviceProAddress = string.Join(".", x);
+ var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress);
+ if (writeRead)
+ {
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false);
+ }
+ }
+ }
+ }
+
+ Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
+ if (platform != null)
+ {
+ if (command.InteractiveSignal != 2)
+ {
+ MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
+ if (method != null)
+ {
+ command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
+ int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
+ }
+ }
+ else
+ {
+ if (!string.IsNullOrEmpty(platform.Location))
+ {
+ var strings = platform.Location.Split(',').ToList();
+ foreach (var ite in strings)
+ {
+ int index = strings.FindIndex(p => p == ite);
+ ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite);
+ if (command1.InteractiveSignal != 2)
+ {
+ MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
+ if (method != null)
+ {
+ command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
+ int count = strings.Count - index;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
/// <summary>
@@ -177,14 +153,9 @@
{
try
{
- // 鑾峰彇涓嬩竴涓换鍔�
var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
- //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
- //return;
- // 澶勭悊鍑哄簱浠诲姟
HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task);
- // 濡傛灉娌℃湁鍑哄簱浠诲姟锛屽鐞嗘柊浠诲姟
if (task == null && command.Barcode != "NoRead")
{
HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
@@ -192,34 +163,9 @@
}
catch (Exception ex)
{
- return;
+ Console.Out.WriteLine(ex.ToString());
}
}
-
- #region 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃
-
- /// <summary>
- /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- //public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
- //{
- // Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
- // if (task != null)
- // {
- // Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
- // if (newTask != null)
- // {
- // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(newTask);
- // taskCommand.InteractiveSignal = command.InteractiveSignal;
- // conveyorLine.SendCommand(taskCommand, childDeviceCode);
- // }
- // }
- //}
-
- #endregion
/// <summary>
/// 杈撻�佺嚎鍏ュ簱瀹屾垚
@@ -230,15 +176,14 @@
/// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
public void ConveyorLineInFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
- Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish)
{
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
- //Console.Out.WriteLine(content.Serialize());
+ Console.Out.WriteLine(content.Serialize());
}
}
@@ -251,7 +196,7 @@
/// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
- Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
if (task != null)
{
ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
@@ -262,28 +207,6 @@
_taskService.UpdateTaskStatusToNext(task);
}
}
-
- /// <summary>
- /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void RequestOutNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
- {
- Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
- if (task != null)
- {
- Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
- if (newTask != null)
- {
- ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(newTask);
- taskCommand.InteractiveSignal = command.InteractiveSignal;
- conveyorLine.SendCommand(taskCommand, childDeviceCode);
- }
- }
- }
-
/// <summary>
/// 杈撻�佺嚎鍑哄簱瀹屾垚
/// </summary>
@@ -292,7 +215,7 @@
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
- Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
if (task != null)
{
WebResponseContent content = new WebResponseContent();
@@ -312,6 +235,22 @@
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
content = _taskService.UpdateTaskStatusToNext(task);
}
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎浜や簰瀹屾垚
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ /// <param name="value">鍊�</param>
+ public void ConveyorLineSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value)
+ {
+ DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ string[] x = devicePro.DeviceProAddress.Split('.');
+ x[x.Length - 1] = (ProtocalDetailValue + 1).ToString();
+ string DeviceProAddress = string.Join(".", x);
+ conveyorLine.Communicator.Write(DeviceProAddress, value);
}
/// <summary>
@@ -348,14 +287,20 @@
#region 璋冪敤WMS鑾峰彇鍑哄簱浠诲姟
WMSTaskDTO taskDTO = new WMSTaskDTO();
- object dynamic = new
+
+ // 鑾峰彇WMSip鍦板潃
+ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+ var requestTrayOutTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTrayOutTask)?.ConfigValue;
+ if (wmsBase == null || requestTrayOutTask == null)
{
- position = childDeviceCode,
- tag = (int)taskType,
- areaCdoe = roadWay,
- roadways = roadways
- };
- var result = await HttpHelper.PostAsync("http://localhost:5000/api/Task/RequestTrayOutTaskAsync", dynamic.ToJsonString());
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddress = wmsBase + requestTrayOutTask;
+
+
+ var result = await HttpHelper.PostAsync(wmsIpAddress, new { position = childDeviceCode, tag = (int)taskType, areaCdoe = roadWay, roadways = roadways }.ToJsonString());
+ //var result = await HttpHelper.PostAsync("http://localhost:5000/api/Task/RequestTrayOutTaskAsync", dynamic.ToJsonString());
WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
@@ -382,22 +327,6 @@
Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛");
}
return content;
- }
-
- /// <summary>
- /// 杈撻�佺嚎浜や簰瀹屾垚
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
- /// <param name="value">鍊�</param>
- public void ConveyorLineSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value)
- {
- DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
- string[] x = devicePro.DeviceProAddress.Split('.');
- x[x.Length - 1] = (ProtocalDetailValue + 1).ToString();
- string DeviceProAddress = string.Join(".", x);
- conveyorLine.Communicator.Write(DeviceProAddress, value);
}
}
}
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index ba0e4d3..45729cc 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -12,8 +12,8 @@
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using HslCommunication;
-using OfficeOpenXml.ConditionalFormatting;
using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_Common;
namespace WIDESEAWCS_Tasks
{
@@ -24,29 +24,22 @@
/// </summary>
private void HandleTaskOut(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_Task taskOut)
{
- // 濡傛灉娌℃湁浠诲姟锛岀洿鎺ヨ繑鍥�
if (taskOut == null) return;
- // 鏄犲皠浠诲姟鍛戒护
var taskCommand = MapTaskCommand(taskOut, command);
- // 鏍规嵁涓嶅悓鐨勪换鍔$被鍨嬪拰鐘舵�佹墽琛屼笉鍚岀殑閫昏緫
bool isOutTray = taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray;
bool isOutboundAndOutFinish = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.SC_OutFinish;
bool isOutboundAndLineOutExecuting = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting;
if (isOutTray || isOutboundAndOutFinish || !isOutboundAndLineOutExecuting)
{
- // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
conveyorLine.SendCommand(taskCommand, childDeviceCode);
- // 鏍囪鍙戦�佸畬鎴�
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- // 鏇存柊浠诲姟鐘舵��
_taskService.UpdateTaskStatusToNext(taskOut);
}
else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
{
- // 瀹屾垚WMS浠诲姟
CompleteWmsTask(taskOut, command, conveyorLine, childDeviceCode, ProtocalDetailValue);
}
}
@@ -56,20 +49,13 @@
/// </summary>
private void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
- // 鐗瑰畾鏉′欢涓嬪垱寤哄苟鍙戦�佺┖鎵樼洏鍏ュ簱浠诲姟
if ((conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") || (conveyorLine.DeviceCode == "1005" && childDeviceCode == "1048"))
{
- // 璇锋眰WMS绌烘墭鐩樹换鍔�
CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
}
else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
{
- // 璇锋眰WMS鍏ュ簱浠诲姟
RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
- }
- else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1073") || (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1002"))
- {
- //TODO 鍙戦�佺洿鎺ュ幓NG鍙d换鍔�
}
}
@@ -78,7 +64,6 @@
/// </summary>
private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command)
{
- // 浣跨敤mapper鏄犲皠浠诲姟鍛戒护
var comm = _mapper.Map<ConveyorLineTaskCommand>(task);
comm.InteractiveSignal = command.InteractiveSignal;
return comm;
@@ -89,25 +74,30 @@
/// </summary>
private void CompleteWmsTask(Dt_Task taskOut, ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue)
{
- // 濡傛灉娌℃湁鏉$爜淇℃伅锛屽垯璁剧疆鐩爣鍦板潃涓篘G鍦板潃
if (command.Barcode == "NoRead")
{
var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == taskOut.TargetAddress).Capacity;
taskOut.TargetAddress = NGAddress.ToString();
}
- // TODO璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛
var keys = new Dictionary<string, object>()
- {
- {"taskNum", taskOut.TaskNum}
- };
- var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result;
+ {
+ {"taskNum", taskOut.TaskNum}
+ };
+ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+ var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+ if (wmsBase == null || completeTask == null)
+ {
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddress = wmsBase + completeTask;
+
+ var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
if (content.Status)
{
- // 鏍囪鍙戦�佸畬鎴�
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- // 鏇存柊浠诲姟鐘舵��
_taskService.UpdateTaskStatusToNext(taskOut);
}
}
@@ -119,23 +109,23 @@
{
if (command.Barcode != "NoRead")
{
- // 鍒涘缓绌烘墭鐩樹换鍔TO
- WMSTaskDTO taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode);
- // 鍒涘缓骞跺彂閫佷换鍔�
- WebResponseContent content = CreateAndSendTask(taskDTO);
+ var taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode);
+
+ if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null)
+ {
+ WriteInfo(conveyorLine.DeviceName, "褰撳墠鎵樼洏瀛樺湪浠诲姟");
+ return;
+ }
+
+ var content = CreateAndSendTask(taskDTO);
if (content.Status)
{
- // 鏌ヨ浠诲姟
- Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
if (task != null)
{
- // 鏄犲皠浠诲姟鍛戒护
- ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command);
- // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
+ var taskCommand = MapTaskCommand(task, command);
conveyorLine.SendCommand(taskCommand, childDeviceCode);
- // 鏍囪鍙戦�佸畬鎴�
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- // 鏇存柊浠诲姟鐘舵��
_taskService.UpdateTaskStatusToNext(task);
}
}
@@ -147,49 +137,51 @@
/// </summary>
private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode)
{
- #region 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
- WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
- RequestTaskDto request = new RequestTaskDto()
+ var request = new RequestTaskDto()
{
Position = childDeviceCode,
PalletCode = barcode,
};
- var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTrayInTaskAsync", request.ToJsonString()).Result;
+
+ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+ var requestTrayInTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTrayInTask)?.ConfigValue;
+ if (wmsBase == null || requestTrayInTask == null)
+ {
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+ var wmsIpAddrss = wmsBase + requestTrayInTask;
+ var result = HttpHelper.PostAsync(wmsIpAddrss, request.ToJsonString()).Result;
if (result == null)
- return wMSTaskDTO;
+ return new WMSTaskDTO();
WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
- // 妫�鏌ョ姸鎬佸苟杩斿洖
if (!content.Status)
- return wMSTaskDTO;
+ return new WMSTaskDTO();
return JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
-
- #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
}
/// <summary>
/// 璇锋眰WMS浠诲姟
/// </summary>
- private void RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
+ private async void RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
- // 璇锋眰WMS浠诲姟
- if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
+ var content = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (content.Status)
{
- // 鏌ヨ浠诲姟
- Dt_Task task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
+ var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
if (task != null)
{
- // 鏄犲皠浠诲姟鍛戒护
- ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command);
- // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
+ var taskCommand = MapTaskCommand(task, command);
conveyorLine.SendCommand(taskCommand, childDeviceCode);
- // 鏍囪鍙戦�佸畬鎴�
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- // 鏇存柊浠诲姟鐘舵��
_taskService.UpdateTaskStatusToNext(task);
}
}
+ else
+ WriteInfo(conveyorLine.DeviceName, content.Message);
}
}
-}
\ No newline at end of file
+}
+
\ No newline at end of file
--
Gitblit v1.9.3