NCC自定义参照(已有元数据)

一、业务背景:NCC的银行账号有很多种参照,客商银行账号,个人银行账号等等,有时候需要所有的银行账号做为参照,这个时候我们就可以在银行账号元数据(bankaccount)新增一个自定义参照了。

二、实现

SQL

--新增参照
INSERT
INTO BD_REFINFO(CODE,DR,ISTREELAZYLOAD,ISNEEDPARA,ISSPECIALREF,LAYER,METADATANAMESPACE,METADATATYPENAME,MOBILEREFPATH,MODULENAME,NAME,PARA1,PARA2,PARA3,PK_COUNTRY,PK_INDUSTRY,PK_REFINFO,REFCLASS,REFPATH,REFSYSTEM,REFTYPE,RESERV1,RESERV2,RESERV3,RESID,RESIDPATH,TS,WHEREPART,WORKFLOWCONDITIONUSEUNITORG) VALUES ('FILETYPE01',0,'N',null,null,null,'uapbd','bankaccbas',null,'uapbd','收款账号',null,null,null,null,null,'0001Z020000000TYPEJ4',null,'arap/hsbcebankpay/refer/Bankacc/index',null,0,null,null,null,'收款账号','收款账号','2022-08-31 12:16:00',null,null);

前端代码

import { high } from 'nc-lightapp-front';
import { conf as unitConf } from '../../../../uapbd/refer/bankacc/BankaccDefaultGridTreeRef/index';
const { Refer } = high;

export default function (props = {}) {
    var conf = {

        refType: 'grid',
        refName: '收款账号',
        queryGridUrl: '/nccloud/uapbd/ref/GatheringBankaccRef.do',
        isMultiSelectedEnabled: false,
        columnConfig: [{ name: ['编码', '名称'], code: ['accnum', 'accname'] }],
        unitProps: unitConf,
        isShowUnit: false
    };

    return <Refer {...conf} {...props} />
}

后端代码

package nc.ui.bd.ref.model;

import nccloud.framework.web.processor.refgrid.RefQueryInfo;
import nccloud.framework.web.ui.meta.RefMeta;
import nccloud.web.refer.DefaultGridRefAction;

public class GatheringBankaccRefModel extends DefaultGridRefAction {

    @Override
    public RefMeta getRefMeta(RefQueryInfo arg0) {
        RefMeta retMeta = new RefMeta();

        retMeta.setCodeField("accnum");
        retMeta.setNameField("accname");
        retMeta.setPkField("pk_bankaccbas");
        retMeta.setTableName("bd_bankaccbas");
        retMeta.setExtraFields(new String[] { "accnum", "accname" });
        retMeta.setMutilLangNameRef(false);
        setShowDisabledData(null);
        return retMeta;
    }

    @Override
    public String getOrderSql(RefQueryInfo para, RefMeta meta) {
        return " order by code ";
    }

    @Override
    public String getExtraSql(RefQueryInfo para, RefMeta meta) {
        StringBuffer sql = new StringBuffer();
        sql.append(" 11 = 11 ");
        return sql.toString();
    }
}

三、常见问题

1、开发环境:前端需要增加编译路径

"buildEntryPath": [
    "./src/arap/hsbcebankpay/refer/Bankacc/index.js"
  ]
 
2、如果在新增的字段中选不到自定义参照,可能需要在已有的元数据要增加参照,可以选择修改元数据,也可以直接修改元数据后台表。

 

 update md_class set refmodelname=refmodelname+';收款账号' where name = 'bankaccount' and refmodelname not like '%收款账号%'

3、后台数据库有值,参照不显示
通过spr录制,找到查询参照的sql。

一般参照显示的编码和名称,是在元数据中业务接口属性映射,IBDObjet,code和name映射属性做为显示值,这两个字段需要有值。

 

 

  

 

posted on 2023-02-07 23:04  爱写代码的鸟  阅读(365)  评论(0编辑  收藏  举报