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
{
///
/// 西开 AGV 业务处理类
/// 处理 AGV -> MES 的接收请求
///
public class ZZAGV_BusinessLogic
{
///
/// 处理状态更新请求(到达/离开)
///
/// 接口URL
/// 请求数据
/// 处理结果 JSON 字符串
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(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;
}
///
/// 处理动作完成请求(举升/下降)
///
/// 接口URL
/// 请求数据
/// 处理结果 JSON 字符串
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(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;
}
///
/// 处理故障/报警推送请求
///
/// 接口URL
/// 请求数据
/// 处理结果 JSON 字符串
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(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;
}
///
/// 处理任务执行结果请求
///
/// 接口URL
/// 请求数据
/// 处理结果 JSON 字符串
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(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;
}
}
}