1
刘磊
2024-11-15 1a02791b12af1c7dc0a7816c9ae60f5ede442de4
1
已删除1个文件
已修改24个文件
已添加11个文件
已重命名5个文件
2133 ■■■■■ 文件已修改
.gitignore 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/api/http.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/extension/quartzJob/deviceInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/MOM/RequestEqptRunDto.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/1号堆垛机/Logs_20241029105644.txt 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 187 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs 351 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/Extend/Add.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.js 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/CellStateDto.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/ResultTrayCellsStatus.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/TrayCellUnbindDto.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/TrayCellsStatusDto.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/TrayUnbindDto.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/Dt_EquipmentProcess.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResponeAgingInputDto.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/MOM/ProductionModel.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Production/IProductionRepository.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Production/ProductionRepository.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Production/IProductionService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Production/ProductionService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 548 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/ProductionController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/GlobalUsing.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj.user 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -974,28 +974,206 @@
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/Debug/net6.0/WIDESEAWCS_ProcessRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/Debug/net6.0/WIDESEAWCS_Tasks.csproj.CoreCompileInputs.cache
*.txt
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/Debug/net6.0/WIDESEAWCS_BasicInfoRepository.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/Debug/net6.0/WIDESEAWCS_BasicInfoRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/Debug/net6.0/WIDESEAWCS_BasicInfoRepository.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/WIDESEAWCS_BasicInfoRepository.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/obj/WIDESEAWCS_BasicInfoRepository.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/Debug/net6.0/WIDESEAWCS_BasicInfoService.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/Debug/net6.0/WIDESEAWCS_BasicInfoService.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/Debug/net6.0/WIDESEAWCS_BasicInfoService.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/WIDESEAWCS_BasicInfoService.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/obj/WIDESEAWCS_BasicInfoService.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/Debug/net6.0/WIDESEAWCS_Common.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/Debug/net6.0/WIDESEAWCS_Common.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/Debug/net6.0/WIDESEAWCS_Common.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/WIDESEAWCS_Common.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/obj/WIDESEAWCS_Common.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/Debug/net6.0/WIDESEAWCS_Communicator.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/Debug/net6.0/WIDESEAWCS_Communicator.csproj.AssemblyReference.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/Debug/net6.0/WIDESEAWCS_Communicator.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/Debug/net6.0/WIDESEAWCS_Communicator.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/WIDESEAWCS_Communicator.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Communicator/obj/WIDESEAWCS_Communicator.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/Debug/net6.0/WIDESEAWCS_Core.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/Debug/net6.0/WIDESEAWCS_Core.csproj.AssemblyReference.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/Debug/net6.0/WIDESEAWCS_Core.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/Debug/net6.0/WIDESEAWCS_Core.csproj.FileListAbsolute.txt
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/Debug/net6.0/WIDESEAWCS_Core.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/WIDESEAWCS_Core.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/obj/WIDESEAWCS_Core.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/Debug/net6.0/WIDESEAWCS_DTO.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/Debug/net6.0/WIDESEAWCS_DTO.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/WIDESEAWCS_DTO.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/obj/WIDESEAWCS_DTO.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/Debug/net6.0/WIDESEAWCS_IBasicInfoRepository.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/Debug/net6.0/WIDESEAWCS_IBasicInfoRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/Debug/net6.0/WIDESEAWCS_IBasicInfoRepository.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/obj/project.nuget.cache
/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.csproj.CoreCompileInputs.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.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.pack.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.genruntimeconfig.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/obj/Debug/net6.0/WIDESEAWCS_SystemRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/obj/Debug/net6.0/WIDESEAWCS_SystemServices.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_TaskInfoRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/obj/Debug/net6.0/WIDESEAWCS_TaskInfoService.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/appsettings.json
/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_ISystemServices/obj/Debug/net6.0/WIDESEAWCS_ISystemServices.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/Debug/net6.0/WIDESEAWCS_ISystemServices.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/Debug/net6.0/WIDESEAWCS_ISystemServices.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/WIDESEAWCS_ISystemServices.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/WIDESEAWCS_ISystemServices.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoRepository.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoRepository.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/WIDESEAWCS_ITaskInfoRepository.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/WIDESEAWCS_ITaskInfoRepository.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoService.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoService.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoService.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/WIDESEAWCS_ITaskInfoService.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/obj/WIDESEAWCS_ITaskInfoService.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/Debug/net6.0/WIDESEAWCS_Model.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/Debug/net6.0/WIDESEAWCS_Model.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/project.assets.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/project.nuget.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/WIDESEAWCS_Model.csproj.nuget.dgspec.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/obj/WIDESEAWCS_Model.csproj.nuget.g.props
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/Debug/net6.0/WIDESEAWCS_IProcessRepository.assets.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/Debug/net6.0/WIDESEAWCS_IProcessRepository.GeneratedMSBuildEditorConfig.editorconfig
/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.csproj.AssemblyReference.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/obj/Debug/net6.0/WIDESEAWCS_QuartzJob.csproj.CoreCompileInputs.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/bin/Debug/net6.0/WIDESEAWCS_Server.staticwebassets.runtime.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.build.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.development.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/obj/Debug/net6.0/WIDESEAWCS_ISystemServices.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoRepository/obj/Debug/net6.0/WIDESEAWCS_ITaskInfoRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/staticwebassets.pack.json
/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.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/obj/Debug/net6.0/WIDESEAWCS_Server.genruntimeconfig.cache
/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.csproj.CoreCompileInputs.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.csproj.CoreCompileInputs.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.csproj.CoreCompileInputs.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/Debug/net6.0/WIDESEAWCS_TaskInfoService.csproj.CoreCompileInputs.cache
/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/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/Debug/net6.0/LogLibrary.assets.cache
/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/obj/Debug/net6.0/LogLibrary.GeneratedMSBuildEditorConfig.editorconfig
/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_BusinessesRepository/obj/Debug/net6.0/WIDESEA_BusinessesRepository.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/obj/Debug/net6.0/WIDESEA_BusinessServices.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/obj/Debug/net6.0/WIDESEA_Common.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.GeneratedMSBuildEditorConfig.editorconfig
/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/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_StorageBasicServices/obj/Debug/net6.0/WIDESEA_StorageBasicServices.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderRepository/obj/Debug/net6.0/WIDESEA_StorageOutOrderRepository.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageOutOrderServices/obj/Debug/net6.0/WIDESEA_StorageOutOrderServices.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/obj/Debug/net6.0/WIDESEA_StorageTaskRepository.GeneratedMSBuildEditorConfig.editorconfig
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/obj/Debug/net6.0/WIDESEA_StorageTaskServices.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_Tasks/obj/Debug/net6.0/WIDESEA_Tasks.assets.cache
/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/obj/Debug/net6.0/WIDESEA_Tasks.GeneratedMSBuildEditorConfig.editorconfig
/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/bin/Debug/net6.0/Logs/202411/报文.docx
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/appsettings.json
Code Management/WCS/WIDESEAWCS_Client/src/api/http.js
@@ -19,7 +19,7 @@
}
else if (process.env.NODE_ENV == 'production') {
    axios.defaults.baseURL = 'http://115.159.85.185:9291/';
    axios.defaults.baseURL = 'http://127.0.0.1:9291/';
}
if (!axios.defaults.baseURL.endsWith('/')) {
    axios.defaults.baseURL+="/";
Code Management/WCS/WIDESEAWCS_Client/src/extension/quartzJob/deviceInfo.js
@@ -31,7 +31,7 @@
        icon: "el-icon-document", //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
        type: "primary", //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
        onClick: function () {
          this.$Message.success("点击了按钮");
          this.$Message.success("开启服务");
        },
      });
    },
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
@@ -9,16 +10,22 @@
{
    public class HttpHelper
    {
        public static async Task<string> GetAsync(string serviceAddress, string contentType = "application/json", Dictionary<string, string>? headers = null)
        public static async Task<string> GetAsync(string serviceAddress, Dictionary<string, object> parameters, string contentType = "application/json", Dictionary<string, string>? headers = null)
        {
            try
            {
                string result = string.Empty;
                using HttpClient httpClient = new HttpClient();
                httpClient.Timeout = new TimeSpan(0, 0, 60);
                // å°†å‚数拼接到URL中
                string queryString = string.Join("&", parameters.Select(x => $"{x.Key}={x.Value}"));
                serviceAddress += "?" + queryString;
                foreach (var header in headers)
                    httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                if (headers != null)
                {
                    foreach (var header in headers)
                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                }
                result = await httpClient.GetAsync(serviceAddress).Result.Content.ReadAsStringAsync();
                return result;
@@ -41,9 +48,11 @@
                    using HttpClient httpClient = new HttpClient();
                    httpClient.Timeout = new TimeSpan(0, 0, 60);
                    foreach (var header in headers)
                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                    if (headers != null)
                    {
                        foreach (var header in headers)
                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                    }
                    result = await httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync();
                }
                return result;
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/MOM/RequestEqptRunDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEAWCS_DTO.MOM
{
    public class RequestEqptRunDto : BasicDto
    {
        /// <summary>
        /// äººå‘˜å¯†ç 
        /// </summary>
        public string Password { get; set; }
        /// <summary>
        /// è®¾å¤‡æ¨¡å¼
        /// </summary>
        public string EquipmentModel { get; set; }
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEAWCS_DTO.WMS
namespace WIDESEAWCS_DTO.WMS
{
    public class RequestTaskDto
    {
@@ -17,5 +11,15 @@
        /// æ‰˜ç›˜å·
        /// </summary>
        public string PalletCode { get; set; }
        /// <summary>
        /// ç©ºæ‰˜ç›˜å¯å…¥å··åˆ°
        /// </summary>
        public string PositionList { get; set; }
        /// <summary>
        /// ä»»åŠ¡ç±»åž‹
        /// </summary>
        public string RequestType { get; set; } = string.Empty;
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/bin/Debug/net6.0/Log_PLCReadWrite/1ºÅ¶Ñ¶â»ú/Logs_20241029105644.txt
ÎļþÒÑɾ³ý
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -22,6 +22,7 @@
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
@@ -131,47 +132,55 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                #region çœŸå®žæ•°æ®
                #region è¯·æ±‚入库任务巷道
                // TODO: è°ƒç”¨æŽ¥å£èŽ·å–ä¸‹ä¸€ä¸ªåœ°å€
                //// åˆ›å»ºè¯·æ±‚对象
                //RequestTaskDto request = new RequestTaskDto()
                //{
                //    Position = sourceAddress,
                //    PalletCode = palletCode,
                //};
                //// å‘送请求并等待响应
                //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
                //// ååºåˆ—化响应内容
                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                //// æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                //if (!content.Status)
                //    return content;
                //// ååºåˆ—化任务数据
                //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                //// å¤„理任务并返回结果
                //content = ReceiveWMSTask(new List<WMSTaskDTO> { task });
                #endregion
                WMSTaskDTO taskDTO = new WMSTaskDTO()
                // åˆ›å»ºè¯·æ±‚对象
                RequestTaskDto request = new RequestTaskDto()
                {
                    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                    Grade = 1,
                    Position = sourceAddress,
                    PalletCode = palletCode,
                    RoadWay = "CHSC01",
                    SourceAddress = sourceAddress,
                    TargetAddress = "CHSC01",
                    TaskState = (int)TaskInStatusEnum.InNew,
                    Id = 0,
                    TaskType = (int)TaskInboundTypeEnum.Inbound
                };
                content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                // å‘送请求并等待响应
                var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
                // ååºåˆ—化响应内容
                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 });
                }
                #endregion
            }
            catch (Exception ex)
            {
@@ -419,46 +428,33 @@
                    if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
                    {
                        if (task.Roadway.Contains("CH"))
                        #region å…¥åº“调用接口获取货位地址
                        // TODO: è°ƒç”¨æŽ¥å£èŽ·å–è´§ä½åœ°å€
                        // åˆ›å»ºè¯·æ±‚对象
                        RequestTaskDto taskDto = new RequestTaskDto()
                        {
                            Random random = new Random();
                            task.CurrentAddress = task.NextAddress;
                            task.NextAddress = $"{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(0, 0).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}";
                            task.TargetAddress = task.NextAddress;
                        }
                        else
                        {
                            Random random = new Random();
                            task.CurrentAddress = task.NextAddress;
                            task.NextAddress = "002-020-001";
                            task.TargetAddress = task.NextAddress;
                        }
                            Position = task.NextAddress,
                            PalletCode = task.PalletCode,
                        };
                        #region çœŸå®žæ•°æ®
                        // TODO: è°ƒç”¨æŽ¥å£èŽ·å–ä¸‹ä¸€ä¸ªåœ°å€
                        //// åˆ›å»ºè¯·æ±‚对象
                        //RequestTaskDto request = new RequestTaskDto()
                        //{
                        //    Position = task.NextAddress,
                        //    PalletCode = task.PalletCode,
                        //};
                        // å‘送请求并等待响应
                        var abc = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestLocationTaskAsync", taskDto.ToJsonString()).Result;
                        if (abc == null)
                            return content.Error();
                        // ååºåˆ—化响应内容
                        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
                        //// å‘送请求并等待响应
                        //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
                        // æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                        if (!content.Status)
                            return content;
                        //// ååºåˆ—化响应内容
                        //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                        // ååºåˆ—化任务数据
                        WMSTaskDTO taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                        //// æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                        //if (!content.Status)
                        //    return content;
                        //// ååºåˆ—化任务数据
                        //WMSTaskDTO taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                        //task.CurrentAddress = task.NextAddress;
                        //task.NextAddress = taskResult.TargetAddress;
                        //task.TargetAddress = task.NextAddress;
                        task.CurrentAddress = task.NextAddress;
                        task.NextAddress = taskResult.TargetAddress;
                        task.TargetAddress = task.NextAddress;
                        #endregion
                    }
@@ -478,6 +474,16 @@
                BaseDal.UpdateData(task);
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"人工手动将任务状态从【{oldState}】跳转到【{task.TaskState}】" : $"系统自动流程,任务状态从【{oldState}】转到【{task.TaskState}】");
                #region  æ›´æ–°ä»»åŠ¡çŠ¶æ€
                object request = new
                {
                    TaskNum = task.TaskNum,
                    TaskState = task.TaskState
                };
                var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result;
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                #endregion
                content = WebResponseContent.Instance.OK();
            }
@@ -550,7 +556,7 @@
                    BaseDal.UpdateData(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成");
                    //todo åŒæ­¥åˆ°WMS
                    //暂不考虑多个出库口
                }
@@ -565,24 +571,6 @@
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
                    //var x = new { taskNum = taskNum };
                    //var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result;
                    //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                    //WMSTaskDTO taskDTO = new WMSTaskDTO()
                    //{
                    //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                    //    Grade = 1,
                    //    PalletCode = task.PalletCode + "S",
                    //    RoadWay = "SC01",
                    //    SourceAddress = task.TargetAddress,
                    //    TargetAddress = "CLOutAreaA",
                    //    TaskState = (int)TaskOutStatusEnum.OutNew,
                    //    Id = 0,
                    //    TaskType = (int)TaskOutboundTypeEnum.Outbound
                    //};
                    //content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                {
@@ -595,6 +583,25 @@
                {
                    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】");
                }
                #region WMS同步任务完成
                var keys = new Dictionary<string, object>()
                {
                    {"taskNum", taskNum}
                };
                var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result;
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                #endregion
                #region  æ›´æ–°ä»»åŠ¡çŠ¶æ€
                object request = new
                {
                    TaskNum = task.TaskNum,
                    TaskState = task.TaskState
                };
                result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/UpdateTaskStatus", request.ToJsonString()).Result;
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                #endregion
                //content = WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -175,140 +175,28 @@
        /// <param name="ProtocalDetailValue">线体当前bool读取偏移地址</param>
        public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
        {
            // èŽ·å–ä¸‹ä¸€ä¸ªä»»åŠ¡
            var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
            //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
            //return;
            // å¤„理出库任务
            HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task);
            // å¦‚果没有出库任务,处理新任务
            if (task == null)
            try
            {
                HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
                // èŽ·å–ä¸‹ä¸€ä¸ªä»»åŠ¡
                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);
                }
            }
            #region è€ç‰ˆæœ¬
            //var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode);
            //var Taskout = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
            //if (Taskout != null)
            //{
            //    // ç©ºæ‰˜ç›˜ä»»åŠ¡
            //    if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray)
            //    {
            //        ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout);
            //        taskCommand.InteractiveSignal = command.InteractiveSignal;
            //        if (command.Barcode == "")
            //        {
            //            var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
            //            taskCommand.TargetAddress = NGAddress;
            //        }
            //        conveyorLine.SendCommand(taskCommand, childDeviceCode);
            //        ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
            //        _taskService.UpdateTaskStatusToNext(Taskout);
            //    }
            //    else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound)
            //    {
            //        ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout);
            //        taskCommand.InteractiveSignal = command.InteractiveSignal;
            //        if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
            //        {
            //            if (command.Barcode == "")
            //            {
            //                var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
            //                taskCommand.TargetAddress = NGAddress;
            //            }
            //            conveyorLine.SendCommand(taskCommand, childDeviceCode);
            //            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
            //            _taskService.UpdateTaskStatusToNext(Taskout);
            //        }
            //        else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
            //        {
            //            if (command.Barcode == "")
            //            {
            //                var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
            //                taskCommand.TargetAddress = NGAddress;
            //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
            //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
            //                _taskService.UpdateTaskStatusToNext(Taskout);
            //            }
            //            else
            //            {
            //                // todo è°ƒç”¨WMS任务完成接口
            //                var x = new { taskNum = Taskout.TaskNum };
            //                var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result;
            //                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
            //                if (content.Status)
            //                {
            //                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
            //                    _taskService.UpdateTaskStatusToNext(Taskout);
            //                }
            //            }
            //        }
            //    }
            //}
            //if (taskNew == null)
            //{
            //    // åŒ–成->陈化空托盘回流
            //    if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016")
            //    {
            //        //TODO è°ƒç”¨WMS创建化成->陈化空托盘回流
            //        WMSTaskDTO taskDTO = new WMSTaskDTO()
            //        {
            //            TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
            //            Grade = 1,
            //            PalletCode = command.Barcode,
            //            RoadWay = "CHSC01",
            //            SourceAddress = childDeviceCode,
            //            TargetAddress = "CHSC01",
            //            TaskState = (int)TaskInStatusEnum.InNew,
            //            Id = 0,
            //            TaskType = (int)TaskInboundTypeEnum.InTray,
            //        };
            //        WebResponseContent content = CreateAndSendTask(taskDTO);
            //        if (content.Status)
            //        {
            //            Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
            //            if (task != null)
            //            {
            //                ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
            //                taskCommand.InteractiveSignal = command.InteractiveSignal;
            //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
            //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
            //                _taskService.UpdateTaskStatusToNext(task);
            //            }
            //        }
            //    }
            //    else
            //    {
            //        if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
            //        {
            //            Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
            //            if (task != null)
            //            {
            //                ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
            //                taskCommand.InteractiveSignal = command.InteractiveSignal;
            //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
            //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
            //                _taskService.UpdateTaskStatusToNext(task);
            //            }
            //        }
            //    }
            //}
            #endregion
            catch (Exception ex)
            {
                return;
            }
        }
        #region è¾“送线请求入库下一地址
        /// <summary>
        /// è¾“送线请求入库下一地址
