From f40ba2a9fb9d3c2ece08e9a7cd987d4744dccab2 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 17 六月 2025 15:22:05 +0800
Subject: [PATCH] 优化库内移库,堆垛机和穿梭车交互逻辑
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs | 359 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 344 insertions(+), 15 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs"
index c1a7e2b..39359a8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs"
@@ -2,14 +2,27 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using System.Collections;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Reflection;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.StackerCraneEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Caches;
+using WIDESEAWCS_Core.Utilities;
+using WIDESEAWCS_DTO.System;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Server.Controllers.System;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_Tasks.ShuttleCarJob;
using WIDESEAWCS_Tasks.StackerCraneJob;
+using static WIDESEAWCS_Server.Controllers.LargeScreenController;
namespace WIDESEAWCS_Server.Controllers
{
@@ -20,13 +33,62 @@
private readonly IDeviceInfoRepository _deviceInfoRepository;
private readonly IRouterService _routerService;
private readonly ICacheService _cacheService;
- public LargeScreenController(ICacheService cacheService, IRouterService routerService, IDeviceInfoRepository deviceInfoRepository)
+ private readonly ITaskRepository _taskRepository;
+ private readonly ITaskService _taskService;
+ public LargeScreenController(ICacheService cacheService, IRouterService routerService, IDeviceInfoRepository deviceInfoRepository, ITaskRepository taskRepository, ITaskService taskService)
{
_deviceInfoRepository = deviceInfoRepository;
_routerService = routerService;
_cacheService = cacheService;
+ _taskRepository = taskRepository;
+ _taskService = taskService;
}
+ [HttpPost, Route("GetTaskInfos")]
+ public WebResponseContent GetTaskInfos([FromBody] SaveModel model)
+ {
+ WebResponseContent webResponseContent = new WebResponseContent();
+ List<TaskInfo> taskInfos = new List<TaskInfo>();
+ List<DictionaryDTO> dictionaryDTOs = new List<DictionaryDTO>();
+ try
+ {
+ var name = model.MainData["Name"].ToString();
+ List<Dt_Task> dt_Tasks = new List<Dt_Task>();
+ if (name == "鍏ュ簱")
+ {
+ dt_Tasks = _taskRepository.QueryData(x => !_taskService.TaskOutboundTypes.Contains(x.TaskType) && !_taskService.TaskRelocationTypes.Contains(x.TaskType));
+ dt_Tasks = dt_Tasks.OrderByDescending(x => x.TaskType).Take(10).ToList();
+ }
+ else
+ {
+ dt_Tasks = _taskRepository.QueryData(x => !_taskService.TaskInboundTypes.Contains(x.TaskType));
+ dt_Tasks = dt_Tasks.OrderByDescending(x => x.TaskType).Take(10).ToList();
+ }
+ if (dt_Tasks.Count > 0)
+ {
+ List<DictionaryDTO> taskTypeDTOs = GetDictionary(Sys_DictionaryController.GetVueDictionary("taskType").Data);
+ List<DictionaryDTO> taskStateDTOs = GetDictionary(Sys_DictionaryController.GetVueDictionary("taskState").Data);
+ foreach (var dt_Task in dt_Tasks)
+ {
+ TaskInfo taskInfo = new TaskInfo();
+ taskInfo.PalletCode = dt_Task.PalletCode;
+ taskInfo.ShuttleCarCode = dt_Task.ShuttleCarCode;
+ taskInfo.TaskState = taskStateDTOs.Where(x => x.name == dt_Task.TaskState.ToString()).First().remark;
+ taskInfo.TaskType = taskTypeDTOs.Where(x => x.name == dt_Task.TaskType.ToString()).First().remark;
+ taskInfo.SourceAddress = dt_Task.SourceAddress;
+ taskInfo.TargetAddress = dt_Task.TargetAddress;
+ taskInfo.TaskNum = dt_Task.TaskNum;
+ taskInfos.Add(taskInfo);
+ }
+ }
+ webResponseContent.OK(data: taskInfos);
+ }
+ catch (Exception ex)
+ {
+ webResponseContent.Error(ex.Message);
+ }
+ return webResponseContent;
+ }
/// <summary>
/// 鑾峰彇绌挎杞︾數閲�
/// </summary>
@@ -80,13 +142,17 @@
{
case "SpeStackerCrane"://鍫嗗灈鏈�
{
- var Device = _cacheService.Get(typeof(StackerCraneTaskCommandR), item.DeviceCode);
+ var Device = _cacheService.Get(typeof(StackerCraneTaskCommandR), item.DeviceCode) as StackerCraneTaskCommandR;
if (Device != null)
{
DeviceInfo deviceInfo = new DeviceInfo()
{
DeviceName = item.DeviceName,
- Deviceinfo = Device
+ DeviceCode = item.DeviceCode,
+ DeviceStatus = Device.Onlinestate == 1 ? "鍦ㄧ嚎" : "绂荤嚎",
+ DeviceMachine = GetRunStatus(Device.RunStatus),
+ Err_Status = GetErr_Status(Device.Err_Status),
+ TaskID = Device.CurrentTaskNum
};
devices.Add(deviceInfo);
}
@@ -95,15 +161,21 @@
case "CommonConveyorLine"://杈撻�佺嚎
{
List<string> childDeviceCodes = _routerService.QueryAllPositions(item.DeviceCode);
- foreach (var childDeviceCode in childDeviceCodes)
+ List<string> strings = new List<string>() { "1003", "1006", "1007" };
+ childDeviceCodes.AddRange(strings);
+ foreach (var childDeviceCode in childDeviceCodes.OrderBy(x => x))
{
- var Device = _cacheService.Get(typeof(ConveyorLineTaskCommandR), childDeviceCode);
+ var Device = _cacheService.Get(typeof(ConveyorLineTaskCommandR), childDeviceCode) as ConveyorLineTaskCommandR;
if (Device != null)
{
DeviceInfo deviceInfo = new DeviceInfo()
{
- DeviceName = childDeviceCode,
- Deviceinfo = Device
+ DeviceName = item.DeviceName,
+ DeviceCode = childDeviceCode,
+ DeviceStatus = Device.inRead == 1 ? "鍙啓" : "涓嶅彲鍐�",
+ DeviceMachine = GetMachine(Device.Status),
+ TaskID = Device.TaskNum,
+ Err_Status = GetSpec(Device.Spec)
};
devices.Add(deviceInfo);
}
@@ -112,13 +184,17 @@
break;
case "ShuttleCar"://绌挎杞�
{
- var Device = _cacheService.Get(typeof(ShuttleCarTaskCommandR), item.DeviceCode);
+ var Device = _cacheService.Get(typeof(ShuttleCarTaskCommandR), item.DeviceCode) as ShuttleCarTaskCommandR;
if (Device != null)
{
DeviceInfo deviceInfo = new DeviceInfo()
{
DeviceName = item.DeviceName,
- Deviceinfo = Device
+ DeviceCode = item.DeviceCode,
+ DeviceStatus = Device.JoinStatus == 1 ? "鍦ㄧ嚎" : "绂荤嚎",
+ DeviceMachine = GetStatus(Device.Status),
+ Err_Status = GetErrStatus(Device.Err_Status),
+ TaskID = Device.number
};
devices.Add(deviceInfo);
}
@@ -128,10 +204,7 @@
break;
}
}
- webResponseContent.OK(data: new
- {
- devices
- });
+ webResponseContent.OK(data: devices);
}
catch (Exception ex)
{
@@ -139,11 +212,267 @@
}
return webResponseContent;
}
+ List<DictionaryDTO> GetDictionary(object data)
+ {
+ List<DictionaryDTO> dictionaryDTOs = new List<DictionaryDTO>();
+ List<object> a = data as List<object>;
+ foreach (var task in a)
+ {
+ dynamic dictionaryDTO = task;
+ DictionaryDTO dictionary = new DictionaryDTO
+ {
+ name = dictionaryDTO.key,
+ remark = dictionaryDTO.value,
+ };
+ dictionaryDTOs.Add(dictionary);
+ }
+ return dictionaryDTOs;
+ }
+ public class DictionaryDTO
+ {
+ public string name { get; set; }
+ public string remark { get; set; }
+ }
+ public class TaskInfo
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public int TaskNum { get; set; }
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ public string PalletCode { get; set; }
+ /// <summary>
+ /// 绌挎杞�
+ /// </summary>
+ public string ShuttleCarCode { get; set; }
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public string TaskType { get; set; }
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public string TaskState { get; set; }
+ /// <summary>
+ /// 璧峰鍦板潃
+ /// </summary>
+ public string SourceAddress { get; set; }
+ /// <summary>
+ /// 鐩殑鍦板潃
+ /// </summary>
+ public string TargetAddress { get; set; }
+ }
public class DeviceInfo
{
- //public string DeviceCode { get; set; }
+ /// <summary>
+ /// 璁惧鍚�
+ /// </summary>
public string DeviceName { get; set; }
- public object Deviceinfo { get; set; }
+ /// <summary>
+ /// 璁惧缂栧彿
+ /// </summary>
+ public string DeviceCode { get; set; }
+ /// <summary>
+ /// 璁惧鐘舵��
+ /// </summary>
+ public string DeviceStatus { get; set; }
+ /// <summary>
+ /// 璁惧淇℃伅
+ /// </summary>
+ public string DeviceMachine { get; set; }
+ /// <summary>
+ /// 鏁呴殰
+ /// </summary>
+ public string Err_Status { get; set; }
+ public int TaskID { get; set; }
+ }
+ /// <summary>
+ /// 鑾峰彇鍫嗗灈鏈鸿繍琛岀姸鎬�
+ /// </summary>
+ /// <param name="status"></param>
+ /// <returns></returns>
+ string GetRunStatus(ushort status)
+ {
+ string RunStatus = string.Empty;
+ switch (status)
+ {
+ case 1: RunStatus = "鍒濆鍖栦腑"; break;
+ case 2: RunStatus = "鏁呴殰鏆傚仠"; break;
+ case 3: RunStatus = "鎵嬪姩妯″紡"; break;
+ case 4: RunStatus = "鍗曟妯″紡"; break;
+ case 5: RunStatus = "缁存姢妯″紡"; break;
+ case 6: RunStatus = "鍙栬揣妫�鏌�"; break;
+ case 7: RunStatus = "鍙栬揣绔欑偣鍒ゆ柇"; break;
+ case 8: RunStatus = "鏃犺揣杩愯"; break;
+ case 9: RunStatus = "璇锋眰鍙栬揣"; break;
+ case 10: RunStatus = "鍙栬揣鎺㈣揣"; break;
+ case 11: RunStatus = "鍙栬揣浼稿弶"; break;
+ case 12: RunStatus = "鍙栬揣鎶珮"; break;
+ case 13: RunStatus = "鍙栬揣鍥炲弶"; break;
+ case 14: RunStatus = "鍙栬揣瀹屾垚"; break;
+ case 15: RunStatus = "鏀捐揣妫�鏌�"; break;
+ case 16: RunStatus = "鏀捐揣绔欑偣鍒ゆ柇"; break;
+ case 17: RunStatus = "鏈夎揣杩愯"; break;
+ case 18: RunStatus = "璇锋眰鏀捐揣"; break;
+ case 19: RunStatus = "鏀捐揣鎺㈣揣"; break;
+ case 20: RunStatus = "鏀捐揣浼稿弶"; break;
+ case 21: RunStatus = "鏀捐揣闄嶄綆"; break;
+ case 22: RunStatus = "鏀捐揣鍥炲弶"; break;
+ case 23: RunStatus = "鏀捐揣瀹屾垚"; break;
+ case 24: RunStatus = "鏃犺揣寰呭懡"; break;
+ case 25: RunStatus = "鏈夎揣寰呭懡"; break;
+ case 26: RunStatus = "鍗婅嚜鍔ㄦā寮�"; break;
+ }
+ return RunStatus;
+ }
+ /// <summary>
+ /// 鑾峰彇鍫嗗灈鏈烘晠闅滀唬鐮�
+ /// </summary>
+ /// <param name="status"></param>
+ /// <returns></returns>
+ string GetErr_Status(ushort status)
+ {
+ string RunStatus = string.Empty;
+ switch (status)
+ {
+ case 1: RunStatus = "璐у弶涓嶅湪涓�"; break;
+ case 2: RunStatus = "鍙栬揣璐ф灦鏃犺揣"; break;
+ case 3: RunStatus = "鏀捐揣璐ф灦鏈夎揣"; break;
+ case 4: RunStatus = "浠诲姟闈炴硶"; break;
+ case 5: RunStatus = "琛岃蛋鍙嶅悜"; break;
+ case 6: RunStatus = "琛岃蛋鍙橀鍣ㄦ姤璀�"; break;
+ case 7: RunStatus = "琛岃蛋鍫佃浆"; break;
+ case 8: RunStatus = "琛岃蛋澶遍��"; break;
+ case 9: RunStatus = "鎻愬崌鍙嶅悜"; break;
+ case 10: RunStatus = "鎻愬崌鍙橀鍣ㄦ姤璀�"; break;
+ case 11: RunStatus = "鎻愬崌鍫佃浆"; break;
+ case 12: RunStatus = "鎻愬崌澶遍��"; break;
+ case 13: RunStatus = "璐у弶1鍙嶅悜"; break;
+ case 14: RunStatus = "璐у弶1鍙橀鍣ㄦ姤璀�"; break;
+ case 15: RunStatus = "璐у弶1鍫佃浆"; break;
+ case 16: RunStatus = "璐у弶1澶遍��"; break;
+ case 17: RunStatus = "璐у弶2鍙嶅悜"; break;
+ case 18: RunStatus = "璐у弶2鍙橀鍣ㄦ姤璀�"; break;
+ case 19: RunStatus = "璐у弶2鍫佃浆"; break;
+ case 20: RunStatus = "璐у弶2澶遍��"; break;
+ case 21: RunStatus = "鎬ュ仠鏁呴殰"; break;
+ case 22: RunStatus = "鍓嶆瀬闄�"; break;
+ case 23: RunStatus = "鍚庢瀬闄�"; break;
+ case 24: RunStatus = "琛岃蛋鏋侀檺"; break;
+ case 25: RunStatus = "涓婃瀬闄�"; break;
+ case 26: RunStatus = "涓嬫瀬闄�"; break;
+ case 27: RunStatus = "鍗囬檷鏋侀檺"; break;
+ case 28: RunStatus = "璐у弶鍓嶆瀬闄�"; break;
+ case 29: RunStatus = "璐у弶鍚庢瀬闄�"; break;
+ case 30: RunStatus = "璐у弶鍚庢瀬闄�"; break;
+ case 31: RunStatus = "鍙宠秴鍙�"; break;
+ case 32: RunStatus = "鍓嶈秴鍙�"; break;
+ case 33: RunStatus = "鍚庤秴鍙�"; break;
+ case 34: RunStatus = "瓒呴珮"; break;
+ case 35: RunStatus = "璁ゅ潃鏁呴殰"; break;
+ case 36: RunStatus = "鏀捐揣鏃犺揣"; break;
+ case 37: RunStatus = "鍙栬揣瀹屾垚鏃犺揣"; break;
+ case 38: RunStatus = "鍙栬揣璐у弶鏈夎揣"; break;
+ case 39: RunStatus = "鏀捐揣瀹屾垚鏈夎揣"; break;
+ case 40: RunStatus = "鎻愬崌缂栫爜"; break;
+ case 41: RunStatus = "琛岃蛋"; break;
+ case 42: RunStatus = "璐у弶"; break;
+ case 43: RunStatus = "鏂怀鏁呴殰"; break;
+ case 44: RunStatus = "A鍙変笉鍦ㄤ腑"; break;
+ case 45: RunStatus = "B鍙変笉鍦ㄤ腑"; break;
+ case 46: RunStatus = "鍙栬揣鍓嶆帓鏈夎揣"; break;
+ case 47: RunStatus = "鏀捐揣鍓嶆帓鏈夎揣"; break;
+ case 48: RunStatus = "涓嶅湪鍒楃珯鐐�"; break;
+ case 49: RunStatus = "涓嶅湪灞傜珯鐐�"; break;
+ case 50: RunStatus = "閫氳鏁呴殰"; break;
+ case 51: RunStatus = "鍗歌揣璐у弶鍥炲弶鏈夎揣鏁呴殰"; break;
+ case 52: RunStatus = "杞借揣鍙拌秴閲嶈繃杞�"; break;
+ case 53: RunStatus = "楂樺害涓嶇"; break;
+ case 54: RunStatus = "灞傜粰瀹氫綅缃秴闄愭晠闅�"; break;
+ case 55: RunStatus = "鍒楃粰瀹氫綅缃秴闄愭晠闅�"; break;
+ case 56: RunStatus = "鍙夌粰瀹氫綅缃秴闄愭晠闅�"; break;
+ case 57: RunStatus = "瑙︽懜灞忛�氳鏁呴殰"; break;
+ }
+ return RunStatus;
+ }
+ string GetMachine(ushort machine)
+ {
+ string RunStatus = string.Empty;
+ switch (machine)
+ {
+ case 0: RunStatus = "鍏抽棴"; break;
+ case 2: RunStatus = "鏈夎揣"; break;
+ case 3: RunStatus = "绛夊緟鎸囦护"; break;
+ case 4: RunStatus = "绌洪棽"; break;
+ case 12: RunStatus = "鑷閿欒"; break;
+ case 13: RunStatus = "鏃犲彉鏈�"; break;
+ case 14: RunStatus = "鎻愬墠鍒版潵"; break;
+ case 15: RunStatus = "鎺ユ敹瓒呮椂"; break;
+ case 16: RunStatus = "鎺ユ敹鏆傚仠"; break;
+ case 17: RunStatus = "鏈夊彉鏃�"; break;
+ case 19: RunStatus = "鏀捐瓒呮椂"; break;
+ case 20: RunStatus = "鏀捐鏆傚仠"; break;
+ }
+ return RunStatus;
+ }
+ string GetSpec(ushort spec)
+ {
+ string RunStatus = string.Empty;
+ switch (spec)
+ {
+ case 1: RunStatus = "宸﹁秴"; break;
+ case 2: RunStatus = "鍙宠秴"; break;
+ case 3: RunStatus = "鍓嶈秴"; break;
+ case 4: RunStatus = "鍚庤秴"; break;
+ case 5: RunStatus = "瓒呴珮"; break;
+ case 6: RunStatus = "瓒呴噸"; break;
+ }
+ return RunStatus;
+ }
+ string GetStatus(short status)
+ {
+ string Status = string.Empty;
+ switch (status)
+ {
+ case 0: Status = "寰呮満涓�"; break;
+ case 1: Status = "鍏ュ簱涓�"; break;
+ case 2: Status = "鍑哄簱涓�"; break;
+ case 3: Status = "绉诲簱涓�"; break;
+ case 4: Status = "鐩樼偣涓�"; break;
+ case 9: Status = "鎵嬪姩涓�"; break;
+ case 10: Status = "鍏呯數涓�"; break;
+ case 13: Status = "A渚у洖闆朵腑"; break;
+ case 14: Status = "B渚у洖闆朵腑"; break;
+ case 15: Status = "A渚у悗閫�涓�"; break;
+ case 16: Status = "B渚у悗閫�涓�"; break;
+ }
+ return Status;
+ }
+ string GetErrStatus(short status)
+ {
+ string Status = string.Empty;
+ switch (status)
+ {
+ case 0: Status = "姝e父"; break;
+ case 1: Status = "鍓嶉槻鎾炰繚鎶�"; break;
+ case 2: Status = "鍚庨槻鎾炰繚鎶�"; break;
+ case 3: Status = "椤跺崌瓒呮椂"; break;
+ case 4: Status = "琛岃蛋瓒呮椂"; break;
+ case 5: Status = "鍓嶅噺閫熸縺鍏夋晠闅�"; break;
+ case 6: Status = "鍚庡噺閫熸縺鍏夋晠闅�"; break;
+ case 7: Status = "鍓嶅悜涓婂噺閫熸縺鍏夋晠闅�"; break;
+ case 8: Status = "鍚庡悜涓婂噺閫熸縺鍏夋晠闅�"; break;
+ case 9: Status = "鎺ヨ繎寮�鍏虫晠闅�"; break;
+ case 10: Status = "琛岃蛋鍫佃浆鎶ヨ"; break;
+ case 11: Status = "A渚ф�ュ仠鎶ヨ"; break;
+ case 12: Status = "B渚ф�ュ仠鎶ヨ"; break;
+ case 13: Status = "琛岃蛋鐢垫満鏁呴殰"; break;
+ case 14: Status = "椤跺崌鐢垫満鏁呴殰"; break;
+ case 15: Status = "鐢甸噺涓嶈冻"; break;
+ }
+ return Status;
}
}
}
--
Gitblit v1.9.3