ludc
2023-07-14 7602a824e39e19260ae32bb45e799e6ce43300ac
参照配置组件修改
已修改9个文件
已添加1个文件
503 ■■■■■ 文件已修改
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigCrudDialog.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
@@ -343,7 +343,7 @@
export default {
  name: "formulaEditor",
  props: {
     // å¯¹è¯æ¡†æ˜¾ç¤ºéšè—æŽ§åˆ¶
    // å¯¹è¯æ¡†æ˜¾ç¤ºéšè—æŽ§åˆ¶
    visible: {
        type: "Boolean",
        default: false,
Source/UBCS-WEB/src/components/code-dialog-page/referConfigCrudDialog.vue
@@ -77,12 +77,13 @@
//import func from "@/util/func";
import { getReferConfigPage } from "@/api/code/codeReferConfig";
export default {
    name: "referConfigDialog",
    name: "referConfigCrudDialog",
    props: {
    },
    data() {
        return{
            isShowReferConfigCrud:false,
            isShowReferConfigCrud: false,
            referConfigCrudOption: {
                border: true,
                height: '45vh',
@@ -468,6 +469,14 @@
            ],
        }
    },
    watch: {
        // ç›‘听父组件传的窗口显示隐藏的值
        isShowReferConfigCrud (){
            if(this.isShowReferConfigCrud){
                this.referConfigOnload();
            }
        }
    },
    methods: {
        // ä¸‹ä¸€æ­¥è¦è¿›è¡Œçš„æ“ä½œé€‰æ‹©å¹¶ä¿å­˜æˆ–选择并修改
Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
<template>
    <div v-if="display">
        <!-- ç¬¬äºŒå±‚对话框,自定义参照配置Form组件 -->
        <refer-config-form-dialog
            ref="referConfigFormDialog"
            @echoReferConfig="echoReferConfig">
        </refer-config-form-dialog>
        <!-- ç¬¬äºŒå±‚对话框,直接选择参照配置crud组件 -->
        <refer-config-crud-dialog
            ref="referConfigCrudDialog"
            @openReconfigInterFace="openReconfigInterFace"
            @echoReferConfig="echoReferConfig">
        </refer-config-crud-dialog>
    </div>
</template>
<script>
import referConfigFormDialog from "./referConfigFormDialog.vue";
import referConfigCrudDialog from "./referConfigCrudDialog.vue";
import func from "@/util/func";
export default {
    name: "referConfigDialog",
    props: ["referConfigOption","display"],
    components: {referConfigFormDialog, referConfigCrudDialog},
    data() {
        return {
        };
    },
    watch:{
        referConfigOption (){
            if(func.notEmpty(this.referConfigOption.referConfig) || func.notEmpty(this.referConfigOption.referBtmId)){
                this.openReconfigInterFace(this.referConfigOption);
            }else{
                this.openTipsChooseOrCust();
            }
        }
    },
    methods: {
        echoReferConfig(value) {
            this.emitData = value;
        },
        // å½“前已存在编辑过的参照配置,所以直接打开参照配置界面
        openReconfigInterFace(preReferConfigForm){
            const form = preReferConfigForm;
            let data = {
                referTypeName: form.referBtmName,
                referType: form.referBtmId,
            }
            if(this.referConfigOption.referConfig){
                // ç¼–辑码段时referConfig可能会在为【参照引用的业务类型】选取值之后改变
                let referConfigValue =JSON.parse(form.referConfig);
                if(referConfigValue.referType != form.referBtmId){
                referConfigValue.referType = form.referBtmId || '';
                referConfigValue.referTypeName = form.referBtmName || form.referBtmId;
                this.referConfigOption.referConfig = JSON.stringify(referConfigValue);
                }
                this.$set(data,"referConfig",this.referConfigOption.referConfig)
            }
            // é¦–次点击报错未定义
            this.$nextTick(()=>{
                this.$refs.referConfigFormDialog.isShowReferConfigForm = true;
                this.$refs.referConfigFormDialog.initPageData(data);
            })
        },
        // æ‰“开自定义参照配置或直接选择参照配置的提示框
        openTipsChooseOrCust(){
            this.$confirm('请选择参照配置的定义方式?','参照配置的方式', {
                distinguishCancelAndClose: true,
                closeOnClickModal: false,
                confirmButtonText: '自定义参照配置',
                cancelButtonText: '直接选择参照配置'
            })
            .then(() => {
                // æ‰“开自定参照配置对话框
                this.$refs.referConfigFormDialog.isShowReferConfigForm = true;
            })
            .catch(action => {
                if (action === "cancel") {
                    // æ‰“开直接选择参照配置对话框
                    this.$refs.referConfigCrudDialog.isShowReferConfigCrud = true;
                }
            });
        },
        /* å¼•用码段参照配置,子组件填完参照配置之后内容回显时调用 */
        echoReferConfig(content){
            this.$emit('setReferConfigValue', content) // è§¦å‘update:data将子组件值传递给父组件
        },
    },
}
</script>
<style>
</style>
Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue
@@ -6,6 +6,7 @@
      :visible.sync="isShowReferConfigForm"
      width="90%"
      id="refer-config-form"
      destroy-on-close
      @close="recoveryDataAndForm('initData')"
      style="height: 115vh; margin-top: -14vh; overflow-y: hidden">
        <div style="width: 100%; overflow-y: auto; height: 70vh">
@@ -234,8 +235,9 @@
<script>
    import func from "@/util/func";
    export default {
        name: "referConfigDialog",
        name: "referConfigFormDialog",
        props: {
        },
        data() {
            let element = '';
@@ -244,6 +246,7 @@
                labelWidth: '150',   // æ ‡é¢˜å®½åº¦
                isShowReferConfigForm: false,  // ç¬¬ä¸€å±‚对话框显示隐藏控制
                referTypeIsReadOnly: false,
                // è¡¨å•对象
                form: {
                    referTypeName: '', //显示的值
@@ -419,7 +422,7 @@
                                },{
                                    value: "_notlike", label: "不包含",
                                }, {
                                    value: 'equal', label: '等于'
                                    value: '_equal', label: '等于'
                                }, {
                                    value: '_notequal', label: '不等于'
                                }, {
@@ -899,10 +902,6 @@
            this.element = document.getElementById('refer-config-form');
            this.element.addEventListener("click", (e) => {
                //<table cellspacing="0" cellpadding="0" border="0" class="el-table__body" style="width: 911px;">
                //console.log(e.target);
                // console.log(this.$refs.crudAttr);
                // console.log(this.$refs.crudAttr.$el.contains(e.target));
                //console.log(!this.$refs.crudAttr.$el.contains(e.target) && this.preClickAttrRow != null);
                if (!this.$refs.crudAttr.$el.contains(e.target) && 
                   this.preClickAttrRow != '') {
                   this.preClickAttrRow.$cellEdit = false;
@@ -917,58 +916,16 @@
            // è´¼å‘,切换类型时表格,隐藏再显示就会出现表格错位问题,
            'form.type'(value) {
                this.onloadAttrData();
            },
            // ç›‘听父组件传的窗口显示隐藏的值
            isShowReferConfigForm (){
                if(this.isShowReferConfigForm){
                    this.onloadAttrData();
                }
            }
        },
        methods: {
            // å•击表格实现表格行编辑
            clickAttrEdit(row, column, event){
                if(this.preClickAttrRow && this.preClickAttrRow != row){
                    //console.log(this.codeShowFieldConfigVOS[this.preClickAttrRow.$index]);
                    this.codeShowFieldConfigVOS[this.preClickAttrRow.$index].$cellEdit = false;
                }
                row.$cellEdit = true;
                this.preClickAttrRow = row;
            },
            // å±žæ€§è¡¨æ ¼è¡Œç¼–辑失去焦点时保存方法
            // updateAttrBlur(value){
                //console.log(this.codeShowFieldConfigVOS[0]);
            // },
            // å•击表格实现表格行编辑
            clickAddSearchCondtionEdit(row, column, event){
                if(this.preClickAddSearchConditionRow && this.preClickAddSearchConditionRow != row){
                    //console.log(this.codeShowFieldConfigVOS[this.preClickAttrRow.$index]);
                    this.form.codeSrchCondConfigVOS[this.preClickAddSearchConditionRow.$index].$cellEdit = false;
                }
                row.$cellEdit = true;
                this.preClickAddSearchConditionRow = row;
            },
            //上一个页面已经选中参照应用的业务类型的情况,和上一次已经配置过参照配置的情况下进行页面初始化渲染
            initPageData(val){
                //console.log(val);
                if(func.notEmpty(val.referConfig)){
                    this.form = JSON.parse(val.referConfig);
                    // console.log(this.form);
                    this.form.isPersistence = this.form.isPersistence == 'true' ? true:false;
                    // å‚照引用的业务类型不可选
                    this.referTypeIsReadOnly = true;
                    if((this.form.type == 'default' || this.form.type  == 'grid') && (this.form.codeShowFieldConfigVOS != undefined && this.form.codeShowFieldConfigVOS.length > 0)){
                        this.codeShowFieldConfigVOS = this.form.codeShowFieldConfigVOS;
                    }
                    return;
                }else {
                    this.onloadAttrData()
                }
                if(func.notEmpty(val.referType)){
                    this.form.referTypeName = val.referTypeName;
                    this.form.referType = val.referType;
                    this.referTypeIsReadOnly = true;
                    return;
                }
                //console.log(localStorage.getItem("userId"));
            },
            // é€‰æ‹©å®Œå‚照配置之后点击保存按钮触发
            async selectedListReferConfig(){
                // æ ‡è®°æ‰€æœ‰è¡¨å•是否通过校验的变量
@@ -996,6 +953,52 @@
                    this.isShowReferConfigForm = false;
                }
            },
            // å•击表格实现表格行编辑
            clickAttrEdit(row, column, event){
                if(this.preClickAttrRow && this.preClickAttrRow != row){
                    //console.log(this.codeShowFieldConfigVOS[this.preClickAttrRow.$index]);
                    this.codeShowFieldConfigVOS[this.preClickAttrRow.$index].$cellEdit = false;
                }
                row.$cellEdit = true;
                this.preClickAttrRow = row;
            },
            // å±žæ€§è¡¨æ ¼è¡Œç¼–辑失去焦点时保存方法
            // updateAttrBlur(value){
                //console.log(this.codeShowFieldConfigVOS[0]);
            // },
            // å•击表格实现表格行编辑
            clickAddSearchCondtionEdit(row, column, event){
                if(this.preClickAddSearchConditionRow && this.preClickAddSearchConditionRow != row){
                    //console.log(this.codeShowFieldConfigVOS[this.preClickAttrRow.$index]);
                    this.form.codeSrchCondConfigVOS[this.preClickAddSearchConditionRow.$index].$cellEdit = false;
                }
                row.$cellEdit = true;
                this.preClickAddSearchConditionRow = row;
            },
            //上一个页面已经选中参照应用的业务类型的情况,和上一次已经配置过参照配置的情况下进行页面初始化渲染
            initPageData(val){
                // console.log(val.referConfig);
                if(func.notEmpty(val.referConfig)){
                    this.form = JSON.parse(val.referConfig);
                    // å‚照引用的业务类型不可选
                    // this.referTypeIsReadOnly = true;
                    if((this.form.type == 'default' || this.form.type  == 'grid') && (this.form.codeShowFieldConfigVOS != undefined && this.form.codeShowFieldConfigVOS.length > 0)){
                        this.codeShowFieldConfigVOS = this.form.codeShowFieldConfigVOS;
                    }
                    return;
                }else {
                    this.onloadAttrData()
                }
                if(func.notEmpty(val.referType)){
                    this.form.referTypeName = val.referTypeName;
                    this.form.referType = val.referType;
                    this.referTypeIsReadOnly = true;
                    return;
                }
                //console.log(localStorage.getItem("userId"));
            },
            /** å…¶å®žé€‰å–属性表格的默认数据不需要加载,
             ä½†æ˜¯å¼¹çª—打开会有表格错行问题所以需要在这调用doLayout方法*/
            onloadAttrData(){
@@ -1022,9 +1025,9 @@
                        $cellEdit: false
                    }
                ];
                this.$nextTick(() => {
                    this.$refs.crudAttr.doLayout()
                })
                // this.$nextTick(() => {
                //     this.$refs.crudAttr.doLayout()
                // })
            },
            // å±žæ€§é€‰æ‹©è¡¨æ ¼ä¸­çš„移除按钮功能
            removeCurrentRow(row,condition){
@@ -1198,7 +1201,7 @@
                        this.form.codeSrchCondConfigVOS.push(
                            {
                                filterField: item.id,
                                filterType: 'equal',
                                filterType: '_equal',
                                filterTypeText: item.name, 
                                filterValue: '',
                                $cellEdit: false
Source/UBCS-WEB/src/main.js
@@ -38,8 +38,7 @@
import TemplatePro from "@/components/Tree/TemplatePro"
import attrCrud from "@/components/Tree/attrCrud"
import formulaEditor from "@/components/code-dialog-page/formulaEditor"
import referConfigCrudDialog from "@/components/code-dialog-page/referConfigCrudDialog"
import referConfigFormDialog from "@/components/code-dialog-page/referConfigFormDialog"
import referConfigDialog from "@/components/code-dialog-page/referConfigDialog"
import referBtmTypeCrudDialog from "@/components/code-dialog-page/referBtmTypeCrudDialog"
import referSelectBtmAttrDialog from "@/components/code-dialog-page/referSelectBtmAttrDialog"
import advancedQuery from "@/components/advanced-query/advancedQuery"
@@ -90,8 +89,7 @@
Vue.component('classifyTreeform',classifyTreeform)
Vue.component('TemplatePro',TemplatePro)
Vue.component('formulaEditor',formulaEditor)
Vue.component('referConfigCrudDialog',referConfigCrudDialog)
Vue.component('referConfigFormDialog',referConfigFormDialog)
Vue.component('referConfigDialog',referConfigDialog)
Vue.component('advancedQuery',advancedQuery)
Vue.component('businessAdd',businessAdd)
Vue.component('attrCrud',attrCrud)
Source/UBCS-WEB/src/views/code/code.vue
@@ -767,8 +767,8 @@
      <formula-editor
        ref="formulaEditor"
        @updateFormulaContent="updateFormulaContent"
        :thisSceneTableData="formulaEditorParams.thisSceneTableData"
        :visible.sync="formulaEditorParams.formulaEditorSettingBox"
        :thisSceneTableData="formulaEditorParams.thisSceneTableData"
        :systemVariableTableData="formulaEditorParams.systemVariableTableData">
      </formula-editor>
@@ -807,18 +807,12 @@
        @echoReferBtmType="echoReferBtmType">
      </refer-btm-type-crud-dialog>
      <!-- ç¬¬äºŒå±‚对话框,自定义参照配置Form组件 -->
      <refer-config-form-dialog
        ref="referConfigFormDialog"
        @echoReferConfig="echoReferConfig">
      </refer-config-form-dialog>
      <!-- ç¬¬äºŒå±‚对话框,直接选择参照配置crud组件 -->
      <refer-config-crud-dialog
        ref="referConfigCrudDialog"
        @openReconfigInterFace="openReconfigInterFace"
        @echoReferConfig="echoReferConfig">
      </refer-config-crud-dialog>
      <!-- ç¬¬äºŒå±‚对话框,参照配置组件 -->
      <refer-config-dialog
        :display="referConfigVisble"
        @setReferConfigValue="setReferConfigValue"
        :referConfigOption="referConfigOption">
      </refer-config-dialog>
    </el-dialog>
@@ -852,7 +846,6 @@
  import parentClassifyParentOption from "@/const/code/parentClassifyParentOptionDialog";
  import fixedValueOption from "@/const/code/fixedValueMgrDialog";
  import {mapGetters} from "vuex";
  import func from "@/util/func";
  import {getByRoleUserList} from "@/api/system/user";
  export default {
@@ -963,7 +956,6 @@
          },
          classisyValueTreeOption: classisyValueTreeOption, //分类码段树相关配置项
          classifyValueTreeData: [],
          //currentSelectClsValueTreeData: '', //当前选中的分类码值树节点
          /* ä¸ºå±žæ€§é€‰å–值窗口显示打开控制变量 */
          isShowSelectAttrOption: false,
@@ -1112,6 +1104,10 @@
            //conditionMapParams: {},
          },
          //引用码段中参照配置组件相关参数
          referConfigOption: {},
          referConfigVisble: false,
        };
      },
      computed: {
@@ -1130,6 +1126,13 @@
      },
      mounted(){
        this.loadTotalEnum();
      },
      // è§£å†³è¡¨æ ¼é”™è¡Œé—®é¢˜
      activated () {
        this.$nextTick(() => {
          this.$refs.crud.doLayout();
          this.$refs.crudBasic.doLayout();
        })
      },
      methods: {
@@ -1182,7 +1185,7 @@
          this.form.getValueClass = content;
        },
        /* å¼•用码段参照配置,子组件填完参照配置之后内容回显时调用 */
        echoReferConfig(content){
        setReferConfigValue(content){
          // console.log(content.referTypeName);
          this.form.referBtmId = content.referType || '';
          this.form.referBtmName = content.referTypeName || content.referType;
@@ -2516,7 +2519,6 @@
        // æ“ä½œåŸºç¡€ç æ®µä¸­æœç´¢æ¸…空等按钮的显示/隐藏
        hideBasicTable(hideBoolean){
          this.$refs.crudBasic.option.refreshBtn = hideBoolean;
          this.$refs.crudBasic.option.columnBtn = hideBoolean;
          this.$refs.crudBasic.option.column[0].search = hideBoolean;
          this.$refs.crudBasic.option.column[1].search = hideBoolean;
          if(!hideBoolean){
@@ -2550,56 +2552,14 @@
            // è°ƒç”¨å­ç»„件刷新表格数据
            this.$refs[this.referBtmDialogParams.ref].referBtmOnLoad();
          }else if(condition === 'referConfig'){
            if(func.notEmpty(this.form.referConfig) || func.notEmpty(this.form.referBtmName)){
              this.openReconfigInterFace(this.form);
            }else{
              this.openTipsChooseOrCust();
            this.referConfigVisble = true;
            this.referConfigOption = {
              referBtmName: this.form.referBtmName,
              referBtmId: this.form.referBtmId,
              referConfig: this.form.referConfig || '',
            }
            this.$refs.referConfig.$el.querySelector('input').blur();
          }
        },
        // å½“前已存在编辑过的参照配置,所以直接打开参照配置界面
        openReconfigInterFace(preReferConfigForm){
          const form = preReferConfigForm;
          // ç¼–辑码段时referConfig可能会在为【参照引用的业务类型】选取值之后改变
          let referConfigValue =JSON.parse(form.referConfig);
          if(referConfigValue.referType != form.referBtmId){
            referConfigValue.referType = form.referBtmId || '';
            referConfigValue.referTypeName = form.referBtmName || form.referBtmId;
            this.form.referConfig = JSON.stringify(referConfigValue);
          }
          let data = {
            referTypeName: form.referBtmName,
            referType: form.referBtmId,
            referConfig: this.form.referConfig,
          }
          this.$refs.referConfigFormDialog.isShowReferConfigForm = true;
          this.$refs.referConfigFormDialog.initPageData(data);
        },
        // æ‰“开自定义参照配置或直接选择参照配置的提示框
        openTipsChooseOrCust(){
          this.$confirm('请选择参照配置的定义方式?','参照配置的方式', {
            distinguishCancelAndClose: true,
            closeOnClickModal: false,
            confirmButtonText: '自定义参照配置',
            cancelButtonText: '直接选择参照配置'
          })
          .then(() => {
            // æ‰“开自定参照配置对话框
            this.$refs.referConfigFormDialog.isShowReferConfigForm = true;
            // è¡¨æ ¼é”™è¡Œçš„问题
            this.$refs.referConfigFormDialog.onloadAttrData();
          })
          .catch(action => {
            if (action === "cancel") {
              // æ‰“开直接选择参照配置对话框
              this.$refs.referConfigCrudDialog.isShowReferConfigCrud = true;
              this.$refs.referConfigCrudDialog.referConfigOnload();
            }
            //console.log(action);
          });
          // è®©å‚照配置输入框失去焦点,否则该提示框无法被关闭
          this.$refs.referConfig.$el.querySelector('input').blur();
        },
        // ç‚¹å‡»è¾“入框的×号,清空输入框中的内容
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
@@ -148,10 +148,10 @@
    /**
     * ä½¿ç”¨è§„则的主键获取对应的码段内容
     * @param conditionMap è§„则的内容
     * @param ruleOid è§„则的内容
     * @return ç æ®µçš„内容
     */
    List<CodeBasicSecVO> listCodeBasicSecByRuleOid(Map<String,Object> conditionMap);
    List<CodeBasicSecVO> listCodeBasicSecByRuleOid(String ruleOid);
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -762,17 +763,18 @@
    /**
     * ä½¿ç”¨è§„则的主键获取对应的码段内容
     *
     * @param conditionMap è§„则的内容
     * @param ruleOid è§„则的内容
     * @return ç æ®µçš„内容
     */
    @Override
    public List<CodeBasicSecVO> listCodeBasicSecByRuleOid(Map<String,Object> conditionMap)throws ServiceException {
        if(Func.isBlank(conditionMap.getOrDefault("pkCodeRule","").toString())){
    public List<CodeBasicSecVO> listCodeBasicSecByRuleOid(String ruleOid)throws ServiceException {
        if(StringUtils.isBlank(ruleOid)){
            return new ArrayList<>();
        }
        QueryWrapper<CodeBasicSec> wrapper = UBCSCondition.getQueryWrapper(conditionMap, CodeBasicSec.class);
        wrapper.orderByAsc("orderNum");
        List<CodeBasicSec> secDOList = baseMapper.selectList(wrapper);//.selectByCondition(conditionMap, pageHelper);
        LambdaQueryWrapper<CodeBasicSec> wrapper = Wrappers.<CodeBasicSec>query().lambda()
            .eq(CodeBasicSec::getPkCodeRule, ruleOid)
            .orderByAsc(CodeBasicSec::getOrderNum);
        List<CodeBasicSec> secDOList = baseMapper.selectList(wrapper);//
        return codeBasicSecDO2VOs(secDOList,true);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -17,6 +17,7 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -498,12 +499,14 @@
     */
    @Override
    public R checkLikeCodeRule(String oid) throws VciBaseException {
        CodeRuleVO codeRuleVO = getObjectByOid(oid);
        // 1、去掉流水码段,计算出其他码段值长度,在已发布的规则中比对出长度一致的编码规则
        HashMap<String, Object> condtionMap = new HashMap<>();
        condtionMap.put("pkCodeRule_equal",codeRuleVO.getOid());
        condtionMap.put("secType_notequal", CodeSecTypeEnum.CODE_SERIAL_SEC);
        codeRuleVO.setSecVOList(codeBasicSecService.listCodeBasicSecByRuleOid(condtionMap));
        // 1、查询出当前要发布的规则
        CodeRuleVO codeRuleVO = getObjectHasSecByOid(oid);
        // 2、找出与当前发布的规则码段顺序一致的规则
        if(Func.isNotEmpty(codeRuleVO.getSecVOList())){
            String secType = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
        }
        // TODO å¾…完善
@@ -555,9 +558,7 @@
            //如果有lcstatus的类的话
            vo.setLcStatusText(CodeRuleLC.getTextByValue(vo.getLcStatus()));
            if (hasSec) {
                Map<String, Object> condtionMap = new HashMap<>();
                condtionMap.put("pkCodeRule",vo.getOid());
                List<CodeBasicSecVO> codeBasicSecVOS = codeBasicSecService.listCodeBasicSecByRuleOid(condtionMap);
                List<CodeBasicSecVO> codeBasicSecVOS = codeBasicSecService.listCodeBasicSecByRuleOid(vo.getOid());
                //查询码段
                vo.setSecVOList(codeBasicSecVOS);
            }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -963,13 +963,16 @@
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
        List<UIFormItemVO> itemVOS = new ArrayList<>();
        Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = templateVO.getAttributes().stream().
                filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup()));
        templateVO.getAttributes().forEach(attrVO -> {
            UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
            itemVOS.add(formItemVO);
        });
        Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = new HashMap<>();
        if (Func.isNotEmpty(templateVO.getAttributes())) {
            attrGroupMap = templateVO.getAttributes().stream().
                filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup()));
            templateVO.getAttributes().forEach(attrVO -> {
                UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
                itemVOS.add(formItemVO);
            });
        }
        //处理属性分组
        if (!CollectionUtils.isEmpty(attrGroupMap)) {
            //按照分组的属性排列,找到每一个分组的第一个属性
@@ -1440,26 +1443,32 @@
        }
        //先转换一下时间格式
        List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList());
        List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
                s -> StringUtils.isNotBlank(s.getCodeDateFormat()) &&
                        (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
        ).collect(Collectors.toList());
        //枚举的内容
        List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter(
                s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString()))
                        &&
                        (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
        ).collect(Collectors.toList());
        List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = new ArrayList<>();
        List<CodeClassifyTemplateAttrVO> enumAttrVOs = new ArrayList<>();
        if (Func.isNotEmpty(templateVO.getAttributes())) {
            dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
                s -> StringUtils.isNotBlank(s.getCodeDateFormat()) &&
                    (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
            ).collect(Collectors.toList());
            //枚举的内容
            enumAttrVOs = templateVO.getAttributes().stream().filter(
                s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString()))
                    &&
                    (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
            ).collect(Collectors.toList());
        }
        List<String> userIds = new ArrayList<>();
        dataMap.stream().forEach(data -> {
        List<CodeClassifyTemplateAttrVO> finalDateFormatAttrVOs = dateFormatAttrVOs;
        List<CodeClassifyTemplateAttrVO> finalEnumAttrVOs = enumAttrVOs;
        dataMap.stream().forEach(data -> {
            //处理时间
            if (!form) {
                //表单的时候只能用统一的时间格式
                wrapperDateFormat(dateFormatAttrVOs, data);
                wrapperDateFormat(finalDateFormatAttrVOs, data);
            }
            //处理枚举
            wrapperEnum(enumAttrVOs, data);
            wrapperEnum(finalEnumAttrVOs, data);
            String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
            String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, "");
            if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
@@ -1574,17 +1583,25 @@
        //因为参照不一定是在平台的属性池里面设置,所以我们得需要自行处理
        //参考VciQueryWrapper来处理
        //1. æ‰¾åˆ°æ‰€æœ‰çš„字段,
        Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
        List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
        Map<String, CodeClassifyTemplateAttrVO> attrVOMap = new HashMap<>();
        List<String> selectFieldList = new ArrayList<>();
        if(Func.isNotEmpty(templateVO.getAttributes())){
            attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
            selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
        }
        //所有的参照的字段
        Map<String/**属性字段**/, String> joinTableList = new ConcurrentHashMap<>();
        List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
                s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig())
        ).collect(Collectors.toList());
        List<CodeClassifyTemplateAttrVO> referAttrVOs = null;
        if (Func.isNotEmpty(templateVO.getAttributes())) {
            referAttrVOs = templateVO.getAttributes().stream().filter(
                s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig())
            ).collect(Collectors.toList());
        }
        Map<String/**参照的属性**/, String/**实际的字段**/> referFieldMap = new ConcurrentHashMap<>();
        if (!CollectionUtils.isEmpty(referAttrVOs)) {
            referAttrVOs.parallelStream().forEach(attrVO -> {
            List<String> finalSelectFieldList = selectFieldList;
            referAttrVOs.parallelStream().forEach(attrVO -> {
                UIFormReferVO referVO = null;
                if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
                    referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class);
@@ -1614,7 +1631,7 @@
                    showFieldInSource = textFields.get(0);
                }
                referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource);
                selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
                finalSelectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
            });
        }
        R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType);
@@ -1658,11 +1675,12 @@
                }
            });
            andCondtionMap.forEach((k, v) -> {
                andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap, btmType));
            Map<String, CodeClassifyTemplateAttrVO> finalAttrVOMap = attrVOMap;
            andCondtionMap.forEach((k, v) -> {
                andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType));
            });
            orConditionMap.forEach((k, v) -> {
                orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap, btmType));
                orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType));
            });
        }
        //组合起来