@@ -316,20 +204,22 @@
        /// <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);
                }
            }
        }
        //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>
        /// è¾“送线入库完成
@@ -348,7 +238,7 @@
                //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
                WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
                Console.Out.WriteLine(content.Serialize());
                //Console.Out.WriteLine(content.Serialize());
            }
        }
@@ -418,19 +308,6 @@
                    taskCommand.TargetAddress = 0;
                }
                #region å‘WMS上报任务完成
                WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
                var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", (new { taskNum = command.TaskNum }).ToJsonString()).Result;
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                // æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                if (!content.Status)
                    return;
                #endregion å‘WMS请求空托盘任务
                conveyorLine.SendCommand(taskCommand, childDeviceCode);
                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
                content = _taskService.UpdateTaskStatusToNext(task);
@@ -438,7 +315,64 @@
        }
        /// <summary>
        /// åˆ›å»ºä»»åŠ¡å¹¶å‘é€è¯·æ±‚
        /// ç›‘测空托盘实盘出库
        /// </summary>
        /// <param name="conveyorLine">输送线实例对象</param>
        /// <param name="command">读取的请求信息</param>
        /// <param name="childDeviceCode">子设备编号</param>
        /// <param name="index">线体当前bool读取偏移地址</param>
        public async void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
        {
            try
            {
                TaskOutboundTypeEnum taskOutboundTypeEnum;
                if (platform.PlatformType.Contains("OutTray"))
                    taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray;
                else
                    taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound;
                await CheckAndCreateTask(taskOutboundTypeEnum, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList());
            }
            catch (Exception)
            {
            }
        }
        /// <summary>
        /// æ£€æŸ¥ä»»åŠ¡å¹¶åˆ›å»ºæ–°ä»»åŠ¡
        /// </summary>
        private async Task CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
        {
            var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode);
            if (tasks.Count < index)
            {
                #region è°ƒç”¨WMS获取出库任务
                WMSTaskDTO taskDTO = new WMSTaskDTO();
                object dynamic = new
                {
                    position = childDeviceCode,
                    tag = (int)taskType,
                    areaCdoe = roadWay,
                    roadways = roadways
                };
                var result = await HttpHelper.PostAsync("http://localhost:5000/api/Task/RequestTrayOutTaskAsync", dynamic.ToJsonString());
                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                // æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                if (!content.Status)
                    return;
                taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                #endregion
                CreateAndSendTask(taskDTO);
            }
        }
        /// <summary>
        /// åˆ›å»ºä»»åŠ¡
        /// </summary>
        public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
        {
@@ -448,103 +382,6 @@
                Console.WriteLine($"{taskDTO.TaskType}呼叫成功");
            }
            return content;
        }
        /// <summary>
        /// é™ˆåŒ–空托盘出库
        /// </summary>
        /// <param name="conveyorLine">输送线实例对象</param>
        /// <param name="command">读取的请求信息</param>
        /// <param name="childDeviceCode">子设备编号</param>
        /// <param name="index">线体当前bool读取偏移地址</param>
        public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
        {
            TaskOutboundTypeEnum taskOutboundTypeEnum;
            if (platform.PlatformType.Contains("OutTray"))
                taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray;
            else
                taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound;
            CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList());
        }
        #region
        ///// <summary>
        ///// é™ˆåŒ–实盘出库)
        ///// </summary>
        ///// <param name="conveyorLine">输送线实例对象</param>
        ///// <param name="command">读取的请求信息</param>
        ///// <param name="childDeviceCode">子设备编号</param>
        ///// <param name="index">线体当前bool读取偏移地址</param>
        //public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
        //{
        //    CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, "CHSC01", "001-001-001");
        //}
        ///// é™ç½®ç©ºæ‰˜ç›˜å‡ºåº“
        ///// </summary>
        ///// <param name="conveyorLine">输送线实例对象</param>
        ///// <param name="command">读取的请求信息</param>
        ///// <param name="childDeviceCode">子设备编号</param>
        ///// <param name="index">线体当前bool读取偏移地址</param>
        //public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
        //{
        //    CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001");
        //}
        ///// <summary>
        ///// é™ç½®å®žç›˜å‡ºåº“
        ///// </summary>
        ///// <param name="conveyorLine">输送线实例对象</param>
        ///// <param name="command">读取的请求信息</param>
        ///// <param name="childDeviceCode">子设备编号</param>
        ///// <param name="index">线体当前bool读取偏移地址</param>
        //public void JingzhiOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
        //{
        //    CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "JZSC01", "002-000-001");
        //}
        #endregion
        /// <summary>
        /// æ£€æŸ¥ä»»åŠ¡å¹¶åˆ›å»ºæ–°ä»»åŠ¡
        /// </summary>
        private void CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
        {
            var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode);
            if (tasks.Count < index)
            {
                //var taskDTO = new WMSTaskDTO()
                //{
                //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                //    Grade = 1,
                //    PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
                //    RoadWay = roadWay,
                //    SourceAddress = sourceAddress,
                //    TargetAddress = childDeviceCode,
                //    TaskState = (int)TaskOutStatusEnum.OutNew,
                //    Id = 0,
                //    TaskType = (int)taskType
                //};
                #region è°ƒç”¨WMS获取出库任务
                WMSTaskDTO taskDTO = new WMSTaskDTO();
                dynamic dynamic = new
                {
                    position = childDeviceCode,
                    tag = (int)taskType,
                    areaCdoe = roadWay,
                    roadways = roadways
                };
                var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", dynamic.ToJsonString()).Result;
                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                // æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                if (!content.Status)
                    return;
                taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                #endregion
                CreateAndSendTask(taskDTO);
            }
        }
        /// <summary>
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -44,7 +44,7 @@
                // æ›´æ–°ä»»åŠ¡çŠ¶æ€
                _taskService.UpdateTaskStatusToNext(taskOut);
            }
            else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
            else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
            {
                // å®ŒæˆWMS任务
                CompleteWmsTask(taskOut, command, conveyorLine, childDeviceCode, ProtocalDetailValue);
@@ -62,7 +62,7 @@
                // è¯·æ±‚WMS空托盘任务
                CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
            }
            else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088")||(conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
            else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
            {
                // è¯·æ±‚WMS入库任务
                RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
@@ -97,7 +97,11 @@
            }
            // TODO调用WMS任务完成接口
            var result = HttpHelper.GetAsync("http://127.0.0.1:8098/api/Task/CompleteTaskAsync", new { taskNum = taskOut.TaskNum }.ToJsonString()).Result;
            var keys = new Dictionary<string, object>()
                {
                    {"taskNum", taskOut.TaskNum}
                };
            var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result;
            WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
            if (content.Status)
            {
@@ -143,32 +147,18 @@
        /// </summary>
        private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode)
        {
            // åˆ›å»ºå¹¶è¿”回空托盘任务DTO
            //return new WMSTaskDTO
            //{
            //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
            //    Grade = 1,
            //    PalletCode = barcode,
            //    RoadWay = "JZSC01",
            //    SourceAddress = childDeviceCode,
            //    TargetAddress = "JZSC01",
            //    TaskState = (int)TaskInStatusEnum.InNew,
            //    Id = 0,
            //    TaskType = (int)TaskInboundTypeEnum.InTray,
            //};
            #region å‘WMS请求空托盘任务
            WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
            RequestTaskDto request = new RequestTaskDto()
            {
                Position = childDeviceCode,
                PalletCode = barcode,
            };
            var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
            var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTrayInTaskAsync", request.ToJsonString()).Result;
            if (result == null)
                return wMSTaskDTO;
            WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
            // æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
            if (!content.Status)
                return wMSTaskDTO;
@@ -187,7 +177,7 @@
            if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
            {
                // æŸ¥è¯¢ä»»åŠ¡
                Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
                Dt_Task task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
                if (task != null)
                {
                    // æ˜ å°„任务命令
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -48,9 +48,7 @@
                CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
                if (commonStackerCrane != null)
                {
                    //EqptRun(commonStackerCrane);
                    //EqptAlive(commonStackerCrane);
                    //EqptStatus(commonStackerCrane);
                    //Console.Out.WriteLine(commonStackerCrane.DeviceName);
                    if (!commonStackerCrane.IsEventSubscribed)
                    {
@@ -301,52 +299,6 @@
            return stackerCraneTaskCommand;
        }
        /// <summary>
        /// è®¾å¤‡ä¸ŽMOM系统对接,设备上线
        /// </summary>
        /// <param name="commonStackerCrane"></param>
        public async void EqptRun(CommonStackerCrane commonStackerCrane)
        {
            if (!commonStackerCrane.StackerOnline)
            {
                BasicDto dto = new BasicDto
                {
                    EmployeeNo = "T00001",
                    EquipmentCode = commonStackerCrane.DeviceCode,
                    RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
                    SessionId = Guid.NewGuid().ToString(),
                    Software = commonStackerCrane.DeviceName,
                };
                var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptRun", dto.ToJsonString());
                if (respone != null)
                {
                    var result = JsonConvert.DeserializeObject<ResponseEqptRunDto>(respone);
                    if (result != null && result.Success)
                    {
                        var process = _processRepository.QueryData(x => x.EquipmentName == commonStackerCrane.DeviceName).FirstOrDefault();
                        if (process == null)
                        {
                            ResponeRunDto runDto = JsonConvert.DeserializeObject<ResponeRunDto>(respone);
                            process = new Dt_EquipmentProcess()
                            {
                                EquipmentName = commonStackerCrane.DeviceCode,
                                EquipmentType = commonStackerCrane.DeviceName.Substring(commonStackerCrane.DeviceCode.IndexOf("堆垛机")),
                                WipOrderNo = runDto.WipOrderNo,
                                ProductDesc = runDto.ProductDesc,
                                ProcessValue = JsonConvert.SerializeObject(result)
                            };
                            var isResult = await _processRepository.AddDataAsync(process) > 0;
                        }
                        else
                        {
                            process.ProcessValue = JsonConvert.SerializeObject(result);
                            var isResult = await _processRepository.UpdateDataAsync(process);
                        }
                        commonStackerCrane.StackerOnline = true;
                    }
                }
            }
        }
        /// <summary>
        /// è®¾å¤‡å¿ƒè·³
@@ -379,82 +331,5 @@
            }
        }
        /// <summary>
        /// è®¾å¤‡çŠ¶æ€
        /// </summary>
        /// <param name="commonStackerCrane"></param>
        public async void EqptStatus(CommonStackerCrane commonStackerCrane)
        {
            string code = string.Empty;
            RequestAlertDto requestAlert = new RequestAlertDto()
            {
                EmployeeNo = "T00001",
                EquipmentCode = commonStackerCrane.DeviceCode,
                RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
                SessionId = Guid.NewGuid().ToString(),
                Software = commonStackerCrane.DeviceName,
                AlertInfo = new List<AlertInfoDto>()
            };
            switch (commonStackerCrane.Status)
            {
                case DeviceStatus.Idle:
                    code = "Waiting";
                    break;
                case DeviceStatus.Working:
                    code = "Running";
                    break;
                case DeviceStatus.Fault:
                    code = "Alerting";
                    var alert = new AlertInfoDto()
                    {
                        AlertCode = "1001",
                        AlertDescription = commonStackerCrane.StackerCraneStatusDes,
                        AlertReset = "1"
                    };
                    requestAlert.AlertInfo.Add(alert);
                    await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString());
                    break;
                case DeviceStatus.Unkonw:
                    code = "Down";
                    break;
                case DeviceStatus.Offline:
                    code = "Maintenance";
                    break;
                default:
                    break;
            }
            if (code != "Alerting")
            {
                requestAlert.AlertInfo = new List<AlertInfoDto>();
                var alert = new AlertInfoDto()
                {
                    AlertCode = "1001",
                    AlertDescription = commonStackerCrane.StackerCraneStatusDes,
                    AlertReset = "0"
                };
                await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString());
            }
            RequestEqptStatusDto requestEqptStatus = new RequestEqptStatusDto()
            {
                EmployeeNo = "T00001",
                EquipmentCode = commonStackerCrane.DeviceCode,
                RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
                SessionId = Guid.NewGuid().ToString(),
                Software = commonStackerCrane.DeviceName,
                ChangeTime = DateTime.Now.ToString(),
                Description = commonStackerCrane.StackerCraneStatusDes,
                LocationID = "NA",
                ReasonCode = "123",
                StatusCode = code
            };
            var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptStatus", requestEqptStatus.ToJsonString());
        }
    }
}
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js
@@ -218,9 +218,9 @@
    }
  },
  {
    path: '/zzzz',
    name: 'zzzz',
    component: () => import('@/views/widesea_wms/MOM/zzzz.vue'),
    path: '/ProductionModel',
    name: 'ProductionModel',
    component: () => import('@/views/widesea_wms/MOM/ProductionModel.vue'),
    meta: {
      keepAlive: false
    }
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/Extend/Add.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
<template>
    <div>
        <vol-box v-model="showDetialBox" :lazy="true" :height="350" :width="600" :padding="15" title="料框属性维护">
            <el-form :inline="true" :model="TrayBarcodePropertys" label-width="auto" class="demo-form-inline">
                <el-form-item label="料框属性:">
                    <el-input v-model="TrayBarcodePropertys.TrayBarcodeProperty" placeholder="料框属性" />
                </el-form-item>
                <el-form-item label="托盘容量:">
                    <el-input v-model="TrayBarcodePropertys.Capacity" placeholder="托盘容量" />
                </el-form-item>
                <el-button @click="addProductType" type="primary">添加产品工序</el-button>
                <el-button @click="save" type="success">提交数据</el-button>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="工序:" v-for="(input, index) in TrayBarcodePropertys.ProcessCodes"
                            :key="index">
                            <el-input v-model="input.ProcessCode" placeholder="工序" />
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="产品类型:" v-for="(input, index) in TrayBarcodePropertys.ProductTypes"
                            :key="index">
                            <el-input v-model="input.ProductType" placeholder="产品类型" />
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
        </vol-box>
    </div>
</template>
<script>
import VolBox from "@/components/basic/VolBox.vue";
import http from "@/../src/api/http.js";
export default {
    components: { VolBox },
    data() {
        return {
            showDetialBox: false,
            TrayBarcodePropertys: {
                TrayBarcodeProperty: '',
                Capacity: 0,
                ProcessCodes: [{ ProcessCode: '', }],
                ProductTypes: [{ ProductType: '', }]
            }
        }
    },
    methods: {
        addProductType() {
            this.TrayBarcodePropertys.ProductTypes.push({ ProductType: '' })
            this.TrayBarcodePropertys.ProcessCodes.push({ ProcessCode: '' })
        },
        open() {
            this.showDetialBox = true
        },
        save() {
            console.log(this.TrayBarcodePropertys)
            let data = ({...this.TrayBarcodePropertys, ProcessCodes:JSON.stringify(this.TrayBarcodePropertys.ProcessCodes) , ProductTypes:JSON.stringify(this.TrayBarcodePropertys.ProductTypes)});
            debugger;
            http.post('api/Production/AddData', data).then(res => {
                if (res.code == 200) {
                    // ElMessage.success(res.msg)
                    this.$message.success('添加成功')
                    this.$parent.load();
                } else {
                    // ElMessage.error(res.msg)
                    this.$message.error(x.message)
                }
            })
        }
    }
}
</script>
<style lang="scss" scoped></style>
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
/*****************************************************************************************
**  Author:jxx 2022
**  QQ:283591387
**完整文档见:http://v2.volcore.xyz/document/api ã€ä»£ç ç”Ÿæˆé¡µé¢ViewGrid】
**常用示例见:http://v2.volcore.xyz/document/vueDev
**后台操作见:http://v2.volcore.xyz/document/netCoreDev
*****************************************************************************************/
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
import gridBody from "./Extend/Add.vue"; //自定义扩展查询界面中表格体组件
let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: gridBody,
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
     //下面这些方法可以保留也可以删除
    onInit() {  //框架初始化配置前,
        //示例:在按钮的最前面添加一个按钮
          this.buttons.unshift({  //也可以用push或者splice方法来修改buttons数组
            name: '按钮', //按钮名称
            icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
            type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
            onClick: function () {
              console.log("🚀 ~ onInit ~ gridBody:", gridBody)
              this.$refs.gridBody.open();
            }
          });
        //示例:设置修改新建、编辑弹出框字段标签的长度
        this.boxOptions.labelWidth = 150;
    },
    onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      //this.detailOptions.columns.forEach(column=>{ });
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false,则不会执行查询
      return true;
    },
    searchAfter(result) {
      //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
      return true;
    },
    addBefore(formData) {
      //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
      return true;
    },
    updateBefore(formData) {
      //编辑保存前formData为对象,包括明细表、删除行的Id
      return true;
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
      //(1)判断是编辑还是新建操作: this.currentAction=='Add';
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段='xxx';
      //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看:console.log(this.editFormOptions)
    }
  }
};
export default extension;
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ProductionModel.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
<!--
*Author:jxx
 *Contact:283591387@qq.com
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/widesea_wms/material/Dt_MaterielInfo.js此处编写
 -->
 <template>
    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
        :table="table" :extend="extend">
    </view-grid>
