using HH.WCS.Mobox3.YNJuXing.device;
|
using HH.WCS.Mobox3.YNJuXing.dispatch;
|
using HH.WCS.Mobox3.YNJuXing.util;
|
using HH.WCS.Mobox3.YNJuXing.wms;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading;
|
using static HH.WCS.Mobox3.YNJuXing.api.OtherModel;
|
|
namespace HH.WCS.Mobox3.YNJuXing.process
|
{
|
/// <summary>
|
/// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的
|
/// </summary>
|
internal class DeviceProcess
|
{
|
internal static void Analysis(string data, string ip) {
|
if (data.Length >= 6) {
|
//去掉消息头3F 00
|
data = data.Substring(4);
|
//Console.WriteLine($"{ip}-{data}");
|
var plc = Settings.deviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault();
|
if (plc != null) {
|
if (plc.deviceType == 1) {
|
|
}
|
else if (plc.deviceType == 2) {
|
//出库缓存位的光电信息
|
//如果有缓存位是空的状态,我们先判断有没有任务终点分配到这里,如果没有,就找一条出库任务,终点是虚拟点的任务,分配到这个空位
|
//修改任务终点
|
}
|
|
|
}
|
else {
|
Console.WriteLine($"TCP信号处理:未查询到IP为{ip}的数据,请检查deviceInfo配置中心是否存在该IP的数据!");
|
}
|
}
|
|
}
|
|
internal static void Traffic(string forkliftNo, string lockNo, bool v) {
|
}
|
|
/// <summary>
|
/// 请求取卸货安全交互
|
/// </summary>
|
/// <param name="mst"></param>
|
/// <param name="v"></param>
|
internal static void Request(WCSTask mst, bool v)
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
var Url = Settings.ExtendParamSettings.Where(a => a.ExtendNo == "6" && a.Enable == "1").FirstOrDefault();
|
if (Url != null)
|
{
|
string trkType = "";
|
string stnNo = "";
|
if (v)
|
{
|
//取货请求
|
trkType = "1";
|
var info = db.Queryable<PeiZhi>().Where(a => a.BITCODE == mst.S_START_LOC).First();
|
if (info != null)
|
{
|
stnNo = info.PLCLOCATION;
|
}
|
}
|
else
|
{
|
//卸货请求
|
trkType = "2";
|
var info = db.Queryable<PeiZhi>().Where(a => a.BITCODE == mst.S_END_LOC).First();
|
if (info != null)
|
{
|
stnNo = info.PLCLOCATION;
|
}
|
}
|
|
var req = JsonConvert.SerializeObject(new
|
{
|
requestPk = mst.S_CODE,
|
trkType = trkType,
|
method = "AgvRequest",
|
stnNo = stnNo,
|
carNo = "1001",
|
clientCode = "WMS",
|
reqTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")
|
});
|
|
var feed = new HttpHelper().WebPost(Url.ExtendParam + "agvCallback", req);
|
LogHelper.Info($"安全交互 任务号={mst.S_CODE} url={Url + "agvCallback"} 传输数据={req} 返回数据={feed}");
|
if (!string.IsNullOrEmpty(feed))
|
{
|
var res = JsonConvert.DeserializeObject<PlcSendTaskres>(feed);
|
if (res.code == "0")
|
{
|
if (res.isAllow == "1")
|
{
|
//修改任务表数据为请求成功 S_NOTE :1
|
//mst.S_NOTE = "1";
|
//db.Updateable(mst).UpdateColumns(it => new { it.S_NOTE }).ExecuteCommand();
|
if (trkType == "1")
|
{
|
NDCApi.ChangeOrderParam(mst.S_CODE, 18, "1101");
|
}
|
else
|
{
|
NDCApi.ChangeOrderParam(mst.S_CODE, 18, "1103");
|
}
|
}
|
}
|
}
|
}
|
|
}
|
|
/// <summary>
|
/// 取卸货完成退出安全交互
|
/// </summary>
|
/// <param name="mst"></param>
|
/// <param name="v"></param>
|
internal static void Request2(WCSTask mst, bool v)
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
var Url = Settings.ExtendParamSettings.Where(a => a.ExtendNo == "6" && a.Enable == "1").FirstOrDefault();
|
if (Url != null)
|
{
|
string trkType = "";
|
string stnNo = "";
|
if (v)
|
{
|
//取货请求
|
trkType = "1";
|
var info = db.Queryable<PeiZhi>().Where(a => a.BITCODE == mst.S_START_LOC).First();
|
if (info != null)
|
{
|
stnNo = info.PLCLOCATION;
|
}
|
}
|
else
|
{
|
//卸货请求
|
trkType = "2";
|
var info = db.Queryable<PeiZhi>().Where(a => a.BITCODE == mst.S_END_LOC).First();
|
if (info != null)
|
{
|
stnNo = info.PLCLOCATION;
|
}
|
}
|
|
var req = JsonConvert.SerializeObject(new
|
{
|
requestPk = mst.S_CODE,
|
trkType = trkType,
|
method = "Complete",
|
stnNo = stnNo,
|
carNo = "1001",
|
clientCode = "WMS",
|
reqTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")
|
});
|
|
var feed = new HttpHelper().WebPost(Url.ExtendParam + "agvCallback", req);
|
LogHelper.Info($"安全交互 任务号={mst.S_CODE} url={Url + "agvCallback"} 传输数据={req} 返回数据={feed}");
|
if (!string.IsNullOrEmpty(feed))
|
{
|
var res = JsonConvert.DeserializeObject<PlcSendTaskres>(feed);
|
if (res.code == "0")
|
{
|
if (res.isAllow == "1")
|
{
|
////修改任务表数据为请求成功 S_NOTE :1
|
//mst.S_NOTE = "1";
|
//db.Updateable(mst).UpdateColumns(it => new { it.S_NOTE }).ExecuteCommand();
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
}
|