using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public partial class TaskService { public void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "") { StringBuilder stringBuilder = new StringBuilder(App.User?.UserId == 0 ? $"系统自动流程" : "人工手动流程"); if (task.DeviceCode != deviceCode && !string.IsNullOrEmpty(deviceCode)) { stringBuilder.Append($",设备编号由{task.DeviceCode}变更为{deviceCode}"); task.DeviceCode = deviceCode; } if (task.SourceAddress != sourceAddress && !string.IsNullOrEmpty(sourceAddress)) { stringBuilder.Append($",起始地址由{task.SourceAddress}变更为{sourceAddress}"); task.SourceAddress = sourceAddress; } if (task.TargetAddress != targetAddress && !string.IsNullOrEmpty(targetAddress)) { stringBuilder.Append($",目标地址由{task.TargetAddress}变更为{targetAddress}"); task.TargetAddress = targetAddress; } if (task.CurrentAddress != currentAddress && !string.IsNullOrEmpty(currentAddress)) { stringBuilder.Append($",当前位置由{task.CurrentAddress}变更为{currentAddress}"); task.CurrentAddress = currentAddress; } if (task.NextAddress != nextAddress && !string.IsNullOrEmpty(nextAddress)) { stringBuilder.Append($",下一位置由{task.NextAddress}变更为{nextAddress}"); task.NextAddress = nextAddress; } if (task.TaskState != taskStatus.ObjToInt()) { string newStatus = $"{taskStatus}"; try { List enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast().ToList(); FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField((taskStatus).ToString()); if (fieldInfo != null) { DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { newStatus = $"{description.Description}({taskStatus})"; } } } catch { } string oldStatus = $"{task.TaskState}"; try { FieldInfo? fieldInfo2 = typeof(RouterInOutType).GetField(((TaskStatusEnum)task.TaskState).ToString()); if (fieldInfo2 != null) { DescriptionAttribute? description2 = fieldInfo2.GetCustomAttribute(); if (description2 != null) { oldStatus = $"{description2.Description}({task.TaskState})"; } } } catch { } stringBuilder.Append($",任务状态由{oldStatus}变更为{newStatus}"); task.TaskState = taskStatus.ObjToInt(); } BaseDal.UpdateData(task); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, stringBuilder.ToString()); } } }