</template>
<script>
import extend from "./ProductionModel.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'materielID',
            footer: "Foots",
            cnName: '料框属性',
            name: 'ProductionModel',
            url: "/Production/",
            sortName: "MaterielID"
        });
        const editFormFields = ref({
            "TrayBarcodeProperty": "",
            "Capacity": "",
        });
        const editFormOptions = ref([
            [
                { "title": "料框属性", "field": "TrayBarcodeProperty", type: "text" },
                { "title": "托盘容量", "field": "Capacity", type: "text" },
            ]
        ]);
        const searchFormFields = ref({});
        const searchFormOptions = ref([
            [
                { "title": "料框属性", "field": "TrayBarcodeProperty", type: "text" },
                { "title": "托盘容量", "field": "Capacity", type: "text" },
            ]
        ]);
        const columns = ref([{ field: 'id', title: 'ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
        { field: 'trayBarcodeProperty', title: '料框属性', type: 'string', width: 110, align: 'left', sort: true },
        { field: 'processCodes', title: '工序集合', type: 'string', width: 120, align: 'left' },
        { field: 'productTypes', title: '物料编码/工艺型号集合', type: 'string', width: 110, align: 'left' },
        { field: 'capacity', title: '托盘容量', type: 'string', width: 110, align: 'left' }]);
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
            columns: [],
            sortName: "",
            key: ""
        });
        return {
            table,
            extend,
            editFormFields,
            editFormOptions,
            searchFormFields,
            searchFormOptions,
            columns,
            detail,
        };
    },
});
</script>
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs
@@ -50,7 +50,7 @@
        [ImporterHeader(Name = "创建者")]
        [ExporterHeader(DisplayName = "创建者")]
        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "创建者")]
        public string Creater { get; set; }
        public string Creater { get; set; } = "Systeam";
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs
@@ -49,7 +49,7 @@
                {
                    // ä½¿ç”¨ myScopedService æ‰§è¡Œä»»åŠ¡
                    //await DBSeed.SeedAsync(_dbContext, _webRootPath);
                    await DBSeed.SeedAsync(_dbContext, _webRootPath);
                    //多租户 åŒæ­¥
                    //await DBSeed.TenantSeedAsync(_dbContext);
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
@@ -11,4 +11,22 @@
    /// æ‰˜ç›˜å·
    /// </summary>
    public string PalletCode { get; set; }
    /// <summary>
    /// ç©ºæ‰˜ç›˜å¯å…¥å··åˆ°
    /// </summary>
    public string PositionList { get; set; }
    /// <summary>
    /// ä»»åŠ¡ç±»åž‹
    /// </summary>
    public string RequestType { get; set; } = string.Empty;
}
public class RequestOutTaskDto
{
    public string   Position { get; set; }
    public int Tag { get; set; }
    public string AreaCdoe { get; set; }
    public List<string> Roadways { get; set; }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_DTO
{
    public class UpdateStatusDto
    {
        /// <summary>
        /// ä»»åŠ¡å·
        /// </summary>
        public int TaskNum { get; set; }
        /// <summary>
        /// ä»»åŠ¡çŠ¶æ€
        /// </summary>
        public int TaskState { get; set; }
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/CellStateDto.cs
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/ResultTrayCellsStatus.cs
ÎļþÃû´Ó Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResultTrayCellsStatus.cs ÐÞ¸Ä
@@ -1,5 +1,8 @@
namespace WIDESEA_DTO.MOM
{
    /// <summary>
    /// æ‰˜ç›˜ç”µèŠ¯çŠ¶æ€
    /// </summary>
    public class ResultTrayCellsStatus : BasicResult
    {
        /// <summary>
@@ -16,6 +19,16 @@
        /// ç»‘定代码
        /// </summary>
        public string BindCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§äº§çº¿
        /// </summary>
        public string ProductionLine { get; set; }
        /// <summary>
        /// å½“前工艺工序代码
        /// </summary>
        public string ProcessCode { get; set; }
        /// <summary>
        /// æ–™æ¡†å±žæ€§åˆ—表
@@ -38,6 +51,8 @@
        /// </summary>
        public int PositionNo { get; set; }
        //public string BindCode { get; set; }
        /// <summary>
        /// ç”µèŠ¯çŠ¶æ€
        /// </summary>
@@ -57,9 +72,30 @@
        /// <summary>
        /// å·¥åº
        /// </summary>
        public string ProcessCode { get; set; }
        public List<ProcessCodes> ProcessCodes { get; set; } = new List<ProcessCodes>();
        /// <summary>
        /// æ‰˜ç›˜å®¹é‡
        /// </summary>
        public double Capacity { get; set; }
        /// <summary>
        /// é€‚用物料编码/工艺型号
        /// </summary>
        public List<ProductTypes> ProductType { get; set; } = new List<ProductTypes>();
    }
    public class ProcessCodes
    {
        /// <summary>
        /// å·¥åº
        /// </summary>
        public string ProcessCode { get; set; }
    }
    public class ProductTypes
    {
        /// <summary>
        /// é€‚用物料编码/工艺型号
        /// </summary>
        public string ProductType { get; set; }
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/TrayCellUnbindDto.cs
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/TrayCellsStatusDto.cs
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/CellState/TrayUnbindDto.cs
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/Dt_EquipmentProcess.cs
@@ -64,7 +64,7 @@
    /// <summary>
    /// è¡¨ç¤ºå·¥è‰ºè·¯çº¿ä¸Šè®¾å¤‡å‚数信息的模型。
    /// </summary>
    public class EquipmentParameterInfo
    public class EBParameterInfo
    {
        /// <summary>
        /// å‚数编码。
@@ -127,4 +127,38 @@
        [Required(ErrorMessage = "设备参数信息是否可用是必填项。")]
        public string EquipmentAvailabilityFlag { get; set; }
    }
    public class ResponseEqptRunDto : BasicResult
    {
        /// <summary>
        /// äº§å“åç§°
        /// </summary>
        public string ProductDesc { get; set; }
        /// <summary>
        /// é¦–件数量
        /// </summary>
        public string FirstArticleNum { get; set; }
        /// <summary>
        /// è°ƒæœºæ•°é‡
        /// </summary>
        public string DebugNum { get; set; }
        /// <summary>
        /// å‚数版本信息
        /// </summary>
        public string ParamVersion { get; set; }
        /// <summary>
        /// æ˜¯å¦éœ€è¦è¯»å–参数
        /// </summary>
        public bool ParamRefreshFlag { get; set; }
        /// <summary>
        /// å‚数信息
        /// </summary>
        public List<EBParameterInfo> ParameterInfo { get; set; }
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResponeAgingInputDto.cs
@@ -6,6 +6,9 @@
namespace WIDESEA_DTO.MOM
{
    /// <summary>
    /// å…¥åº“
    /// </summary>
    public class ResponeAgingInputDto : BasicResult
    {
        /// <summary>
@@ -19,8 +22,23 @@
        public string BindCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§äº§çº¿
        /// </summary>
        public string ProductionLine { get; set; }
        /// <summary>
        /// å…³è”工序返回时间,记录注液或静置时长。
        /// </summary>
        public string LinedProcessFeedbackTime { get; set; }
        /// <summary>
        /// ç‰¹å¾å‚数返回(静置时长)
        /// </summary>
        public string SpecialParameterDuration { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UomCode { get; set; }
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
@@ -124,7 +124,7 @@
    Task<WebResponseContent> CompleteAsync(int taskNum);
    /// <summary>
    /// è¯·æ±‚任务
    /// è¯·æ±‚任务巷道
    /// </summary>
    /// <param name="position"></param>
    /// <param name="areaCode"></param>
@@ -134,6 +134,20 @@
    Task<WebResponseContent> RequestTaskAsync(RequestTaskDto input);
    /// <summary>
    /// è¯·æ±‚任务货位
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<WebResponseContent> UpdateExistingTask(RequestTaskDto input);
    /// <summary>
    /// è¯·æ±‚空托盘任务
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input);
    /// <summary>
    /// è¯·æ±‚托盘任务
    /// </summary>
    /// <param name="position">目标位置</param>
@@ -141,5 +155,14 @@
    /// <param name="areaCode">区域编码</param>
    /// <param name="roadways">巷道列表</param>
    /// <returns>返回结果集</returns>
    Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways);
    Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways);
    /// <summary>
    /// ä»»åŠ¡çŠ¶æ€ä¿®æ”¹
    /// </summary>
    /// <param name="input">请求数据</param>
    /// <returns></returns>
    Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState);
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
@@ -41,6 +41,15 @@
        [SugarColumn(IsNullable = true, ColumnDescription = "备注")]
        public string Remark { get; set; }
        /// <summary>
        /// å…³è”工序返回时间(注液\静置时长)
        /// </summary>
        public string LinedProcessFeedbackTime { get; set; }
        /// <summary>
        /// ç‰¹å¾å‚数返回(静置时长)
        /// </summary>
        public string SpecialParameterDuration { get; set; }
        /// <summary>
        /// åŒºåŸŸç¼–码
@@ -59,7 +68,7 @@
        /// è´§ä½æ•°æ®
        /// </summary>
        [SugarColumn(ColumnName = "LocationInfo")]
        [Navigate(NavigateType.OneToOne,nameof(LocationCode), nameof(DtLocationInfo.LocationCode))]
        [Navigate(NavigateType.OneToOne, nameof(LocationCode), nameof(DtLocationInfo.LocationCode))]
        public DtLocationInfo? LocationInfo { get; set; }
    }
}
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/MOM/ProductionModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
using Newtonsoft.Json;
using SqlSugar;
using WIDESEA_Core.DB.Models;
namespace WIDESEA_Model.Models
{
    /// <summary>
    /// è¡¨ç¤ºç”Ÿäº§è¿‡ç¨‹ä¸­çš„æ–™æ¡†å±žæ€§å’Œç›¸å…³å·¥åºä¿¡æ¯çš„æ¨¡åž‹ã€‚
    /// </summary>
    [SugarTable("ProductionModel", "料框属性")]
    public class ProductionModel : BaseEntity
    {
        /// <summary>
        /// å¤‡  æ³¨:主键,自动增长
        /// </summary>
        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键,自动增长")]
        public int Id { get; set; }
        /// <summary>
        /// æ–™æ¡†å±žæ€§ï¼Œç”¨äºŽæ ‡è¯†æ–™æ¡†çš„唯一属性。
        /// </summary>
        [SugarColumn(ColumnName = "TrayBarcodeProperty", ColumnDescription = "料框属性", IsNullable = false)]
        public string TrayBarcodeProperty { get; set; }
        /// <summary>
        /// å·¥åºé›†åˆï¼ŒåŒ…含所有相关的工序代码。
        /// </summary>
        [SugarColumn(ColumnName = "ProcessCodes", ColumnDescription = "工序集合", IsNullable = false, Length = int.MaxValue)]
        public string ProcessCodes { get; set; }
        /// <summary>
        /// é€‚用物料编码/工艺型号集合,包含所有相关的物料编码或工艺型号。
        /// </summary>
        [SugarColumn(ColumnName = "ProductTypes", ColumnDescription = "适用物料编码", IsNullable = false, Length = int.MaxValue)]
        public string ProductTypes { get; set; }
        /// <summary>
        /// æ‰˜ç›˜å®¹é‡ï¼Œè¡¨ç¤ºæ–™æ¡†å¯ä»¥æ‰¿è½½çš„æœ€å¤§ç‰©å“æ•°é‡ã€‚
        /// </summary>
        [SugarColumn(ColumnName = "Capacity", ColumnDescription = "托盘容量", IsNullable = false)]
        public int Capacity { get; set; }
        /// <summary>
        /// èŽ·å–æˆ–è®¾ç½®å·¥åºé›†åˆï¼Œååºåˆ—åŒ–JSON字符串为List<ProcessCodes>。
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public List<ProcessCodesDTO> GetProcessCodes
        {
            get { return JsonConvert.DeserializeObject<List<ProcessCodesDTO>>(ProcessCodes); }
            set { ProcessCodes = JsonConvert.SerializeObject(value); }
        }
        /// <summary>
        /// èŽ·å–æˆ–è®¾ç½®é€‚ç”¨ç‰©æ–™ç¼–ç /工艺型号集合,反序列化JSON字符串为List<string>。
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public List<ProductTypesDTO> GetProductTypes
        {
            get { return JsonConvert.DeserializeObject<List<ProductTypesDTO>>(ProductTypes); }
            set { ProductTypes = JsonConvert.SerializeObject(value); }
        }
    }
    public class ProcessCodesDTO
    {
        /// <summary>
        /// å·¥åº
        /// </summary>
        public string ProcessCode { get; set; }
    }
    public class ProductTypesDTO
    {
        /// <summary>
        /// é€‚用物料编码/工艺型号
        /// </summary>
        public string ProductType { get; set; }
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -53,13 +53,12 @@
        {
            input.SessionId = Guid.NewGuid().ToString();
            input.EmployeeNo = "T00001";
            input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); ;
            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);
            content.OK(data: x);
            LogFactory.GetLog("静置陈化出库(整托盘)").Info(true, $"\r\r--------------------------------------");
            LogFactory.GetLog("静置陈化出库(整托盘)").Info(true, x);
            content.OK();
        }
        catch (Exception err)
        {
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
@@ -30,8 +30,8 @@
            var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/ProcessApply", inputIson);
            if (x != null)
            {
                var ResultProcess = JsonConvert.DeserializeObject<ResultProcessApply>(x);
                content.OK(data: ResultProcess);
                //var ResultProcess = JsonConvert.DeserializeObject<ResultProcessApply>(x);
                content.OK(data: x);
            }
            LogFactory.GetLog("工艺路线申请").Info(true, $"\r\r--------------------------------------");
            LogFactory.GetLog("工艺路线申请").Info(true, x);
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
@@ -26,6 +26,8 @@
        try
        {
            input.SessionId = Guid.NewGuid().ToString();
            input.Software = "WMS";
            input.EquipmentCode = "ECH001-B";
            input.EmployeeNo = "T00001";
            input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
            var inputJson = input.ToDictionary();
@@ -53,8 +55,8 @@
        try
        {
            input.SessionId = Guid.NewGuid().ToString();
            input.Software = "陈化机";
            input.EquipmentCode = "P1K10040";
            input.Software = "WMS";
            input.EquipmentCode = "ECH001-B";
            input.EmployeeNo = "T00001";
            input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
            var inputJson = input.ToDictionary();
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Production/IProductionRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_StorageBasicRepository
{
    public interface IProductionRepository : IRepository<ProductionModel>
    {
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Production/ProductionRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_StorageBasicRepository
{
    public class ProductionRepository : RepositoryBase<ProductionModel>, IProductionRepository
    {
        public ProductionRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
        {
        }
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Production/IProductionService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
namespace WIDESEA_StorageBasicServices;
public interface IProductionService : IService<ProductionModel>
{
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Production/ProductionService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
using WIDESEA_StorageBasicRepository;
namespace WIDESEA_StorageBasicServices;
public class ProductionService : ServiceBase<ProductionModel, IProductionRepository>, IProductionService
{
    public ProductionService(IProductionRepository BaseDal) : base(BaseDal)
    {
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -34,6 +34,7 @@
    private readonly IProcessApplyService _processApplyService; //工艺路线
    private readonly IDt_AreaInfoRepository _areaInfoRepository; //区域
    private readonly IAgingInOrOutInputService _agingInOrOutInputService; //静置\陈化
    private readonly IProductionRepository _productionRepository; //生产
    public Dt_TaskService(IDt_TaskRepository BaseDal,
                                IUnitOfWorkManage unitOfWorkManage,
@@ -54,7 +55,8 @@
                                IProcessApplyService processApplyService,
                                IDt_AreaInfoRepository areaInfoRepository,
                                IAgingInOrOutInputService agingInOrOutInputService,
                                IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal)
                                IStockInfoDetailRepository stockInfoDetailRepository,
                                IProductionRepository productionRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
        _outOrderRepository = outOrderRepository;
@@ -75,111 +77,13 @@
        _areaInfoRepository = areaInfoRepository;
        _agingInOrOutInputService = agingInOrOutInputService;
        _stockInfoDetailRepository = stockInfoDetailRepository;
        _productionRepository = productionRepository;
    }
    #region å¤–部接口方法
    #region å‡ºåº“任务完成
    /// <summary>
    /// å‡ºåº“任务完成
    /// </summary>
    /// <param name="saveModel">任务数据合集</param>
    /// <returns>返回结果集</returns>
    //public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
    //{
    //    WebResponseContent content = new WebResponseContent();
    //    try
    //    {
    //        if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
    //        {
    //            var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
    //                 .FirstAsync(x => x.EquipmentName == task.Roadway);
    //            EquipmentParameterInfo info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue);
    //            AgingOutputDto agingOutputDto = new AgingOutputDto()
    //            {
    //                OpFlag = 1,
    //                EquipmentCode = stock.LocationInfo.RoadwayNo,
    //                TrayBarcode = stock.PalletCode,
    //                SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto()
    //                {
    //                    SlotNo = x.OrderNo.ToInt32(),
    //                    SerialNo = x.SerialNumber,
    //                    SerialNoResult = true,
    //                    ParameterInfo = new List<ParameterInfo>()
    //                    {
    //                        new ParameterInfo()
    //                        {
    //                            LowerLomit =info.LowerControlLimit,
    //                            UpperLimit = info.UpperControlLimit,
    //                            ParameterResult = info.EquipmentAvailabilityFlag,
    //                            ParameterCode = info.ParameterCode,
    //                            ParameterDesc = info.Description,
    //                            TargetValue = info.TargetValue,
    //                            Value = info.TargetValue,
    //                            DefectCode = info.UOMCode
    //                        }
    //                    }
    //                }).ToList()
    //            };
    //            content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
    //            var result = JsonConvert.DeserializeObject<BasicResult>(content.ToString());
    //            if (!result.Success)
    //            {
    //                throw new Exception(result.MOMMessage);
    //            }
    //        }
    //        // æ›´æ–°åº“存状态
    //        var loation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
    //        var detail = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
    //        // è®¾ç½®åº“位状态为空闲
    //        loation.LocationStatus = LocationEnum.Free.ObjToInt();
    //        // æ›´æ–°ä»»åŠ¡çŠ¶æ€
    //        task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
    //        task.CurrentAddress = task.NextAddress;
    //        task.NextAddress = task.TargetAddress;
    //        LogFactory.GetLog("任务完成").InfoFormat(true, "堆垛机出库完成", "更新库存状态与任务状态");
    //        // äº‹åŠ¡å¤„ç†
    //        // å¼€å§‹äº‹åŠ¡
    //        _unitOfWorkManage.BeginTran();
    //        // åˆ é™¤åº“存信息
    //        var isStockUpdated = _stockInfoRepository.DeleteDataById(stock.Id);
    //        // åˆ é™¤åº“存信息
    //        var isStockDetailUpdated = _stockInfoDetailRepository.DeleteDataByIds(detail.Select(x => (object)x.Id).ToArray());
    //        // åˆ é™¤ä»»åŠ¡ä¿¡æ¯
    //        var isTaskUpdated = BaseDal.DeleteDataById(task.TaskId);
    //        // å¦‚果库存信息和任务信息都更新成功
    //        if (isStockUpdated && isTaskUpdated && isStockDetailUpdated)
    //        {
    //            // è®°å½•日志
    //            LogFactory.GetLog("任务完成").InfoFormat(true, "堆垛机出库完成", $"事务处理完成,库存状态更新:{isStockUpdated},任务状态更新:{isTaskUpdated}");
    //            // æäº¤äº‹åŠ¡
    //            _unitOfWorkManage.CommitTran();
    //            // è¿”回成功结果
    //            return content.OK("任务完成成功");
    //        }
    //        else
    //        {
    //            // è®°å½•日志
    //            LogFactory.GetLog("任务完成").InfoFormat(true, "堆垛机出库完成", $"事务处理失败,库存状态更新:{isStockUpdated},任务状态更新:{isTaskUpdated}");
    //            // å›žæ»šäº‹åŠ¡
    //            _unitOfWorkManage.RollbackTran();
    //            // è¿”回失败结果
    //            return content.Error("任务或库存更新失败");
    //        }
    //    }
    //    catch (Exception err)
    //    {
    //        LogFactory.GetLog("任务完成").InfoFormat(true, $"系统异常,异常信息:{err.Message}", "");
    //        Console.WriteLine(err.Message);
    //        return content.Error(err.Message);
    //    }
    //}
    public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
    {
@@ -190,7 +94,7 @@
            {
                var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
                    .FirstAsync(x => x.EquipmentName == task.Roadway);
                var info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue);
                var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue);
                var agingOutputDto = MapToAgingOutputDto(stock, info);
                content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
@@ -206,7 +110,7 @@
                await UpdateLocationAsync(loc);
                await DeleteStockInfoAsync(stock.Id);
                await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
                await DeleteTaskAsync(task.TaskId);
                //await DeleteTaskAsync(task.TaskId);
            });
            return content.OK("任务完成成功");
@@ -218,39 +122,38 @@
        }
    }
    private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, EquipmentParameterInfo info)
    private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto info)
    {
        // TODO Value值根据MOM下发的静置时间到当前时间的分钟数
        return new AgingOutputDto
        {
            OpFlag = 1,
            EquipmentCode = stock.LocationInfo.RoadwayNo,
            Software = "WMS",
            EquipmentCode = "ECH001-B",
            TrayBarcode = stock.PalletCode,
            SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto
            {
                SlotNo = x.OrderNo.ToInt32(),
                SerialNo = x.SerialNumber,
                SerialNoResult = true,
                ParameterInfo = new List<ParameterInfo>
            {
                new ParameterInfo
                ParameterInfo = info.ParameterInfo.Select(y => new ParameterInfo()
                {
                    LowerLomit = info.LowerControlLimit,
                    UpperLimit = info.UpperControlLimit,
                    ParameterResult = info.EquipmentAvailabilityFlag,
                    ParameterCode = info.ParameterCode,
                    ParameterDesc = info.Description,
                    TargetValue = info.TargetValue,
                    Value = info.TargetValue,
                    DefectCode = info.UOMCode
                }
            }
                    LowerLomit = y.LowerControlLimit,
                    UpperLimit = y.UpperControlLimit,
                    ParameterResult = y.EquipmentAvailabilityFlag,
                    ParameterCode = y.ParameterCode,
                    ParameterDesc = y.Description,
                    TargetValue = y.TargetValue,
                    Value = ( DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(),
                    DefectCode = y.UOMCode
                }).ToList()
            }).ToList()
        };
    }
    private void ValidateResponse(WebResponseContent content)
    {
        var result = JsonConvert.DeserializeObject<BasicResult>(content.ToString());
        var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
        if (!result.Success)
        {
            throw new Exception(result.MOMMessage);
@@ -262,10 +165,10 @@
        var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
        var details = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
        location.LocationStatus = LocationEnum.Free.ObjToInt();
        task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
        task.CurrentAddress = task.NextAddress;
        task.NextAddress = task.TargetAddress;
        location.LocationStatus = (int)LocationEnum.Free;
        task.TaskState = (int)TaskOutStatusEnum.OutFinish;
        //task.CurrentAddress = task.NextAddress;
        //task.NextAddress = task.TargetAddress;
        LogFactory.GetLog("任务完成").Info(true, "更新库存状态与任务状态");
        return (location, task);
@@ -346,7 +249,7 @@
    #region å…¥åº“任务完成
    /// <summary>
    /// å…¥åº“任务完成
    /// å®Œæˆå…¥åº“任务
    /// </summary>
    /// <param name="task">任务数据合集</param>
    /// <returns>返回结果集</returns>
@@ -522,10 +425,14 @@
                .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
                .ToList(),
            TrayBarcode = task.PalletCode,
            OpFlag = 1
            OpFlag = 1,
            EquipmentCode = "ECH001-B",
            Software = "WMS"
        };
        var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
        stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
        var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString());
        stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
        stock.SpecialParameterDuration = respone.SpecialParameterDuration;
        // è®°å½•日志
        LogFactory.GetLog("任务完成").InfoFormat(true, "入库任务完成", $"货位地址:{task.TargetAddress},修改后货位数据:{locationInf}");
@@ -559,7 +466,7 @@
        LogFactory.GetLog("任务完成").InfoFormat(true, "验证任务是否存在", JsonConvert.SerializeObject(task));
        // éªŒè¯åº“存是否存在
        var stock = await _stockInfoRepository.QueryFirstAsync(x => x.PalletCode == task.PalletCode);
        var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
        // æ ¹æ®ä»»åŠ¡ç±»åž‹è°ƒç”¨ç›¸åº”çš„å®Œæˆä»»åŠ¡æ–¹æ³•
        switch (task.TaskType)
@@ -584,7 +491,7 @@
    #region è¯·æ±‚任务入库
    /// <summary>
    /// è¯·æ±‚任务
    /// è¯·æ±‚任务巷道
    /// </summary>
    /// <param name="input">请求模型</param>
    /// <returns>包含任务信息的响应内容</returns>
@@ -595,10 +502,34 @@
        try
        {
            // è°ƒç”¨BaseDal.QueryFirstAsync方法,查询任务
            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
            if (task != null)
            {
                //if (task.TaskState == (int)TaskInStatusEnum.InNew)
                {
                    // åˆ›å»ºWMS任务
                    WMSTaskDTO taskDTO = new WMSTaskDTO()
                    {
                        TaskNum = task.TaskNum.Value,
                        Grade = 1,
                        PalletCode = task.PalletCode,
                        RoadWay = task.Roadway,
                        SourceAddress = task.SourceAddress,
                        TargetAddress = task.Roadway,
                        TaskState = task.TaskState.Value,
                        Id = 0,
                        TaskType = task.TaskType,
                    };
                    return content.OK(data: taskDTO);
                }
            }
            // åˆ›å»ºä¸€ä¸ªTrayCellsStatusDto对象,并赋值
            TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
            {
                TrayBarcode = input.PalletCode
                Software = "WMS",
                TrayBarcode = input.PalletCode,
                EquipmentCode = "ECH001-B"
            };
            // è°ƒç”¨GetTrayCellStatusAsync方法,获取整盘电芯
@@ -608,8 +539,19 @@
            // æ·»åŠ ç»„ç›˜ä¿¡æ¯
            // å°†content.Data转换为ResultTrayCellsStatus对象
            var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.ToString());
            var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
            if (result.SerialNos.Count <= 0)
                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("料框属性不存在");
            // è°ƒç”¨CreateBoxingInfo方法,创建组盘信息
            var boxing = await CreateBoxingInfo(result, input.PalletCode);
            if (boxing == null) return content.Error("组盘失败");
            // è°ƒç”¨GetProcessApplyAsync方法,获取工艺路线
            ProcessApplyDto process = await GetProcessApplyAsync(result);
@@ -617,13 +559,18 @@
            // å¦‚æžœprocess为null,则返回content
            if (process == null) return content;
            // è°ƒç”¨GetProcessResponseAsync方法,获取工艺响应
            var processResponse = await GetProcessResponseAsync(process, input.Position);
            // è°ƒç”¨_processApplyService.GetProcessApplyAsync方法,获取工艺申请
            content = await _processApplyService.GetProcessApplyAsync(process);
            // è°ƒç”¨BaseDal.QueryFirstAsync方法,查询任务
            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
            // å¦‚æžœtask不为null,则调用UpdateExistingTask方法,更新任务;否则调用CreateNewTask方法,创建新任务
            content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(processResponse, input);
            // å¦‚果状态为false,则返回null
            if (!content.Status) return content.Error("工艺申请失败");
            //// è°ƒç”¨GetProcessResponseAsync方法,获取工艺响应
            //var processResponse = await GetProcessResponseAsync(process, input.Position);
            List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
            // è°ƒç”¨CreateNewTask方法,创建新任务
            content =  await CreateNewTask(input, strings);
            if (content.Status)
            {
                var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -638,6 +585,70 @@
        // è¿”回content
        return content;
    }
    /// <summary>
    /// æ›´æ–°ä»»åŠ¡è´§ä½
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<WebResponseContent> UpdateExistingTask(RequestTaskDto input)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
            if (task == null)
                return content.Error($"暂未找到【{input.PalletCode}】的任务");
            return content = await UpdateExistingTask(input, task);
        }
        catch (Exception err)
        {
            throw;
        }
    }
    /// <summary>
    /// ç©ºæ‰˜ç›˜å…¥åº“申请
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<WebResponseContent> RequestTrayInTaskAsync(RequestTaskDto input)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            // è°ƒç”¨BaseDal.QueryFirstAsync方法,查询任务
            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
            if (task != null && task.TaskState == (int)TaskInStatusEnum.InNew)
            {
                // åˆ›å»ºWMS任务
                WMSTaskDTO taskDTO = new WMSTaskDTO()
                {
                    TaskNum = task.TaskNum.Value,
                    Grade = 1,
                    PalletCode = task.PalletCode,
                    RoadWay = task.Roadway,
                    SourceAddress = task.SourceAddress,
                    TargetAddress = task.Roadway,
                    TaskState = task.TaskState.Value,
                    Id = 0,
                    TaskType = task.TaskType,
                };
                return content.OK(data: task);
            }
            return await CreateNewTask(input, null, 1);
        }
        catch (Exception)
        {
            throw;
        }
    }
    // èŽ·å–æ‰˜ç›˜å•å…ƒæ ¼çŠ¶æ€
@@ -671,6 +682,8 @@
        // åˆ›å»ºä¸€ä¸ªProcessApplyDto对象,并赋值
        return new ProcessApplyDto()
        {
            EquipmentCode = "ECH001-B",
            Software = "WMS",
            //WipOrderNo = result.BindCode,
            SerialNos = content.SerialNos.Select(item => new SerialNos
            {
@@ -697,13 +710,13 @@
        {
            case "1088":
                return SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
                    .Where(x => x.EquipmentType == "陈化" && x.WipOrderNo == apply.WipOrderNo && x.ProductDesc == apply.ProductNo)
                    .Where(x => x.EquipmentType == "陈化" && x.WipOrderNo == apply.WipOrderNo || x.ProductDesc == apply.ProductNo)
                    .ToList();
            case "1339":
            case "1406":
                return SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
                    .Where(x => x.EquipmentType == "静置" && x.WipOrderNo == apply.WipOrderNo && x.ProductDesc == apply.ProductNo)
                    .Where(x => x.EquipmentType == "静置" && x.WipOrderNo == apply.WipOrderNo || x.ProductDesc == apply.ProductNo)
                    .ToList();
            default:
@@ -713,104 +726,7 @@
    #endregion è¯·æ±‚任务入库
    #region è¯·æ±‚出库
    //public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCdoe,List<string> roadways)
    //{
    //    WebResponseContent content = new WebResponseContent();
    //    try
    //    {
    //        // 1==实盘 2 ==空盘
    //        if (tag == 1)
    //        {
    //            // æŸ¥è¯¢åº“存信息
    //            DtStockInfo? stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault();
    //            // åˆ›å»ºæ–°ä»»åŠ¡å®žä¾‹
    //            var task = new Dt_Task()
    //            {
    //                Grade = 1,
    //                Roadway = stockInfo.LocationInfo.RoadwayNo,
    //                TargetAddress = position,
    //                Dispatchertime = DateTime.Now,
    //                MaterialNo = "",
    //                NextAddress = position,
    //                OrderNo = null,
    //                PalletCode = stockInfo.PalletCode,
    //                SourceAddress = stockInfo.LocationCode,
    //                TaskState = (int)TaskOutStatusEnum.OutNew,
    //                TaskType = (int)TaskOutboundTypeEnum.Outbound,
    //                TaskNum = await BaseDal.GetTaskNo(),
    //                Creater = "Systeam"
    //            };
    //            var taskId = await BaseDal.AddDataAsync(task);
    //            bool isResult = taskId > 0;
    //            if (isResult)
    //            {
    //                WMSTaskDTO taskDTO = new WMSTaskDTO()
    //                {
    //                    TaskNum = task.TaskNum.Value,
    //                    Grade = 1,
    //                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
    //                    RoadWay = task.Roadway,
    //                    SourceAddress = stockInfo.LocationCode,
    //                    TargetAddress = task.Roadway,
    //                    TaskState = (int)TaskOutStatusEnum.OutNew,
    //                    Id = 0,
    //                    TaskType = (int)TaskOutboundTypeEnum.OutTray
    //                };
    //                stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
    //                _locationRepository.UpdateData(stockInfo.LocationInfo);
    //                content.OK(data: taskDTO);
    //            }
    //        }
    //        else
    //        {
    //            var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && x.StockInfoDetails.Any(z => z.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault();
    //            // åˆ›å»ºæ–°ä»»åŠ¡å®žä¾‹
    //            var task = new Dt_Task
    //            {
    //                CurrentAddress = stockInfo.LocationCode,
    //                Grade = 1,
    //                Roadway = stockInfo.LocationInfo.RoadwayNo,
    //                TargetAddress = position,
    //                Dispatchertime = DateTime.Now,
    //                MaterialNo = "",
    //                NextAddress = position,
    //                OrderNo = null,
    //                PalletCode = stockInfo.PalletCode,
    //                SourceAddress = stockInfo.LocationCode,
    //                TaskState = (int)TaskOutStatusEnum.OutNew,
    //                TaskType = (int)TaskOutboundTypeEnum.OutTray,
    //                TaskNum = await BaseDal.GetTaskNo(),
    //                Creater = "Systeam"
    //            };
    //            var taskId = await BaseDal.AddDataAsync(task);
    //            bool isResult = taskId > 0;
    //            if (isResult)
    //            {
    //                WMSTaskDTO taskDTO = new WMSTaskDTO()
    //                {
    //                    TaskNum = task.TaskNum.Value,
    //                    Grade = 1,
    //                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
    //                    RoadWay = task.Roadway,
    //                    SourceAddress = stockInfo.LocationCode,
    //                    TargetAddress = task.Roadway,
    //                    TaskState = (int)TaskOutStatusEnum.OutNew,
    //                    Id = 0,
    //                    TaskType = (int)TaskOutboundTypeEnum.OutTray
    //                };
    //                content.OK(data: taskDTO);
    //            }
    //        }
    //    }
    //    catch (Exception ex)
    //    {
    //        throw;
    //    }
    //    return content;
    //}
    #region è¯·æ±‚出库(实盘&空盘)
    /// <summary>
    /// è¯·æ±‚托盘任务
@@ -820,13 +736,13 @@
    /// <param name="areaCode">区域编码</param>
    /// <param name="roadways">巷道编码集合</param>
    /// <returns>返回结果集</returns>
    public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways)
    public async Task<WebResponseContent> RequestTrayOutTaskAsync(string position, int tag, string areaCode, List<string> roadways)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            // æ ¹æ®æ‰˜ç›˜ç±»åž‹æŸ¥è¯¢åº“存信息
            DtStockInfo stockInfo = tag == 1
            DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
                ? QueryStockInfoForRealTray(areaCode, roadways)
                : QueryStockInfoForEmptyTray(areaCode, roadways);
@@ -846,7 +762,7 @@
            // åˆ›å»ºä»»åŠ¡DTO
            WMSTaskDTO taskDTO = CreateTaskDTO(task);
            if (tag == 1)
            //if (tag == 1)
            {
                // æ›´æ–°åº“存位置状态为不可用
                stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
@@ -860,7 +776,7 @@
        {
            // è®°å½•异常信息并抛出
            LogFactory.GetLog("请求托盘任务").Error(true, ex);
            throw;
            return content.Error(ex.Message);
        }
    }
@@ -869,9 +785,12 @@
    /// </summary>
    private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways)
    {
        return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
        // 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)
                                   .FirstOrDefault();
                                   .First();
    }
    /// <summary>
@@ -879,9 +798,11 @@
    /// </summary>
    private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways)
    {
        return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "空托盘") && roadways.Contains(x.LocationInfo.RoadwayNo))
        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)
                                   .FirstOrDefault();
                                   .First();
    }
    /// <summary>
