| | |
| | | /Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/Debug/net6.0/LogLibrary.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/Debug/net6.0/WIDESEA_IStoragIntegrationServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/Debug/net6.0/WIDESEA_Tasks.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/Debug/net6.0/WIDESEA_Core.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/obj/Debug/net6.0/WIDESEA_DTO.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/obj/Debug/net6.0/WIDESEA_IBusinessesRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/obj/Debug/net6.0/WIDESEA_IBusinessServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/obj/Debug/net6.0/WIDESEA_IRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/obj/Debug/net6.0/WIDESEA_IServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/obj/Debug/net6.0/WIDESEA_IStorageBasicRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/obj/Debug/net6.0/WIDESEA_IStorageBasicServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderRepository/obj/Debug/net6.0/WIDESEA_IStorageOutOrderRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageOutOrderService/obj/Debug/net6.0/WIDESEA_IStorageOutOrderServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/obj/Debug/net6.0/WIDESEA_IStorageTaskRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/obj/Debug/net6.0/WIDESEA_IStorageTaskServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/Debug/net6.0/WIDESEA_IStoragIntegrationServices.assets.cache |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/Debug/net6.0/WIDESEA_IStoragIntegrationServices.csproj.FileListAbsolute.txt |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/project.assets.json |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/project.nuget.cache |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/WIDESEA_IStoragIntegrationServices.csproj.nuget.dgspec.json |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/obj/WIDESEA_IStoragIntegrationServices.csproj.nuget.g.props |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/obj/Debug/net6.0/WIDESEA_Model.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/WIDESEAWCS_IBasicInfoRepository.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/WIDESEAWCS_IBasicInfoRepository.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/Debug/net6.0/WIDESEAWCS_IBasicInfoService.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/Debug/net6.0/WIDESEAWCS_IBasicInfoService.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/WIDESEAWCS_IBasicInfoService.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/obj/WIDESEAWCS_IBasicInfoService.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/Debug/net6.0/WIDESEAWCS_ISystemRepository.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/Debug/net6.0/WIDESEAWCS_ISystemRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/WIDESEAWCS_ISystemRepository.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/obj/WIDESEAWCS_ISystemRepository.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_IProcessRepository.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/WIDESEAWCS_IProcessRepository.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/Debug/net6.0/WIDESEAWCS_ProcessRepository.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/Debug/net6.0/WIDESEAWCS_ProcessRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/WIDESEAWCS_ProcessRepository.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/WIDESEAWCS_ProcessRepository.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/Debug/net6.0/WIDESEAWCS_QuartzJob.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/Debug/net6.0/WIDESEAWCS_QuartzJob.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/WIDESEAWCS_QuartzJob.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/WIDESEAWCS_QuartzJob.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.removed.txt |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/WIDESEAWCS_Server.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/WIDESEAWCS_Server.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/Debug/net6.0/WIDESEAWCS_SystemRepository.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/Debug/net6.0/WIDESEAWCS_SystemRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/WIDESEAWCS_SystemRepository.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/WIDESEAWCS_SystemRepository.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/Debug/net6.0/WIDESEAWCS_SystemServices.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/Debug/net6.0/WIDESEAWCS_SystemServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/WIDESEAWCS_SystemServices.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/WIDESEAWCS_SystemServices.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_TaskInfoRepository.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_TaskInfoRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/WIDESEAWCS_TaskInfoRepository.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/WIDESEAWCS_TaskInfoRepository.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/WIDESEAWCS_TaskInfoService.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/WIDESEAWCS_TaskInfoService.csproj.nuget.g.props |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/Debug/net6.0/WIDESEAWCS_Tasks.assets.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/Debug/net6.0/WIDESEAWCS_Tasks.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/project.assets.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/project.nuget.cache |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/WIDESEAWCS_Tasks.csproj.nuget.dgspec.json |
| | | /Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/WIDESEAWCS_Tasks.csproj.nuget.g.props |
| | | /Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/Debug/net6.0/LogLibrary.assets.cache |
| | | /Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/LogLibrary.csproj.nuget.dgspec.json |
| | | /Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/LogLibrary.csproj.nuget.g.props |
| | | /Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/project.assets.json |
| | | /Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/project.nuget.cache |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/obj/Debug/net6.0/WIDESEA_Repository.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/obj/Debug/net6.0/WIDESEA_Services.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/obj/Debug/net6.0/WIDESEA_StorageBasicRepository.GeneratedMSBuildEditorConfig.editorconfig |
| | |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/Debug/net6.0/WIDESEA_StoragIntegrationServices.assets.cache |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/Debug/net6.0/WIDESEA_StoragIntegrationServices.GeneratedMSBuildEditorConfig.editorconfig |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/obj/WIDESEA_StoragIntegrationServices.csproj.nuget.g.props |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/Debug/net6.0/WIDESEA_Tasks.assets.cache |
| | | /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/project.assets.json |
| | | /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 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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"; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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"; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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> |
| | | { |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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> |
| | | /// æ ¹æ®ç±»å«åKeyè·åç³»ç»é
ç½® |
| | | /// </summary> |
| | | /// <param name="category">ç±»å«</param> |
| | | /// <param name="configKey">é
ç½®Key</param> |
| | | /// <returns></returns> |
| | | Sys_Config GetByConfigKey(string category, string configKey); |
| | | } |
| | | } |
| | |
| | | /// <param name="palletCode">æçå·</param> |
| | | /// <param name="sourceAddress">èµ·å§å°å</param> |
| | | /// <returns></returns> |
| | | WebResponseContent RequestWMSTask(string palletCode, string sourceAddress); |
| | | Task<WebResponseContent> RequestWMSTask(string palletCode, string sourceAddress); |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæ¥è¯¢è¾éçº¿æªæ§è¡çä»»å¡ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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; } |
| | | } |
| | |
| | | /// <exception cref="Exception"></exception> |
| | | public T ReadCustomer<T>(string deviceChildCode, string deviceProParamType) where T : IDataTransfer, new() |
| | | { |
| | | if (!IsConnected) throw new Exception($"éè®¯è¿æ¥é误ï¼è¯·æ£æ¥ç½ç»"); |
| | | if (!IsConnected) throw new Exception($"éè®¯è¿æ¥é误ï¼è¯·æ£æ¥ç½ç»:" + DeviceName); |
| | | DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == deviceProParamType && x.DeviceChildCode == deviceChildCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | |
| | | if (devicePro == null) |
| | |
| | | [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 ç±»çæã |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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) |
| | | { |
| | | |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | |  |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | |
| | | #region << ç æ¬ 注 é >> |
| | | |
| | | /*---------------------------------------------------------------- |
| | | * å½å空é´ï¼WIDESEAWCS_TaskInfoService |
| | | * å建è
ï¼è¡ç«¥åº |
| | | * å建æ¶é´ï¼2024/8/2 16:13:36 |
| | | * çæ¬ï¼V1.0.0 |
| | | * æè¿°ï¼ |
| | | * |
| | | * ---------------------------------------------------------------- |
| | | * ä¿®æ¹äººï¼ |
| | | * ä¿®æ¹æ¶é´ï¼ |
| | | * çæ¬ï¼V1.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; |
| | |
| | | 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; } } |
| | |
| | | |
| | | 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> |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | /// <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 |
| | | { |
| | | #region 请æ±å
¥åºä»»å¡å··é |
| | | // TODO: è°ç¨æ¥å£è·åä¸ä¸ä¸ªå°å |
| | | // å建请æ±å¯¹è±¡ |
| | | RequestTaskDto request = new RequestTaskDto() |
| | | var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); |
| | | if (hasTask != null) |
| | | { |
| | | Position = sourceAddress, |
| | | PalletCode = palletCode, |
| | | }; |
| | | return content.Error("å½åæçåå¨ä»»å¡"); |
| | | } |
| | | |
| | | // åé请æ±å¹¶çå¾
ååº |
| | | var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTaskAsync", request.ToJsonString()).Result; |
| | | 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) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddrss = wmsBase + requestTask; |
| | | |
| | | // ååºååååºå
容 |
| | | 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失败è¿åå»NGå£ä»»å¡ |
| | | 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> |
| | |
| | | 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) |
| | | { |
| | |
| | | /// <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; |
| | |
| | | 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); |
| | | } |
| | |
| | | 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; |
| | | |
| | | if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish) |
| | | { |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.DeleteData(task); |
| | | } |
| | | } |
| | | 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; |
| | | |
| | |
| | | #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(); |
| | | // ååºååååºå
容 |
| | |
| | | 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; |
| | | task.TargetAddress = task.NextAddress; |
| | | #endregion |
| | | |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish) |
| | | { |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | } |
| | | } |
| | | else |
| | |
| | | _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 |
| | | |
| | |
| | | { |
| | | 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; |
| | |
| | | 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>(); |
| | |
| | | task.Modifier = "System"; |
| | | BaseDal.UpdateData(task); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºå
¥åºå®æ"); |
| | | |
| | | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) |
| | | { |
| | |
| | | |
| | | #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(); |
| | |
| | | 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; |
| | |
| | | { |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | } |
| | | //todo |
| | | } |
| | | |
| | | task.ExceptionMessage = string.Empty; |
| | |
| | | /// <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; |
| | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj" /> |
| | | <ProjectReference Include="..\WIDESEAWCS_ITaskInfoService\WIDESEAWCS_ITaskInfoService.csproj" /> |
| | | <ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" /> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
| | |
| | | #region << ç æ¬ 注 é >> |
| | | |
| | | /*---------------------------------------------------------------- |
| | | * å½å空é´ï¼WIDESEAWCS_Tasks.ConveyorLineJob |
| | | * å建è
ï¼è¡ç«¥åº |
| | | * å建æ¶é´ï¼2024/8/2 16:13:36 |
| | | * çæ¬ï¼V1.0.0 |
| | | * æè¿°ï¼ |
| | | * |
| | | * ---------------------------------------------------------------- |
| | | * ä¿®æ¹äººï¼ |
| | | * ä¿®æ¹æ¶é´ï¼ |
| | | * çæ¬ï¼V1.0.1 |
| | | * ä¿®æ¹è¯´æï¼ |
| | | * |
| | | *----------------------------------------------------------------*/ |
| | | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using 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; |
| | |
| | | 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; |
| | |
| | | _mapper = mapper; |
| | | _taskRepository = taskRepository; |
| | | _platFormRepository = platFormRepository; |
| | | _sys_ConfigService = sys_ConfigService; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | public async Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | 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> |
| | |
| | | { |
| | | 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); |
| | |
| | | } |
| | | 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> |
| | | /// è¾é线å
¥åºå®æ |
| | |
| | | /// <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()); |
| | | } |
| | | } |
| | | |
| | |
| | | /// <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); |
| | |
| | | _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> |
| | |
| | | /// <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(); |
| | |
| | | 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> |
| | |
| | | #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); |
| | | |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | using HslCommunication; |
| | | using OfficeOpenXml.ConditionalFormatting; |
| | | using WIDESEAWCS_DTO.WMS; |
| | | using WIDESEAWCS_Common; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | |
| | | /// </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); |
| | | } |
| | | } |
| | |
| | | /// </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å£ä»»å¡ |
| | | } |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command) |
| | | { |
| | | // 使ç¨mapperæ å°ä»»å¡å½ä»¤ |
| | | var comm = _mapper.Map<ConveyorLineTaskCommand>(task); |
| | | comm.InteractiveSignal = command.InteractiveSignal; |
| | | return comm; |
| | |
| | | /// </summary> |
| | | private void CompleteWmsTask(Dt_Task taskOut, ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue) |
| | | { |
| | | // å¦ææ²¡ææ¡ç ä¿¡æ¯ï¼åè®¾ç½®ç®æ å°å为NGå°å |
| | | 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); |
| | | } |
| | | } |
| | |
| | | { |
| | | if (command.Barcode != "NoRead") |
| | | { |
| | | // å建空æçä»»å¡DTO |
| | | 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); |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode) |
| | | { |
| | | #region åWMS请æ±ç©ºæçä»»å¡ |
| | | 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 åWMS请æ±ç©ºæçä»»å¡ |
| | | } |
| | | |
| | | /// <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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | try |
| | | { |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputJson = input.ToDictionary(); |
| | | var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/AgingInput", inputJson); |
| | |
| | | try |
| | | { |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputJson = input.ToDictionary(); |
| | | var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/AgingOutput", inputJson); |
| | |
| | | using LogLibrary.Log; |
| | | using Masuit.Tools; |
| | | using Newtonsoft.Json; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_DTO; |
| | |
| | | try |
| | | { |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputJson = input.ToDictionary(); |
| | | var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/CellState", inputJson); |
| | |
| | | { |
| | | Console.WriteLine(err.Message.ToString()); |
| | | LogFactory.GetLog("åçµè¯å±æ§è·å").Error(true, $"\r\r--------------------------------------"); |
| | | LogFactory.GetLog("åçµè¯å±æ§è·å").Error(true, $"请æ±åæ°: {JsonConvert.SerializeObject(input)}"); |
| | | LogFactory.GetLog("åçµè¯å±æ§è·å").Error(true, err.Message); |
| | | LogFactory.GetLog("åçµè¯å±æ§è·å").Error(true, err.StackTrace); |
| | | } |
| | | return Task.FromResult<dynamic>(null); |
| | |
| | | try |
| | | { |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputJson = input.ToDictionary(); |
| | | var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/TrayCellsStatus", inputJson); |
| | |
| | | { |
| | | Console.WriteLine(err.Message.ToString()); |
| | | LogFactory.GetLog("æ´ççµè¯å±æ§è·å").Error(true, $"\r\r--------------------------------------"); |
| | | LogFactory.GetLog("æ´ççµè¯å±æ§è·å").Error(true, $"请æ±åæ°: {JsonConvert.SerializeObject(input)}"); |
| | | LogFactory.GetLog("æ´ççµè¯å±æ§è·å").Error(true, err.Message); |
| | | LogFactory.GetLog("æ´ççµè¯å±æ§è·å").Error(true, err.StackTrace); |
| | | } |
| | | return content; |
| | |
| | | try |
| | | { |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputIson = input.ToDictionary(); |
| | | var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/ProcessApply", inputIson); |
| | |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.Software = "WMS"; |
| | | input.EquipmentCode = "ECH001-B"; |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputJson = input.ToDictionary(); |
| | | LogFactory.GetLog("æçåçµè¯è§£ç»1").Info(true, JsonConvert.SerializeObject(inputJson)); |
| | |
| | | input.SessionId = Guid.NewGuid().ToString(); |
| | | input.Software = "WMS"; |
| | | input.EquipmentCode = "ECH001-B"; |
| | | input.EmployeeNo = "T00001"; |
| | | input.EmployeeNo = "MITest"; |
| | | input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); |
| | | var inputJson = input.ToDictionary(); |
| | | Console.WriteLine(inputJson); |
| | |
| | | ParameterCode = y.ParameterCode, |
| | | ParameterDesc = y.Description, |
| | | TargetValue = y.TargetValue, |
| | | Value = ( DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(), |
| | | Value = (DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(), |
| | | DefectCode = y.UOMCode |
| | | }).ToList() |
| | | }).ToList() |
| | |
| | | { |
| | | MaterielCode = "空æç", |
| | | Id = 0, |
| | | Status = (int)StockStateEmun.å·²å
¥åº |
| | | } |
| | | } |
| | | }; |
| | |
| | | private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing) |
| | | { |
| | | var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); |
| | | boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.å·²å
¥åº; }); |
| | | var stock = new DtStockInfo() |
| | | { |
| | | PalletCode = task.PalletCode, |
| | |
| | | { |
| | | Software = "WMS", |
| | | TrayBarcode = input.PalletCode, |
| | | //EquipmentCode = "EQ_CWJZ01" |
| | | EquipmentCode = "ECH001-B" |
| | | }; |
| | | |
| | |
| | | return content.Error(result.MOMMessage); |
| | | |
| | | // TODO è·åæ¬å°ææ¡å±æ§ä¸æ´ççµè¯å±æ§è·åçå¼è¿è¡å¯¹æ¯ï¼å¦æä¸è´åç»§ç»ï¼å¦åè¿åéè¯¯ä¿¡æ¯ |
| | | var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); |
| | | if (productions.Count <= 0) |
| | | return content.Error("ææ¡å±æ§ä¸åå¨"); |
| | | //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); |
| | | //if (productions.Count <= 0) |
| | | // return content.Error("ææ¡å±æ§ä¸åå¨"); |
| | | |
| | | // è°ç¨CreateBoxingInfoæ¹æ³ï¼å建ç»çä¿¡æ¯ |
| | | |
| | |
| | | |
| | | List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; |
| | | // è°ç¨CreateNewTaskæ¹æ³ï¼å建æ°ä»»å¡ |
| | | content = await CreateNewTask(input, strings); |
| | | content = await CreateNewTask(input, strings); |
| | | if (content.Status) |
| | | { |
| | | var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); |
| | |
| | | return content.OK(data: task); |
| | | } |
| | | |
| | | return await CreateNewTask(input, null, 1); |
| | | // è·åç®æ å°å |
| | | List<string> strings = input.Position == "1016" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; |
| | | |
| | | return await CreateNewTask(input, strings, 1); |
| | | //return await CreateNewTask(input, null, 1); |
| | | } |
| | | catch (Exception) |
| | | { |
| | |
| | | { |
| | | // æ ¹æ®æçç±»åæ¥è¯¢åºåä¿¡æ¯ |
| | | DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound |
| | | ? QueryStockInfoForRealTray(areaCode, roadways) |
| | | : QueryStockInfoForEmptyTray(areaCode, roadways); |
| | | ? QueryStockInfoForRealTrayAsync(areaCode, roadways).Result |
| | | : QueryStockInfoForEmptyTrayAsync(areaCode, roadways).Result; |
| | | |
| | | if (stockInfo == null) |
| | | { |
| | | return content.Error("åºåä¿¡æ¯ä¸åå¨"); |
| | | } |
| | | |
| | | // æ°å¢éå¤ä»»å¡æ ¡éª |
| | | var hasTask = BaseDal.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); |
| | | if (hasTask != null) |
| | | { |
| | | WMSTaskDTO taskDTO1 = CreateTaskDTO(hasTask); |
| | | return content.OK("å·²åå¨ç©ºçåºåºä»»å¡", data: taskDTO1); |
| | | } |
| | | |
| | | // å建æ°ä»»å¡å®ä¾ |
| | |
| | | /// <summary> |
| | | /// æ¥è¯¢å®çåºåä¿¡æ¯ |
| | | /// </summary> |
| | | private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways) |
| | | private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways) |
| | | { |
| | | // TODOæ¶é´æ ¹æ®MOMç³»ç»é
ç½®çåºåºæ¶é´æ¥è·å,ææ¶ä¸ç¥éMOMè¿åçæ¶é´æ¯ä»ä¹æä»¥è¿éæµè¯æ¶å卿¹ |
| | | return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | .Includes(x => x.LocationInfo) |
| | | .Includes(x => x.StockInfoDetails) |
| | | .OrderBy(x => x.CreateDate) |
| | | .First(); |
| | | //return _stockInfoRepository.QueryFirstNavAsync(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now |
| | | // && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.å·²å
¥åº) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result; |
| | | |
| | | var result = await _stockInfoRepository.QueryFirstNavAsync(x => |
| | | x.AreaCode == areaCode && |
| | | Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now && |
| | | x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && |
| | | roadways.Contains(x.LocationInfo.RoadwayNo) && |
| | | x.StockInfoDetails != null && x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.å·²å
¥åº)); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥è¯¢ç©ºçåºåä¿¡æ¯ |
| | | /// </summary> |
| | | private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways) |
| | | private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways) |
| | | { |
| | | return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "空æç") && roadways.Contains(x.LocationInfo.RoadwayNo)) |
| | | .Includes(x => x.LocationInfo) |
| | | .Includes(x => x.StockInfoDetails) |
| | | .OrderBy(x => x.CreateDate) |
| | | .First(); |
| | | //return _stockInfoRepository.QueryFirstNavAsync(x => x.StockInfoDetails.Any(x => x.MaterielCode == "空æç") && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.å·²å
¥åº) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result; |
| | | var result = await _stockInfoRepository.QueryFirstNavAsync(x => |
| | | x.StockInfoDetails != null && x.StockInfoDetails.Any(detail => detail.MaterielCode == "空æç") && |
| | | roadways.Contains(x.LocationInfo.RoadwayNo) && |
| | | x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.å·²å
¥åº) && |
| | | x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | |
| | | // è·åç®æ å°å |
| | | string ToAddress = await GetRoadWayAsync(process); |
| | | //string ToAddress = await GetRoadWayAsync(process); |
| | | string ToAddress = await GetRoadWayAsync(input, process); |
| | | |
| | | // å建æ°ä»»å¡å®ä¾ |
| | | var task = new Dt_Task |
| | |
| | | /// <param name="Direction">æ¹å</param> |
| | | /// <param name="area">å
³ç³»åºå</param> |
| | | /// <returns></returns> |
| | | public async Task<string> GetRoadWayAsync(List<string> process) |
| | | public async Task<string> GetRoadWayAsync(RequestTaskDto input, List<string> process) |
| | | { |
| | | var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free) |
| | | .GroupBy(x => x.RoadwayNo) |