Files
2026-05-29 09:34:04 +08:00

201 lines
7.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using MisDataSaveDate;
using System.Web.Http;
using static MisDataSaveDate.Helper.ApiLogHelper;
using MisDataSaveDate.Helper;
namespace MisDataSaveDate
{
/// <summary>
/// 西开 AGV 业务处理类
/// 处理 AGV -> MES 的接收请求
/// </summary>
public class ZZAGV_BusinessLogic
{
/// <summary>
/// 处理状态更新请求(到达/离开)
/// </summary>
/// <param name="url">接口URL</param>
/// <param name="jobj">请求数据</param>
/// <returns>处理结果 JSON 字符串</returns>
public static string ProcessStatusUpdate(string url, [FromBody] JObject jobj)
{
var result = ZZAGV_Response.Success();
string str = jobj?.ToString() ?? "";
// 存储请求日志
SaveLog_Interface_Request(url, 2, str, out int AID);
try
{
if (jobj == null)
{
throw new Exception("请求参数不能为空");
}
ZZAGV_StatusUpdateRequest request = JsonConvert.DeserializeObject<ZZAGV_StatusUpdateRequest>(str);
// 参数校验
if (string.IsNullOrWhiteSpace(request.position))
{
throw new Exception("工位编号(position)不能为空");
}
string typeDesc = request.type == 1 ? "到达" : (request.type == 2 ? "离开" : "未知");
SaveMesLog("ZZAGV_StatusUpdate", $"AGV状态更新工位={request.position}, 类型={typeDesc}, AGV={request.agvid}, 物料={request.materialCode}", MesLogType.INFO);
// TODO: 后续业务逻辑在此添加
}
catch (Exception ex)
{
result = ZZAGV_Response.Fail(1, ex.Message);
SaveMesLog("ZZAGV_StatusUpdate", $"处理异常:{ex.Message}", MesLogType.ERROR);
}
string retString = JsonConvert.SerializeObject(result);
SaveLog_Interface_Response(retString, AID);
return retString;
}
/// <summary>
/// 处理动作完成请求(举升/下降)
/// </summary>
/// <param name="url">接口URL</param>
/// <param name="jobj">请求数据</param>
/// <returns>处理结果 JSON 字符串</returns>
public static string ProcessActionComplete(string url, [FromBody] JObject jobj)
{
var result = ZZAGV_Response.Success();
string str = jobj?.ToString() ?? "";
// 存储请求日志
SaveLog_Interface_Request(url, 2, str, out int AID);
try
{
if (jobj == null)
{
throw new Exception("请求参数不能为空");
}
ZZAGV_ActionCompleteRequest request = JsonConvert.DeserializeObject<ZZAGV_ActionCompleteRequest>(str);
// 参数校验
if (string.IsNullOrWhiteSpace(request.position))
{
throw new Exception("工位编号(position)不能为空");
}
string typeDesc = request.type == 1 ? "举升完成" : (request.type == 2 ? "下降完成" : "未知");
SaveMesLog("ZZAGV_ActionComplete", $"AGV动作完成工位={request.position}, 类型={typeDesc}", MesLogType.INFO);
// TODO: 后续业务逻辑在此添加
}
catch (Exception ex)
{
result = ZZAGV_Response.Fail(1, ex.Message);
SaveMesLog("ZZAGV_ActionComplete", $"处理异常:{ex.Message}", MesLogType.ERROR);
}
string retString = JsonConvert.SerializeObject(result);
SaveLog_Interface_Response(retString, AID);
return retString;
}
/// <summary>
/// 处理故障/报警推送请求
/// </summary>
/// <param name="url">接口URL</param>
/// <param name="jobj">请求数据</param>
/// <returns>处理结果 JSON 字符串</returns>
public static string ProcessAlarmPush(string url, [FromBody] JObject jobj)
{
var result = ZZAGV_Response.Success();
string str = jobj?.ToString() ?? "";
// 存储请求日志
SaveLog_Interface_Request(url, 2, str, out int AID);
try
{
if (jobj == null)
{
throw new Exception("请求参数不能为空");
}
ZZAGV_AlarmPushRequest request = JsonConvert.DeserializeObject<ZZAGV_AlarmPushRequest>(str);
string typeDesc = request.type == 1 ? "AGV故障" : (request.type == 2 ? "区域故障" : "未知");
SaveMesLog("ZZAGV_AlarmPush", $"AGV故障推送类型={typeDesc}, AGV={request.agvNo}, 故障码={request.errorCode}, 信息={request.errorMsg}", MesLogType.WARNING);
// TODO: 后续业务逻辑在此添加
}
catch (Exception ex)
{
result = ZZAGV_Response.Fail(1, ex.Message);
SaveMesLog("ZZAGV_AlarmPush", $"处理异常:{ex.Message}", MesLogType.ERROR);
}
string retString = JsonConvert.SerializeObject(result);
SaveLog_Interface_Response(retString, AID);
return retString;
}
/// <summary>
/// 处理任务执行结果请求
/// </summary>
/// <param name="url">接口URL</param>
/// <param name="jobj">请求数据</param>
/// <returns>处理结果 JSON 字符串</returns>
public static string ProcessTaskResult(string url, [FromBody] JObject jobj)
{
var result = ZZAGV_Response.Success();
string str = jobj?.ToString() ?? "";
// 存储请求日志
SaveLog_Interface_Request(url, 2, str, out int AID);
try
{
if (jobj == null)
{
throw new Exception("请求参数不能为空");
}
ZZAGV_TaskResultRequest request = JsonConvert.DeserializeObject<ZZAGV_TaskResultRequest>(str);
// 参数校验
if (string.IsNullOrWhiteSpace(request.requestTaskId))
{
throw new Exception("任务ID(requestTaskId)不能为空");
}
string statusDesc = request.status == "success" ? "成功" : "失败";
SaveMesLog("ZZAGV_TaskResult", $"AGV任务结果任务ID={request.requestTaskId}, 状态={statusDesc}, AGV={request.agvNo}, 消息={request.message}", MesLogType.INFO);
// TODO: 后续业务逻辑在此添加
}
catch (Exception ex)
{
result = ZZAGV_Response.Fail(1, ex.Message);
SaveMesLog("ZZAGV_TaskResult", $"处理异常:{ex.Message}", MesLogType.ERROR);
}
string retString = JsonConvert.SerializeObject(result);
SaveLog_Interface_Response(retString, AID);
return retString;
}
}
}