using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using Commom.Utility; using Common; using Model; namespace BLL.DAL { public class DAL_CheckMonitor { /// /// 获取机器人信息 /// /// /// /// public IList GetList(AjaxGetRobotList Json, ref PageInfo pageInfo) { try { // test StringBuilder strSql = new StringBuilder(); List para = new List(); strSql.Append("select Id,RobotNo,RobotName,PickType,IDState,Picked"); strSql.Append(" from WCSPickLino where IsDel = 0 "); if (!string.IsNullOrWhiteSpace(Json.RobotNo)) { strSql.Append(" and RobotNo like '%" + Json.RobotNo + "%' "); } if (!string.IsNullOrWhiteSpace(Json.PickType)) { strSql.Append(" and PickType = '" + Json.PickType + "' "); } if (!string.IsNullOrWhiteSpace(Json.IDState)) { strSql.Append(" and IDState = '" + Json.IDState + "' "); } SqlParam[] param = null; if (para != null) { param = para.ToArray(); } DataTable dt = DataFactory.SqlDataBase().GetPageList(strSql.ToString(), param, "RobotNo", "", ref pageInfo); return ModelConvertHelper.DataTableToModel(dt); } catch { throw new NotImplementedException(); } } /// /// 获取任务控制信息明细 /// /// /// /// public IList GetDetailList(AjaxGetBindList Json, ref PageInfo pageInfo) { try { StringBuilder strSql = new StringBuilder(); List para = new List(); // strSql.Append("select PickLinoID,TaskNo,Type,LotNo,SkuNo,SkuName,Chang,Kuan,Gao,AddTime,IDState,LineDao,Level,Finish from WCSPickLinoBind where IsDel = '0' "); if (!string.IsNullOrWhiteSpace(Json.PickLinoID)) { strSql.Append(" and PickLinoID = '" + Json.PickLinoID + "' "); } DataTable dt = DataFactory.SqlDataBase().GetPageList(strSql.ToString(), null, "AddTime", "", ref pageInfo); return ModelConvertHelper.DataTableToModel(dt); } catch { throw new NotImplementedException(); } } /// /// 手动添加任务 liudl Del 20231026 /// /// /// /// public bool Add(TaskMonitorModel model, string loginUser) { bool result = false; try { Hashtable ht = new Hashtable(); ht["TaskType"] = model.TaskType.AddQuotes(); ht["InitialAddre"] = "'" + model.InitialAddre + "'"; ht["Palno"] = "'" + model.Palno + "'"; ht["TargetAddre"] = "'" + model.TargetAddre + "'"; ht["State"] = "'0'"; ht["IsSucceed"] = "'" + model.IsSucceed + "'"; ht["ErrorStr"] = "'" + model.ErrorStr + "'"; ht["PriorityLevel"] = model.PriorityLevel; ht["Source"] = "'手动'"; ht["Demo"] = "'" + model.Demo + "'"; ht["CreateUser"] = "'" + loginUser + "'"; ht["CreateTime"] = "Getdate()"; int _ret = DataFactory.SqlDataBase().InsertByHashtableNullParam("TaskMonitor", ht); if (_ret == 1) result = true; return result; } catch { return result; } } /// /// 任务绑定工位 /// /// /// 登录人 /// public bool BindTask(WCSTasks models,string loginName) { bool result = false; try { StringBuilder sqlString = new StringBuilder(); // 验证任务是否已存在 sqlString.Append($"select count(Id) from WCSTasks where PalletNo = '{models.PalletNo}' adn (Status = '0' or Status = '1') ;"); DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString); if (dt != null) { if (dt.Rows[0][0].ToString() != "0") { throw new Exception("等待或正在执行任务中托盘号:" + models.PalletNo + ";已存在!"); } } models.TaskNo = GetTaskNo(); if (models.Type == "0")//0入 1出 { var str = int.Parse(models.EndLocate.Substring(0, 2)); if (str <= 2) { models.EndRoadway = "R01"; } else if (str > 2) { models.EndRoadway = "R02"; } } else if (models.Type == "1") { var str = int.Parse(models.StartLocate.Substring(0, 2)); if (str <= 2) { models.StartRoadway = "R01"; } else if (str > 2) { models.StartRoadway = "R02"; } } else { return false; } // 新增任务 sqlString.Clear(); sqlString.Append("INSERT INTO WCSTasks (TaskNo,Type,Status,Origin,StartRoadway,StartLocat,EndLocat,EndRoadway,PalletNo,"); sqlString.Append("LotNo,SupplierLot,SkuNo,SkuName,Qty,Levels,CreateUser) VALUES ("); sqlString.Append($"'{models.TaskNo}','{models.Type}','0','{models.Origin}','{models.StartRoadway}','{models.StartLocate}',"); sqlString.Append($"'{models.EndLocate}','{models.EndRoadway}','{models.PalletNo}','{models.LotNo}','{models.SupplierLot}',"); sqlString.Append($"'{models.SkuNo}','{models.SkuName}','{models.Qty}','{models.Levels}','{loginName}');"); var num = DataFactory.SqlDataBase().ExecuteBySql(sqlString); if (num == 1) { DAL_OperationRecord oper = new DAL_OperationRecord(); var operation = new OperationModel() { MenuName = "任务管理", FkNo = models.TaskNo+"-"+models.PalletNo, Msg = "新增任务信息", Type = "新增", }; oper.AddOperation(operation, loginName); result = true; } return result; } catch(Exception e) { throw new Exception(e.Message); } } /// /// 机器人禁用/恢复 /// /// /// /// public bool MonitorForbidden(string[] Id, string loginName) { bool result = false; try { int dt = DataFactory.SqlDataBase().IsExist("WCSPickLino", "Id", Id); if (dt >= Id.Length) { int i = 0; while (i < Id.Length) { StringBuilder sql = new StringBuilder(); // 获取当前任务详细信息 sql.Append($"select * from WCSPickLino where Id = '{Id[i]}';"); DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql); if (monitorDt != null && monitorDt.Rows.Count > 0) { int tag = 1; if (monitorDt.Rows[0]["IDState"].ToString() != "0") { tag = 0; } sql.Clear(); // 修改任务状态 sql.Append($"update WCSPickLino set IDState={tag},UpdateTime = getdate() where Id='{Id[i]}';"); int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql); if (_ret >= 1) { /*DAL_OperationRecord oper = new DAL_OperationRecord(); var operation = new OperationModel() { MenuName = "设备管理", FkNo = monitorDt.Rows[0]["ID"].ToString() + "号机器人", Msg = "禁用机器人", Type = "完成", }; oper.AddOperation(operation, loginName);*/ result = true; } } i++; } } return result; } catch { return result; } } /// /// 手动结批信号修改 /// /// /// /// public bool EndBatchTask(string[] Id) { bool result = false; try { int dt = DataFactory.SqlDataBase().IsExist("WCSPickLino", "Id", Id); if (dt >= Id.Length) { int i = 0; while (i < Id.Length) { StringBuilder sql = new StringBuilder(); // 获取当前任务详细信息 sql.Append($"select * from WCSPickLino where Id = '{Id[i]}';"); DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql); if (monitorDt != null && monitorDt.Rows.Count > 0) { int tag = 2; if (monitorDt.Rows[0]["IDState"].ToString() != "0") { tag = 0; } sql.Clear(); // 修改任务状态 sql.Append($"update WCSPickLino set IDState={tag},UpdateTime = getdate() where Id='{Id[i]}';"); int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql); if (_ret >= 1) { /*DAL_OperationRecord oper = new DAL_OperationRecord(); var operation = new OperationModel() { MenuName = "设备管理", FkNo = monitorDt.Rows[0]["ID"].ToString() + "号机器人", Msg = "禁用机器人", Type = "完成", }; oper.AddOperation(operation, loginName);*/ result = true; } } i++; } } return result; } catch { return result; } } /// /// 取消任务 /// /// /// /// public bool TaskMonitorCancel(string[] Id,string loginName) { bool result = false; try { int dt = DataFactory.SqlDataBase().IsExist("WCSTasks", "Id", Id); if (dt >= Id.Length) { int i = 0; while (i < Id.Length) { StringBuilder sql = new StringBuilder(); // 获取当前任务详细信息 sql.Append($"select * from WCSTasks where Id = '{Id[i]}';"); DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql); if (monitorDt != null && monitorDt.Rows.Count > 0) { if (monitorDt.Rows[0]["Status"].ToString() != "0") { i++; continue; } // 完成上架任务 var wcsSql = new DALWcsMessage(); if (monitorDt.Rows[0]["Origin"].ToString() == "WMS") { var task = new TaskReques { taskNo = monitorDt.Rows[0]["TaskNo"].ToString(), PalletNo = monitorDt.Rows[0]["PalletNo"].ToString(), TaskType = monitorDt.Rows[0]["Type"].ToString(), TaskStatus = "4", }; wcsSql.RequestTasks(task); } sql.Clear(); // 修改任务状态 sql.Append("update WCSTasks set Status = 4,CancelDate=getdate() where Id='" + Id[i] + "'"); int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql); if (_ret >= 1) { DAL_OperationRecord oper = new DAL_OperationRecord(); var operation = new OperationModel() { MenuName = "任务管理", FkNo = monitorDt.Rows[0]["TaskNo"].ToString() + "-" + monitorDt.Rows[0]["PalletNo"].ToString(), Msg = "手动取消任务信息", Type = "取消", }; oper.AddOperation(operation, loginName); result = true; } } i++; } } return result; } catch { return result; } } /// /// 手动再次回传WMS /// /// 任务ID集合 /// /// public bool TaskMonitorBackhaul(string[] Id, string loginName,bool tuoji) { bool result = false; try { int dt = DataFactory.SqlDataBase().IsExist("WCSTasks", "Id", Id); if (dt >= Id.Length) { int i = 0; while (i < Id.Length) { StringBuilder sql = new StringBuilder(); // 获取当前任务详细信息 sql.Append($"select * from WCSTasks where Id = '{Id[i]}' and IsSuccess = '1';"); DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql); if (monitorDt != null && monitorDt.Rows.Count > 0) { string taskStatus = monitorDt.Rows[0]["Status"].ToString(); if (taskStatus == "0" || taskStatus == "1" || taskStatus =="4") { i++; continue; } DAL_OperationRecord oper = new DAL_OperationRecord(); var operation = new OperationModel() { MenuName = "任务管理", FkNo = monitorDt.Rows[0]["TaskNo"].ToString() + "-" + monitorDt.Rows[0]["PalletNo"].ToString(), Msg = "手动回传任务信息", Type = "回传", }; oper.AddOperation(operation, loginName); // 完成上架任务 var wcsSql = new DALWcsMessage(); if (monitorDt.Rows[0]["Origin"].ToString() == "WMS") { var task = new TaskReques { taskNo = monitorDt.Rows[0]["TaskNo"].ToString(), PalletNo = monitorDt.Rows[0]["PalletNo"].ToString(), TaskType = monitorDt.Rows[0]["Type"].ToString(), TaskStatus = monitorDt.Rows[0]["Status"].ToString(), // 获取再次 }; result = wcsSql.RequestTasks(task); } } i++; } } return result; } catch { return result; } } /// /// 获取最新任务号 /// /// public string GetTaskNo() { try { var taskStr = ""; //TK2023091900003 var codeFlag = "CS"; var time = DateTime.Now.ToString("yyyyMMdd").Trim(); StringBuilder sqlString = new StringBuilder(); // 验证任务是否已存在 sqlString.Append($"select TaskNo from WCSTasks where TaskNo like '{codeFlag+time}%' order by TaskNo desc;"); DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString); if (dt.Rows.Count != 0) { var s = dt.Rows[0]; var maxNo = dt.Rows[0][0].ToString(); if (string.IsNullOrWhiteSpace(maxNo)) { taskStr = codeFlag + time + "00001"; } else { int lastNo = Convert.ToInt32(maxNo.Substring(10, 5)) + 1; taskStr = codeFlag + time + (lastNo.ToString().PadLeft(5, '0')); } } else { taskStr = codeFlag + time + "00001"; } return taskStr; } catch (Exception e) { throw new Exception(e.Message); } } } }