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);
//}
}
}
}