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 { /// /// 完成WMS任务 /// /// /// 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; } } }