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 void UploadMESInfo(dt_agvtask task)
{
object obj = new object(); //上传MES数据
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);
Idt_info_to_mesRepository mesRepository = new dt_info_to_mesRepository(context);
if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.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(","))
{
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,
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())
{
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,
details = list,
layerNo = 1,
stackID = "1",
warehouseName = "Agv库",
Operator = "AGV自动",
};
obj = inWarehousePara;
ActionName = "agvInWarehouse";//AGV->MES车轮入库
name = "AGV同步MES车轮入库";
}
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库移库";
}
var postJson = JsonConvert.SerializeObject(obj);
if (!string.IsNullOrEmpty(ActionName))
{
dt_info_to_mes info_To_Mes = new dt_info_to_mes()
{
Info = postJson,
ActionName = ActionName,
Createtime = DateTime.Now,
Remark = name,
State = false
};
mesRepository.Add(info_To_Mes, true);
}
}
catch (Exception ex)
{
}
}
}
}