using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using WIDESEA.Common;
|
using WIDESEA.Core.Utilities;
|
using WIDESEA.Entity.DomainModels;
|
using WIDESEA.Services.Repositories;
|
|
namespace WIDESEA.Services.Services
|
{
|
public partial class CommonFunction
|
{
|
/// <summary>
|
/// 完成WMS任务
|
/// </summary>
|
/// <param name="saveModel"></param>
|
/// <returns></returns>
|
public static WebResponseContent TaskFinishedAction(SaveModel saveModel)
|
{
|
|
WebResponseContent content = new WebResponseContent();
|
string barcode = string.Empty;
|
try
|
{
|
barcode = saveModel.MainData["barcode"].ToString();
|
Dt_taskinfo taskInfo = Dt_taskinfoRepository.Instance.FindFirst(x => x.task_barcode == barcode);
|
if (taskInfo == null)
|
return content.OK($"WMS中没有找到托盘号:【{barcode}】对应的任务");
|
|
//区分任务类型
|
//空托盘入库
|
if (taskInfo.task_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString())
|
{
|
VV_ContainerInfo_EmptyPallet emptyCon = VV_ContainerInfo_EmptyPalletRepository.Instance.FindFirst(x => x.containerhead_barcode == barcode);
|
string rgvId = saveModel.MainData["rgvId"]?.ToString();
|
if (emptyCon != null)
|
throw new Exception($"库存中存在托盘号:【{barcode}】的【空托】库存,请人工核实,所在货位:{emptyCon.location_id}");
|
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
//删除任务、添加历史
|
taskInfo.task_rgvId = rgvId;
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
|
//添加空托盘库存数据
|
CommonFunction.AddEmptyPalletContainer(taskInfo);
|
|
//更改货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_tolocationid);
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Stored.ToString());
|
|
return content.OK();
|
});
|
|
}
|
//空托盘出库
|
else if (taskInfo.task_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
|
{
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
|
Dt_container_head container_Head = Dt_container_headRepository.Instance.FindFirst(x => x.containerhead_barcode == taskInfo.task_barcode);
|
Dt_container_detail container_Detail = Dt_container_detailRepository.Instance.FindFirst(x => x.containerdtl_headid == container_Head.containerhead_id.ToString());
|
//将库存数据一到到历史表 head、detail
|
CommonFunction.AddContainerHeadToHistory(container_Head, "empty");
|
CommonFunction.AddContainerDetailToHistory(container_Detail);
|
|
//barcodeinfo数据移动到历史
|
Dt_barcodeinfo barcodeinfo = Dt_barcodeinfoRepository.Instance.FindFirst(x => x.barcode_value == taskInfo.task_barcode);
|
CommonFunction.AddBarcodeInfoToHistory(barcodeinfo, taskInfo.task_creator);
|
|
//恢复空货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_fromlocationid);
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Empty.ToString());
|
|
//删除任务
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
return content.OK();
|
});
|
|
}
|
//实托入库
|
else if (taskInfo.task_type == TaskType.TaskType_Box_Pallet_Inbound.ToString())
|
{
|
VV_ContainerInfo container = VV_ContainerInfoRepository.Instance.FindFirst(x => x.containerhead_barcode == barcode);
|
if (container != null)
|
throw new Exception($"库存中存在托盘号:【{barcode}】的【实托】库存,请人工核实,所在货位:{container.location_id}");
|
|
//string rgvId = saveModel.MainData["rgvId"]?.ToString();
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
|
Dt_boxing_head boxing_Head = Dt_boxing_headRepository.Instance.FindFirst(x => x.boxhead_barcode == taskInfo.task_barcode);
|
Dt_boxing_detail boxing_Detail = Dt_boxing_detailRepository.Instance.FindFirst(x => x.boxdtl_headid == boxing_Head.boxhead_id.ToString());
|
Dt_mes_goods_info mes_Goods_Info = Dt_mes_goods_infoRepository.Instance.FindFirst(x => x.mesInfo_qrCode == taskInfo.task_sn);
|
// taskInfo.task_rgvId = rgvId;
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
|
//将轴承对应的录入信息移动至历史表
|
CommonFunction.AddMesInfoToHistory(mes_Goods_Info);
|
|
//将轴承对应的录入信息移动至历史表
|
CommonFunction.AddBoxContainer(taskInfo, boxing_Head, boxing_Detail, mes_Goods_Info);
|
|
//将组盘信息移动至历史表
|
CommonFunction.AddBoxingHeadToHistory(boxing_Head, boxing_Detail);
|
|
//更改货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_tolocationid);
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Stored.ToString());
|
|
//删除任务、添加历史
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
return content.OK();
|
});
|
}
|
//实托出库
|
else if (taskInfo.task_type == TaskType.TaskType_Box_Pallet_Outbound.ToString())
|
{
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
|
Dt_container_head container_Head = Dt_container_headRepository.Instance.FindFirst(x => x.containerhead_barcode == taskInfo.task_barcode);
|
Dt_container_detail container_Detail = Dt_container_detailRepository.Instance.FindFirst(x => x.containerdtl_headid == container_Head.containerhead_id.ToString());
|
//将库存数据一到到历史表 head、detail
|
|
CommonFunction.AddContainerHeadToHistory(container_Head, "box");
|
CommonFunction.AddContainerDetailToHistory(container_Detail);
|
|
//barcodeinfo数据移动到历史
|
Dt_barcodeinfo barcodeinfo = Dt_barcodeinfoRepository.Instance.FindFirst(x => x.barcode_value == taskInfo.task_barcode);
|
CommonFunction.AddBarcodeInfoToHistory(barcodeinfo, taskInfo.task_creator);
|
|
//恢复空货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_fromlocationid);
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Empty.ToString());
|
|
//删除任务
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
return content.OK();
|
});
|
|
|
}
|
//测量【出库】任务
|
else if (taskInfo.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString())
|
{
|
|
}
|
//测量【回库】任务完成
|
else if (taskInfo.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString())
|
{
|
VV_ContainerInfo container = VV_ContainerInfoRepository.Instance.FindFirst(x => x.containerhead_barcode == barcode);
|
if (container != null)
|
{
|
//说明没错,本来在库内,就是测量回库
|
}
|
// string rgvId = null == saveModel.MainData["rgvId"] ? "" : saveModel.MainData["rgvId"].ToString();
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
//Dt_container_head container_Head = Dt_container_headRepository.Instance.FindFirst(x => x.containerhead_barcode == taskInfo.task_barcode);
|
//container_Head.containerhead_createtime = DateTime.Now;
|
//Dt_container_headRepository.Instance.Update(container_Head, true);
|
//更改货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_fromlocationid);
|
if (container.containerdtl_isError == "1")
|
{
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Error.ToString());
|
Dt_container_detail dt_Container_Detail = Dt_container_detailRepository.Instance.FindFirst(x => x.containerdtl_barcode == barcode);
|
dt_Container_Detail.containerdtl_isError = "0";
|
Dt_container_detailRepository.Instance.Update(dt_Container_Detail,true);
|
}
|
else
|
{
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Stored.ToString());
|
|
}
|
|
//删除任务、添加历史
|
// taskInfo.task_rgvId = rgvId;
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
|
return content.OK();
|
});
|
}
|
else if (taskInfo.task_type == TaskType.TaskType_MoveOutbound.ToString())
|
{
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
//更改货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_fromlocationid);
|
CommonFunction.ChangeLocationState(locationinfo, LocationState.LocationState_Empty.ToString());
|
|
Dt_locationinfo newLocation = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_tolocationid);
|
CommonFunction.ChangeLocationState(newLocation, LocationState.LocationState_Stored.ToString());
|
|
Dt_barcodeinfo barcodeInfo = Dt_barcodeinfoRepository.Instance.FindFirst(r => r.barcode_value == taskInfo.task_barcode);
|
barcodeInfo.barcode_locationid = taskInfo.task_tolocationid;
|
Dt_barcodeinfoRepository.Instance.Update(barcodeInfo, x => x.barcode_locationid, true);
|
|
//删除任务、添加历史
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
|
return content.OK();
|
});
|
}
|
else if (taskInfo.task_type == TaskType.TaskType_CheckBackIn.ToString() || taskInfo.task_type == TaskType.TaskType_ErrorCheckBackIn.ToString())
|
{
|
content = Dt_taskinfo_htyRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
//更改货位状态
|
Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskInfo.task_tolocationid);
|
if (taskInfo.task_type == TaskType.TaskType_ErrorCheckBackIn.ToString())
|
locationinfo.location_state = LocationState.LocationState_Error.ToString();
|
else
|
locationinfo.location_state = LocationState.LocationState_Stored.ToString();
|
Dt_locationinfoRepository.Instance.Update(locationinfo, x => x.location_state, true);
|
|
//删除任务、添加历史
|
taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
CommonFunction.AddWMSTaskToHistory(taskInfo);
|
return content.OK();
|
});
|
}
|
else if (taskInfo.task_type == TaskType.TaskType_CheckOutbound.ToString())
|
{
|
//删除任务、添加历史
|
//taskInfo.task_state = TaskState.TaskState_Finished.ToString();
|
//CommonFunction.AddWMSTaskToHistory(taskInfo);
|
content.OK();
|
}
|
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
|
}
|
}
|