feat: 补充Function1053相关源码文件

This commit is contained in:
XingCheng3
2026-07-16 16:47:53 +08:00
parent 8e44e11248
commit 56ac6002d0
6 changed files with 918 additions and 0 deletions

View File

@@ -0,0 +1,158 @@
using System;
using System.Threading;
using MesServerWork;
using MisDataSaveDate;
namespace MesServerFunctions
{
partial class FunctionMES
{
private const string LGAgvWorkStation = "AC1101";
private class LGAgvDispatchContext
{
public DeviceDriver_BasicData.CustomeEvetnArgs EventArgs { get; set; }
public string RouteCode { get; set; }
public string ActionCode { get; set; }
public string ProcessPointType { get; set; }
public string Description { get; set; }
}
private class LGAgvProductInfo
{
public int EngineTypeID { get; set; }
public string EngineType { get; set; }
public string EngineID { get; set; }
public string OrderForm { get; set; }
public int PartPalletCode { get; set; }
}
private void fun_LGAgvDispatch(DeviceDriver_BasicData.CustomeEvetnArgs e, string routeCode, string actionCode, string processPointType, string description)
{
ThreadPool.QueueUserWorkItem(LGAgvDispatch, new LGAgvDispatchContext
{
EventArgs = e,
RouteCode = routeCode,
ActionCode = actionCode,
ProcessPointType = processPointType,
Description = description
});
}
private void LGAgvDispatch(object state)
{
string opName = LGAgvWorkStation;
try
{
LGAgvDispatchContext context = (LGAgvDispatchContext)state;
if (context == null || context.EventArgs == null)
{
throw new Exception("AGV调度参数为空");
}
string eventOpName = Convert.ToString(context.EventArgs.OpName);
opName = string.IsNullOrWhiteSpace(eventOpName) ? LGAgvWorkStation : eventOpName;
LGAgvProductInfo productInfo = ReadLGAgvProductInfo(opName);
LGWEB_DispatchResult result = LGWEB_BusinessLogic.DispatchAGV(new LGWEB_DispatchRequest
{
routeCode = context.RouteCode,
productModelCode = productInfo.EngineTypeID.ToString(),
productModel = productInfo.EngineType,
actionCode = context.ActionCode,
processPointType = context.ProcessPointType,
workStation = LGAgvWorkStation,
productCode = productInfo.EngineID,
containerNo = productInfo.PartPalletCode > 0 ? productInfo.PartPalletCode.ToString() : "",
orderNo = productInfo.OrderForm,
operatorCode = "PLC",
operatorName = "PLC自动",
remark = context.Description
}, "PLC_AUTO", true);
if (!result.Success)
{
throw new Exception(result.Message);
}
string logText = $"临工AGV任务已下发动作={context.ActionCode},起点={result.StartPosition},终点={result.EndPosition}任务ID={result.RequestTaskId}";
MisDataSaveDate.Helper.ApiLogHelper.SaveMesLog(opName, logText, MisDataSaveDate.Helper.MesLogType.INFO);
SendMessage.AsyncSendMessage_Notice(opName, logText);
}
catch (Exception ex)
{
string logText = $"临工AGV调度失败{ex.Message}";
MisDataSaveDate.Helper.ApiLogHelper.SaveMesLog(opName, logText, MisDataSaveDate.Helper.MesLogType.ERROR);
SendMessage.AsyncSendMessage_Notice(opName, logText);
MyLog4Net.MyLogHelper.Error("Function1053_LGAgvDispatch", $"{logText}{Environment.NewLine}{ex}");
}
}
private LGAgvProductInfo ReadLGAgvProductInfo(string opName)
{
LGAgvProductInfo productInfo = ReadLGAgvProductInfoFromMes(opName);
if (productInfo.EngineTypeID <= 0 || string.IsNullOrWhiteSpace(productInfo.EngineType))
{
productInfo = ReadLGAgvProductInfoFromPlc(opName);
}
if (productInfo.EngineTypeID <= 0 || string.IsNullOrWhiteSpace(productInfo.EngineType))
{
throw new Exception("未读取到产品型号无法解析AGV产品点位配置");
}
return productInfo;
}
private LGAgvProductInfo ReadLGAgvProductInfoFromMes(string opName)
{
int engineTypeID = 0;
string engineType = "";
string engineID = "";
string orderForm = "";
try
{
MIS_BASE.GetEngineTypeFromPLC_MES(opName, out engineTypeID, out engineType, out engineID, out orderForm);
}
catch
{
}
return new LGAgvProductInfo
{
EngineTypeID = engineTypeID,
EngineType = engineType ?? "",
EngineID = engineID ?? "",
OrderForm = orderForm ?? "",
PartPalletCode = 0
};
}
private LGAgvProductInfo ReadLGAgvProductInfoFromPlc(string opName)
{
int engineTypeID = 0;
int partPalletCode = 0;
string engineType = "";
string engineID = "";
string orderForm = "";
try
{
MIS_BASE.GetEngineTypeFromPLC(opName, out engineTypeID, out engineType, out engineID, out partPalletCode, out orderForm);
}
catch
{
}
return new LGAgvProductInfo
{
EngineTypeID = engineTypeID,
EngineType = engineType ?? "",
EngineID = engineID ?? "",
OrderForm = orderForm ?? "",
PartPalletCode = partPalletCode
};
}
}
}