@@ -2858,38 +2876,43 @@
        List<UITableFieldVO> fieldVOList = new ArrayList<>();
        Map<String, String> comboxOrReferFieldMap = new HashMap<>();
        templateVO.getAttributes().forEach(attrVO -> {
            UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, forEdit);
            if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) {
                comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
            }
            if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) {
                comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
            }
            if (StringUtils.isNotBlank(tableFieldVO.getEdit())) {
                tableDefineVO.setHasEditor(true);
            }
            fieldVOList.add(tableFieldVO);
        });
        if (Func.isNotEmpty(templateVO.getAttributes())) {
            templateVO.getAttributes().forEach(attrVO -> {
                UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, forEdit);
                if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) {
                    comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
                }
                if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) {
                    comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
                }
                if (StringUtils.isNotBlank(tableFieldVO.getEdit())) {
                    tableDefineVO.setHasEditor(true);
                }
                fieldVOList.add(tableFieldVO);
            });
        }
        List<List<UITableFieldVO>> cols = new ArrayList<>();
        cols.add(fieldVOList);
        tableDefineVO.setCols(cols);
        Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t));
        //查询属性
        List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(queryAttrVOs)) {
            List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
            queryAttrVOs.stream().forEach(attrVO -> {
                String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
                attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT);
                if (fieldVOMap.containsKey(attrId)) {
                    queryFieldVOs.add(fieldVOMap.get(attrId));
                }
            });
            tableDefineVO.setQueryColumns(queryFieldVOs);
        }
        //高级属性
        List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList());
        List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = null;
        if (Func.isNotEmpty(templateVO.getAttributes())) {
            //查询属性
            List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList());
            if (!CollectionUtils.isEmpty(queryAttrVOs)) {
                List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
                queryAttrVOs.stream().forEach(attrVO -> {
                    String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
                    attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT);
                    if (fieldVOMap.containsKey(attrId)) {
                        queryFieldVOs.add(fieldVOMap.get(attrId));
                    }
                });
                tableDefineVO.setQueryColumns(queryFieldVOs);
            }
            //高级属性
            seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList());
        }
        if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) {
            List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
            seniorQueryAttrVOs.stream().forEach(attrVO -> {