using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows;
|
using System.Windows.Controls;
|
using System.Windows.Data;
|
using System.Windows.Documents;
|
using System.Windows.Input;
|
using System.Windows.Markup;
|
using System.Windows.Media;
|
using System.Windows.Media.Imaging;
|
using System.Windows.Navigation;
|
using System.Windows.Shapes;
|
using System.Runtime.Serialization;
|
using System.Collections.Concurrent;
|
using System.ServiceModel;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System.Net;
|
using NLog;
|
using NLog.Config;
|
using NLog.Targets;
|
using GZ.DB.Map.OIDATABASE;
|
using GZ.DB.App.OIDATABASE;
|
using GZ.DB.Repository.OIDATABASE;
|
using GZ.DB.IRepository.OIDATABASE;
|
using GZ.DB.Entity.OIDATABASE;
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
using NLog.Fluent;
|
namespace GZ.Projects.AuxAllWCS
|
{
|
public class Settings
|
{
|
#region [自定义类][20250323144531864][Settings]
|
public static bool FirstG { get; set; } = false;
|
public static string HostToAgvServerUrl { get; set; }
|
|
public static List<deviceInfo> deviceInfos { get; set; } = new List<deviceInfo>();
|
public static List<string> RunProcs { get; set; } = new List<string>();
|
public static string HKbaseUrl { get; set; }
|
public static string MESbaseUrl { get; set; }
|
public static string WMSbaseUrl { get; set; }
|
public static readonly HttpHelper apiHelper = new HttpHelper();
|
|
public static string GetTimeStamp(DateTime? time = null)
|
{
|
TimeSpan ts = DateTime.UtcNow - (time ?? new DateTime(1970, 1, 1, 0, 0, 0, 0));
|
return Convert.ToInt64(ts.TotalMilliseconds).ToString();
|
}
|
#endregion [自定义类][20250323144531864][Settings]
|
}
|
public class LogHelper
|
{
|
#region [自定义类][20250323145442478][LogHelper]
|
public static Dictionary<string, ILogger> loggers = new Dictionary<string, ILogger>();
|
|
public static void Debug(string message, string name = "")
|
{
|
ILogger logger = null;
|
if (loggers.Keys.Contains(name))
|
{
|
logger = loggers[name];
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger(name);
|
if (logger != null)
|
{
|
loggers.Add(name, logger);
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger("console");
|
}
|
}
|
if (logger != null)
|
{
|
logger.Debug(message);
|
}
|
}
|
|
|
|
public static void Info(string message, string name = "")
|
{
|
//logger.Info(message);
|
ILogger logger = null;
|
if (loggers.Keys.Contains(name))
|
{
|
logger = loggers[name];
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger(name);
|
if (logger != null)
|
{
|
loggers.Add(name, logger);
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger("infoFile");
|
}
|
}
|
if (logger != null)
|
{
|
logger.Info(message);
|
}
|
}
|
|
public static void Error(string message, Exception ex, string name = "")
|
{
|
//logger.Error(ex, message);
|
ILogger logger = null;
|
if (loggers.Keys.Contains(name))
|
{
|
logger = loggers[name];
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger(name);
|
if (logger != null)
|
{
|
loggers.Add(name, logger);
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger("errorFile");
|
}
|
}
|
if (logger != null)
|
{
|
logger.Error($"{message}{ex.StackTrace}");
|
}
|
}
|
#endregion [自定义类][20250323145442478][LogHelper]
|
}
|
public class LogFactory
|
{
|
#region [自定义类][20250323145505759][LogFactory]
|
/// <summary>
|
/// 通过配置文件配置日志
|
/// </summary>
|
static LogFactory()
|
{
|
var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "杭奥" };
|
LogManager.Configuration = DefaultConfig(loggerNames);
|
}
|
public static ILogger CreateLogger(string name)
|
{
|
var logger = LogManager.GetLogger(name);
|
return logger;
|
}
|
|
public static LoggingConfiguration DefaultConfig(List<string> loggerNames)
|
{
|
var config = new LoggingConfiguration();
|
loggerNames.ForEach(a =>
|
{
|
var target = new FileTarget();
|
target.ArchiveAboveSize = 1024 * 1024 * 5;//每个文件最大5M
|
target.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
target.ArchiveFileName = @"${basedir}/Logs/" + a + "/{####}.txt";
|
target.FileName = @"${basedir}/Logs/" + a + "/${shortdate}.txt";//当前文件路径
|
target.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}";
|
|
config.AddTarget(a, target);
|
config.AddRuleForOneLevel(LogLevel.Info, target, a);
|
});
|
|
|
// 添加target-console
|
//var consoleTarget = new ColoredConsoleTarget();
|
//consoleTarget.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}";
|
|
//config.AddTarget("console", consoleTarget);
|
//config.AddRule(LogLevel.Debug, LogLevel.Fatal, consoleTarget);
|
|
//添加target-info
|
var infoFileTarget = new FileTarget();
|
infoFileTarget.ArchiveAboveSize = 1024 * 1024 * 5;//每个文件最大5M
|
infoFileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
infoFileTarget.ArchiveFileName = @"${basedir}/Logs/Info/{####}.txt";
|
infoFileTarget.FileName = @"${basedir}/Logs/Info/${shortdate}.txt";//当前文件路径
|
infoFileTarget.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}";
|
|
config.AddTarget("infoFile", infoFileTarget);
|
config.AddRuleForOneLevel(LogLevel.Info, infoFileTarget);//INFO写在Info文件
|
|
//添加target-err
|
var errorFileTarget = new FileTarget();
|
errorFileTarget.ArchiveAboveSize = 1024 * 1024 * 5;//每个文件最大5M
|
errorFileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
errorFileTarget.ArchiveFileName = @"${basedir}/Logs/Error/{####}.txt";
|
errorFileTarget.FileName = @"${basedir}/Logs/Error/${shortdate}.txt";
|
errorFileTarget.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}";
|
|
config.AddTarget("errorFile", errorFileTarget);
|
config.AddRule(LogLevel.Error, LogLevel.Fatal, errorFileTarget);
|
|
|
return config;
|
}
|
|
#endregion [自定义类][20250323145505759][LogFactory]
|
}
|
public class HaiKangOrderInfo
|
{
|
#region [自定义类][20250324165635320][HaiKangOrderInfo]
|
|
/// <summary>
|
/// 请求编号(编号唯一)
|
/// </summary>
|
public string reqCode { get; set; }
|
|
/// <summary>
|
/// 请求时间
|
/// </summary>
|
public string reqTime { get; set; }
|
|
/// <summary>
|
/// 客户端编号(如PDA、HCWMS等)
|
/// </summary>
|
public string clientCode { get; set; }
|
|
/// <summary>
|
/// 令牌号
|
/// </summary>
|
public string tokenCode { get; set; }
|
|
/// <summary>
|
/// 任务类型
|
/// </summary>
|
public string taskTyp { get; set; }
|
|
/// <summary>
|
/// 容器类型(叉车项目必传)
|
/// (叉车/CTU 专用)
|
/// </summary>
|
public string ctnrTyp { get; set; }
|
|
/// <summary>
|
/// 容器编号(叉车/CTU 专用)
|
/// </summary>
|
public string ctnrCode { get; set; }
|
|
/// <summary>
|
/// 任务模式(0-普通、1-出库、2-入库、3-移库 )
|
/// </summary>
|
public string taskMode { get; set; }
|
|
/// <summary>
|
/// 工作位
|
/// </summary>
|
public string wbCode { get; set; }
|
|
/// <summary>
|
/// 货架编号
|
/// </summary>
|
public string podCode { get; set; }
|
|
/// <summary>
|
/// 方向(180:左、0:右、90:上、-90:下 )
|
/// </summary>
|
public string podDir { get; set; }
|
|
/// <summary>
|
/// 货架类型
|
/// </summary>
|
public string podTyp { get; set; }
|
|
/// <summary>
|
/// 物料批次或货架上的物料唯一编码
|
/// </summary>
|
public string materialLot { get; set; }
|
|
/// <summary>
|
/// 优先级
|
/// </summary>
|
public string priority { get; set; }
|
|
/// <summary>
|
/// 组编号
|
/// </summary>
|
public string groupId { get; set; }
|
|
/// <summary>
|
/// 自定义字段.JSON 格式
|
/// </summary>
|
public string data { get; set; }
|
|
/// <summary>
|
/// 取消类型
|
/// </summary>
|
public string forceCancel { get; set; }
|
|
/// <summary>
|
/// 回库区域编码
|
/// </summary>
|
public string matterArea { get; set; }
|
|
/// <summary>
|
/// 取消该AGV正在执行的任务单
|
/// </summary>
|
public string agvCode { get; set; }
|
|
/// <summary>
|
/// 任务单编号
|
/// </summary>
|
public string taskCode { get; set; }
|
|
/// <summary>
|
/// 地码 X 坐标
|
/// </summary>
|
public string cooX { get; set; }
|
|
/// <summary>
|
/// 地码 Y 坐标
|
/// </summary>
|
public string cooY { get; set; }
|
|
/// <summary>
|
/// 当前位置编号
|
/// </summary>
|
public string currentPositionCode { get; set; }
|
|
/// <summary>
|
/// 地图编号
|
/// </summary>
|
public string mapCode { get; set; }
|
|
/// <summary>
|
/// 地码编号
|
/// </summary>
|
public string mapDataCode { get; set; }
|
|
/// <summary>
|
/// 仓位编号
|
/// </summary>
|
public string stgBinCode { get; set; }
|
|
/// <summary>
|
/// 方法名
|
/// </summary>
|
public string method { get; set; }
|
|
/// <summary>
|
/// AGV 编号
|
/// </summary>
|
public string robotCode { get; set; }
|
|
|
/// <summary>
|
/// 容器类型
|
/// </summary>
|
public string ctnrType { get; set; }
|
|
|
/// <summary>
|
/// 巷道编号
|
/// </summary>
|
public string roadWayCode { get; set; }
|
|
/// <summary>
|
/// 巷道内顺序号
|
/// </summary>
|
public string seq { get; set; }
|
|
/// <summary>
|
/// 设备编号
|
/// </summary>
|
public string eqpCode { get; set; }
|
|
/// <summary>
|
/// 任务路径集合
|
/// </summary>
|
public List<positionCodePath> positionCodePath { get; set; }
|
|
#endregion [自定义类][20250324165635320][HaiKangOrderInfo]
|
}
|
public class positionCodePath
|
{
|
#region [自定义类][20250324165724429][positionCodePath]
|
|
/// <summary>
|
/// 任务编号
|
/// </summary>
|
public string positionCode { get; set; }
|
|
/// <summary>
|
/// 类型
|
/// </summary>
|
public string Type { get; set; }
|
#endregion [自定义类][20250324165724429][positionCodePath]
|
}
|
public class HkReturnResult
|
{
|
#region [自定义类][20250324171912560][HkReturnResult]
|
|
/// <summary>
|
/// 返回状态码
|
/// </summary>
|
public int code { get; set; }
|
/// <summary>
|
/// 返回说明
|
/// </summary>
|
public string message { get; set; }
|
/// <summary>
|
/// 任务号
|
/// </summary>
|
public string reqCode { get; set; }
|
#endregion [自定义类][20250324171912560][HkReturnResult]
|
}
|
public class deviceInfo
|
{
|
#region [自定义类][20250325083629462][deviceInfo]
|
|
|
public string address { get; set; }
|
public string deviceName { get; set; }
|
public string FuLeLineNo { get; set; }
|
public string[] deviceNo { get; set; }
|
|
/// <summary>
|
/// 对应线体 -优先级
|
/// </summary>
|
public string[] areaPriy { get; set; }
|
|
public string[] location { get; set; }
|
/// <summary>
|
/// 1 维希尔机械臂
|
/// 2 捷瞬机械臂臂
|
/// 3 捷瞬输送线
|
/// </summary>
|
public int deviceType { get; set; }
|
public int enable { get; set; }
|
|
/// <summary>
|
/// 任务权重。
|
/// </summary>
|
public int taskPri { get; set; } = 60;
|
#endregion [自定义类][20250325083629462][deviceInfo]
|
}
|
public class HttpHelper
|
{
|
#region [自定义类][20250325095622918][HttpHelper]
|
public string Post(string url, string postData, string contentType = "application/json", string sessionId = "")
|
{
|
LogHelper.Info(url + "+" + postData);
|
WebRequest request = WebRequest.Create(url);
|
request.Method = "POST";
|
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
|
request.ContentType = contentType;
|
request.ContentLength = byteArray.Length;
|
request.Timeout = 15000;
|
if (sessionId != "")
|
{
|
request.Headers.Set("ASP.NET_SessionId", sessionId);
|
}
|
|
//Authorization: UApGP6WW9FsBUqAlzxRGOw ==
|
request.Headers.Set("Authorization", "UApGP6WW9FsBUqAlzxRGOw==");
|
StreamReader reader = null;
|
Stream stream = null;
|
WebResponse rsp = null;
|
try
|
{
|
stream = request.GetRequestStream();
|
stream.Write(byteArray, 0, byteArray.Length);
|
stream.Close();
|
rsp = request.GetResponse();
|
stream = rsp.GetResponseStream();
|
reader = new StreamReader(stream);
|
string rrend = reader.ReadToEnd();
|
LogHelper.Info($"{url} response={rrend}");
|
return rrend;
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Info($"{url} err={ex.Message}");
|
return "";
|
}
|
finally
|
{
|
// 释放资源
|
if (reader != null) reader.Close();
|
if (stream != null) stream.Close();
|
if (rsp != null) rsp.Close();
|
}
|
|
}
|
#endregion [自定义类][20250325095622918][HttpHelper]
|
}
|
public class HKResult
|
{
|
#region [自定义类][20250325095900399][HKResult]
|
/// <summary>
|
/// 返回编码
|
/// </summary>
|
public string code { get; set; }
|
|
/// <summary>
|
/// 返回消息
|
/// </summary>
|
public string message { get; set; }
|
|
/// <summary>
|
/// 请求编号
|
/// </summary>
|
public string reqCode { get; set; }
|
|
/// <summary>
|
/// 自定义返回(返回任务单号)
|
/// </summary>
|
public string data { get; set; }
|
#endregion [自定义类][20250325095900399][HKResult]
|
}
|
public class SYSHelper
|
{
|
#region [自定义类][20250325131633664][SYSHelper]
|
private static object locker = new object();
|
internal static int GetSerialNumber(string snType, string prefix, string Vend = "0")
|
{
|
if (Vend == "1")
|
Vend = DateTime.Now.ToString("yyMMdd");
|
int result = 0;
|
lock (locker)
|
{
|
SYSRepository sysservice = new SYSRepository();
|
var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);
|
|
if (sId != null)
|
{
|
|
sId.CN_N_MAX++;
|
sId.CN_T_LAST = DateTime.Now;
|
//sysservice.Update(sId);
|
|
sysservice.dbcontext.Set<SYSEntity>().Attach(sId);
|
sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).CurrentValue = sId.CN_N_MAX;
|
|
sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).IsModified = true;
|
sysservice.dbcontext.Entry(sId).Property(x => x.CN_T_LAST).CurrentValue = sId.CN_T_LAST;
|
|
sysservice.dbcontext.Entry(sId).Property(x => x.CN_T_LAST).IsModified = true;
|
|
sysservice.dbcontext.SaveChanges();
|
result = sId.CN_N_MAX;
|
}
|
else
|
{
|
sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0, CN_S_APP_TYPE = "WCS" };
|
sysservice.Insert(sId);
|
}
|
}
|
return result;
|
}
|
#endregion [自定义类][20250325131633664][SYSHelper]
|
}
|
public class TaskProcess
|
{
|
#region [自定义类][20250325152141671][TaskProcess]
|
internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", int cntrCount = 1, int startLayer = 1, int endLayer = 1)
|
{
|
|
LogHelper.Info($"创建任务 from:{from}>to {to}开始创建>");
|
var cntrInfo = string.Join(",", cntrs);
|
ILocRepository locc = new LocRepository();
|
var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);
|
var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);
|
|
var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;
|
var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;
|
string t = "";
|
if (workMode == "AGV")
|
{
|
t = "F01";
|
if (s && !e) t = "A002";
|
if (!s && e) t = "A003";
|
if (s && e) t = "A004";
|
}
|
try
|
{
|
|
TaskEntity wmsTask = new TaskEntity()
|
{
|
S_ID = Guid.NewGuid().ToString(),
|
S_STATE = "编辑",
|
T_CREATE = DateTime.Now,
|
T_MODIFY = DateTime.Now,
|
|
S_TASK_NO = GenerateTaskNo(),
|
S_START_LAREA = fromLoc.S_AREA_CODE,
|
S_END_LAREA = endLoc.S_AREA_CODE,
|
S_DEPART_NAME = "",
|
S_START_LOC = from,
|
S_END_LOC = to,
|
S_TYPE = taskType,
|
S_SRC_NO = no,//
|
N_PRIORITY = pri,
|
S_WORK_MODE = workMode,
|
S_B_STATE = "未执行",
|
S_CNTRS = cntrInfo,
|
N_START_LAYER = startLayer,
|
N_END_LAYER = endLayer,
|
N_CNTR_COUNT = cntrCount,
|
S_INDEX = t,
|
};
|
ITaskRepository taskserice = new TaskRepository();
|
taskserice.Insert(wmsTask);
|
|
if (workMode == "AGV")
|
{
|
fromLoc.S_LOCK_STATE = "出库锁";
|
endLoc.S_LOCK_STATE = "入库锁";
|
locc.Update(fromLoc);
|
locc.Update(endLoc);
|
}
|
|
LogHelper.Info($"创建任务 from:{from}>to {to} 创建{wmsTask.S_TASK_NO}成功");
|
return true;
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Error("CreateTask" + ex.Message, ex);
|
return false;
|
}
|
}
|
|
|
internal static void AddActionRecord(string no, string state, string forkliftNo, string extData, string strloc, string endloc)
|
{
|
var action = new TaskActEntity()
|
{
|
S_ID = Guid.NewGuid().ToString(),
|
S_STATE = "编辑",
|
T_CREATE = DateTime.Now,
|
T_MODIFY = DateTime.Now,
|
S_START_LOC = strloc,
|
S_END_LOC = endloc,
|
S_ACTION_CODE = state,
|
S_TASK_NO = no,
|
S_EQ_NO = forkliftNo,
|
S_EQ_TYPE = "agv",
|
S_DATA = extData,
|
N_CREATEMETHOD = 0
|
};
|
TaskActRepository taskserice = new TaskActRepository();
|
taskserice.Insert(action);
|
}
|
|
public static System.String GenerateTaskNo()
|
{
|
var id = SYSHelper.GetSerialNumber("任务号", "TN", "1");
|
var date = DateTime.Now.ToString("yyMMdd");
|
return $"TN{date}{id.ToString().PadLeft(4, '0')}";
|
}
|
#endregion [自定义类][20250325152141671][TaskProcess]
|
}
|
public class Utils
|
{
|
#region [自定义类][20250417094750211][Utils]
|
|
#endregion [自定义类][20250417094750211][Utils]
|
}
|
public class ToWMSMES
|
{
|
#region [自定义类][20250531152402452][ToWMSMES]
|
//2 wms mes
|
|
|
public class CreateTask
|
{
|
public string taskType { get; set; }
|
public string startBit { get; set; }
|
public string endBit { get; set; }
|
public string reqCode { get; set; }
|
public string cntrCode { get; set; }
|
|
internal static ReturnMsg CreatemesTask(CreateTask model)
|
{
|
ITaskRepository taskservice = new TaskRepository();
|
var task = taskservice.FindEntity(x => x.S_TASK_NO == model.reqCode);
|
if (task == null)
|
{
|
//var i = TaskProcess.CreateTask("", model.startBit, model.endBit, string.IsNullOrEmpty(model.taskType) ? "Mes下发" : model.taskType, 5, new List<string> { model.cntrCode });
|
TaskEntity wmsTask = new TaskEntity()
|
{
|
S_ID = Guid.NewGuid().ToString(),
|
S_STATE = "编辑",
|
T_CREATE = DateTime.Now,
|
T_MODIFY = DateTime.Now,
|
|
S_TASK_NO = model.reqCode,
|
S_START_LAREA = "",
|
S_END_LAREA = "",
|
S_DEPART_NAME = "",
|
S_START_LOC = model.startBit,
|
S_END_LOC = model.endBit,
|
S_TYPE = model.taskType,
|
S_SRC_NO = "",//
|
N_PRIORITY = -88,
|
S_WORK_MODE = "agv",
|
S_B_STATE = "MES",
|
S_CNTRS = model.cntrCode,
|
N_START_LAYER = 1,
|
N_END_LAYER = 1,
|
N_CNTR_COUNT = 1
|
};
|
ITaskRepository taskserice = new TaskRepository();
|
var i = taskserice.Insert(wmsTask) > 0;
|
return new ReturnMsg { resultCode = (i ? 0 : -1), resultMsg = i ? "" : "任务生成失败。" };
|
}
|
else
|
{
|
return new ReturnMsg { resultCode = -1, resultMsg = "任务重复下发。" };
|
}
|
}
|
|
public class ReturnMsg
|
{
|
public int resultCode { get; set; }
|
public string resultMsg { get; set; }
|
}
|
|
|
internal static ReturnMsg CreatePointTask(CreateTask model)
|
{
|
ITaskRepository taskservice = new TaskRepository();
|
var task = taskservice.FindEntity(x => x.S_TASK_NO == model.reqCode);
|
if (task == null)
|
{
|
//var i = TaskProcess.CreateTask("", model.startBit, model.endBit, string.IsNullOrEmpty(model.taskType) ? "Mes下发" : model.taskType, 5, new List<string> { model.cntrCode });
|
TaskEntity wmsTask = new TaskEntity()
|
{
|
S_ID = Guid.NewGuid().ToString(),
|
S_STATE = "编辑",
|
T_CREATE = DateTime.Now,
|
T_MODIFY = DateTime.Now,
|
S_TASK_NO = model.reqCode,
|
S_START_LAREA = "",
|
S_END_LAREA = "",
|
S_DEPART_NAME = "",
|
S_START_LOC = model.startBit,
|
S_END_LOC = model.endBit,
|
S_TYPE = model.reqCode,
|
S_SRC_NO = "",//
|
N_PRIORITY = -88,
|
S_WORK_MODE = "agv",
|
S_B_STATE = "People",
|
S_CNTRS = model.cntrCode,
|
N_START_LAYER = 1,
|
N_END_LAYER = 1,
|
N_CNTR_COUNT = 1
|
};
|
ITaskRepository taskserice = new TaskRepository();
|
var i = taskserice.Insert(wmsTask) > 0;
|
return new ReturnMsg { resultCode = (i ? 0 : -1), resultMsg = i ? "" : "任务生成失败。" };
|
}
|
else
|
{
|
return new ReturnMsg { resultCode = -1, resultMsg = "任务重复下发。" };
|
}
|
}
|
}
|
public static void ResMesTask()
|
{
|
AutoThread.InvokeMethod(AutoThread.Instance, "ResolveMesTask");
|
///1.
|
//var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains("捷瞬抓臂"));
|
//if ()
|
///2 看缓存区。 没满的。
|
}
|
|
|
#endregion [自定义类][20250531152402452][ToWMSMES]
|
}
|
}
|