using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Core;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEAWCS_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
/// <summary>
|
/// 穿梭车任务完成
|
/// </summary>
|
/// <param name="taskNum">任务号</param>
|
/// <param name="TaskTypeComplete">完成类型</param>
|
/// <returns></returns>
|
public WebResponseContent ShuttleCarTaskCompleted(int taskNum, short TaskTypeComplete)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
var task = GetTaskInfo(taskNum,(int)TaskCarStatusEnum.ShuttleCar_Executing);
|
if (task == null) throw new Exception($"未找到任务,任务号【{taskNum}】");
|
switch (TaskTypeComplete)
|
{
|
case 1://入库完成
|
{
|
if (task.TaskType != (int)TaskInboundTypeEnum.Inbound) throw new Exception($"任务类型不匹配,任务号【{taskNum}】");
|
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
|
task.TaskState = nextStatus;
|
task.ModifyDate = DateTime.Now;
|
task.Modifier = "System";
|
content = AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
|
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"穿梭车入库完成");
|
}
|
break;
|
case 2://出库完成
|
{
|
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
|
task.TaskState = nextStatus;
|
task.ModifyDate = DateTime.Now;
|
task.Modifier = "System";
|
content = UpdateData(task);
|
}
|
break;
|
case 10://充电完成
|
content.OK();
|
break;
|
case 13://A侧回零完成
|
case 14://B侧回零完成
|
{
|
if (task.TaskType != (int)TaskOtherTypeEnum.RelocationCar) throw new Exception($"任务类型不匹配,任务号【{taskNum}】");
|
task.TaskState = (int)TaskCarStatusEnum.ShuttleCar_Finish;
|
content = UpdateData(task);
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
|
/// <summary>
|
/// 添加历史任务
|
/// </summary>
|
/// <param name="task"></param>
|
/// <param name="operateType"></param>
|
/// <returns></returns>
|
public WebResponseContent AddTask_Hty(Dt_Task task, TaskOperateTypeEnum operateType)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
Db.Ado.BeginTran();
|
content = _taskHtyService.AddTask_Hty(task, operateType);//添加历史任务删除任务
|
if (!content.Status) throw new Exception(content.Message);
|
content = DeleteData(task);
|
if (!content.Status) throw new Exception(content.Message);
|
Db.Ado.CommitTran();
|
}
|
catch (Exception ex)
|
{
|
Db.Ado.RollbackTran();
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
|
/// <summary>
|
/// 查询穿梭车出入库任务
|
/// </summary>
|
/// <param name="deviceNo">穿梭车编号</param>
|
/// <param name="currentAddress">当前位置</param>
|
/// <returns></returns>
|
public Dt_Task QueryShuttleCarTask(string deviceNo, string currentAddress = "")
|
{
|
if (string.IsNullOrEmpty(currentAddress))
|
return BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
|
else
|
return BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
|
}
|
}
|
}
|