@@ -900,8 +821,9 @@
            OrderNo = null,
            PalletCode = stockInfo.PalletCode,
            SourceAddress = stockInfo.LocationCode,
            CurrentAddress = stockInfo.LocationCode,
            TaskState = (int)TaskOutStatusEnum.OutNew,
            TaskType = tag == 1 ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray,
            TaskType = tag == (int)TaskOutboundTypeEnum.Outbound ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray,
            TaskNum = BaseDal.GetTaskNo().Result,
            Creater = "System" // ä¿®æ­£æ‹¼å†™é”™è¯¯
        };
@@ -928,64 +850,82 @@
    #endregion è¯·æ±‚出库
    #region é™ˆåŒ–请求出库
    #region ä»»åŠ¡çŠ¶æ€æ›´æ”¹
    // é™ˆåŒ–请求出库
    public async Task<WebResponseContent> OutTrayByCh(string position)
    /// <summary>
    /// æ›´æ–°ä»»åŠ¡çŠ¶æ€&出库解盘
    /// </summary>
    /// <param name="taskNum"></param>
    /// <param name="taskState"></param>
    /// <returns></returns>
    public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            var area = _areaInfoRepository.QueryFirst(x => x.AreaName == "陈化区");
            var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
            if (task == null)
                return content.Error("未找到任务");
            // æŸ¥è¯¢åº“存信息
            var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == area.AreaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).OrderBy(x => x.CreateDate).FirstOrDefault();
            // åˆ›å»ºæ–°ä»»åŠ¡å®žä¾‹
            var task = new Dt_Task()
            if (taskState == (int)TaskOutStatusEnum.Line_OutFinish)
            {
                Grade = 1,
                Roadway = stockInfo.LocationInfo.RoadwayNo,
                TargetAddress = position,
                Dispatchertime = DateTime.Now,
                MaterialNo = "",
                NextAddress = position,
                OrderNo = null,
                PalletCode = stockInfo.PalletCode,
                SourceAddress = stockInfo.LocationCode,
                TaskState = (int)TaskOutStatusEnum.OutNew,
                TaskType = (int)TaskOutboundTypeEnum.OutTray,
                TaskNum = await BaseDal.GetTaskNo(),
                Creater = "Systeam"
            };
            var taskId = await BaseDal.AddDataAsync(task);
            bool isResult = taskId > 0;
            if (isResult)
            {
                WMSTaskDTO taskDTO = new WMSTaskDTO()
                var taskHty = CreateHistoricalTask(task);
                await _unitOfWorkManage.UseTranAsync(async () =>
                {
                    TaskNum = task.TaskNum.Value,
                    Grade = 1,
                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
                    RoadWay = task.Roadway,
                    SourceAddress = stockInfo.LocationCode,
                    TargetAddress = task.Roadway,
                    TaskState = (int)TaskOutStatusEnum.OutNew,
                    Id = 0,
                    TaskType = (int)TaskOutboundTypeEnum.OutTray
                };
                stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
                _locationRepository.UpdateData(stockInfo.LocationInfo);
                content.OK(data: taskDTO);
                    var asb = await BaseDal.DeleteDataByIdAsync(task.TaskId);
                    var asbHty = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
                    if (asb && asbHty)
                        content.OK();
                    else
                        throw new Exception();
                });
                content.OK();
            }
            else
            {
                task.TaskState = taskState;
                var asb = await BaseDal.UpdateDataAsync(task);
                if (asb)
                    content.OK();
                else
                    content.Error();
            }
        }
        catch (Exception ex)
        {
            throw;
            content.Error(ex.Message);
        }
        return content;
    }
    #endregion é™ˆåŒ–请求出库
    #endregion
    #region å‡ºåº“解盘
    /// <summary>
    /// å‡ºåº“解盘接口
    /// </summary>
    /// <param name="taskNum"></param>
    /// <returns></returns>
    public async Task<WebResponseContent> OutUnblockInterface(int taskNum)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
            if (task == null)
                return content.Error("未找到任务");
            task.TaskState = (int)TaskOutStatusEnum.Line_OutFinish;
            var taskHty = CreateHistoricalTask(task);
        }
        catch (Exception ex)
        {
            content.Error(ex.Message);
        }
        return content;
    }
    #endregion
    #endregion å¤–部接口方法
