예제 #1
0
        }//fn_CxrResultSplit

        public dbResultMessage saveCxrResultStrDropdownlist( //CXR下拉清單
            string inputCxrResultStr //Cxr檢查結果
            , string inputSqlDetailTableName //[RCS_RECORD_DETAIL] [RCS_CPT_ASS_DETAIL]
        ){
            dbResultMessage dbResultMsg = new dbResultMessage();
            DataTable sysParams_DTable = new DataTable();// RCS_SYS_PARAMS的資料
            try
            {
                // 初步獲得 [RCS_SYS_PARAMS] CXR下拉清單
                // [P_MODEL] = [RCS_RECORD_DETAIL] [RCS_CPT_ASS_DETAIL]
                // [P_GROUP] = 'cxr_result'
                List<string> CxrResultDropdownList = getCxrResultStr_DropdownList();
                //檢查輸入值是否 [RCS_SYS_PARAMS] 已經存在
                if (!string.IsNullOrWhiteSpace(inputCxrResultStr)
                    && !CxrResultDropdownList.Contains(inputCxrResultStr)
                ){
                    string sqlcmd = @"SELECT TOP 0 * FROM " + GetTableName.RCS_SYS_PARAMS.ToString().Trim();
                    sysParams_DTable = this.DBA.getSqlDataTable(sqlcmd);
                    DataRow sysParams_newDRow = sysParams_DTable.NewRow();
                    {
                        sysParams_newDRow["P_ID"] = DateTime.Now.ToString("yyyyMMddHHmmss") + user_info.user_id;
                        sysParams_newDRow["P_MODEL"] = inputSqlDetailTableName; //[RCS_RECORD_DETAIL] [RCS_CPT_ASS_DETAIL]
                        sysParams_newDRow["P_GROUP"] = "cxr_result"; 
                        sysParams_newDRow["P_NAME"] = inputCxrResultStr; //[Cxr檢查結果]
                        sysParams_newDRow["P_VALUE"] = inputCxrResultStr; //[Cxr檢查結果]
                        sysParams_newDRow["P_LANG"] = "zh-tw";
                        sysParams_newDRow["P_SORT"] = (CxrResultDropdownList.Count + 1).ToString(); //存入個數
                        sysParams_newDRow["P_MEMO"] = "";
                        sysParams_newDRow["P_STATUS"] = "1";
                        sysParams_newDRow["P_MANAGE"] = "0";
                    }
                    sysParams_DTable.Rows.Add(sysParams_newDRow);
                    /*-------------------------*/
                    dbResultMsg = this.DBA.UpdateResult(sysParams_DTable, GetTableName.RCS_SYS_PARAMS.ToString());
                    //新增成功
                    if (this.DBA.LastError != null
                        && this.DBA.LastError == ""
                        && dbResultMsg.State == enmDBResultState.Success
                    ){
                        //新增成功,不做任何事,保留 [dbResultMsg] 成功訊息。
                    }
                    //新增失敗
                    else
                    {
                        LogTool.SaveLogMessage("CXR下拉清單新增失敗1:" + this.DBA.LastError.ToString(), "saveCxrResultStrDropdownlist");
                        LogTool.SaveLogMessage("CXR下拉清單新增失敗2:" + dbResultMsg.dbErrorMessage, "saveCxrResultStrDropdownlist");
                        this.DBA.Rollback();
                    }
                }//if-(IsNullOrWhiteSpace)
            }
            catch (Exception ex)
            {
                LogTool.SaveLogMessage(ex, "saveCxrResultStrDropdownlist");
            }
            return dbResultMsg;
        }//saveCxrResultStrDropdownlist
