176 lines
8.0 KiB
C#
176 lines
8.0 KiB
C#
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();
|
||
[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";
|
||
//更新任务已完成
|
||
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);
|
||
//if (!string.IsNullOrEmpty(resultStr))
|
||
//{
|
||
// RetMesModel resModel = JsonHelper.DeserializeObject<RetMesModel>(resultStr);
|
||
// if (resModel.Response.returnnode.returnCode == "0000")
|
||
// {
|
||
// LogHelper.WriteLogInfo("WCS->WMS任务执行通知成功");
|
||
// }
|
||
// else {
|
||
// LogHelper.WriteLogInfo("WCS->WMS任务执行通知失败");
|
||
// }
|
||
//}
|
||
}
|
||
}
|
||
else if (data.method == "cancel")
|
||
{
|
||
state = "88";
|
||
}
|
||
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;
|
||
}
|
||
|
||
[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;
|
||
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);
|
||
}
|
||
}
|
||
agvexHeader.list = taskList;
|
||
agvexHeader.clientCode = data.clientCode;
|
||
agvexHeader.reqCode = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
||
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;
|
||
}
|
||
}
|
||
} |