Files
T-DAS/Epost.TestToolsWeb/Controllers/AgvTaskApiController.cs
2024-12-25 10:15:41 +08:00

173 lines
7.6 KiB
C#
Raw 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 Epost.BLL;
using Epost.Common;
using Epost.DAL.Cache;
using Epost.Model;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Helpers;
using System.Web.Http;
using static System.Net.WebRequestMethods;
namespace Epost.DPS.Controllers
{
[RoutePrefix("service/rest/agvCallbackService")]//agv=>WCS
public class AgvTaskApiController : ApiController
{
Sys_operate_logBLL logBLL = new Sys_operate_logBLL();
InboundOrdersBLL inboundBLL = new InboundOrdersBLL();
string agvCallbackUrl = ConfigurationManager.AppSettings["agvCallbackUrl"];
string agvexTaskUrl = ConfigurationManager.AppSettings["agvexTaskUrl"];
HttpHelper http = new HttpHelper();
AgvHelper agv = new AgvHelper();
AgvLogInfoBLL logbll = new AgvLogInfoBLL();
[Route("agvCallback")]
[HttpPost]
public AgvResultModel agvCallback([FromBody] agvCallbackModel data)
{
AgvResultModel retModel = new AgvResultModel();
try
{
LogHelper.WriteLogInfo("agvCallback请求报文" + JsonHelper.SerializeObject(data));
string state = string.Empty;
if (data.method == "start")
{
state = "2";//任务开始启动
}
else if (data.method == "outbin")
{
state = "3";//走出储位
}
else if (data.method == "end")
{
state = "4";
//更新任务已完成
wms_callback(data);
}
else if (data.method == "cancel")
{
state = "88";
wms_callback(data);
}
else { }
inboundBLL.UpInOrderListByAgvid(data.taskCode, state);
retModel.message = "成功!";
retModel.code = "0";
retModel.reqCode = data.reqCode;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("agvCallback异常" + ex.ToString(), LogHelper.Log_Type.ERROR);
retModel.message = "请求接口异常!";
retModel.code = "-1";
retModel.reqCode = data.reqCode;
}
string resinfo = JsonHelper.SerializeObject(retModel);
logBLL.InsertLog("AGV上报WCS", "agvCallback", "/api/AgvTaskApi/agvCallback", JsonHelper.SerializeObject(data), resinfo, 0, "", DateTime.Now);
return retModel;
}
public void wms_callback(agvCallbackModel data)
{
DataTable dt = inboundBLL.GetInOrderList(" and agvid ='" + data.taskCode + "'");
if (dt != null && dt.Rows.Count > 0)
{
wmsCallbackModel backModel = new wmsCallbackModel();
List<callbackHeader> list = new List<callbackHeader>();
callbackHeader headModel = new callbackHeader();
headModel.warehouseId = dt.Rows[0]["warehouseId"].ToString();
headModel.groupTaskId = dt.Rows[0]["groupTaskId"].ToString();
headModel.wmsDocNo = dt.Rows[0]["wmsDocNo"].ToString();
headModel.currentPositionCode = data.currentPositionCode;
headModel.robotCode = data.robotCode;
headModel.taskCode = data.taskCode;
headModel.method = data.method;
headModel.reqCode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
headModel.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
callback back = new callback();
list.Add(headModel);
back.header = list;
backModel.data = back;
string reqstr = JsonHelper.SerializeObject(backModel);
LogHelper.WriteLogInfo("WCS->WMS任务执行通知请求" + reqstr + "===" + agvCallbackUrl);
string resultStr = http.HttpPost_Old(agvCallbackUrl, reqstr);
LogHelper.WriteLogInfo("WCS->WMS任务执行通知返回" + resultStr);
logBLL.InsertLog("WCS->WMS任务执行通知", "agvCallback", agvCallbackUrl, reqstr, resultStr, 0, "", DateTime.Now);
}
}
[Route("warnCallback")]
[HttpPost]
public AgvResultModel warnCallback([FromBody]warnCallbackReq data)
{
AgvResultModel retModel = new AgvResultModel();
try
{
LogHelper.WriteLogInfo("warnCallback请求报文" + JsonHelper.SerializeObject(data));
//DataTable dt = inboundBLL.GetInOrderList(" and agvid ='" + data.taskCode + "'");
//if (dt != null && dt.Rows.Count > 0)
//{
agvexTaskReq backModel = new agvexTaskReq();
agvexTaskData taskdata = new agvexTaskData();
List<agvexTaskList> taskList = new List<agvexTaskList>();
agvexTaskHeader agvexHeader = new agvexTaskHeader();
List<agvexTaskHeader> headerlist = new List<agvexTaskHeader>();
List<warnCallbackData> datalist = data.data;
string reqcode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
if (datalist.Any())
{
foreach (warnCallbackData item in datalist)
{
agvexTaskList agvextmodel = new agvexTaskList();
agvextmodel.robotCode = item.robotCode;
agvextmodel.taskCode = item.taskCode;
agvextmodel.beginDate = item.beginDate;
agvextmodel.warnContent = item.warnContent;
taskList.Add(agvextmodel);
logbll.insertAgvLogInfo(reqcode, item.beginDate, item.robotCode, item.beginDate, item.warnContent, item.taskCode);
}
}
agvexHeader.list = taskList;
agvexHeader.clientCode = data.clientCode;
agvexHeader.reqCode = reqcode;
agvexHeader.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
headerlist.Add(agvexHeader);
taskdata.header = headerlist;
backModel.data = taskdata;
string reqstr = JsonHelper.SerializeObject(backModel);
LogHelper.WriteLogInfo("WCS->WMS告警通知请求" + reqstr + "===" + agvexTaskUrl);
string resultStr = http.HttpPost_Old(agvexTaskUrl, reqstr);
LogHelper.WriteLogInfo("WCS->WMS告警通知返回" + resultStr);
logBLL.InsertLog("WCS->WMS告警通知", "warnCallback", agvexTaskUrl, reqstr, resultStr, 0, "", DateTime.Now);
// }
retModel.message = "成功!";
retModel.code = "0";
retModel.reqCode = data.reqCode;
}
catch (Exception ex)
{
LogHelper.WriteLogInfo("agvPutTask异常" + ex.ToString(), LogHelper.Log_Type.ERROR);
retModel.message = "请求接口异常!";
retModel.code = "-1";
retModel.reqCode = data.reqCode;
}
string resinfo = JsonHelper.SerializeObject(retModel);
logBLL.InsertLog("AGV上报WCS", "agvCallback", "/api/AgvTaskApi/agvCallback", JsonHelper.SerializeObject(data), resinfo, 0, "", DateTime.Now);
return retModel;
}
}
}