예제 #2
0
        }//SQL[Read讀取]

        /*-------------------------[上] Read讀取 + Save儲存 [下]-------------------------*/
        /*-------------------------[上] Read讀取 + Save儲存 [下]-------------------------*/

        /// <summary>
        /// SQL [Save儲存] Cxr資料庫 [RCS_CXR_JSON]
        /// 輸入 List<CXR_XYwmc> 要有資料,才會儲存 [RCS_CXR_JSON] Cxr資料庫
        /// 若輸入 List<CXR_XYwmc> 無資料,仍要 [更新] 刪除 [Cxr_CJID流水號] 舊資料
        /// </summary>
        /// <param name="inputA_CxrCjid">[Cxr_CJID] Cxr流水號 [RCS_CXR_JSON] 資料庫</param>
        /// <param name="paraCxrXywmc_List">[CJ_VALUE] Xywmc座標 [RCS_CXR_JSON] 資料庫</param>
        /// <returns></returns>
        public dbResultMessage saveRcsCxrJson_byCjid_NullDelete(
            string inputA_CxrCjid //[Cxr_CJID] Cxr流水號
            , List<CXR_XYwmc> inputB_CxrXywmcList // [NULL空值] 自動刪除 [RCS_CXR_JSON] 資料庫
        ){
            // 流水號來源:row.RECORD_ID = SQL.GetFixedStrSerialNumber(); [SQLProvider]
            // 流水號來源:DateTime.Now.ToString("yyyyMMddHHmmssfffff") + [user_id 使用者代碼] + [pIpdno 批價序號]
            dbResultMessage dbResultMsg = new dbResultMessage();
            try
            {
                dbResultMsg.State = enmDBResultState.Success; //初始值,設定 [成功]。

                //只有 [Cxr_CJID] 流水號
                if (!string.IsNullOrWhiteSpace(inputA_CxrCjid)
                //&& inputB_CxrXywmcList != null (勿開啟功能)
                //&& inputB_CxrXywmcList.Count > 0 (勿開啟功能)
                ){
                    //正常save功能,有 [Cxr_CJID] 流水號 + [Xywmc] 座標
                    if (!string.IsNullOrWhiteSpace(inputA_CxrCjid)
                        && inputB_CxrXywmcList != null
                        && inputB_CxrXywmcList.Count > 0
                    ){
                        /*----------------------------------- 暫存 [DataTable] 表格 [下] -----------------------------------*/

                        // 1.產生 [DataTable] 等待存入 [RCS_CXR_JSON] Cxr資料庫
                        DataTable newCxrTable = new DataTable();
                        newCxrTable.Columns.Add("CJ_ID");
                        newCxrTable.Columns.Add("CJ_INDEX");
                        newCxrTable.Columns.Add("CJ_VALUE");

                        int ii = 0;
                        // 2.讀取每一筆 List<CXR_XYwmc> 暫存 [DataTable] 表格
                        foreach (CXR_XYwmc CxrXywmc_Node in inputB_CxrXywmcList)
                        {
                            // [mouse] 一定要有 "動作值"
                            if (CxrXywmc_Node != null
                                && !string.IsNullOrWhiteSpace(CxrXywmc_Node.mouse)
                            ){
                                ii++;
                                // 3.讀取每一筆 List<CXR_XYwmc> 暫存 [DataTable] 表格
                                DataRow newRow = newCxrTable.NewRow();
                                {
                                    newRow["CJ_ID"] = inputA_CxrCjid;
                                    newRow["CJ_INDEX"] = ii.ToString("0000"); //前面補0數字
                                    newRow["CJ_VALUE"] = JsonConvert.SerializeObject(CxrXywmc_Node).Trim();
                                }
                                newCxrTable.Rows.Add(newRow);
                            }//if
                        }//foreach

                        /*------------------ [上] 暫存 [DataTable] 表格 + 存入 [RCS_CXR_JSON] Cxr資料庫 [下] ------------------*/

                        // 4.先刪除 [Cxr_CJID流水號] 舊資料
                        // 若 [inputB_CxrXywmcList == null] 空值,要 [更新] 刪除 [Cxr_CJID流水號] 舊資料
                        dbResultMsg = this.DBA.ExecuteNonQuery(
                            "DELETE " + GetTableName.RCS_CXR_JSON.ToString() +
                            " WHERE CJ_ID = " + SQLDefend.SQLString(inputA_CxrCjid.Trim())
                            );
                        //刪除成功
                        if (this.DBA.LastError != null
                            && this.DBA.LastError == ""
                            && dbResultMsg.State == enmDBResultState.Success
                        ){
                            //存入 [RCS_CXR_JSON] Cxr資料庫 (先確認 [DataTable] 有值,才會儲存)
                            //若 [DataTable] 沒有值,代表此病人沒有Cxr圖,已經 [更新] 刪除 [Cxr_CJID流水號] 舊資料 (上方已經刪除)
                            if (newCxrTable.Rows.Count > 0)
                            {
                                // 5.存入 [RCS_CXR_JSON] Cxr資料庫
                                dbResultMsg = this.DBA.UpdateResult(newCxrTable, GetTableName.RCS_CXR_JSON.ToString());
                                //儲存成功
                                if (this.DBA.LastError != null
                                    && this.DBA.LastError == ""
                                    && dbResultMsg.State == enmDBResultState.Success
                                ){
                                    //成功,不做任何事,保留 [dbResultMsg] 成功訊息。
                                }
                                //儲存失敗
                                else
                                {
                                    LogTool.SaveLogMessage("Cxr儲存失敗1:" + this.DBA.LastError.ToString(), "saveRcsCxrJson_byCjid_NullDelete");
                                    LogTool.SaveLogMessage("Cxr儲存失敗2:" + dbResultMsg.dbErrorMessage, "saveRcsCxrJson_byCjid_NullDelete");
                                    this.DBA.Rollback();
                                }
                            }//if (newCxrTable.Rows.Count > 0)
                        }
                        //刪除失敗
                        else
                        {
                            LogTool.SaveLogMessage("Cxr刪除失敗1:" + this.DBA.LastError.ToString(), "saveRcsCxrJson_byCjid_NullDelete");
                            LogTool.SaveLogMessage("Cxr刪除失敗2:" + dbResultMsg.dbErrorMessage, "saveRcsCxrJson_byCjid_NullDelete");
                            this.DBA.Rollback();
                        }

                        /*------------------ [上] 存入 [RCS_CXR_JSON] Cxr資料庫 ------------------*/

                    }//if (inputB_CxrXywmcList != null

                    //有 [Cxr_CJID] 流水號,但 [Xywmc座標] 空值,則要 [刪除]
                    else if (!string.IsNullOrWhiteSpace(inputA_CxrCjid)
                        && (inputB_CxrXywmcList == null || inputB_CxrXywmcList.Count == 0)
                    ){
                        // 4.先刪除 [Cxr_CJID流水號] 舊資料
                        // 若 [inputB_CxrXywmcList == null] 空值,要 [更新] 刪除 [Cxr_CJID流水號] 舊資料
                        dbResultMsg = this.DBA.ExecuteNonQuery(
                            "DELETE " + GetTableName.RCS_CXR_JSON.ToString() +
                            " WHERE CJ_ID = " + SQLDefend.SQLString(inputA_CxrCjid.Trim())
                            );
                        //刪除成功
                        if (this.DBA.LastError != null
                            && this.DBA.LastError == ""
                            && dbResultMsg.State == enmDBResultState.Success
                        ){
                            //刪除成功,不做任何事,保留 [dbResultMsg] 成功訊息。
                        }
                        //刪除失敗
                        else
                        {
                            LogTool.SaveLogMessage("Cxr刪除失敗1:" + this.DBA.LastError.ToString(), "saveRcsCxrJson_byCjid_NullDelete");
                            LogTool.SaveLogMessage("Cxr刪除失敗2:" + dbResultMsg.dbErrorMessage, "saveRcsCxrJson_byCjid_NullDelete");
                            this.DBA.Rollback();
                        }
                    }//else 有 [Cxr_CJID] 流水號,但 [Xywmc座標] null,則要 [刪除]
                    /*------------------ [上] 存入 [RCS_CXR_JSON] Cxr資料庫 ------------------*/
                }
                //沒有 [Cxr_CJID] 流水號
                else //if [!string.IsNullOrWhiteSpace(inputA_CxrCjid)]
                {
                    //流水號空白,強制不進行動作,紀錄於 [Log] 以待檢查,返回主畫面。
                    LogTool.SaveLogMessage("紀錄提醒Cxr儲存功能 [Cxr_CJID] 流水號不得為空白,請確認 [Controller控制器] 程式碼", "saveRcsCxrJson_byCjid_NullDelete");
                    return dbResultMsg;
                }
            }//try
            catch (Exception ex)
            {
                LogTool.SaveLogMessage(ex, "saveRcsCxrJson_byCjid_NullDelete");
                LogTool.SaveLogMessage(this.DBA.LastError.ToString(), "saveRcsCxrJson_byCjid_NullDelete");
                LogTool.SaveLogMessage(dbResultMsg.dbErrorMessage, "saveRcsCxrJson_byCjid_NullDelete");
                this.DBA.Rollback();
            }//catch
            return dbResultMsg;
        }//[Save儲存] RCS_CXR_JSON