@@ -1235,6 +1175,8 @@
                isUpdateStock = await _stockInfoRepository.AddDataNavAsync(stock);
            }
            // æ·»åŠ åŽ†å²ä»»åŠ¡
            var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
@@ -1349,12 +1291,12 @@
    /// <param name="areaId">区域ID</param>
    /// <param name="content">响应内容</param>
    /// <returns></returns>
    private async Task<WebResponseContent> CreateNewTask(List<Dt_EquipmentProcess> process, RequestTaskDto input)
    private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input, List<string> process = null, int flag = 0)
    {
        WebResponseContent content = new WebResponseContent();
        List<string> strings = process.Select(x => x.EquipmentName).ToList();
        // èŽ·å–ç›®æ ‡åœ°å€
        string ToAddress = await GetRoadWayAsync(strings);
        string ToAddress = await GetRoadWayAsync(process);
        // åˆ›å»ºæ–°ä»»åŠ¡å®žä¾‹
        var task = new Dt_Task
@@ -1370,7 +1312,7 @@
            PalletCode = input.PalletCode,
            SourceAddress = input.Position,
            TaskState = (int)TaskInStatusEnum.InNew,
            TaskType = (int)TaskTypeEnum.Inbound,
            TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray,
            TaskNum = await BaseDal.GetTaskNo(),
            Creater = "Systeam"
        };
