using Common;
using Model;
using Newtonsoft.Json;
using NLog;
using NPOI.XWPF.UserModel;
using Org.BouncyCastle.Asn1.X509;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net.WebSockets;
using System.Text;
using System.Threading.Tasks;
namespace BLL.DAL
{
[Obsolete]
public class DALWcsMessage
{
#region 标准版数据交互
///
/// 获取与设备交互信息
///
///
public DataTable GetPlcInfos(string level, string plcIP, string dbNumber)
{
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append($"select * from WCSPlcInfo where isDel = 0 ");
if (level != "")
{
sqlString.Append($"and Level = '{level}' ");
}
if (plcIP != "")
{
sqlString.Append($"and plcIP = '{plcIP}' ");
}
if (dbNumber != "")
{
sqlString.Append($"and dbNumber = '{dbNumber}' ");
}
sqlString.Append(";");
return DataFactory.SqlDataBaseDB1().GetDataTableBySQL(sqlString);
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "系统错误:");
}
return null;
}
///
/// 获取任务信息
///
/// 0 等待执行 1 正在执行 2 执行完成 3 异常结束 4 任务取消 5 防断电执行
/// 0 入库任务 1 出库任务 2 移库任务
/// 托盘号
///
public DataTable GetWCSTasks(string status, string type, string palletNo = "", string startRoadway = "", string endRoadway = "")
{
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select top 1 * from WCSTasks ");
sqlString.Append($"where Status in ({status}) and IsDel = '0' ");
if (palletNo != "")
{
sqlString.Append($" and palletNo = '{palletNo}' ");
}
if (startRoadway != "")
{
sqlString.Append($" and startRoadway = '{startRoadway}' ");
}
if (endRoadway == "111")
{
}
else if (endRoadway != "")
{
sqlString.Append($" and endRoadway = '{endRoadway}' ");
}
if (type != "")
{
sqlString.Append($" and Type in ({type}) ");
}
if (endRoadway == "111")
{
sqlString.Append(" order by Levels,CreateTime desc; ");
}
else if (endRoadway != "111")
{
sqlString.Append(" order by Levels desc,CreateTime asc; ");
}
return DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "系统错误:");
}
return null;
}
///
/// 根据托盘号获取组盘信息
///
///
///
public DataRow GetWcsPalletBind(string palletNo)
{
try
{
//select Top 1 * from WCSPalletBind where PalletNo = 'T2300017'
StringBuilder sqlString = new StringBuilder();
sqlString.Clear();
sqlString.Append("select Top 1 * from WCSPalletBind ");
sqlString.Append($" where palletNo = '{palletNo}' ");
sqlString.Append(" order by CreateTime desc ");
DataRow aa = DataFactory.SqlDataBase().GetDataRowBySQL(sqlString);
return aa;
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "系统错误:");
}
return null;
}
///
/// 获取空托盘任务信息
///
/// 0 等待执行 1 正在执行 2 执行完成 3 异常结束 4 任务取消 5 防断电执行
/// 0 入库任务 1 出库任务 2 移库任务
/// 批次号
///
public DataTable GetWCSSupallTasks(string status, string type, string lotNo = "")
{
bool bl = false;
try
{
//获取空托盘入库任务
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select top 1 * from WCSTasks ");
sqlString.Append($"where Status = '{status}' and IsDel = '0' ");
if (lotNo != "")
{
sqlString.Append($" and LotNo = '{lotNo}' ");
}
if (type != "")
{
sqlString.Append($" and Type = '{type}' ");
}
sqlString.Append(" and StartRoadway != '' order by Levels desc,CreateTime asc; ");
var taskList = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
//获取数据后清空sqlString
sqlString.Clear();
//修改空托盘入库任务改为出库任务
sqlString.Append($"Update WCSTasks set Type);");
int rowCount = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
if (rowCount > 0)
{
bl = true;
return taskList;
}
return null;
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "系统错误:");
}
return null;
}
///
/// 获取指定入口货物信息
///
/// 入库口
///
public DataTable GetWCSConveyorInfo(string conveyor = "")
{
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select * from WCSConveyorInfo ");
sqlString.Append("where Status = '1' and IsDel = '0' and isEndLot = '0' ");
if (!string.IsNullOrWhiteSpace(conveyor))
{
sqlString.Append($" and Conveyor = '{conveyor}';");
}
return DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "系统错误:");
}
return null;
}
///
/// 存储托盘组托信息
///
/// 组托信息
/// true:成功 false:失败
public bool AddWCSPalletBind(WCSPalletBind model)
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append(@"INSERT INTO WCSPalletBind
( LocatNo , PalletNo , SkuQty , SkuWeight , Status , ErrorMsg
, TaskType , SkuType , SubPallet , LotNo , LotText , SupplierLot , IsBale ,
IsBelt ) VALUES (");
sqlString.Append($"'{model.LocatNo}','{model.PalletNo}','{model.SkuQty}','{model.SkuWeight}','{model.Status}',");
sqlString.Append($"'{model.ErrorMsg}','{model.TaskType}','{model.SkuType}','{model.SubPallet}','{model.LotNo}',");
sqlString.Append($"'{model.LotText}','{model.SupplierLot}','{model.IsBale}','{model.IsBelt}');");
int rowCount = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
if (rowCount > 0)
{
bl = true;
}
}
catch (Exception ex)
{
// 记录日志文件
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "SetWCSPalletBind存储组盘信息失败");
return bl;
}
return bl;
}
///
/// 调用WMS接口获取储位地址
///
/// 托盘号
/// 组盘信息
/// 目标工位号(取货工位)
/// 返回wms反馈的信息
public string GetLocation(string palletNo, WCSPalletBind model, ref string endLocat)
{
try
{
string returnStr = "";
StringBuilder sqlString = new StringBuilder();
// 先判断此托盘的任务是否已生成任务
sqlString.Append("select * from WCSTasks where Status in ('0','1') and Type = '0' ");
sqlString.Append($"and PalletNo = '{palletNo}' and isdel = '0';");
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
if (dt == null || dt.Rows.Count <= 0)
{
string json = JsonConvert.SerializeObject(model);
var response = Utility.Extra.HttpHelper.DoPost("http://192.168.220.137:8081/api/DownAPi/RequestLocation", json);
//var response = Utility.Extra.HttpHelper.DoPost("http://localhost:13243/api/DownAPi/RequestLocation", json);
ResponseTasks taskModels = JsonConvert.DeserializeObject(response);
//Logger logger = LogManager.GetCurrentClassLogger();
//logger.Error("申请储位原因:", response);
if (taskModels.Success == "0")
{
// 永远只返回一条信息,因为是集合所以用循环插入写法;
DALWMSApi dal = new DALWMSApi();
WCSTasks task = taskModels.TaskList;
// 添加任务信息
task.StartLocat = model.StationNum;
task.LotNo = model.LotNo;
task.SupplierLot = model.SupplierLot;
task.PalletType = model.SubPallet == "0" ? "0" : "1";
WCSResultModel result = dal.AddWcsTask(task);
if (result.stateCode == "1")
{
endLocat = task.EndRoadway;
returnStr = "托盘号:" + palletNo + "\n" + "储位地址:" + task.EndLocat + "\n";
// 插入组托信息
this.AddWCSPalletBind(model);
// 插入任务明细表
WCSTasksMonitor tasksMonitor = new WCSTasksMonitor();
tasksMonitor.TaskNo = task.TaskNo;
tasksMonitor.PlcId = int.Parse(model.PlcId);
tasksMonitor.PlcName = model.StationNum;
tasksMonitor.StartLocat = model.StationNum;
tasksMonitor.InteractiveMsg = $"{palletNo}:向WMS申请储位信息成功";
tasksMonitor.PalletNo = palletNo;
tasksMonitor.EndLocat = task.EndLocat;
tasksMonitor.Status = "2"; // 执行完成
this.AddWCSTasksMonitor(tasksMonitor);
}
else
{
returnStr = "-1:" + result.errMsg;
return returnStr;
}
}
else
{
returnStr = "-1:" + taskModels.Message;
return returnStr;
}
}
else
{
endLocat = dt.Rows[0]["EndRoadway"].ToString();
}
// 确定取货工位
switch (endLocat)
{
case "R11":
endLocat = "2";
break;
case "R12":
endLocat = "6";
break;
case "R13":
endLocat = "10";
break;
}
// 记录日志文件
returnStr = endLocat;
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(returnStr, "申请储位");
return returnStr;
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "程序异常:申请储位失败!");
throw ex;
}
}
///
/// 调用WMS接口申请空托盘垛
///
/// 物料号
/// 送货工位号
///
public string GetSupperPalletLocation(out string palletNo1,string skuNo = "", string endLocat = "")
{
try
{
palletNo1 = "";
string returnStr = "";
StringBuilder sqlString = new StringBuilder();
//string sku = skuNo + ";" + endLocat;
var data = new
{
SkuNo = skuNo,
EndLocat = endLocat,
};
sqlString.Clear();
string json = JsonConvert.SerializeObject(data);
var response = Utility.Extra.HttpHelper.DoPost("http://192.168.220.137:8081/api/DownAPi/PalletLocation", json);
//var response = Utility.Extra.HttpHelper.DoPost("http://localhost:13243/api/DownAPi/PalletLocation", json);
var taskModels = JsonConvert.DeserializeObject(response);
if (taskModels.Success == "0")
{
if (taskModels.Message == "任务已申请!")
{
return null;
}
// 永远只返回一条信息,因为是集合所以用循环插入写法;
DALWMSApi dal = new DALWMSApi();
foreach (var item in taskModels.TaskList)
{
WCSTasks task = item;
//根据托盘号获取
// 添加任务信息
task.EndLocat = item.EndLocat != "" ? item.EndLocat : skuNo == "100099" ? "41" : skuNo == "100098" || skuNo == "100096" ? "23" : "33";
task.LotNo = "";
task.SupplierLot = "";
task.PalletType = "";
WCSResultModel result = dal.AddWcsTask(task);
if (result.stateCode == "1")
{
endLocat = task.EndRoadway;
returnStr = "托盘号:" + task.PalletNo + "\n" + "储位地址:" + task.StartLocat + "\n";
// 插入任务明细表
WCSTasksMonitor tasksMonitor = new WCSTasksMonitor();
tasksMonitor.TaskNo = task.TaskNo;
tasksMonitor.PlcId = 0;
tasksMonitor.PlcName = "";
tasksMonitor.StartLocat = task.StartLocat;
tasksMonitor.InteractiveMsg = $"{task.PalletNo}:向WMS申请空托盘信息成功";
tasksMonitor.PalletNo = task.PalletNo;
palletNo1 = task.PalletNo;
tasksMonitor.EndLocat = task.EndLocat;
tasksMonitor.Status = "2"; // 执行完成
this.AddWCSTasksMonitor(tasksMonitor);
}
else
{
returnStr = "-1:" + result.errMsg;
return returnStr;
}
// 确定取货工位
switch (task.StartRoadway)
{
case "R11":
endLocat = "3";
break;
case "R12":
endLocat = "4";
break;
case "R13":
endLocat = "11";
break;
}
// 记录日志文件
returnStr += "目标位置:" + endLocat + "\n";
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(returnStr, "申请空托盘");
}
return returnStr;
}
else
{
returnStr = "-1:" + taskModels.Message;
return returnStr;
}
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "程序异常:申请空托盘失败!");
throw ex;
}
}
///
/// 获取报警基础信息
///
/// 报警信息基础表
public DataTable GetWcsAlarmInfo()
{
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select * from WCSAlarmInfo order by PlcIP;");
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 更新任务状态
///
/// 托盘号
/// 任务状态
/// true:成功 flase:失败
public bool SetWCSTasks(string palletNo, string StateValue, string EndLocatNo)
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("Update WCSTasks set FinishDate = '" + DateTime.Now + "', Status = '" + StateValue + "' ");
//判断目标工位是否为空
if (!string.IsNullOrEmpty(EndLocatNo))
{
sqlString.Append($" ,EndLocat = '{EndLocatNo}'");
}
sqlString.Append(" where PalletNo = '" + palletNo + "' and Status not in ('3','2','4');");
int rowCount = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
if (rowCount > 0)
{
bl = true;
}
return bl;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 插入任务明细表
///
/// 任务明细信息
public bool AddWCSTasksMonitor(WCSTasksMonitor model)
{
bool bl = false;
StringBuilder sqlString = new StringBuilder();
try
{
// 判断任务号是否位""
if (model.TaskNo == "")
{
// 根据托盘号获取对应的任务号
sqlString.Append($"select TaskNo from WCSTasks where Status = '1' and IsDel = '0' and PalletNo = '{model.PalletNo}';");
DataRow row = DataFactory.SqlDataBase().GetDataRowBySQL(sqlString);
if (row != null)
{
model.TaskNo = row["TaskNo"].ToString();
}
}
if (model.TaskNo == "")
{
return bl;
}
// 插入任务明细表
sqlString.Clear();
sqlString.Append(@"INSERT INTO WCSTasksMonitor
( TaskNo , PlcId , PlcName , StartLocat , EndLocat , InteractiveMsg
, ErrorMsg,PalletNo,Status,IsDel ) VALUES (");
sqlString.Append($"'{model.TaskNo}',{model.PlcId},'{model.PlcName}','{model.StartLocat}','{model.EndLocat}',");
sqlString.Append($"'{model.InteractiveMsg}','{model.ErrorMsg}','{model.PalletNo}','{model.Status}','0');");
int rowCount = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
if (rowCount > 0)
{
bl = true;
}
}
catch (Exception ex)
{
// 记录日志文件
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "AddWCSTasksMonitor添加任务明细失败!");
return bl;
}
return bl;
}
///
/// 调用WMS接口反馈任务接口
///
/// 任务完成状态
///
public bool RequestTasks(TaskReques model)
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
string json = JsonConvert.SerializeObject(model);
var response = Utility.Extra.HttpHelper.DoPost("http://192.168.220.137:8081/api/DownAPi/ReceiveWcsSignal", json);
//var response = Utility.Extra.HttpHelper.DoPost("http://localhost:13243/api/DownAPi/ReceiveWcsSignal", json);
var response1 = JsonConvert.DeserializeObject(response);
ResponseTasks taskModels = JsonConvert.DeserializeObject(response1.ToString());
if (taskModels.StatusCode == "0")
{
sqlString.Append($"Update WCSTasks set IsSuccess = '0' where TaskNo = '{model.taskNo}';");
DataFactory.SqlDataBase().ExecuteBySql(sqlString);
bl = true;
}
else
{
sqlString.Append($"Update WCSTasks set IsSuccess = '1',Information='{taskModels.Message}' where TaskNo = '{model.taskNo}';");
DataFactory.SqlDataBase().ExecuteBySql(sqlString);
}
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, $"{model.taskNo}:程序异常:任务反馈失败!");
}
return bl;
}
#endregion
#region 07版本,标准版弄好后删除
///
/// 判断WCS是否自动模式 链接DB1
///
/// true:自动模式 false:手动模式
public bool GetIsWcsAutoDB1()
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select code from [dbo].[Dictionary] where TypeName = 'WCSAuto';");
DataRow row = DataFactory.SqlDataBaseDB1().GetDataRowBySQL(sqlString);
if (row != null)
{
if (row["code"].ToString() == "0")
{
bl = true;
}
}
return bl;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 判断WCS是否自动模式 链接db2
///
/// true:自动模式 false:手动模式
public bool GetIsWcsAutoDB2()
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select code from [dbo].[Dictionary] where TypeName = 'WCSAuto';");
DataRow row = DataFactory.SqlDataBaseDB2().GetDataRowBySQL(sqlString);
if (row != null)
{
if (row["code"].ToString() == "0")
{
bl = true;
}
}
return bl;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 获取未完成的任务自动
///
/// 任务状态0:未下发 1:已下发 3:已完成
/// 任务信息
public DataTable GetWmsTasks(string state, string taskType, string Palno = "")
{
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select top 1 * from TaskMonitor ");
sqlString.Append("where State = '" + state + "' and Source = 'WMS' and IsDel = '0' ");
if (Palno != "")
{
sqlString.Append(" and Palno = '" + Palno + "' ");
}
sqlString.Append(" and taskType = '" + taskType + "' ");
sqlString.Append(" order by PriorityLevel desc,CreateTime asc; ");
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
if (dt == null || dt.Rows.Count == 0)
{
return null;
}
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 根据出入库口获取正在执行的出入库任务
///
/// 通道口
/// in:入库 out:出库
/// true:不存在任务 false:存在任务
public bool GetTasks(string InitialAddre, string taskType)
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select * from TaskMonitor ");
sqlString.Append("where State = '1' and Source = 'WMS' and IsDel = '0' ");
sqlString.Append("and taskType = '" + taskType + "' and InitialAddre = '" + InitialAddre + "' ");
sqlString.Append("order by PriorityLevel desc,CreateTime asc; ");
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
if (dt == null || dt.Rows.Count == 0)
{
bl = true;
}
return bl;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 创建任务
///
/// 任务表实体类
public int SetTaskMonitor(TaskMonitorDto taskModel)
{
try
{
int isSucceed = 0;
StringBuilder sqlString = new StringBuilder();
sqlString.Append(@"INSERT INTO TaskMonitor(TaskNo,TaskType,InitialAddre
, Palno, TargetAddre, State, IsSucceed, ErrorStr, PriorityLevel, Source
, Demo, CreateTime, IsDel) values ('");
sqlString.Append(taskModel.TaskNo + "','" + taskModel.TaskType + "','" + taskModel.InitialAddre + "','");
sqlString.Append(taskModel.Palno + "','" + taskModel.TargetAddre + "',0,'0','0','0','WMS','',GETDATE(),'0')");
int rowCount = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
if (rowCount > 0)
{
return isSucceed;
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 更新任务状态
///
/// 托盘号
/// 任务状态
/// true:成功 flase:失败
public bool SetWmsTasks(string TrayCode, string StateValue)
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("Update TaskMonitor set State = '" + StateValue + "' where Palno = '" + TrayCode + "' and State != '3';");
int rowCount = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
if (rowCount > 0)
{
bl = true;
}
return bl;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 获取报警基础信息
///
/// 报警信息基础表
public DataTable GetErrorInfor()
{
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select * from [CS_AlarmInfo] order by M;");
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 向报警表写入错误信息
///
public void SetErrorMessage(string errorType, string errorCode, string messageStr)
{
try
{
// State: 0=未处理 1=已处理
StringBuilder sqlString = new StringBuilder();
sqlString.Append("insert into CS_Alarm (Name,ErrorCode,AlarmName,State) ");
sqlString.Append("VALUES ('" + errorType + "','" + errorCode + "','" + messageStr + "','0');");
DataFactory.SqlDataBase().ExecuteBySql(sqlString);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 判断当前报警信息是否已存在
///
/// MB点位
/// false:不存在 true:已存在
public bool GetErrorMessage(string errorCode)
{
bool bl = false;
try
{
StringBuilder sqlString = new StringBuilder();
sqlString.Append("select count(*) from CS_Alarm where errorCode = '" + errorCode + "';");
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
if (dt.Rows[0][0].ToString() != "0")
{
bl = true;
}
return bl;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 删除跺机和运输线所有报警信息
///
public void DelErrorMessage()
{
try
{
// State: 0=未处理 1=已处理
StringBuilder sqlString = new StringBuilder();
sqlString.Append("delete from CS_Alarm;");
DataFactory.SqlDataBase().ExecuteBySql(sqlString);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 通知wms任务完成
///
/// 托盘号
/// 储位地址
/// 任务类型 1 入库任务 2:出库任务
public void WcsinWms(string palNo, string locationCode, string taskType)
{
try
{
string returnStr = "";
DALWMSApi api = new DALWMSApi();
var LocationModel = new ApiLocationModel();
if (taskType == "1")
{
// 入库完成
LocationModel = api.PutStorage(palNo, locationCode);
}
else
{
// 出库完成
LocationModel = api.OutStorage(palNo, locationCode);
}
if (LocationModel.Code == "01")
{
returnStr = "托盘号:'" + palNo + "'任务完成";
}
else
{
this.SetErrorMessage(LocationModel.OutMode, LocationModel.Code, palNo + "任务失败!");
returnStr = "托盘号:'" + palNo + "'任务失败";
//switch (LocationModel.Code)
//{
// case "-11": returnStr = palNo + ":-11参数错误!"; break;
// case "-101": returnStr = palNo + ":-101无组盘信息!"; break;
// case "-102": returnStr = palNo + ":-102非仓库托盘"; break;
// default: break;
//}
}
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 调用WMS接口获取储位地址
///
/// 托盘号
/// 返回wms反馈的信息
public string GetLocation(string palNo, string height, string inPort)
{
try
{
string returnStr = "";
// 向WMS申请储位
LocationInfo location = new LocationInfo();
location.palNo = palNo;
location.height = int.Parse(height);
string json = JsonConvert.SerializeObject(location);
DALWMSApi api = new DALWMSApi();
var LocationModel = api.GetLocation(palNo, int.Parse(height));
// Liudl 2022-12-31 Edit 接口调用改为程序内部调用
//var response = Utility.Extra.HttpHelper.DoPost("192.168.1.35:57061/api/WMSApi/getLocation", json);
//ApiLocationModel LocationModel = JsonConvert.DeserializeObject(response);
// 判断储位是否申请成功 01:成功 -11:参数错误 -101:没有组盘信息 -102:没有此托盘
if (LocationModel.Code == "01")
{
// 生成入库任务,插入任务表
TaskMonitorDto taskModel = new TaskMonitorDto();
taskModel.TaskNo = "in";
taskModel.TaskType = "in";
taskModel.InitialAddre = inPort;
taskModel.Palno = palNo;
taskModel.TargetAddre = LocationModel.LocationCode;
taskModel.State = "0";
taskModel.IsSucceed = LocationModel.Code;
taskModel.ErrorStr = LocationModel.OutMode;
taskModel.PriorityLevel = 0;
taskModel.Source = "WMS";
taskModel.IsDel = 0;
this.SetTaskMonitor(taskModel);
returnStr = "托盘号:'" + palNo + "'申请储位成功,储位地址为:'" + LocationModel.LocationCode + "'";
}
else
{
// 向led屏幕插入信息 Liudl 未完成
// 插入报警信息
this.SetErrorMessage(LocationModel.OutMode, LocationModel.Code, palNo + "申请储位地址失败!");
switch (LocationModel.Code)
{
case "-11": returnStr = palNo + ":-S11参数错误!"; break;
case "-101": returnStr = palNo + ":-S101无组盘信息!"; break;
case "-102": returnStr = palNo + ":-S102非仓库托盘"; break;
default: break;
}
}
// 记录日志文件
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(returnStr, "申请储位");
return returnStr;
}
catch (Exception ex)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Error(ex.Message, "程序异常:申请储位失败!");
throw ex;
}
}
///
/// 判断此托盘是否已分配任务
///
/// 托盘号
///
public string IsTaskMonitor(string palNo)
{
string Location = "";
try
{
StringBuilder strSQL = new StringBuilder();
strSQL.Append($"select TargetAddre from TaskMonitor where Palno ='{palNo}' and TaskType = 'in' and IsDel = '0' and State <> '3';");
DataTable dtI = DataFactory.SqlDataBase().GetDataTableBySQL(strSQL);
if (dtI != null && dtI.Rows.Count > 0)
{
Location = "托盘号:'" + palNo + "'申请储位成功,储位地址为:'" + dtI.Rows[0]["TargetAddre"] + "'";
}
return Location;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
///
/// 返回wms实体类
///
public class ExportLibraryDto
{
///
/// 任务号
///
public string TaskNo { get; set; }
///
/// 任务类型
///
public string TaskType { get; set; }
///
/// 托盘编码
///
public string StockCode { get; set; }
///
/// 储位编码
///
public string SlotCode { get; set; }
///
/// 目标地址(可能是仓库口、可能是移库后的储位)
///
public string TargetPosition { get; set; }
///
/// 托盘要经过的巷道口
///
public string LaneWayPosition { get; set; }
///
/// 目标储位经过的巷道口
///
public string TargetLaneWayPosition { get; set; }
public int Order { get; set; }
}
///
/// 任务监控实体类
///
public class TaskMonitorDto
{
///
/// 任务号
///
public string TaskNo { get; set; }
///
/// 任务类型
///
public string TaskType { get; set; }
///
/// 托盘编码
///
public string Palno { get; set; }
///
/// 起始地址
///
public string InitialAddre { get; set; }
///
/// 目标地址
///
public string TargetAddre { get; set; }
///
/// 状态 01等待 02进行中 03已完成
///
public string State { get; set; }
///
/// 是否成功
///
public string IsSucceed { get; set; }
///
/// 错误信息
///
public string ErrorStr { get; set; }
///
/// 优先级
///
public int? PriorityLevel { get; set; }
///
/// 来源
///
public string Source { get; set; }
///
/// 是否成功
///
public string Demo { get; set; }
///
/// 是否删除
///
public int? IsDel { get; set; }
}
///
/// 申请储位实体类
///
public class LocationInfo
{
///
/// 托盘号
///
public string palNo { get; set; }
///
/// 高度
///
public int height { get; set; }
}
}