using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA.Common;
|
using WIDESEA.Core.Services;
|
using WIDESEA.Core.Utilities;
|
using WIDESEA.Entity.DomainModels;
|
using WIDESEA.Services.Repositories;
|
|
namespace WIDESEA.Services.IServices
|
{
|
public partial class ToWCSService
|
{
|
|
/// <summary>
|
/// 接收WMS上报的任务状态,修改对应的任务状态,以保持wms和wcs任务状态同步
|
/// </summary>
|
/// <param name="saveModel"></param>
|
/// <returns></returns>
|
public WebResponseContent UpdateWmsTaskState(SaveModel saveModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
string barcode = saveModel.MainData["barcode"].ToString();
|
string taskState = saveModel.MainData["taskState"].ToString();
|
|
Dt_taskinfo taskinfo = Dt_taskinfoRepository.Instance.FindFirst(x => x.task_barcode == barcode);
|
if (taskinfo == null)
|
throw new Exception($"在WMS中没有找到条码值:【{barcode}】对应的任务");
|
|
//穿梭车取货完成
|
if (taskState.Equals("TaskState_RGV_PickedFinished"))
|
{
|
taskinfo.task_bak_2 = "2";
|
Dt_taskinfoRepository.Instance.Update(taskinfo, x => x.task_bak_2, true);
|
return content.OK("接收WCS上报状态成功.");
|
}
|
|
|
if (taskinfo.task_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString() &&
|
taskState == TaskState.TaskState_RGV_Finished.ToString())
|
{
|
string rgvId = saveModel.MainData["rgvId"]?.ToString();
|
taskinfo.task_rgvId = rgvId;
|
}
|
if (taskinfo.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() &&
|
taskState == TaskState.TaskState_RGV_Finished.ToString())
|
{
|
string rgvId = saveModel.MainData["rgvId"]?.ToString();
|
taskinfo.task_rgvId = rgvId;
|
}
|
|
taskinfo.task_dispatchertime = DateTime.Now;
|
taskinfo.task_state = taskState;
|
Dt_taskinfoRepository.Instance.Update(taskinfo, true);
|
|
//空托入库
|
if (taskinfo.task_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString() &&
|
taskinfo.task_state == TaskState.TaskState_ConveyorLineExecuting.ToString())
|
{
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
if (locationinfo != null)
|
{
|
locationinfo.location_state = LocationState.LocationState_Empty_Inbound_Executing.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
}
|
//实托入库
|
else if (taskinfo.task_type == TaskType.TaskType_Box_Pallet_Inbound.ToString() &&
|
taskinfo.task_state == TaskState.TaskState_ConveyorLineExecuting.ToString())
|
{
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
if (locationinfo != null)
|
{
|
locationinfo.location_state = LocationState.LocationState_Box_Inbound_Executing.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
}
|
//测量出库、测量回库
|
else if ((taskinfo.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() ||
|
taskinfo.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString()) &&
|
(taskState.Contains("_Measure") || taskState == TaskState.TaskState_RGV_Received.ToString()))
|
{
|
//说明要准备回库了,将任务类型改为测量回库
|
if (taskinfo.task_state == TaskState.TaskState_Measure_Back_Line_Wait_Executing.ToString())
|
{
|
taskinfo.task_type = TaskType.TaskType_Box_Pallet_Measure_Back.ToString();
|
Dt_taskinfoRepository.Instance.Update(taskinfo, true);
|
}
|
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
if (locationinfo != null)
|
{
|
locationinfo.location_state = LocationState.LocationState_Measureing.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
}
|
//空托出库
|
else if (taskinfo.task_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
|
{
|
if (taskState == TaskState.TaskState_RGV_Received.ToString())
|
{
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
locationinfo.location_state = LocationState.LocationState_Empty_OutBound_Executing.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
else if (taskState == TaskState.TaskState_RGV_Finished.ToString())
|
{
|
//恢复空货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
locationinfo.location_state = LocationState.LocationState_Empty.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
}
|
else if (taskinfo.task_type == TaskType.TaskType_Box_Pallet_Outbound.ToString())
|
{
|
if (taskState == TaskState.TaskState_RGV_Received.ToString())
|
{
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
locationinfo.location_state = LocationState.LocationState_Box_OutBound_Executing.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
else if (taskState == TaskState.TaskState_RGV_Finished.ToString())
|
{
|
//恢复空货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid);
|
locationinfo.location_state = LocationState.LocationState_Empty.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, true);
|
}
|
}
|
else if (taskinfo.task_type == TaskType.TaskType_MoveOutbound.ToString())
|
{
|
|
}
|
content.OK("接收WCS上报状态成功.");
|
}
|
catch (Exception ex)
|
{
|
content.Error("接收WCS上报状态失败:" + ex.Message);
|
}
|
//Services.CommonFunction.AddInterfaceLogAction(saveModel, content, "UpdateWmsTaskState");
|
return content;
|
}
|
|
}
|
}
|