/// <summary>取得條件式最後的選單編號</summary> public static string GetMaxMenuNo(string ParentMenuNo, int?MenuNoLen) { //開啟資料庫存取物件 using (var db = new DataBase.DataBase(Definition.Conn)) { //資料庫參數 var param = new DataBase.SqlParams(); param.Add("ParentMenuNo", ParentMenuNo + "%"); param.Add("MenuNoLen", MenuNoLen); db.SqlParams = param; //條件式 string strWhere = ""; if (!string.IsNullOrEmpty(ParentMenuNo)) { strWhere += " AND MenuNo LIKE @ParentMenuNo "; } if (MenuNoLen != null) { strWhere += " AND LEN(MenuNo) = @MenuNoLen "; } //取回資料 db.StrSQL = "SELECT MAX(MenuNo) FROM Menu WHERE 1=1" + strWhere; //編號轉換,若回傳空值則從00編號開始 string strMaxMenuNo = db.ExecuteScalar(); if (string.IsNullOrEmpty(strMaxMenuNo)) { strMaxMenuNo = ParentMenuNo + "00"; } return(strMaxMenuNo); } }
/// <summary>取得條件式最後的群組編號</summary> public static string GetMaxGroupID() { //開啟資料庫存取物件 using (var db = new DataBase.DataBase(Definition.Conn)) { //取回資料 db.StrSQL = "SELECT MAX(GroupID) FROM [Group]"; string strID = db.ExecuteScalar(); return(strID == "" ? "00" : strID); } }
/// <summary>取得系統參數值</summary> public static string GetSysParamsValue(string ParaCode) { //開啟資料庫存取物件 using (var db = new DataBase.DataBase(Definition.Conn)) { //資料庫參數 var param = new DataBase.SqlParams(); param.Add("ParaCode", ParaCode); db.SqlParams = param; //回傳資料 db.StrSQL = "SELECT ParaValue FROM [SysParams] WHERE ParaCode = @ParaCode"; return(db.ExecuteScalar()); } }
/// <summary>清除警報</summary> public static void ClearAlarm(string id) { //取得指定警報中的碼頭 DataTable dtDoor = DockDoorDataAccess.GetDockDoorList(id, null, null, null, new Pages()); if (dtDoor.Rows.Count > 0) { DataRow row = dtDoor.Rows[0]; string strIP = row["IP"].ToString(); string strContainerID = row["ContainerID"].ToString(); string strCaptionPanelIP = row["CaptionPanelIP"].ToString(); //修改Reader DB,以觸發DB Trigger UpdateControlDB(strIP, "UPDATE alarm SET alarm='" + DateTime.Now.ToString("yyyyMMddHHmmss") + "'"); //清除碼頭的異常狀態 using (var db = new DataBase.DataBase(Definition.Conn)) { db.StrSQL = "UPDATE Innolux_DockDoor SET Alarm = '' WHERE DockDoorID = '" + id + "'"; db.ExecuteSQL(); } //若有貨櫃停靠,則播放最後一次成功訊息 if (strContainerID != "") { using (var db = new DataBase.DataBase(Definition.Conn)) { string strToday = DateTime.Now.ToString("yyyyMMdd"); db.StrSQL = "SELECT TOP 1 Msg FROM Innolux_TagLog WHERE (DockDoorID = '" + id + "') AND (Status IN ('Y','A')) AND (Msg LIKE '%" + strContainerID + "%') AND (Convert(varchar, DateTime, 112) = '" + strToday + "') ORDER BY DateTime DESC"; string strMsg = db.ExecuteScalar() ?? ""; ControlMachine(strCaptionPanelIP, strMsg, 0); } } else { ControlMachine(strCaptionPanelIP, "", 1); } } }
//static string DB_Prestr = ""; /// <summary>貨櫃進站函式</summary> public static PostResult AddContainer(Container m) { PostResult r = new PostResult(); string strContainerID = "", strContainerStatus = ""; try { //判斷是否有貨櫃標籤 if (m.containers.Count == 0) { throw new Exception("無貨櫃標籤"); } else { m.containers = m.containers.Select(x => x.Trim()).ToList(); } //貨櫃號碼去空白 using (var db = new DataBase.DataBase(Definition.Conn)) { //檢查是否誤讀到其它貨櫃 for (int i = m.containers.Count - 1; i >= 0; i--) { string CID = m.containers[i].Substring(1); db.StrSQL = "SELECT COUNT(*) FROM Innolux_DockDoor WHERE IP <> '" + m.ip + "' AND ContainerID = '" + CID + "'"; //ExecuteScalar 返回單行單列的結果集 if (db.ExecuteScalar() != "0") { m.containers.RemoveAt(i); } } //判斷過濾後是否只剩一筆貨櫃ID if (m.containers.Count == 1) { strContainerID = m.containers[0].Substring(1); strContainerStatus = GetContainerStatus(strContainerID); //更新控制器貨櫃狀態 UpdateControlDB(m.ip, "UPDATE status SET status='" + strContainerStatus + "'"); r.result = strContainerStatus; r.msg = "櫃號:" + strContainerID + "已進站"; } else { throw new Exception("無貨櫃標籤"); } } } catch (Exception ex) { r.result = "N"; r.msg = ex.Message; } finally { using (var db = new DataBase.DataBase(Definition.Conn)) { //記錄碼頭目前停靠的貨櫃ID與狀態 string strAlarm = (r.result == "N" ? "Y" : ""); db.StrSQL = "UPDATE Innolux_DockDoor SET ContainerID = '" + strContainerID + "', ContainerStatus = '" + r.result + "', Alarm = '" + strAlarm + "' WHERE IP = '" + m.ip + "'"; db.ExecuteSQL(); } //控制語音與字幕機 DataTable dtDockDoor = DockDoorDataAccess.GetDockDoorList(null, m.ip, null, null, new Pages()); DataRow rowDoor = dtDockDoor.Rows[0]; string strCaptionPanelIP = rowDoor["CaptionPanelIP"].ToString(); ControlMachine(strCaptionPanelIP, r.msg, 0); } return(r); }