using Confluent.Kafka; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using OfficeOpenXml.FormulaParsing.Excel.Operators; using WIDESEA_Comm.LogInfo; using WIDESEA_Comm.MES_Info; using WIDESEA_Comm.MES_Info.Request; using WIDESEA_Common; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.FreeDB; using WIDESEA_Entity.DomainModels; using WIDESEA_Entity.ToAGV; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; using static WIDESEA_Comm.MES_Info.BasicSN; namespace WIDESEA_WMS.Common.AGVTask { public class HandleTask_Mes { static FreeDB FreeDB = new FreeDB(); /// /// 向MES反馈出入库信息 /// /// /// public static MES_Response UploadMESInfo(dt_agvtask task) { object obj = new object(); //上传MES数据 string mesData = "";//返回数据 string ActionName = ""; //调用MES方法名 string name = ""; MES_Response requestMes = new MES_Response(); try { List list = new List(); //车轮信息 if (task == null) { throw new Exception("无任务数据"); } VOLContext context = new VOLContext(); IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(context); if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() /*|| task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString()*/|| task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()) { if(task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString()) { foreach (var item in task.bindSN.Split(",")) { var work = workinfoRepository.Find(x => x.SN == item && x.processCode == task.agv_worktype.ToString()).FirstOrDefault(); detail detail = new detail(); detail.sn = item; detail.jobID = work.jobID; detail.processCode = work.processCode; list.Add(detail); } } else { foreach (var item in task.bindSN.Split(",")) { //var work = workinfoRepository.Find(x => x.SN == item && x.processCode == "28").FirstOrDefault(); detail detail = new detail(); detail.sn = item; detail.jobID = task.jobID; detail.processCode = task.agv_worktype.ToString(); list.Add(detail); } } agvInWarehousePara outWarehousePara = new agvInWarehousePara() { WorkOrder = task.jobID, zoneID = task.agv_fromaddress, //processCode = task.agv_worktype.ToString(), details = list, layerNo = 1, stackID = "1", warehouseName = "Agv库", Operator="AGV自动", }; obj = outWarehousePara; ActionName = "agvOutWarehouse";//AGV->MES车轮出库 name = "AGV同步MES车轮出库"; } else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString() /*|| task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString()*/) { foreach (var item in task.bindSN.Split(",")) { var work = workinfoRepository.Find(x => x.SN == item && x.processCode == task.agv_worktype.ToString()).FirstOrDefault(); detail detail = new detail(); detail.sn = item; detail.jobID = work.jobID; detail.processCode = work.processCode; list.Add(detail); } agvInWarehousePara inWarehousePara = new agvInWarehousePara() { WorkOrder = task.jobID, zoneID = task.agv_toaddress, //processCode = task.agv_worktype.ToString(), details = list, layerNo = 1, stackID = "1", warehouseName = "Agv库", Operator = "AGV自动", }; obj = inWarehousePara; ActionName = "agvInWarehouse";//AGV->MES车轮入库 name = "AGV同步MES车轮入库"; } //else if (task.agv_tasktype == "Transfer") //移库区分 库内移库 else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString()) //移库区分 库内移库 { List list1 = new List(); //车轮信息 foreach (var item in task.bindSN.Split(",")) { detail1 detail = new detail1(); detail.sn = item; list1.Add(detail); } agvMoveWarehousePara moveWarehousePara = new agvMoveWarehousePara() { fromZoneID = task.agv_fromaddress, toZoneID = task.agv_toaddress, details = list1, fromLayerNo = "1", fromStackID = "1", fromWarehouseName = "Agv库", toLayerNo = "1", toStackID = "1", toWarehouseName = "Agv库", Operator = "AGV自动", }; obj = moveWarehousePara; ActionName = "agvMoveWarehouse";//AGV->MES车轮移库 name = "AGV同步MES车轮AB库移库"; } //else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())// 外协移库 //{ // var mes_head = FreeDB.Select().Where(x => x.jobID == task.jobID).First(); // agvTransferListPara agvTransferListPara = new agvTransferListPara() // { // transferListID = task.agv_tasknum, // materialCode = mes_head.materialCode, // details = list, // drawingNoVer = mes_head.drawingNoVer, // fromWarehouse = "AGV库", // toWarehouse = "毛轮库", // Operator = task.agv_userid, // updateTime = task.agv_createtime.ToString(), // }; // obj = agvTransferListPara; // ActionName = "agvTransferList"; // name = "AGV同步MES车轮移库AB库->BC库"; //} else { requestMes.code = "200"; requestMes.Type = "success"; return requestMes; } var postJson = JsonConvert.SerializeObject(obj); mesData = Request.RequestData(postJson, MESAPIAddress.IPAddress_MES + ActionName); if (mesData.Contains("连接尝试失败")) throw new Exception(mesData); requestMes = JsonConvert.DeserializeObject(mesData); if (requestMes.code == "200" && requestMes.Type == "success") { //日志记录上传数据成功 WriteWMSLog.LogAdd(task.agv_tasknum, "成功", "MES", "WMS", JsonConvert.SerializeObject(obj), mesData, name, ActionName, requestMes.message); } else throw new Exception(requestMes.message); } catch (Exception ex) { requestMes.message = ex.Message; WriteWMSLog.LogAdd(task.agv_tasknum, "失败", "MES", "WMS", JsonConvert.SerializeObject(obj), mesData, name, ActionName, ex.Message); } return requestMes; //finally //{ // WriteWMSLog.LogAdd(task.agv_tasknum, "失败", "MES", "WMS", JsonConvert.SerializeObject(obj), mesData, name, ActionName, requestMes.message); //} } } }