@@ -1387,15 +1329,15 @@
                // åˆ›å»ºWMS任务
                WMSTaskDTO taskDTO = new WMSTaskDTO()
                {
                    TaskNum = 0,
                    TaskNum = task.TaskNum.Value,
                    Grade = 1,
                    PalletCode = DateTime.Now.ToString("MMddHHmmss"),
                    PalletCode = task.PalletCode,
                    RoadWay = task.Roadway,
                    SourceAddress = input.Position,
                    SourceAddress = task.SourceAddress,
                    TargetAddress = task.Roadway,
                    TaskState = (int)TaskInStatusEnum.InNew,
                    TaskState = task.TaskState.Value,
                    Id = 0,
                    TaskType = (int)TaskInboundTypeEnum.Inbound,
                    TaskType = task.TaskType,
                };
                content.OK(data: taskDTO);
            }
@@ -1448,6 +1390,22 @@
    {
        var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free)
            .GroupBy(x => x.RoadwayNo)
             .OrderByDescending(g => g.Count()) // æ ¹æ®æ¯ä¸ªç»„的元素数量排序
             .First(); // å–出数量最多的组
        string minRoadwayNo = minGroup.Key; // æ•°é‡æœ€å¤šçš„组的Key
        return minRoadwayNo;
    }
    /// <summary>
    /// èŽ·å–å··é“æˆ–ç«™å°
    /// </summary>
    /// <returns></returns>
    public async Task<string> GetRoadWayAsync(int areaCode)
    {
        var minGroup = _locationRepository.QueryData(x => x.AreaId == areaCode && x.LocationStatus == (int)LocationEnum.Free)
            .GroupBy(x => x.RoadwayNo)
             .OrderBy(g => g.Count()) // æ ¹æ®æ¯ä¸ªç»„的元素数量排序
             .First(); // å–出数量最少的组
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/ProductionController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@

namespace WIDESEA_WMSServer.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ProductionController : ApiBaseController<IProductionService, ProductionModel>
    {
        public ProductionController(IProductionService service) : base(service)
        {
        }
        public override ActionResult AddData([FromBody] ProductionModel options)
        {
            return base.AddData(options);
        }
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -1,4 +1,5 @@
using WIDESEA_DTO;
using static WIDESEA_DTO.RequestTaskDto;
namespace WIDESEA_WMSServer.Controllers;
@@ -45,7 +46,7 @@
    }
    /// <summary>
    /// ä»»åŠ¡è¯·æ±‚
    /// è¯·æ±‚任务巷道
    /// </summary>
    /// <param name="input">请求数据</param>
    /// <returns></returns>
@@ -56,13 +57,47 @@
    }
    /// <summary>
    /// ç©ºæ‰˜ç›˜è¯·æ±‚
    /// è¯·æ±‚任务货位
    /// </summary>
    /// <param name="input">请求数据</param>
    /// <returns></returns>
    [HttpPost, AllowAnonymous, Route("RequestTrayTaskAsync")]
    public async Task<WebResponseContent> RequestTrayTaskAsync([FromBody] string position, int tag, string areaCdoe, List<string> roadways)
    [HttpPost, AllowAnonymous, Route("RequestLocationTaskAsync")]
    public async Task<WebResponseContent> UpdateExistingTask([FromBody] RequestTaskDto input)
    {
        return await Service.RequestTrayTaskAsync(position, tag, areaCdoe, roadways);
        return await Service.UpdateExistingTask(input);
    }
    /// <summary>
    /// ç©ºæ‰˜ç›˜å…¥åº“请求
    /// </summary>
    /// <param name="input">请求数据</param>
    /// <returns></returns>
    [HttpPost, AllowAnonymous, Route("RequestTrayInTaskAsync")]
    public async Task<WebResponseContent> RequestTrayInTaskAsync([FromBody] RequestTaskDto input)
    {
        return await Service.RequestTrayInTaskAsync(input);
    }
    /// <summary>
    /// ç©ºæ‰˜ç›˜&满盘出库请求
    /// </summary>
    /// <param name="input">请求数据</param>
    /// <returns></returns>
    [HttpPost, AllowAnonymous, Route("RequestTrayOutTaskAsync")]
    public async Task<WebResponseContent> RequestTrayOutTaskAsync([FromBody] RequestOutTaskDto request)
    {
        return await Service.RequestTrayOutTaskAsync(request.Position, request.Tag, request.AreaCdoe, request.Roadways);
    }
    /// <summary>
    /// ä»»åŠ¡çŠ¶æ€ä¿®æ”¹
    /// </summary>
    /// <param name="input">请求数据</param>
    /// <returns></returns>
    [HttpPost, AllowAnonymous, Route("UpdateTaskStatus")]
    public async Task<WebResponseContent> UpdateTaskStatus([FromBody] UpdateStatusDto input)
    {
        return await Service.UpdateTaskStatus(input.TaskNum, input.TaskState);
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/GlobalUsing.cs
@@ -12,4 +12,5 @@
global using WIDESEA_Model.Models.System;
global using WIDESEA_Core.Authorization;
global using WIDESEA_Core.Utilities;
global using WIDESEA_Model;
global using WIDESEA_Model;
global using WIDESEA_StorageBasicServices;
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj.user
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
    <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
    <Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
    <Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
    <NameOfLastUsedPublishProfile>D:\Git\BaiBuLiKu\Code Management\WMS\WIDESEA_WMSServer\WIDESEA_WMSServer\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
  </PropertyGroup>
</Project>