#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.BaseRepository;
|
using WIDESEAWCS_Core.BaseServices;
|
using WIDESEAWCS_Core.Enums;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEAWCS_TaskInfoService
|
{
|
public class TaskExecuteDetailService : ServiceBase<Dt_TaskExecuteDetail, IRepository<Dt_TaskExecuteDetail>>, ITaskExecuteDetailService
|
{
|
private readonly IRepository<Dt_Task> _taskRepository;
|
|
public TaskExecuteDetailService(IRepository<Dt_TaskExecuteDetail> BaseDal, IRepository<Dt_Task> taskRepository) : base(BaseDal)
|
{
|
_taskRepository = taskRepository;
|
}
|
|
public void AddTaskExecuteDetail(int taskId, string description = "")
|
{
|
// 尝试执行添加任务执行详情的方法
|
try
|
{
|
// 初始化是否正常为true
|
bool isNormal = true;
|
// 根据任务id查询任务
|
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskId == taskId);
|
// 如果任务为空,则返回
|
if (task == null) return;
|
// 获取任务数量
|
int taskNum = task.TaskNum;
|
// 获取任务状态
|
int taskState = task.TaskState;
|
|
// 尝试将任务状态转换为TaskOutStatusEnum枚举类型
|
if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
|
{
|
// 如果转换失败,则将任务状态转换为TaskInStatusEnum枚举类型
|
if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
|
{
|
// 如果转换失败,则将isNormal设置为false
|
isNormal = false;
|
}
|
}
|
// 如果转换成功,则判断任务状态是否大于OutFinish
|
else if ((int)(TaskOutStatusEnum)result > (int)TaskOutStatusEnum.OutFinish)
|
{
|
// 如果大于,则将isNormal设置为false
|
isNormal = false;
|
}
|
// 创建任务执行详情对象
|
Dt_TaskExecuteDetail taskExecuteDetail = new()
|
{
|
// 设置是否手动执行
|
IsManual = App.User.UserId > 0,
|
// 设置是否正常
|
IsNormal = isNormal,
|
// 设置任务数量
|
TaskNum = taskNum,
|
// 设置任务id
|
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;
|
}
|
}
|
}
|