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; } } }