#region << 版 本 注 释 >>
/*----------------------------------------------------------------
* 命å空间:WIDESEAWCS_TaskInfoService
* 创建者:胡童庆
* 创建时间:2024/8/2 16:13:36
* 版本:V1.0.0
* æè¿°ï¼š
*
* ----------------------------------------------------------------
* 修改人:
* 修改时间:
* 版本:V1.0.1
* 修改说明:
*
*----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_TaskInfoService
{
public class TaskExecuteDetailService : ServiceBase<Dt_TaskExecuteDetail, ITaskExecuteDetailRepository>, ITaskExecuteDetailService
{
private readonly ITaskRepository _taskRepository;
public TaskExecuteDetailService(ITaskExecuteDetailRepository BaseDal, ITaskRepository taskRepository) : base(BaseDal)
{
_taskRepository = taskRepository;
}
public void AddTaskExecuteDetail(int taskId, string description = "")
{
try
{
bool isNormal = true;
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskId == taskId);
if (task == null) return;
int taskNum = task.TaskNum;
int taskState = task.TaskState;
if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
{
if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
isNormal = false;
}
else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
{
if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
isNormal = false;
}
Dt_TaskExecuteDetail taskExecuteDetail = new()
{
IsManual = App.User.UserId > 0,
IsNormal = isNormal,
TaskNum = taskNum,
TaskId = taskId,
TaskState = taskState,
Description = description,
CurrentAddress = task.CurrentAddress,
NextAddress = task.NextAddress,
};
BaseDal.AddData(taskExecuteDetail);
}
catch (Exception ex)
{
}
}
public void AddTaskExecuteDetail(List<int> taskNums, string description = "")
{
try
{
List<Dt_TaskExecuteDetail> taskExecuteDetails = new List<Dt_TaskExecuteDetail>();
foreach (var item in taskNums)
{
bool isNormal = true;
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == item);
if (task == null) return;
int taskNum = task.TaskNum;
int taskState = task.TaskState;
if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
{
if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
isNormal = false;
}
else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
{
if ((int)(TaskInStatusEnum)result > (int)TaskInStatusEnum.InFinish)
isNormal = false;
}
Dt_TaskExecuteDetail taskExecuteDetail = new()
{
IsManual = App.User.UserId > 0,
IsNormal = isNormal,
TaskNum = taskNum,
TaskId = task.TaskId,
TaskState = taskState,
Description = description,
CurrentAddress = task.CurrentAddress,
NextAddress = task.NextAddress,
};
taskExecuteDetails.Add(taskExecuteDetail);
}
BaseDal.AddData(taskExecuteDetails);
}
catch (Exception ex)
{
}
}
public WebResponseContent GetDetailInfo(int taskNum)
{
WebResponseContent content = new();
try
{
int active = -1;
List<object> list = new();
List<int> steps = new();
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
if (task != null)
{
if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(task.TaskType.ToString()).ToString(), out int result))
{
steps = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().Where(x => x <= (int)TaskOutStatusEnum.OutFinish).ToList();
foreach (var item in steps)
{
object obj;
FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
if (descriptionAttribute != null)
{
obj = new { title = item, description = descriptionAttribute.Description };
}
else
{
obj = new { title = item, description = ((TaskOutStatusEnum)item).ToString() };
}
list.Add(obj);
}
}
else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(task.TaskType.ToString()).ToString(), out result))
{
steps = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().Where(x => x <= (int)TaskInStatusEnum.InFinish).ToList();
foreach (var item in steps)
{
object obj;
FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
DescriptionAttribute? descriptionAttribute = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
if (descriptionAttribute != null)
{
obj = new { title = item, description = descriptionAttribute.Description };
}
else
{
obj = new { title = item, description = ((TaskInStatusEnum)item).ToString() };
}
list.Add(obj);
}
}
else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(task.TaskType.ToString()).ToString(), out result))
{
//todo 调用WMS移库完æˆ
}
else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(task.TaskType.ToString()).ToString(), out result))
{
}
else
{
throw new Exception($"任务类型错误,未找到该任务类型,任务å·:ã€{taskNum}】,任务类型:ã€{task.TaskType}】");
}
active = steps.IndexOf(task.TaskState) + 1;
}
content = WebResponseContent.Instance.OK(data: new { active, list });
}
catch (Exception ex)
{
}
return content;
}
public WebResponseContent GetDetailDatas(int taskNum)
{
WebResponseContent content = new();
try
{
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
if (task != null)
{
List<Dt_TaskExecuteDetail> taskExecuteDetails = BaseDal.QueryData(x => x.TaskId == task.TaskId, new Dictionary<string, SqlSugar.OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), SqlSugar.OrderByType.Asc } });
content = WebResponseContent.Instance.OK(data: taskExecuteDetails);
}
else
{
content = WebResponseContent.Instance.Error($"未找到该任务信æ¯,任务å·:ã€{taskNum}】");
}
}
catch (Exception ex)
{
}
return content;
}
}
}