public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string hospital_id; string floor_id; string result = ""; string v; if (GetString(value, out v)) { if (v.Contains("_")) { string[] values = v.Split('_'); if (values.Length > 2) { hospital_id = values[1]; floor_id = values[2]; } else { hospital_id = values[0]; floor_id = values[1]; } int tmp; if (Int32.TryParse(hospital_id, out tmp) && Int32.TryParse(floor_id, out tmp)) { string localeCode = CommonUtil.GetAppLocaleCode(); string valueFieldName = "hospital_name_" + localeCode; string name1 = GetValue <string>(HospitalMaster.SelectNameSql(localeCode, hospital_id), valueFieldName); valueFieldName = "floor_name_" + localeCode; string name2 = GetValue <string>(FloorMaster.SelectNameSql(localeCode, floor_id), valueFieldName); result = name1 + "," + name2; } } } return(result); }
/// <summary> /// 異常状態チェックで /// MUエラーチェック /// </summary> private void UpdateErrorForMu() { // m_errorInfo.ResetMuInfo(); string locale_code = CommonUtil.GetAppLocaleCode(); MuMaster[] mu_masters = BaseModel.GetRows <MuMaster>(m_db.Conn, "SELECT * FROM mu_master WHERE mu_enable=1"); foreach (MuMaster mu_master in mu_masters) { int mu_id = mu_master.mu_id; MuStatusLog mu_status_log = BaseModel.GetFirst <MuStatusLog>(m_db.Conn, "SELECT * FROM mu_status_log WHERE mu_log_mu_id=" + mu_id + " ORDER BY mu_log_index DESC LIMIT 1"); string message = null; bool is_error = true; if (mu_status_log.mu_log_com == 0) { // 未接続のとき // 前回のエラー情報とオペモードをリセット // ResetMuErrCode(mu_id); m_errorInfo.RemoveByMu(mu_id); ResetMuOpeMode(mu_id); int errcode = 999900009; // オフライン用に存在しないエラーコードを設定 if (!IsSameErrCode(mu_id, errcode)) { message = Properties.Resources.MLD_MUORDER_STATUS_NOCON; } is_error = false; } else if (mu_status_log.mu_log_errcode == 0) { // エラーなしのとき // 前回のエラー情報リセット ResetMuErrCode(mu_id); int ope_mode = mu_status_log.mu_log_ope_mode; if (!IsSameOpeMode(mu_id, ope_mode)) { // ope_modeに対応するメッセージを取得 message = CommonUtil.GetValueFromCSV(Properties.Resources.MLD_OPE_MODE, ope_mode); is_error = false; } } else { // エラーありのとき // 前回のope_modeリセット ResetMuOpeMode(mu_id); int errcode = mu_status_log.mu_log_errcode; if (!IsSameErrCode(mu_id, errcode)) { // levelかcodeに異常がある場合はメッセージを取得 message = CommonUtil.MuErrorMessageFormat(m_db.Conn, locale_code, mu_id, mu_status_log.mu_log_errlevel, errcode); } } if (message != null) { string mu_name = BaseModel.GetFirstValue <string>(m_db.Conn, MuMaster.SelectNameSql(locale_code, mu_id.ToString()), "mu_name_" + locale_code); // エラー発生日時を取得 DateTime updatedAt = mu_status_log.mu_log_datetime; // 発部署、着部署 // ①の mu_statusテーブルの同一レコードにあるmu_stat_order_id(搬送オーダID)がNULLの場合(搬送していない)は、発部署、着部署はブランク表示します。 // mu_stat_order_id<> NULLの場合は、このmu_stat_order_idの一致する搬送オーダテーブル(order_reserve)から該当するレコード情報から発部署、着部署(巡回、不在転送含む表示)を表示する。 (string fromSectNames, string toSectNames) = OrderReserve.GetSectNames(m_db.Conn, mu_status_log.mu_log_order_id); string other_name = "value"; // 棟名称 string hospital_name = BaseModel.GetFirstValue <string>(m_db.Conn, HospitalMaster.SelectNameSql(locale_code, mu_status_log.mu_log_hospital_id.ToString(), other_name)); // フロア名称 string floor_name = BaseModel.GetFirstValue <string>(m_db.Conn, FloorMaster.SelectNameSql(locale_code, mu_status_log.mu_log_floor_id.ToString(), other_name)); // ポイント名称 string point_name = BaseModel.GetFirstValue <string>(m_db.Conn, PointMaster.SelectNameSql(locale_code, mu_status_log.mu_log_point_last.ToString(), other_name)); // メッセージを追加 (オフラインのときは黒) this.addMessage(updatedAt, is_error ? "Red" : "Black", message, mu_name); // システム状態のリストにもメッセージが表示されるように if (m_systemStatusControl != null) { m_systemStatusControl.addMessage(updatedAt, is_error ? "Red" : "Black", message, mu_name); } int muorder_status = mu_status_log.mu_log_muorder_status; if (is_error) { // 異常情報ようにエラー情報設定 m_errorInfo.UpdateMuError(updatedAt, GetErrorBrush(muorder_status), mu_id, mu_name, message, fromSectNames, toSectNames, hospital_name, floor_name, mu_status_log.mu_log_pos_x, mu_status_log.mu_log_pos_y, point_name); } } } }