反饋已提交

網絡繁忙

自訂校驗

1. 概述

1.1 應用場景

一些特殊的業務邏輯用公式校驗不好實現,希望可以獲取填報頁面資料,交給使用者自訂的程式來判斷,最後將校驗結果傳回給頁面展示。

1.2 功能入口

設計器菜單欄點選範本>報表填報屬性,設定介面選擇資料校驗,點選,選擇自訂校驗即可,如下圖所示:

1.3 功能說明

1)自訂校驗的本質是獲取頁面資料後做自訂的處理,最後將校驗結果傳回,所以處理資料的程式碼部分需要使用者自己根據業務需求編寫。

2)只支援傳回校驗結果給頁面展示,不支援其他回呼需求。

3)自訂校驗支援在行動端使用。

2. 範例

2.1 準備資料

建立資料集 ds1,從 FRDemo 取數,SQL 語句為:SELECT * FROM S產品 limit 3

2.2 設計填報表格

設計填報表格,將資料集相應欄位拖到儲存格中,C2 儲存格新增「正文元件」,表格樣式如下圖所示:

2.3 編寫自訂校驗類

本範例要實現的效果是:當單價小於設定的最小值時,彈出校驗提醒。

參考以下程式碼可獲取相應的範本資料,進行判斷並傳回校驗結果。

package com.fr.data;

import com.fr.base.Utils;
import com.fr.log.FineLoggerFactory;
import com.fr.script.Calculator;

public class VerifyDemo extends DefinedVerifyJob {
    /**
     * 必須要定義此私有變數,變數名可改,表示校驗狀態,預設為0
     * 0  表示校驗成功
     * 1  表示校驗失敗
     */
    private int type = 0;

    /**
     * 當範本自訂事件增加的屬性名稱與下面變數名一致時,則會自動指派於此對應變數
     * JobValue代表綁定的值為儲存格,其他類型資料需按照各自類型去定義類,例如字串為String
     * 不支援儲存格組
     */
    private JobValue Price;
    private int MinNum;

    public void doJob(Calculator calculator) throws Exception {
    FineLoggerFactory.getLogger().error("------Price:" + Price.getValue() + ",MinNum:" + MinNum + "------");
    //在fanruan.log以error級別匯出獲取到的參數值
    
        /**
         * 獲取Price的值並轉為整數型態,賦給price物件
         */
        if (Price != null) {
            int price = 0;
            if (Price.getValue() instanceof Integer) {
                //判斷Price的值是否為整數
                price = (Integer) Price.getValue();
                //將Price的值強轉為整數型態,防止比較時因類型不一致導致報錯
            } else {
                price = Integer.parseInt(Utils.objectToString(Price.getValue()));
            }


            /**
             * 校驗價格是否小於設定的最小值,是的話傳回1(失敗),否則傳回0(成功)
             */
            if (price < MinNum) {
                type = 1;
            }
        } else {
            type = 0;
        }

    }

    public String getMessage() {
        /**
         * 根據校驗狀態是0(成功)還是1(失敗),設定對應的傳回資訊
         */
        if (type == 0) {
            return "校驗成功";
            //此處設定的資訊沒有用,成功的時候不會顯示這裏的內容,還是顯示預設"校驗成功"
        } else {
            return "價格不能小於" + MinNum;
        }

    }

    public Verifier.Status getType() {
        // 傳回校驗狀態
        return Verifier.Status.parse(type);
    }

    public void doFinish(Calculator arg0) throws Exception {

    }

}

2.4 設定資料校驗

1)報表填報屬性介面新增一個「自訂校驗」,點選「編輯」按鈕,如下圖所示:

2)將 2.3 節編寫好的 Java 程式碼copy到自訂函式編輯介面,點選「編譯」按鈕,只有顯示「編譯成功」後,才能儲存,如下圖所示:

注:除了上述編譯方式外,也可以將外部編譯好的 class 檔案放到 %FR_HOME%\webapps\webroot\WEB-INF\classes 資料夾下和程式碼中定義的package 路徑一致的位置,然後點選「選擇按鈕」引用 class 檔案。若修改更換了 class 檔案,則需要重啟設計器或帆軟服務,修改的程式碼才會生效。

點選可下載 class 檔案:VerifyDemo.rar

3)點選增加屬性按鈕,給提交事件新增 2 個屬性,注意值的類型需要和程式碼中定義的類型一致,如下圖所示:

2.5 效果預覽

使用填報預覽,點選校驗按鈕。

自定义校验.gif

注:支援行動端預覽。

3. 範本下載

點選下載範本:自定义校验.cpt

注:範本下載後需按照文檔 2.4 節操作,增加資料校驗事件後才能生效。


附件列表


主題: 填報應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