weidy
2023-06-09 75007678d3d1c03d8a6b99bd84332e7ad91f38fd
Merge remote-tracking branch 'origin/master'
已修改57个文件
已添加5个文件
2685 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/GetItem.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/integration/application.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/integration/sysInfo.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/revisionRule.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/template/templateAttr.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Crud/Crud.vue 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Master/MasterTree.vue 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/TemplatePro.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/attrCrud.vue 476 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/MasterData/items.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/integration/applicationForm.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/integration/systemInfo.vue 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/LinkType.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Version.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Versionpackage.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/classifyTree.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/status.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeResembleRule.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateAttrMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeResembleRuleMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemServiceImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateAttrMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeResembleRule.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/MenuMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/GetItem.js
@@ -2,7 +2,7 @@
export const MasterTable =(params)=>{
  return request({
    url: 'api/ubcs-code/ubcs-code//mdmEngineController/getUIInfoByClassifyOid',
    url: 'api/ubcs-code/ubcs-code/mdmEngineController/getUIInfoByClassifyOid',
    method: 'get',
    params:{
      ...params
Source/UBCS-WEB/src/api/integration/application.js
@@ -7,4 +7,12 @@
      method: 'get',
      params: params
    })
  }
  }
  // ç”³é¢†å•状态
export const queryApplyStat = (params) => {
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/queryApplyState',
    method: 'get',
    params: params
  })
}
Source/UBCS-WEB/src/api/integration/sysInfo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
import request from '@/router/axios';
// é›†æˆç³»ç»Ÿä¿¡æ¯ç®¡ç†åˆ—表
export const getSysInfoList = (params) => {
    return request({
      url: '/api/ubcs-code/dockingManagement/gridSysIntBase',
      method: 'get',
      params: params
    })
  }
  // é›†æˆç³»ç»Ÿä¿¡æ¯ç®¡ç†æ–°å¢ž
export const sysInfoAdd = (params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/addSave',
    method: 'post',
    data: params
  })
}
 // é›†æˆç³»ç»Ÿä¿¡æ¯ç®¡ç†æ–°å¢ž
 export const sysInfoEdit = (params) => {
    return request({
      url: '/api/ubcs-code/dockingManagement/editSave',
      method: 'put',
      data: params
    })
  }
   // é›†æˆç³»ç»Ÿä¿¡æ¯ç®¡ç†æ–°å¢ž
export const sysInfoDel = (params) => {
    return request({
      url: '/api/ubcs-code/dockingManagement/deleteDataById',
      method: 'delete',
      params: params
    })
  }
Source/UBCS-WEB/src/api/omd/revisionRule.js
@@ -1,6 +1,10 @@
import request from '@/router/axios';
export const getPage = (current,size,params) => {
var model = '/api/ubcs-omd';
var controller = '/revision-rule';
export const getPage = (current, size, params) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/page',
        method: 'get',
@@ -62,7 +66,7 @@
    })
}
export const refList = (currentPage,pageSize,params) => {
export const refList = (currentPage, pageSize, params) => {
    return request({
        url: '/api/ubcs-omd/revision-rule/ref',
        method: 'get',
@@ -72,4 +76,14 @@
            pageSize
        }
    })
}
export const getAppayRange = (id) => {
    return request({
        url: model + controller + '/get-apply-range',
        method: 'get',
        params: {
            id
        }
    })
}
Source/UBCS-WEB/src/api/template/templateAttr.js
@@ -138,3 +138,13 @@
    data:data
  })
}
//从业务类型中选择数据
export const  AttrByBtm = (params) =>{
  return request({
    url:'/api/ubcs-code/codeClassifyTempAttrController/codeClassifyTemplateAttrByBtm',
    method: 'get',
    params:{
      ...params
    }
  })
}
Source/UBCS-WEB/src/components/Crud/Crud.vue
@@ -6,11 +6,10 @@
          <FormTemplateDialog
            :visible.sync="addvisible"
            :type="add"
            :templateOid="this.templateOids"
            :codeClassifyOid="this.codeClassifyOids"
            :templateOid="this.templateOid"
            :codeClassifyOid="this.codeClassifyOid"
            :codeRuleOid="this.codeRuleOid"
            :disabledProp="disabledProp"
            :rowOid="rowOid"
          >
          </FormTemplateDialog></el-button>
        <el-button size="small" type="primary" plain @click="editvisible=true">编辑
@@ -18,7 +17,7 @@
            :visible.sync="editvisible"
            :type="edit"
            :templateOid="this.templateOids"
            :codeClassifyOid="this.codeClassifyOids"
            :codeClassifyOid="this.codeClassifyOid"
            :codeRuleOid="this.codeRuleOid"
            :disabledProp="disabledProp"
            :rowOid="rowOid"
@@ -32,8 +31,9 @@
        <el-button size="small" type="primary" plain>发布</el-button>
        <el-button size="small" type="primary" plain>数据更改</el-button>
        <el-button size="small" type="primary" plain>回收</el-button>
        <el-button size="small" type="primary" plain>导出
          <transfer filter-placeholder="请输入拼音全拼或者拼音缩写" ></transfer>
        <el-button size="small" type="primary" plain @click="openD">导出
          <integration-transfer :visible.sync="dialogPush" :data="transferData"
                                :props="transferProps" @save="handelTransferSave"></integration-transfer>
        </el-button>
        <el-button size="small" type="primary" plain @click="findvisible=true">查询
        <advancedQuery  :visible.sync="findvisible" :options="this.options"></advancedQuery>
@@ -88,7 +88,13 @@
</template>
<script>
import {MasterTable, TableData} from "@/api/GetItem";
import {listCodeAttributeByClassId} from '@/api/integration/integration.js'
import integrationTransfer from '@/views/integration/integrationTransfer'
import pinyin from "js-pinyin";
export default {
  components: {
    integrationTransfer
  },
  name: "Crud.vue",
  props:{
    page:{
@@ -108,17 +114,28 @@
    tableDataArray:{
      type:Array,
      default:[]
    },
    total:{
      type:String,
      default:""
    },
    tableHeadDataFateher:{
      type:Array,
      default:[]
    }
  },
  data() {
    return {
      transferData:[],
      transferProps: {
        key: 'oid',
        label: 'name'
      },
      templateOid:"",
      addvisible:false,
      editvisible:false,
      findvisible:false,
      templateOids: "78B8C7C5-A042-0B96-FE6D-65421451782A",
      codeClassifyOids: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
      codeRuleOid: "B95872A6-9CEA-D490-8F1B-9D26548CAF96",
      dialogPush:false,
      rowOid: '6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9',
      disabledProp: ["id"],
      editingRow:null,
@@ -140,15 +157,16 @@
      },
      tableData:[],
      tableHeadData:[],
      tableHeadDataFateher:[],
      items:{},
      aaa:""
      seniorQueryColumns:[]
    }
  },
  computed:{
  },
  created() {
    this.CrudHeaderRend();
    this.$emit('tableData',this.tableData)
    // this.CrudHeaderRend();
    // this.tableHeadHandle()
  },
  mounted() {
@@ -167,11 +185,33 @@
    tableDataArray:{
      handler(newval,oldval){
        this.tableData=newval;
        this.CrudRend()
      //
      }
    },
    total:{
      handler(newval,oldval){
        this.page.total=newval;
      }
    },
    tableHeadData:{
      handler(newval,oldval){
        this.tableHeadDataFateher=newval
      }
    }
  },
  methods: {
    openD(){
      this.dialogPush=true;
      this.getListCodeByClassId()
    },
    async getListCodeByClassId() {
      this.transferData = []
      const response = await listCodeAttributeByClassId({ codeClassifyId: this.codeClassifyOid })
      if (response.status === 200) {
        const data = response.data.data
        this.transferData = data
      }
    },
    rend(){
      this.tableData=this.tableHeadData
    },
@@ -179,16 +219,21 @@
      this.page.pageSize=val
      this.$emit('pageSize',val)
      this.CrudRend()
      console.log(this.tableData)
    },
    handleCurrentChange(val){
      this.page.currentPage=val
      this.$emit('currentPage',val)
      this.CrudRend()
      console.log(val)
      console.log(this.tableData)
    },
    // ç›‘听单元格点击事件并存储正在编辑的行
    handleCellClick(row, column) {
      this.editingRow = row;
      this.editShow = column.property;
      console.log(row)
      this.rowOid=row.oid
    },
    //删除
    enumDeleteRow(row) {
@@ -203,6 +248,21 @@
      this.$nextTick(() => {
        this.$refs.crud.doLayout();
      });
    },
    tableHeadHandle(){
      this.options=this.tableHeadDataFateher.tableDefineVO.seniorQueryColumns
      this.List = this.tableHeadDataFateher.tableDefineVO.cols[0];
      this.List.forEach(item => {
        let columnItem = {
          label: item.title,
          prop: item.field,
          type: this.columnType[item.type],
          sortable: item.sort,
          width: item.minWidth
        };
        this.option.column.push(columnItem);
        this.option.column=this.tableHeadData;
      })
    },
    //表格头渲染
    CrudHeaderRend() {
@@ -225,6 +285,7 @@
            this.option.column=this.tableHeadData;
            this.templateOid=res.data.tableDefineVO.oid
            this.$emit('templateOid',this.templateOid)
            console.log(this.templateOid)
          })
        })
      }
@@ -235,7 +296,7 @@
         templateOid: this.templateOid,
         codeClassifyOid: this.codeClassifyOid,
         page: this.page.currentPage,
         limit:this.page.pageSize,
         limit: this.page.pageSize,
       }).then(res => {
         this.page.total = res.data.total;
         this.data = res.data.data;
Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
@@ -564,9 +564,6 @@
            placeholder: formItem.inputTip,
            options:formItem.referConfig
          }:{},
          change: () => {
            this.changeFun(formItem.displayExtension, formItem.prop);
          },
          span: formItem.type === "textarea" ? 24 : this.trendsSpan,
          rules: [
            {
@@ -597,7 +594,9 @@
      this.$set(this.option, "column", column);
      this.$set(this.option, "group", group);
      this.formIndex++;
      this.loading = false;
      if (this.type === 'add') {
        this.loading = false;
      }
      this.geDictData(dictKeys);
      this.getFormDetail();
    },
@@ -646,11 +645,6 @@
        return val;
      }
    },
    changeFun(displayExtension, prop) {
      // executeCode({displayExtension, data: this.form}).then(res => {
      //   this.form[prop] = res.data.data
      // })
    },
    // èŽ·å–swich和已拿到的下拉数据
    getDataList(type, dicData) {
      if (type === "truefalse") {
@@ -692,8 +686,7 @@
    // è¡¨å•校验
    validate() {
      return new Promise((resolve) => {
        this.$refs.form.validate((valid, done, msg) => {
          console.error(msg, valid);
        this.$refs.form.validate((valid, done) => {
          if (valid) {
            done();
            resolve(true);
@@ -706,11 +699,10 @@
    // èŽ·å–è¡¨å•è¯¦æƒ…æ•°æ®
    getFormDetail() {
      if (this.type === 'add') return
      if (this.type === "add") return;
      getFormDetail({ templateOid: this.templateOid, oid: '213D13D5-76D3-6B42-0932-705693F6B6E4' }).then(
      getFormDetail({ templateOid: this.templateOid, oid: this.rowOid }).then(
        (res) => {
          this.form = Object.assign(this.form, res.obj)
          console.log(res, "res");
          this.form = Object.assign(this.form, res.data.data[0])
          this.loading = false;
        }
      );
    },
Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue
@@ -144,7 +144,7 @@
    openFormTemlpate(row) {
      this.resembleTemplateOid = row.codetemplateoid
      this.resembleCodeClassifyOid = row.codeClassifyOid
      this.rowOid = row.iod
      this.rowOid = row.oid
      this.formTemplateVisible = true;
    },
    getDefaultValueAndFormValues(form) {
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -1,6 +1,7 @@
<template>
  <el-dialog
    :visible.sync="dialogVisible"
    v-if="dialogVisible"
    v-dialogDrag
    top="0vh"
    :title="title"
Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -9,7 +9,7 @@
<script>
import {getTreeList} from "@/api/MasterData/master";
import {mapMutations, mapState} from "vuex";
import {TableData} from "@/api/GetItem";
import {TableData,MasterTable} from "@/api/GetItem";
export default {
  name: "MasterTree",
@@ -29,6 +29,8 @@
  },
  data(){
    return{
      tableHeadDataFateher:[],
      templateOids:"",
      tableDataArray:[],
      codeClassifyOid:"",
      coderuleoid:"",
@@ -80,6 +82,7 @@
        this.coderuleoid=res.data[0].attributes.coderuleoid;
        this.$emit("codeClassifyOid", this.codeClassifyOid )
        this.$emit("coderuleoid", this.coderuleoid )
        this.TableHeadRends()
      }).catch(res=>{
        console.log(res)
      })
@@ -97,23 +100,52 @@
        }
      }
    },
    //树点击事件
    nodeClick(data){
      this.nodeClickList = data;
      console.log(this.currentPage,this.pageSize)
    //表格刷新
    TableRend(){
      TableData({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
        page: this.pageSize,
        limit:this.currentPage,
        templateOid: this.templateOids,
        codeClassifyOid: this.nodeClickList.oid,
        page: this.currentPage,
        limit: this.pageSize,
      }).then(res => {
        console.log(res)
        // this.page.total = res.data.total;
        // this.data = res.data.data;
        this.tableDataArray=res.data.data;
        this.$emit('tableDataArray',this.tableDataArray)
        console.log(this.tableDataArray)
        this.$emit('total',res.data.total)
      })
    },
    //表格头部
    TableHeadRend(){
      MasterTable({
        codeClassifyOid:this.nodeClickList.oid,
        functionId: 5,
      }).then(res=>{
        this.tableHeadDataFateher=res.data;
        this.templateOids=res.data.tableDefineVO.oid
        this.$emit("tableHeadDataFateher",this.tableHeadDataFateher)
        console.log("123",res)
      })
    },
    TableHeadRends(){
      MasterTable({
        codeClassifyOid:this.codeClassifyOid,
        functionId: 5,
      }).then(res=>{
        this.tableHeadDataFateher=res.data;
        this.templateOids=res.data.tableDefineVO.oid
        this.$emit("tableHeadDataFateher",this.tableHeadDataFateher)
        console.log("123",res)
      })
    },
    //树点击事件
    nodeClick(data){
      this.nodeClickList = data;
       this.TableHeadRend()
      this.TableRend()
      console.log('code',this.nodeClickList.oid)
      console.log('teoid',this.templateOids)
      console.log()
    }
  }
}
Source/UBCS-WEB/src/components/Tree/TemplatePro.vue
@@ -2,7 +2,7 @@
  <basic-container>
    <avue-tabs :option="Taboption" @change="handleChange"></avue-tabs>
    <span v-if="type.prop==='tab1'">
      <attrCrud :ProData="ProData"></attrCrud>
      <attrCrud :ProData="ProData" :crudOid="crudOid" :crudArray="crudArray" :Formlist="Formlist"></attrCrud>
    </span>
    <span v-else-if="type.prop==='tab2'">模板流程</span>
    <span v-else-if="type.prop==='tab3'">模板阶段</span>
@@ -13,7 +13,7 @@
<script>
export default {
  name: "TemplatePro.vue",
  props: ['ProData'],
  props: ['ProData','crudOid','crudArray','Formlist'],
  data: function () {
    return {
      type: {},
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -1,10 +1,26 @@
<template>
  <avue-crud :data="ProData" :option="option" @sort-change="sortChange" @row-update="addUpdate"
             @cell-click="handleRowClick">
             @cell-click="handleRowClick" @select="selectHandle">
    <template slot="menuLeft">
      <el-button v-if="attrEditVisible == false" size="small" type="primary" @click="addVisible=true">+ æ·»åŠ  {{msg}}</el-button>
      <el-button v-if="attrEditVisible == false" size="small" type="primary" @click="busineHandle">+ æ·»åŠ  {{msg}}</el-button>
      <el-dialog :visible.sync="addVisible" append-to-body title="从业务类型中选择属性">
        <avue-crud :data="businessData" :option="businessOption"></avue-crud>
        <avue-crud :data="businessData" :option="businessOption">
          <template slot="menuLeft">
            <div style="display: flex;">
              <el-select>
                <el-option>属性英文名称</el-option>
                <el-option>属性中文名称</el-option>
              </el-select>
              <el-input style="width: 300px;margin-left: 20px"></el-input>
              <el-button size="small" style="margin-left: 10px">查询</el-button>
            </div>
          </template>
        </avue-crud>
       <div style="display: flex;justify-content: flex-end;margin-top: 15px">
         <el-button size="small" type="primary">保存</el-button>
         <el-button size="small" type="primary">取消</el-button>
       </div>
      </el-dialog>
    </template>
    <!--        å…¨å±ç¼–辑-->
@@ -14,6 +30,12 @@
      <el-dialog :visible.sync="attrEditVisible" append-to-body fullscreen="true">
        <attrCrud></attrCrud>
      </el-dialog>
    </template>
<!--    ç»„合规则-->
    <template slot="menuLeft">
      <el-button size="small" @click="isShowformulaEdit=true">组合规则</el-button>
        <formula-editor :visible="isShowformulaEdit" :systemVariableTableData="systemVariableTableData" :thisSceneTableData="thisSceneTableData"></formula-editor>
    </template>
    <!--        éªŒè¯è§„则-->
    <template slot="menuLeft">
@@ -133,7 +155,7 @@
    </template>
    <!--    çº§è”属性-->
    <template slot="menuLeft">
      <el-button size="small" @click="CascadeVisible=true">级联属性</el-button>
      <el-button size="small" @click="CascadeHandle">级联属性</el-button>
      <el-dialog :visible.sync="CascadeVisible" append-to-body title="请选择级联属性">
        <avue-crud ref="crud" :data="CascadeData" :option="CascadeOption" @row-click="CascaderowClick">
          <template slot="radio"
@@ -168,31 +190,115 @@
    </template>
    <!--    åŒæ­¥åˆ°å…¶ä»–模板-->
    <template slot="menuLeft">
      <el-button size="small">同步到其他模板</el-button>
      <el-button size="small" style="margin-top: 10px">同步到其他模板</el-button>
    </template>
  </avue-crud>
</template>
<script>
import {AttrByBtm,gridCodeClassifyTemplateAttr} from '@/api/template/templateAttr'
export default {
  name: "attrCrud .vue",
  props: ['ProData'],
  props: ['ProData','crudOid','crudArray','Formlist'],
  data() {
    return {
      //表格单选数组
      CrudSelect:[],
      //表格oid
      CrudOid:"",
      //场景变量
      thisSceneTableData:[
        {
          formula: "lcstatus",
          desc: "状态",
        },
        {
          formula: "name",
          desc: "集团码",
        },
        {
          formula: "materialname",
          desc: "部门名称",
        },
        {
          formula: "parentcode",
          desc: "上级部门编号",
        },
        {
          formula: "parentname",
          desc: "上级部门名称",
        },
        {
          formula: "description",
          desc: "描述",
        },
      ],
      // ç³»ç»Ÿå˜é‡
      systemVariableTableData:[
        {
          formula: "#CURRENTUSER.OID#",
          desc: "当前用户的主键",
        },
        {
          formula:"#CURRENTUSER.ID",
          desc:"当前用户的账户"
        },
        {
          formula:"#CURRENTTIME#",
          desc:"当前时间"
        },
        {
          formula:"#CURRENTDATE#",
          desc:"当前日期"
        },
        {
          formula:"#CURRENTDATETIME#",
          desc:"当前日期时间"
        },
        {
          formula:"#CURRENTUSER_NAME#",
          desc:"当前用户的姓名"
        },
        {
          formula:"#CURRENTUSER.SECRETGRADE#",
          desc:"当前用户密级"
        },
        {
          formula:"#CURRENTUSER.IPSECRET#",
          desc:"当前用户的IP密级"
        },
        {
          formula:"#CURRENTUSER.BUSINESSUNIT#",
          desc:"当前用户所属业务单元"
        },
        {
          formula:"#CURRENTUSER.BUSINESSUNITNAME#",
          desc:"当前用户所属业务单元名称"
        },
        {
          formula:"#CURRENTUSER.GROUPOID#",
          desc:"当前用户的部门主键"
        },
        {
          formula:"#CURRENTUSER.GROUPNAME#",
          desc:"当前用户所属部门名称"
        },
        {
          formula:"#CURRENTUSER.EMAIL#",
          desc:"当前用户邮件地址"
        },
        {
          formula:"#CURRENTUSER.ROLENAME#",
          desc:"当前用户所属角色名称 "
        },
      ],
      CascadeVisible: false,
      attrEditVisible: false,
      isShowformulaEdit:false,
      // çº§è”单选
      selectRow: '',
      // çº§è”data
      CascadeData: [{
        id: 1,
        name: '张三',
        attrIn: '测试一'
      }, {
        id: 2,
        name: '李四',
        attrIn: '测试二'
      }],
      CascadeData: [],
      // çº§è”option
      CascadeOption: {
        menu: false,
@@ -208,18 +314,19 @@
        },
          {
            label: '属性英文编号',
            prop: 'nid'
          }, {
            label: '性别',
            prop: 'id'
          },
          {
            label: '属性中文名称',
            prop: 'name'
          },
          {
            label: '属性分组',
            prop: 'attrIn'
            prop: 'attributeGroup'
          },
          {
            label: '类型',
            prop: 'type'
            prop: 'attributeDataTypeText'
          },
          {
            label: '列表宽度',
@@ -227,19 +334,63 @@
          },
          {
            label: '关键属性',
            prop: 'keyattrflag'
            prop: 'keyAttrFlag',
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: '查询属性',
            prop: 'queryattrflag'
            prop: 'queryAttrFlag',
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: '高级查询属性',
            prop: 'seniorqueryattrflag'
            prop: 'seniorQueryAttrFlag',
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: '相似查重属性',
            prop: 'samerepeatattrflag'
            prop: 'sameRepeatAttrFlag',
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: '一维码',
@@ -248,6 +399,170 @@
          {
            label: '二维码',
            prop: 'TwoDimensional'
          },
          {
            label: '必输',
            prop: 'requireFlag',
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: "表单显示",
            prop: "formDisplayFlag",
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: "列表显示",
            prop: "tableDisplayFlag",
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: "只读",
            prop: "readonlyFlag",
          },
          {
            label: "列表排序",
            prop: "sortAttrFlag",
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: "多行文本",
            prop: "textAreaFlag",
            type:'text',
            dicData:[
              {
                label:"是",
                value:'true'
              },
              {
                label:"否",
                value:'false'
              }
            ]
          },
          {
            label: "默认值",
            prop: "defaultValue",
          },
          {
            label: "前缀",
            prop: "prefixValue",
          },
          {
            label: "后缀",
            prop: "suffixValue",
          },
          {
            label: "组合规则",
            prop: "componentRule",
          },
          {
            label: "验证规则",
            prop: "verifyRule",
          },
          {
            label: "时间格式",
            prop: "codeDateFormat",
          },
          {
            label: "分类注入",
            prop: "classifyInvokeLevel",
          },
          {
            label: "枚举注入",
            prop: "enumString",
          },
          {
            label: "级联属性",
            prop: "parentCode",
          },
          {
            label: "参照配置",
            prop: "referConfig",
          },
          {
            label: "级联查询属性",
            prop: "parentQueryAttr",
          },
          {
            label: "选择库标识",
            prop: "libraryIdentification",
          },
          {
            label: "填写提示",
            prop: "explain",
          },
          {
            label: "表单显示样式",
            prop: "formDisplayStyle",
          },
          {
            label: "表格显示样式",
            prop: "tableDisplayStyle",
          },
          {
            label: "表单超链接",
            prop: "formHref",
          },
          {
            label: "表格超链接",
            prop: "tableHref",
          },
          {
            label: "表格显示js",
            prop: "tableDisplayJs",
          },
          {
            label: "长度",
            prop: "controlLength",
          },
          {
            label: "小数精度",
            prop: "precisionLength",
          },
          {
            label: "取值范围",
            prop: "valueArea",
          },
        ]
      },
@@ -359,90 +674,14 @@
          bds: "测试一",
          shiyong: "测试一"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        },
        {
          bds: "测试二",
          shiyong: "测试二"
        }
      ],
      // æ–°å¢žä¸šåŠ¡ç±»åž‹
      businessData: [
        {
          id: "测试一",
          name: "测试一",
          attributeLength: "测试一",
          attrDataType: "测试一"
        },
        {
          id: "测试二",
          name: "测试二",
          attributeLength: "测试二",
          attrDataType: "测试二"
        },
        {
          id: "测试三",
          name: "测试三",
          attributeLength: "测试三",
          attrDataType: "测试三",
        },
        {
          id: "测试三",
          name: "测试三",
          attributeLength: "测试三",
          attrDataType: "测试三",
        }
      ],
      businessData: [],
      businessOption: {
        index: true,
        border: true,
        addBtn: true,
        addBtn: false,
        menu:false,
        column: [
          {
            label: "属性英文名称",
@@ -522,6 +761,7 @@
        index: true,
        border: true,
        editBtn: false,
        selection:true,
        labelWidth: 110,
        cellBtn: true,
        cancelBtn: false,
@@ -756,6 +996,36 @@
    console.log(this.ProData)
  },
  methods: {
    // ä»Žä¸šåŠ¡ç±»åž‹ä¸­é€‰æ‹©æ•°æ®
    busineHandle(){
      if(this.crudArray.length<1){
        this.$message.error('请选择一条模板')
      }else {
        this.addVisible=true;
        AttrByBtm({'conditionMap[oid]': this.crudOid}).then(res=>{
          this.businessData=res.data.data;
          console.log(res.data)
        })
      }
    },
    // çº§è”属性
    CascadeHandle(){
      if(this.CrudSelect.length >0){
        this.CascadeVisible=true;
        gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid,
          'conditionMap[oid_notequal]':this.CrudOid
        }).then(res=>{
         this.CascadeData=res.data.data
        })
      }else {
        this.$message.warning('请选择一条模板属性')
      }
    },
    //表格单选
    selectHandle(selection,row){
      this.CrudOid=row.oid;
      this.CrudSelect=selection
    },
    addsHandler(){
    },
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -17,6 +17,7 @@
      option: {
        submitBtn:false,
        emptyBtn:false,
        column: [
          {
            label: '主题库/分类编号',
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
@@ -74,6 +74,7 @@
                          @row-del="CrudRowDel"
                          @row-update="CrudRowUpdata"
                          :before-close="beforeClose"
                          @select="selectHandle"
               >
            <template slot="menuLeft">
              <el-button plain size="small" type="primary" @click="FindFormVisible = true;">查询</el-button>
@@ -168,7 +169,7 @@
          </avue-crud>
          </basic-container>
          <templatePro :ProData="this.ProData"></templatePro>
          <templatePro :ProData="this.ProData" :crudOid="this.crudOid" :crudArray="this.crudArray" :Formlist="this.Formlist"></templatePro>
        </span>
      </basic-container>
    </el-main>
@@ -202,9 +203,44 @@
  //使用inject接收参数
  //Treeoption左侧树新增表单项 Treedata左侧树节点 é…ç½®é¡¹ crudTreeOption右侧表格配置项 crudTreeData右侧表格显示内容
  //Treeform右侧表单配置项
  inject: ['crudTreeOption', "crudTreeData"],
  inject: [, "crudTreeData"],
  data() {
    return {
      //表格option配置项
      crudTreeOption: {
        index: true,
        border: true,
        height:180,
        selection:true,
        addBtn:this.addFlag,
        column: [
          {
            label: "模板编号",
            prop: "id"
          },
          {
            label:"模板名称",
            prop:"name"
          },
          {
            label: "模板描述",
            prop:"description"
          },
          {
            label:"版本号",
            prop:"revisionSeq"
          },
          {
            label:"状态",
            prop:"lcStatusText"
          }
        ]
      },
      addFlag:false,
      // è¡¨æ ¼å½“前行id
      crudOid:"",
      //表格当前选择数组
      crudArray:[],
      //模板属性展示内容
      ProData: [],
      //回车键搜索绑定值
@@ -399,6 +435,11 @@
    this.getAttr();
  },
  methods: {
    //行单选事件
    selectHandle(selection,row){
      this.crudOid=row.oid
      this.crudArray=selection
    },
    //分类树数据处理
    getAttr() {
      getAtrrList().then(res => {
@@ -607,19 +648,20 @@
              return item.codeclassifyoid == this.nodeClickList.oid
            }
          })
          gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid}).then(res => {
            this.ProData = res.data.data
            console.log(this.ProData)
          }).catch(res => {
            this.$message.error(res)
          })
          if(this.Formlist.length >0){
            gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid}).then(res => {
              this.ProData = res.data.data;
              console.log(this.ProData)
            }).catch(res => {
              this.$message.error(res)
            })
          }
        }).catch(res => {
          console.log(res)
        })
        //  åŸºæœ¬ä¿¡æ¯è¡¨å•数据
        await getObjectByOid(this.nodeClickList.oid).then(res => {
          this.TreeList = res.data.data
          // eslint-disable-next-line no-const-assig
          this.TreeList = res.data.data;
        }).catch(res => {
          this.$message.error(res)
        })
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
@@ -312,9 +312,9 @@
                    :show-header="false"
                    style="width: 100%"
                  >
                    <el-table-column prop="formula" width="40">
                    <el-table-column prop="formula" width="120">
                    </el-table-column>
                    <el-table-column prop="desc" width="100"> </el-table-column>
                    <el-table-column prop="desc" width="200"> </el-table-column>
                  </el-table>
                </el-tab-pane>
                <el-tab-pane label="系统变量" name="second">
@@ -324,9 +324,9 @@
                    :show-header="false"
                    style="width: 100%"
                  >
                    <el-table-column prop="formula" width="150">
                    <el-table-column prop="formula" width="200">
                    </el-table-column>
                    <el-table-column prop="desc" width="150"> </el-table-column>
                    <el-table-column prop="desc" width="200"> </el-table-column>
                  </el-table>
                </el-tab-pane>
              </el-tabs>
@@ -338,7 +338,7 @@
  </el-dialog>
</template>
  <script>
export default {
  name: "formulaEditor",
@@ -675,14 +675,14 @@
      }
      //公式内容回显
      // è§¦å‘update:data将子组件值传递给父组件
      this.$emit('updateFormulaContent', this.formulaContent)
      this.isShowformulaEdit = false;
      this.$emit('updateFormulaContent', this.formulaContent)
      this.isShowformulaEdit = false;
    },
  },
};
</script>
<style scoped>
  .formula-box-card >>> .el-card__body {
@@ -690,7 +690,7 @@
    height: 85%;
    width: 100%;
  }
  .formula-editor-total {
    /* margin-top: 3px; */
    height: 100%;
@@ -718,7 +718,7 @@
    height: auto;
    justify-content: space-between;
    align-items: center;
    }
    }
  .formula-editor-btn-sm {
    width: 4.5vw;
@@ -732,4 +732,3 @@
  }
</style>
Source/UBCS-WEB/src/views/MasterData/items.vue
@@ -9,7 +9,8 @@
                       :currentPage="this.currentPage"
                       :templateOid="this.templateOid"
                       @tableDataArray="tableDataArrays"
                       @tableHeadDataFateher="tableHeadDatas"
                       @total="totals"
                        ></master-tree>
        </basic-container>
      </el-aside>
@@ -22,6 +23,8 @@
                 @currentPage="currentPages"
                 @templateOid="templateOids"
                 :tableDataArray="tableDataArray"
                 :total="this.total"
                 :tableHeadDataFateher="this.tableHeadDataFateher"
      ></TableCrud>
      </el-main>
    </el-container>
@@ -44,7 +47,9 @@
      codeClassifyOid:"",
      coderuleoid:"",
      templateOid:"",
      tableDataArray:[]
      tableDataArray:[],
      tableHeadDataFateher:[],
      total:""
    }
  },
  created() {
@@ -68,6 +73,12 @@
    },
    tableDataArrays(val){
      this.tableDataArray=val
    },
    totals(val){
      this.total=val
    },
    tableHeadDatas(val){
      this.tableHeadDataFateher=val
    }
  }
}
Source/UBCS-WEB/src/views/integration/applicationForm.vue
@@ -2,7 +2,8 @@
    <basic-container>
        <avue-crud :table-loading="loading" :data="data" :option="option" :search.sync="searchParam" :page.sync="page"
            ref="crud" @refresh-change="getDataList" @search-change="handleSearch" @search-reset="handleReset"
            @size-change="handleSizePage" @current-change="handleCurrentPage" @on-load="getDataList">
            @size-change="handleSizePage" @current-change="handleCurrentPage" @on-load="getDataList"
            @selection-change="selectionChange" @row-click="handleRowClick">
            <template slot="menuLeft">
                <el-button icon="el-icon-document" size="small" type="primary" @click="handleStatus">集团申请状态
                </el-button>
@@ -12,7 +13,7 @@
</template>
<script>
import { getList } from '@/api/integration/application.js'
import { getList, queryApplyStat } from '@/api/integration/application.js'
import { dateFormat } from '@/util/date.js'
export default {
    data() {
@@ -25,6 +26,7 @@
                total: 0
            },
            searchParam: {},
            stateParam: {},
            option: {
                height: "auto",
                index: true,
@@ -33,7 +35,8 @@
                columnBtn: false,
                searchMenuSpan: 8,
                highlightCurrentRow: true,
                menu:false,
                menu: false,
                selection: true,
                column: [
                    {
                        label: '申请单号',
@@ -77,9 +80,6 @@
                        prop: 'lastModifyTime',
                        type: 'datetime',
                        search: true,
                        formatter: () => {
                        }
                    }, {
                        label: '返回标识',
                        width: 100,
@@ -100,8 +100,20 @@
        }
    },
    methods: {
        handleStatus() {
        async handleStatus() {
            const { oids } = this.stateParam
            if (this.$utilFunc.isEmpty(oids)) {
                this.$message({
                    type: "error",
                    message: "请至少选择一条数据!"
                })
            } else {
                console.log(this.stateParam)
                const response = await queryApplyStat(this.stateParam)
                if (response.status === 200) {
                    console.log(response)
                }
            }
        },
        async getDataList() {
            this.loading = true
@@ -140,7 +152,19 @@
            this.page.currentPage = 1
            this.getDataList()
            done()
        }
        },
        selectionChange(list) {
            console.log(list)
            let newData = list.map(item => {
                const { dataOid } = item
                return dataOid
            })
            this.stateParam = { oids: newData.toString() }
            console.log(newData)
        },
        handleRowClick(row) {
            this.$refs.crud.toggleRowSelection(row, true)
        },
    }
}
</script>
Source/UBCS-WEB/src/views/integration/systemInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,224 @@
<template>
    <basic-container>
        <avue-crud ref="crud" :table-loading="loading" :data="data" :option="option" :page.sync="page" :search.sync="search"
            @on-load="getDataList" @row-save="handleSave" @row-del="handleDelete" @row-update="handleEdit"
            @refresh-change="handleRefresh" @size-change="handleSizePage" @current-change="handleCurrentPage"
            @selection-change="selectionChange" @row-click="handleRowClick">
            <template slot="menuLeft">
                <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">查 è¯¢
                </el-button>
                <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">删 é™¤
                </el-button>
            </template>
            <template slot="search" slot-scope="{row,size}">
                <el-select v-model="selectValue" size="small" @change="handleSelect">
                    <el-option v-for="item in selectOption" :key="item.value" :label="item.label" :value="item.value">
                    </el-option>
                </el-select>
                <el-input :placeholder="`请输入${selectValue === 'id' ? '系统编号' : '系统名称'}并按回车查询`" :size="size"
                    style="width:300px;margin-left: 10px;" v-model="search[selectValue]" clearable
                    @keyup.enter.native="handleEnter" @clear="handleClear"></el-input>
            </template>
        </avue-crud>
    </basic-container>
</template>
<script>
import { getSysInfoList, sysInfoAdd, sysInfoEdit, sysInfoDel } from '@/api/integration/sysInfo.js'
export default {
    data() {
        return {
            loading: false,
            page: {
                currentPage: 1,
                pageSize: 10,
                total: 0
            },
            selectOption: [{
                value: 'id',
                label: '系统编号'
            }, {
                value: 'name',
                label: '系统名称'
            }],
            selectValue: 'id',
            search: {},
            delIds: [],
            data: [],
            option: {
                height: "auto",
                border: true,
                align: 'center',
                menuAlign: 'center',
                index: true,
                searchMenuSpan: 8,
                searchBtn: false,
                emptyBtn: false,
                columnBtn: false,
                defaultSort: {
                    prop: 'id,name',
                    order: 'descending'
                },
                selection: true,
                column: [
                    {
                        label: '系统编号',
                        prop: 'id',
                        sortable: true,
                        rules: [{
                            required: true,
                            message: '系统编号不能为空',
                            trigger: 'blur'
                        }]
                    }, {
                        label: '系统名称',
                        prop: 'name',
                        sortable: true,
                        rules: [{
                            required: true,
                            message: '系统名称不能为空',
                            trigger: 'blur'
                        }]
                    },
                    {
                        label: '系统描述',
                        prop: 'description',
                        type: 'textarea'
                    }
                ]
            },
        }
    },
    methods: {
        // èŽ·å–åˆ—è¡¨
        async getDataList() {
            this.loading = true
            console.log(this.search)
            const { pageSize, currentPage } = this.page
            let param = { size: pageSize, current: currentPage }
            const response = await getSysInfoList({ ...param, ...this.search })
            if (response.status === 200) {
                console.log(response)
                this.loading = false
                const data = response.data.data
                this.data = data.records
                this.page.total = data.total
            } else this.loading = false
        },
        // æ–°å¢ž
        async handleSave(row, done, loading) {
            const response = await sysInfoAdd(row)
            if (response.status === 200) {
                loading()
                this.$message({
                    type: 'success',
                    message: '新增数据成功!'
                })
                done()
                this.$refs.crud.refreshTable()
                this.getDataList()
            }
        },
        // ç¼–辑
        async handleEdit(row, index, done, loading) {
            console.log(row)
            const { oid, id, name, description } = row
            const response = await sysInfoEdit({ oid, id, name, description })
            if (response.status === 200) {
                loading()
                this.$message({
                    type: 'success',
                    message: '修改数据成功!'
                })
                done()
                this.getDataList()
            }
        },
        // åˆ é™¤å•条
        handleDelete(row) {
            const { oid } = row
            this.deleteSysInfo({ oids: oid })
        },
        // å¤šæ¡æ•°æ®åˆ é™¤
        handleDeleteByIds() {
            const { oids } = this.delIds
            if (this.$utilFunc.isEmpty(oids)) {
                this.$message({
                    type: "error",
                    message: "请至少选择一条数据!"
                })
            } else {
                this.deleteSysInfo(this.delIds)
            }
        },
        // åˆ é™¤æŽ¥å£
        deleteSysInfo(param) {
            this.$confirm('是否确定删除选择的集成系统?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(async () => {
                const response = await sysInfoDel(param)
                if (response.status === 200) {
                    console.log(response)
                    this.$message({
                        type: 'success',
                        message: '删除成功!'
                    });
                    this.getDataList()
                }
            })
        },
        // é€‰æ‹©æ¡†å†…容选择后
        handleSelect(event) {
            this.selectValue = event
            if (this.selectValue === 'id') {
                this.search['name'] = ''
                delete this.search['name']
            } else {
                this.search['id'] = ''
                delete this.search['id']
            }
        },
        // enter搜索
        handleEnter() {
            if (this.search[this.selectValue] === '') return
            else this.getDataList()
        },
        // è¾“入框清空
        handleClear() {
            this.search = {}
            this.getDataList()
        },
        // åˆ·æ–°æŒ‰é’®
        handleRefresh() {
            this.getDataList()
        },
        handleSizePage(event) {
            this.page.pageSize = event
        },
        handleCurrentPage(event) {
            this.page.currentPage = event
        },
        // ç‚¹å‡»é€‰æ‹©
        handleRowClick(row) {
            this.$refs.crud.toggleRowSelection(row, true)
        },
        // å¤šé€‰
        selectionChange(list) {
            console.log(list)
            let newData = list.map(item => {
                const { oid } = item
                return oid
            })
            this.delIds = { oids: newData.toString() }
            console.log(this.delIds)
        },
    }
}
</script>
<style lang="scss" scoped>
::v-deep(.avue-crud .el-select) {
    width: 100px !important;
}
</style>
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -258,10 +258,7 @@
            }
          ]
        },
        data: [{
          tableName: '1',
          description: '2'
        }]
        data: [],
      }
    }
  },
@@ -338,7 +335,8 @@
      this.ifRefreshBtmAddRefresh();
    },
    businessEdit(){
      this.$refs.btmAdd.btmType = this.obj;
      var json = JSON.stringify(this.obj);
      this.$refs.btmAdd.btmType = JSON.parse(json);
      this.$refs.btmAdd.showSubmitDialog = true;
      this.ifRefreshBtmAddRefresh();
    },
Source/UBCS-WEB/src/views/modeling/LinkType.vue
@@ -156,7 +156,9 @@
    data() {
        return {
            addOption: {
                linkType: {},
                linkType: {
                    attributes:[]
                },
            },
            domain: null,
            domainOptions: [],
@@ -240,13 +242,20 @@
        },
        // æ·»åŠ æŒ‰é’®ç‚¹å‡»äº‹ä»¶
        linkTypeAdd() {
            this.$refs.linkAdd.linkType = {};
            this.$refs.linkAdd.showSubmitDialog = true;
        },
        // ç¼–辑按钮点击事件
        linkTypeEdit() {
            this.addOption.linkType = this.obj;
            var linktype = this.obj;
            linktype.fromBtmValues = this.obj.fromBtmTypes;
            linktype.toBtmValues = this.obj.toBtmTypes;
            linktype.attributes = this.obj.attributes;
            var json = JSON.stringify(linktype);
            this.addOption.linkType = JSON.parse(json);
            this.$refs.linkAdd.linkType = this.addOption.linkType;
            this.$refs.linkAdd.showSubmitDialog = true;
            console.log(this.obj);
        },
        // ä»Žå·²æœ‰ä¸­èŽ·å–æŒ‰é’®ç‚¹å‡»äº‹ä»¶
        selectFromTable() {
Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue
@@ -20,7 +20,7 @@
            </el-form-item>
            <el-form-item label="From端类型" label-width="100px">
                <!-- from端业务类型选择 -->
                <el-select v-model="fromBtmValues" :value="fromBtmTypes" value-key="oid" placeholder="请选择From端类型" filterable multiple collapse-tags @change="fromSelectChange">
                <el-select v-model="linkType.fromBtmValues" :value="linkType.fromBtmTypes" value-key="oid" placeholder="请选择From端类型" filterable multiple collapse-tags @change="fromSelectChange">
                    <el-option-group v-for="domain in domainList" :key="domain.id" :label="domain.name">
                        <el-option v-for="item in domain.childList" :key="item.oid" :label="item.id + item.name"
                            :value="item">
@@ -30,7 +30,7 @@
            </el-form-item>
            <el-form-item label="To端类型" label-width="100px">
                <!-- to端业务类型选择 -->
                <el-select v-model="toBtmValues" :value="toBtmTypes" value-key="oid" placeholder="请选择To端类型" filterable multiple collapse-tags @change="toSelectChange">
                <el-select v-model="linkType.toBtmValues" :value="linkType.toBtmTypes" value-key="oid" placeholder="请选择To端类型" filterable multiple collapse-tags @change="toSelectChange">
                    <el-option-group v-for="domain in domainList" :key="domain.id" :label="domain.name">
                        <el-option v-for="item in domain.childList" :key="item.oid" :label="item.id + item.name"
                            :value="item">
@@ -331,6 +331,7 @@
            row.$cellEdit = false;
        },
        fromSelectChange(dataList){
            console.log(dataList);
            this.linkType.fromBtmTypes = [];
            var fromBtmName = "";
            var fromBtmType = "";
@@ -341,6 +342,7 @@
            })
            this.linkType.fromBtmTypeName = fromBtmName;
            this.linkType.fromBtmType = fromBtmType;
            console.log(this.linkType);
        },
        toSelectChange(dataList){
            console.log(dataList);
Source/UBCS-WEB/src/views/modeling/Version.vue
@@ -11,36 +11,41 @@
               @row-del="rowDel"
               @refresh-change="refreshChange"
               @search-reset="searchChange"
               @search-change="searchChange">
               @search-change="searchChange"
               @row-click="rowClick">
      <template slot="menuLeft">
        <el-tooltip class="item" effect="dark" content="查找版本规则使用范围" placement="top">
          <el-button size="small"
                     plain
                     type="primary"
                     icon="el-icon-zoom-in"
                     @click="handleSearch">查看使用范围
                     @click="applyRangeSearch">查看使用范围
          </el-button>
        </el-tooltip>
      </template>>
      </template>
      <template slot="radio"
                  slot-scope="{row}">
                      <el-radio v-model="selectRow"
                          :label="row.$index">&nbsp;
                      </el-radio>
                </template>
    </avue-crud>
    <el-dialog title="查看使用范围"
               append-to-body
               :visible.sync="packageSearchBox"
               width="1200px">
      <versionpackage></versionpackage>
    </el-dialog>
    <versionpackage :rangeData="applyRangeData" ref="applyRange"></versionpackage>
  </basic-container>
</template>
<script>
import { getPage,add,update,remove } from '../../api/omd/revisionRule';
import { getPage,add,update,remove,getAppayRange } from '../../api/omd/revisionRule';
export default {
  name: "Version",
  data(){
    return {
      //查看使用范围
      packageSearchBox:false,
      // ç‚¹å‡»æ•°æ®
      selectRow: '',
      selectRowData: {},
      //分页数据
      page: {
        pageSize: 10,
@@ -56,7 +61,14 @@
        border: true,
        index: true,
        searchMenuSpan:5,
        highlightCurrentRow: true,
        stripe:true,
        column:[
          {
            label: '',
            prop: 'radio',
            width: 120
          },
          {
            label:'英文名称',
            prop: 'id'
@@ -92,12 +104,31 @@
            type:"textarea"
          }
        ]
      }
      },
      applyRangeData: []
    }
  },
  methods:{
    handleSearch(){
      this.packageSearchBox=true
    // è¡Œç‚¹å‡»
    rowClick(row){
      this.selectRow = row.$index;
      this.selectRowData = row;
    },
    // æŸ¥çœ‹åº”用范围
    applyRangeSearch(){
      if (!this.selectRow && this.selectRow != 0){
        console.log(this.selectRow);
          this.$message({
            type:"warning",
            message: "请先选择属性"
          })
        }
      getAppayRange(this.selectRowData.id).then(res => {
         this.applyRangeData = res.data.data;
         this.$refs.applyRange.rangeData = this.applyRangeData;
         this.$refs.applyRange.showDialog = true;
      })
      // this.packageSearchBox=true
    },
    getList() {
      this.loading = true;
Source/UBCS-WEB/src/views/modeling/Versionpackage.vue
@@ -1,103 +1,69 @@
<template>
  <basic-container>
    <avue-crud ref="crud"
               v-model="form"
               :data="data"
               :option="option"
               @on-load="getList"
               @refresh-change="refreshChange"
               @search-change="searchChange"
    >
    </avue-crud>
  </basic-container>
  <el-dialog title="查看应用范围" :visible.sync="showDialog" append-to-body @close="closeDialog" width="65%"
    style="height: 115vh;">
    <basic-container>
      <avue-crud ref="crud" :data="rangeData" :option="option">
      </avue-crud>
    </basic-container>
  </el-dialog>
</template>
<script>
export default {
  name: "Versionpackage.vue",
  data(){
    return {
  props: {
    rangeData: {
      type: Array
    },
      data:[
        {
          name:"测试1",
          source:"测试1",
          shows:"测试1"
        },
        {
          name:"测试2",
          source:"测试2",
          shows:"测试2"
        },
        {
          name:"测试3",
          source:"测试3",
          shows:"测试3"
        },
        {
          name:"测试4",
          source:"测试4",
          shows:"测试4"
        },
      ],
      form:{},
      option:{
        height:300,
        headerAlign:'center',
  },
  data() {
    return {
      showDialog: false,
      option: {
        height: 300,
        headerAlign: 'center',
        align: 'center',
        border: true,
        menu: false,
        index: true,
        searchMenuSpan:6,
        addBtn:false,
        indexFixed:false,
        menuFixed:false,
        column:[
          {
            label:"名称",
            prop:"name",
          },
          {
            label:"来源",
            prop:"source",
            search:true
          },
          {
            label:"说明",
            prop:"shows",
          },
        addBtn: false,
        indexFixed: false,
        menuFixed: false,
        header: false,
        highlightCurrentRow: true,
        column: [{
          label: '英文名称',
          prop: 'id'
        },
        {
          label: '中文名称',
          prop: 'name',
        },
        {
          label: '所属领域',
          prop: 'domainText',
        },{
          label: '数据表名',
          prop: 'tableName',
          width: 200
        },
        {
          label: '说明',
          prop: 'descirption',
        },
        ]
      }
    }
  },
  methods:{
    // getList () {
    //   this.loading = true;
    //   const data = Object.assign({
    //     pageNum: this.page.currentPage,
    //     pageSize: this.page.pageSize,
    //   }, this.params)
    //   this.data = [];
    //   getList(data).then(res => {
    //     const data = res.data.data
    //     this.loading = false;
    //     this.page.total = data.total;
    //     const result = data.list;
    //     this.data = result;
    //   })
    // },
    //搜索
    searchChange(params, done) {
      if (done) done();
      this.params = params;
      this.page.currentPage = 1;
      this.getList();
      this.$message.success('搜索成功')
  methods: {
    closeDialog() {
      this.rangeData = [];
      this.showDialog = false;
    },
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/views/modeling/classifyTree.vue
@@ -1,6 +1,5 @@
<template>
  <classifyTrees :crudData="crudTreeData" :crudoption="crudTreeOption" :data="Treedata"
                 :option="Treeoption"
  <classifyTrees :crudData="crudTreeData"
  ></classifyTrees>
</template>
@@ -12,33 +11,6 @@
  //父传子有问题,暂时没解决,用provide代替父传子,子传父还是用$emit传递,注意!!!其他组件不能使用同样的类名否则会报错。
  provide() {
    return {
      crudTreeOption: {
        index: true,
        border: true,
        height:180,
        column: [
          {
            label: "模板编号",
            prop: "id"
          },
          {
            label:"模板名称",
            prop:"name"
          },
          {
            label: "模板描述",
            prop:"description"
          },
          {
            label:"版本号",
            prop:"revisionSeq"
          },
          {
            label:"状态",
            prop:"lcStatusText"
          }
        ]
      },
      crudTreeData: this.crudTreeData,
    }
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -2,101 +2,90 @@
  <el-container>
    <el-main>
      <basic-container>
        <avue-crud v-model="form"
          ref="crud"
          :option="option"
          :data="data"
          @on-load="onLoad"
          :page.sync="page"
          @refresh-change="refreshChange"
          @row-click="rowClick">
               <template slot="radio"
                  slot-scope="{row}">
                      <el-radio v-model="selectRow"
                          :label="row.$index">&nbsp;
                      </el-radio>
                </template>
          <template slot="menu">
             <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave">编辑</el-button>
             <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave">删除</el-button>
        <avue-crud v-model="form" ref="crud" :option="option" :data="data" @on-load="onLoad" :page.sync="page"
          @refresh-change="refreshChange" @row-click="rowClick">
          <template slot="radio" slot-scope="{row}">
            <el-radio v-model="selectRow" :label="row.$index">&nbsp;
            </el-radio>
          </template>
         <template slot="menuLeft">
            <el-button size="small"
              type="primary"
              icon="el-icon-plus"
              @click="addSave">新&nbsp;&nbsp;增
          <template slot="menu">
            <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave">编辑</el-button>
            <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave">删除</el-button>
          </template>
          <template slot="menuLeft">
            <el-button size="small" type="primary" icon="el-icon-plus" @click="addSave">新&nbsp;&nbsp;增
            </el-button>
            <el-button size="small"
                       plain
                       type="primary"
                       icon="el-icon-zoom-in"
                       @click="applyRangeOpen">查看使用范围
            <el-button size="small" plain type="primary" icon="el-icon-zoom-in" @click="applyRangeOpen">查看使用范围
            </el-button>
          </template>
          <template slot="typeValue" slot-scope="{row}">
            <el-tag>{{ row.typeValue }}</el-tag>
          </template>
        </avue-crud>
        <el-dialog :visible.sync="applyRange.display" append-to-body :title="applyRange.title" width="600px"
        <!-- <el-dialog :visible.sync="applyRange.display" append-to-body :title="applyRange.title" width="600px"
        @close="applyRangeClose">
            <avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable"
            ></avue-crud>
        </el-dialog>
        </el-dialog> -->
        <Versionpackage :rangeData="applyRangeData" ref="applyRange"></Versionpackage>
      </basic-container>
    </el-main>
    <el-aside>
      <basic-container class="itemForm">
            <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项">
              <el-descriptions-item>
                <template slot="label">
                  å±žæ€§ç¼–号
                </template>
                {{ itemForm.itemData.id }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å±žæ€§åç§°
                </template>
                {{ itemForm.itemData.name }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å±žæ€§ç±»åž‹
                </template>
                {{ itemForm.itemData.typeValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  æ ‡ç­¾
                </template>
                {{ itemForm.itemData.hashtag }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  é»˜è®¤å€¼
                </template>
                {{ itemForm.itemData.defaultValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å…è®¸ä¸ºç©º
                </template>
                {{ itemForm.itemData.nullable }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  é•¿åº¦
                </template>
                {{ itemForm.itemData.maxLength }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  æè¿°
                </template>
                {{ itemForm.itemData.description }}
              </el-descriptions-item>
            </el-descriptions>
            <div style="height:15px"></div>
        <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项">
          <el-descriptions-item>
            <template slot="label">
              å±žæ€§ç¼–号
            </template>
            {{ itemForm.itemData.id }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              å±žæ€§åç§°
            </template>
            {{ itemForm.itemData.name }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              å±žæ€§ç±»åž‹
            </template>
            {{ itemForm.itemData.typeValue }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              æ ‡ç­¾
            </template>
            {{ itemForm.itemData.hashtag }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              é»˜è®¤å€¼
            </template>
            {{ itemForm.itemData.defaultValue }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              å…è®¸ä¸ºç©º
            </template>
            {{ itemForm.itemData.nullable }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              é•¿åº¦
            </template>
            {{ itemForm.itemData.maxLength }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              æè¿°
            </template>
            {{ itemForm.itemData.description }}
          </el-descriptions-item>
        </el-descriptions>
        <div style="height:15px"></div>
        <el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions>
        <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
        <el-tab-pane label="参照" name="referTab">
          <el-tab-pane label="参照" name="referTab">
            <el-descriptions class="margin-top" :column="1" size="medium" border>
              <el-descriptions-item>
                <template slot="label">
@@ -148,173 +137,136 @@
  add,
  update, getPage, getApplyRange
} from "@/api/omd/OmdAttribute";
import Versionpackage from "./Versionpackage.vue";
export default {
  name: "original",
  data() {
    return {
    return {
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 100
      },
      selectRow: '',
      selectRow: "",
      data: [],
      form:{},
      form: {},
      attribute: {
        nullable: true
      },
      applyRangeData: [],
      option: {
        height: "550px",
        headerAlign: 'center',
        headerAlign: "center",
        border: true,
        index: true,
        rowKey: 'id',
        rowKey: "id",
        tabs: true,
        stripe:true,
        stripe: true,
        indexFixed: false,
        menuWidth: 150,
        highlightCurrentRow: true,
        addBtn:false,
        editBtn:false,
        delBtn:false,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        column: [{
            label: '选择',
            prop: 'radio',
            width: 60,
            hide: false,
            display: false
          },
          {
            label: '属性编号',
            prop: 'id',
            align: 'left',
            display: false,
            width: 200,
            required: true
          label: "选择",
          prop: "radio",
          width: 60,
          hide: false,
          display: false
        }, {
          label: "属性编号",
          prop: "id",
          align: "left",
          display: false,
          width: 200,
          required: true
        }, {
          label: "属性名称",
          prop: "name",
          align: "left",
          display: false
        }, {
          label: "标签",
          prop: "hashtag",
          // hide: true,
          display: false
        }, {
          label: "是否使用枚举",
          prop: "usingDict",
          type: "switch",
          hide: true,
          labelWidth: 132,
          display: false,
          dicData: [{
            label: "是",
            value: "true"
          }, {
            label: '属性名称',
            prop: 'name',
            align: 'left',
            display: false
          },
          {
            label: '标签',
            prop: 'hashtag',
            // hide: true,
            display: false
          },
          {
            label: '是否使用枚举',
            prop: 'usingDict',
            type: 'switch',
            hide: true,
            labelWidth: 132,
            display: false,
            dicData: [{
              label: '是',
              value: 'true'
            }, {
              label: '否',
              value: 'false'
            }]
          },
          {
            label: '属性类型',
            prop: 'typeValue',
            display: false,
            // hide: true
          },
          {
            label: '默认值',
            prop: 'defaultValue',
            display: false
          },
          {
            label: '允许为空',
            prop: 'nullable',
            type: 'switch',
            display: false,
            hide: true,
            labelWidth: 132,
            dicData: [{
              label: '否',
              value: 'false'
            }, {
              label: '是',
              value: 'true'
            }]
          },
          {
            label: "长度",
            prop: "maxLength",
            hide: true,
            display: false
          },
          {
            label: '描述',
            prop: 'description',
            type: "textarea",
            display: false
          },
            label: "否",
            value: "false"
          }]
        }, {
          label: "属性类型",
          prop: "typeValue",
          display: false,
          // hide: true
        }, {
          label: "默认值",
          prop: "defaultValue",
          display: false
        }, {
          label: "允许为空",
          prop: "nullable",
          type: "switch",
          display: false,
          hide: true,
          labelWidth: 132,
          dicData: [{
            label: "否",
            value: "false"
          }, {
            label: "是",
            value: "true"
          }]
        }, {
          label: "长度",
          prop: "maxLength",
          hide: true,
          display: false
        }, {
          label: "描述",
          prop: "description",
          type: "textarea",
          display: false
        },
        ]
      },
      applyRange: {
        model: "",
        title: "应用的业务类型",
        option: {
          height: 360,
          addBtn: false,
          refreshBtn: false,
          columnBtn: false,
          menu: false,
          border: true,
          reserveSelection: true,
          searchMenuSpan:8,
          searchShowBtn: false,
          highlightCurrentRow: true,
          column: [
            {
                label: '业务类型编号',
                prop: 'id',
                align: 'left',
              },
              {
                label: '业务类型名称',
                prop: 'name',
                align: 'left',
              },
          ]
        },
        data: [],
        display: false,
      },
      itemForm:{
      itemForm: {
        itemData: {},
        activeName: 'referTab',
        form:{}
        activeName: "referTab",
        form: {}
      }
    }
    };
  },
  created() {
  },
  methods: {
    refreshChange() {
      this.onLoad(this.pageParent, this.query);
    },
    addSave(){
    addSave() {
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = {};
    },
    updateSave(){
    updateSave() {
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = this.attribute;
    },
    deleteSave(){
    deleteSave() {
      remove(this.itemForm.itemData).then(res => {
        this.$message.success("删除成功");
      })
      });
    },
    onLoad(page, params = {}) {
      this.loading = true;
@@ -323,42 +275,41 @@
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.data = res.data.data.records
        this.data = res.data.data.records;
        this.itemData = this.data[0];
      })
      });
    },
    rowClick(row) {
      this.itemForm.itemData = row;
      this.selectRow = row.$index;
      this.attribute = row;
    }
    ,selectBtmType(){
        this.referType.display = true;
        this.referType.title = "请选择" + this.referType.value
    },
    applyRangeOpen(){
        if (!this.selectRow){
          this.$message({
            type:"warning",
            message: "请先选择属性"
          })
        }
        var oid = this.data[this.selectRow].oid;
        getApplyRange(oid).then(res => {
            this.applyRange.data = res.data.data;
        })
        this.applyRange.display = true;
    selectBtmType() {
      this.referType.display = true;
      this.referType.title = "请选择" + this.referType.value;
    },
    applyRangeClose(){
      this.applyRange.data = [];
      this.applyRange.display = false;
    }
    applyRangeOpen() {
      if (!this.selectRow && this.selectRow != 0) {
        this.$message({
          type: "warning",
          message: "请先选择属性"
        });
      }
      var oid = this.data[this.selectRow].oid;
      getApplyRange(oid).then(res => {
        this.applyRangeData = res.data.data;
        this.$refs.applyRange.rangeData = this.applyRangeData;
        this.$refs.applyRange.showDialog = true;
      });
    },
  },
  components: { Versionpackage }
}
</script>
<style lang="scss">
.applyRangeTable > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
    display: none !important;
.applyRangeTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
  display: none !important;
}
</style>
Source/UBCS-WEB/src/views/modeling/status.vue
@@ -63,14 +63,14 @@
              search: true
            },
            {
              label:"中文名称",
              prop:"name",
              label:'中文名称',
              prop:'name',
              search:true,
            },
            {
              label: "描述",
              prop:"description",
              type:"textarea"
              label: '描述',
              prop:'description',
              type:'textarea'
            }
          ]
        }
@@ -78,7 +78,7 @@
    },
    methods:{
      handleSearch(){
        this.packageSearchBox=true
        // this.packageSearchBox=true
      },
      getList() {
        this.loading = true;
Source/UBCS-WEB/vue.config.js
@@ -26,10 +26,10 @@
    proxy: {
      '/api': {
        //本地服务接口地址
         target: 'http://localhost:37000',
        //  target: 'http://localhost:37000',
        //target: 'http://192.168.1.51:37000',
        //target: 'http://192.168.3.7:37000',
        //  target: 'http://localhost:37000',
        // target: 'http://192.168.1.51:37000',
        target: 'http://192.168.1.46:37000',
        // target: 'http://dev.vci-tech.com:37000',
        // target: 'http://192.168.1.51:37000/',
        //   target: 'http://localhost:37000',
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeResembleRule.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.annotation.Transient;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * ç›¸ä¼¼é¡¹
 * @author weidy
 * @date 2022-1-14
 */
//@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY,text = "主题库分类",lifeCycle = FrameWorkLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME)
@Data
@TableName("PL_CODE_RESEMBLERULE")
@ApiModel(value = "CodeResemblerule对象", description = "相似项")
@EqualsAndHashCode(callSuper = true)
public class CodeResembleRule extends BaseModel {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 7375719926432663351L;
    /**
     * æ˜¯å¦å¿½ç•¥å¤§å°å†™
     */
//    @Column(columnDefinition = "是否忽略大小写")
    private String ignoreCaseFlag;
    /**
     * æ˜¯å¦å¿½ç•¥ç©ºæ ¼
     */
//    @Column(columnDefinition = "是否忽略空格")
    private String ignoreSpaceFlag;
    /**
     * æ˜¯å¦å¿½ç•¥å…¨éƒ¨ç©ºæ ¼
     */
//    @Column(columnDefinition = "是否忽略全部空格")
    private String ignoreAllSpaceFlag;
    /**
     * æ˜¯å¦å¿½ç•¥å…¨åŠè§’
     */
//    @Column(columnDefinition = "是否忽略全半角")
    private String ignoreWidthFlag;
    /**
     * è¿žæŽ¥ç¬¦
     */
//    @Column(columnDefinition = "连接符",length = 200)
    private String linkCharacter;
    public String getIgnoreWidthFlag() {
        return ignoreWidthFlag;
    }
    public void setIgnoreWidthFlag(String ignoreWidthFlag) {
        this.ignoreWidthFlag = ignoreWidthFlag;
    }
    public String getIgnoreCaseFlag() {
        return ignoreCaseFlag;
    }
    public void setIgnoreCaseFlag(String ignoreCaseFlag) {
        this.ignoreCaseFlag = ignoreCaseFlag;
    }
    public String getIgnoreSpaceFlag() {
        return ignoreSpaceFlag;
    }
    public void setIgnoreSpaceFlag(String ignoreSpaceFlag) {
        this.ignoreSpaceFlag = ignoreSpaceFlag;
    }
    public String getIgnoreAllSpaceFlag() {
        return ignoreAllSpaceFlag;
    }
    public void setIgnoreAllSpaceFlag(String ignoreAllSpaceFlag) {
        this.ignoreAllSpaceFlag = ignoreAllSpaceFlag;
    }
    public String getLinkCharacter() {
        return linkCharacter;
    }
    public void setLinkCharacter(String linkCharacter) {
        this.linkCharacter = linkCharacter;
    }
    @Override
    public String toString() {
        return "CodeResembleRuleDO{" +
            " ignoreCaseFlag='" + ignoreCaseFlag + '\'' +
            ", ignoreSpaceFlag='" + ignoreSpaceFlag + '\'' +
            ", ignoreAllSpaceFlag='" + ignoreAllSpaceFlag + '\'' +
            ", ignoreWidthFlag='" + ignoreWidthFlag + '\'' +
            ", linkCharacter='" + linkCharacter + '\'' +
            "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java
@@ -40,6 +40,7 @@
    String API_PREFIX = "/client";
    String MENU = API_PREFIX + "/menu";
    String MENU_BUTTON = API_PREFIX + "/menu-button";
    String DEPT = API_PREFIX + "/dept";
    String DEPT_IDS = API_PREFIX + "/dept-ids";
    String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
@@ -79,6 +80,15 @@
    R<Menu> getMenu(@RequestParam("id") Long id);
    /**
     * èŽ·å–èœå•ä¸‹é¢çš„æŒ‰é’®
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return List<Menu>
     */
    @GetMapping(MENU_BUTTON)
    R<List<Menu>> getMenuButtonByType(@RequestParam("btmType") String btmType);
    /**
     * èŽ·å–éƒ¨é—¨
     *
     * @param id ä¸»é”®
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java
@@ -36,6 +36,11 @@
    }
    @Override
    public R<List<Menu>> getMenuButtonByType(String btmType) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<Dept> getDept(Long id) {
        return R.fail("获取数据失败");
    }
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -73,6 +73,18 @@
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-user-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-system-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <!--<dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-webservice</artifactId>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
@@ -14,6 +14,7 @@
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -84,12 +85,17 @@
    /**
     * åˆ é™¤ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象,oid和ts需要传输
     * @param oids ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delSystemData( DockingSystemDTO dockingSystemDTO) {
        return R.status(dockingSystemService.delSystemData(dockingSystemDTO));
    @DeleteMapping( "/deleteDataById")
    public R deleteDataById( String oids) {
        try {
            return R.status(dockingSystemService.deleteDataById(oids));
        }catch (VciBaseException e){
            R.fail(e.getMessage());
        }
        return R.success("操作成功");
    }
    /**
     * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯åˆ—表
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -31,9 +31,7 @@
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
@RestController
//@AllArgsConstructor
@@ -96,20 +94,20 @@
        String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
        File file1 = new File(excelFileName);
        try {
//            file.transferTo(new File(excelFileName));
//            CodeImProtRusultVO codeImProtRusultVO = mdmIOService.batchImportCode(orderDTO,file1);
//            if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){
//                //放到map里
//                R result = R.fail("导入失败");
//                if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) {
//                    String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath());
//                    codeImProtRusultVO.setFileOid(filedUUid);
//                }
//                result.setData(codeImProtRusultVO);
//                return result;
//            }else {
//                return R.success("操作成功!");
//            }
            file.transferTo(new File(excelFileName));
            CodeImProtRusultVO codeImProtRusultVO = mdmIOService.batchImportCode(orderDTO,file1);
            if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){
                //放到map里
                R result = R.fail("导入失败");
                if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) {
                    String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath());
                    codeImProtRusultVO.setFileOid(filedUUid);
                }
                result.setData(codeImProtRusultVO);
                return result;
            }else {
                return R.success("操作成功!");
            }
        }catch (Throwable e) {
            logger.error("导入错误",e);
            String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt";
@@ -126,7 +124,7 @@
        }finally {
            file1.delete();
        }
        return null;
//        return null;
    }
@@ -474,8 +472,63 @@
    @GetMapping("/thisistest")
    @ResponseBody
    public List<BaseModel> thisistest(String codeClassifyOid, String functionId) throws Exception {
        return engineService.selectByTypeAndOid("wupin", "b1511bb3-a773-43e2-ac85-a7fde7314a0f,3e08970024835e69f6c2b2ecd90c48c3,582ff205-0dfb-43e0-8223-e772ff1851ab,db0400fe-cc90-4d9d-8da7-1edf06b1481b");
    public Integer thisistest(String codeClassifyOid, String functionId) throws Exception {
//        return engineService.selectByTypeAndOid("wupin", "b1511bb3-a773-43e2-ac85-a7fde7314a0f,3e08970024835e69f6c2b2ecd90c48c3,582ff205-0dfb-43e0-8223-e772ff1851ab,db0400fe-cc90-4d9d-8da7-1edf06b1481b");
        List<BaseModel> models = new ArrayList<>();
        BaseModel baseModel = new BaseModel();
        Map<String,String > map = new HashMap<>();
        map.put("JZL","6789");
        map.put("JZRXX","67891");
        map.put("JZXZB","67892");
        map.put("JSZGL","67893");
        map.put("JSSXT","67894");
        baseModel.setBtmname("djii");
        baseModel.setCreator("fjivis");
        baseModel.setId("vcia");
        baseModel.setOid("0d86b1ba-9e9e-4d3d-9ae4-f862c3684e74");
        baseModel.setCreateTime(new Date());
        baseModel.setTs(new Date());
        baseModel.setData(map);
        models.add(baseModel);
        BaseModel baseModel1 = new BaseModel();
        Map<String,String > map1 = new HashMap<>();
        map1.put("JZL","6789z");
        map1.put("JZRXX","67891z");
        map1.put("JZXZB","67892z");
        map1.put("JSZGL","67893z");
        map1.put("JSSXT","67894z");
        baseModel1.setBtmname("djiiz");
        baseModel1.setCreator("fjivisz");
        baseModel1.setId("vciaz");
        baseModel1.setTs(new Date());
        baseModel1.setOid("4a00be07-f5a8-4a9b-88fb-d52a0d9cf546");
        baseModel1.setCreateTime(new Date());
        baseModel1.setData(map1);
        models.add(baseModel1);
        BaseModel baseModel2 = new BaseModel();
        Map<String,String > map2 = new HashMap<>();
        map2.put("JZL","67892");
        map2.put("JZRXX","678912");
        map2.put("JZXZB","678922");
        map2.put("JSZGL","678932");
        map2.put("JSSXT","678942");
        baseModel2.setBtmname("djii2");
        baseModel2.setCreator("fjivis2");
        baseModel2.setTs(new Date());
        baseModel2.setId("vcia2");
        baseModel2.setOid("fa430ff9-f141-4dcf-8809-6f87905c1dea");
        baseModel2.setCreateTime(new Date());
        baseModel2.setData(map2);
        models.add(baseModel2);
        return 0;
//        return engineService.updateBatchByBaseModel("wupin", models);
//        return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -72,6 +72,21 @@
    /**
     * æŸ¥æ‰¾æ ‘形结构
     *
     * @return æ•°æ®é›†åˆ
     */
    List<CodeClassify> selectCodeClassifyDOByTree(@Param("id") String id,@Param("lcstatus") String lcstatus,@Param("parentcodeclassifyoid") String parentcodeclassifyoid);
    /**
     * æŸ¥è¯¢æ•°æ®ä¸ŽPL_CODE_KEYATTRREPEAT、PL_CODE_RESEMBLERULE、PL_CODE_RULE联查
     *
     * @param oids åˆ†ç±»çš„主键
     * @return æ•°æ®é›†åˆ
     */
    List<CodeClassify> selectClassifyByKeyAndReseRel(@Param("oids") String oids);
    /**
     * æŸ¥æ‰¾æ ‘形结构
     *
     * @param oid åˆ†ç±»çš„主键
     * @return æ•°æ®é›†åˆ
     */
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateAttrMapper.java
@@ -39,5 +39,12 @@
    List<CodeClassifyTemplateAttr> selectRefByOid(String oid);
    /**
     * æ¡ä»¶,关联查询排序
     *
     * @param classifytemplateoids
     * @return
     */
    List<CodeClassifyTemplateAttr> selectByClassifytemplateoidRel(String classifytemplateoids);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeResembleRuleMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.yulichang.base.MPJBaseMapper;
import com.vci.ubcs.code.entity.CodeResembleRule;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * ä¸»æ•°æ®ç¼–码规则数据操作层
 *
 * @author ludc
 * @date 2022-01-24
 */
public interface CodeResembleRuleMapper extends BaseMapper<CodeResembleRule>, MPJBaseMapper<CodeResembleRule> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -22,6 +22,8 @@
    List<Map> selectBySql(@Param("inSql") String inSql);
    List<Map<String,String>> queryByOnlySqlForMap(@Param("inSql") String inSql);
    /**
     * ä¼ å…¥è¡¨åï¼Œmap,list<map>完成批量更新操作
     * @param tableName è¡¨å
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java
@@ -1,7 +1,20 @@
package com.vci.ubcs.code.service;
import com.github.yulichang.base.MPJBaseService;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.entity.CodeResembleRule;
import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
public interface ICodeResembleRuleService {
public interface ICodeResembleRuleService  extends MPJBaseService<CodeResembleRule>  {
    CodeResembleRuleVO getObjectByOid(String codeResembleRuleOid);
}
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeResembleRuleDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeResembleRuleVO codeResembleRuleDO2VO(CodeResembleRule codeResembleRuleDO) throws VciBaseException;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemService.java
@@ -26,5 +26,5 @@
    DockingSystemVO editSave(DockingSystemDTO dockingSystemDTO);
    boolean delSystemData(DockingSystemDTO dockingSystemDTO);
    boolean deleteDataById(String oids);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -47,7 +47,7 @@
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.exception.ServiceException;
import com.vci.ubcs.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -438,13 +438,34 @@
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡,关联查询
     * @param oid ä¸»é”®
     * @return  æ•°æ®å¯¹è±¡
     */
    private CodeClassify selectByOidRel(String oid){
        List<CodeClassify> codeClassifyList = codeClassifyMapper.selectClassifyByKeyAndReseRel("'"+oid.trim()+"'");
//        CodeClassify codeClassifyEntity = (CodeClassify) codeClassifyList;
        if(codeClassifyList.size() == 0 ){
            throw new ServiceException("dataNotExist");//根据主键id未查到相关数据
        }
//        if(codeClassifyEntity == null || StringUtils.isBlank(codeClassifyEntity.getOid())){
//            throw new ServiceException("dataOidNotExist");//根据主键id未查到相关数据
//        }
        return codeClassifyList.get(0);
    }
    /**
     * æŸ¥è¯¢ä¸»é¢˜åº“分类 æ ‘
     * @param treeQueryObject æ ‘查询对象
     * @return ä¸»é¢˜åº“分类 æ˜¾ç¤ºæ ‘
     */
    @Override
    public List<Tree> treeCodeClassify(TreeQueryObject treeQueryObject) {
        List<CodeClassify> doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid());
        List<CodeClassify> doList =codeClassifyMapper
            .selectCodeClassifyDOByTree(treeQueryObject.getConditionMap().get("id"),treeQueryObject.getConditionMap().get("lcStatus"),treeQueryObject.getParentOid());
//        List<CodeClassify> doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid());
        List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
@@ -993,10 +1014,15 @@
        }
        //使用主键查询一下
        List<CodeClassify> classifyDOS = codeClassifyMapper.selectBatchIds(oidLevelMap.keySet());
        String oids = "";
        for (String s : oidLevelMap.keySet()) {
            oids += "'"+s+"',";
        }
        List<CodeClassify> classifyDOS = codeClassifyMapper.selectClassifyByKeyAndReseRel(oids.substring(0,oids.length()-1));
        if(!CollectionUtils.isEmpty(classifyDOS)){
            classifyDOS.stream().forEach(classifyDO->{
                classifyDO.setDataLevel(VciBaseUtil.getInt(oidLevelMap.getOrDefault(classifyDO.getOid(),"0")));
                classifyDO.setLcStatusText(EnumCache.getValue("codeLcstatus",classifyDO.getLcStatus()));
            });
        }
        return classifyDOS;
@@ -1123,7 +1149,7 @@
    public CodeClassifyFullInfoBO getClassifyFullInfo(String codeClassifyOid) {
        VciBaseUtil.alertNotNull(codeClassifyOid,"分类的主键");
        CodeClassifyFullInfoBO fullInfo = new CodeClassifyFullInfoBO();
        CodeClassify classifyDO = selectByOid(codeClassifyOid);
        CodeClassify classifyDO = selectByOidRel(codeClassifyOid);
        //查询上级
        fullInfo.setCurrentClassifyVO(codeClassifyDO2VO(classifyDO));
//        List<Map<String, Object>> maps = codeClassifyMapper.selectAllLevelParentByOid(codeClassifyOid);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -160,10 +160,10 @@
//            conditionMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOids.toArray(new String[0])) + ")");
//            PageHelper pageHelper = new PageHelper(-1);
//            pageHelper.addDefaultAsc("orderNum");
            QueryWrapper<CodeClassifyTemplateAttr> wrapper = new QueryWrapper<>();
            wrapper.in("classifytemplateoid",templateOids);
            wrapper.orderByAsc("orderNum");
            List<CodeClassifyTemplateAttr> attrDOS = baseMapper.selectList(wrapper);
//            QueryWrapper<CodeClassifyTemplateAttr> wrapper = new QueryWrapper<>();
//            wrapper.in("classifytemplateoid",templateOids);
//            wrapper.orderByAsc("orderNum");
            List<CodeClassifyTemplateAttr> attrDOS = baseMapper.selectByClassifytemplateoidRel(VciBaseUtil.toInSql(templateOids.toArray(new String[0])));
//                baseMapper.selectByClassifytemplateoid(VciBaseUtil.toInSql(templateOids.toArray(new String[0])));
            if(!CollectionUtils.isEmpty(attrDOS)){
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java
@@ -1,8 +1,20 @@
package com.vci.ubcs.code.service.impl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.entity.CodeResembleRule;
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
import com.vci.ubcs.code.mapper.CodeReferConfigMapper;
import com.vci.ubcs.code.mapper.CodeResembleRuleMapper;
import com.vci.ubcs.code.service.ICodeResembleRuleService;
import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
/**
 * ç›¸ä¼¼æŸ¥è¯¢è§„则服务
@@ -10,9 +22,44 @@
 * @date 2022-04-10
 */
@Service
public class CodeResembleRuleServiceImpl implements ICodeResembleRuleService {
public class CodeResembleRuleServiceImpl extends MPJBaseServiceImpl<CodeResembleRuleMapper, CodeResembleRule> implements ICodeResembleRuleService {
    @Override
    public CodeResembleRuleVO getObjectByOid(String codeResembleRuleOid) {
        return null;
    public CodeResembleRuleVO getObjectByOid(String oid) {
        return codeResembleRuleDO2VO(selectByOid(oid));
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oid ä¸»é”®
     * @return  æ•°æ®å¯¹è±¡
     * @throws VciBaseException å‚数为空,并且数据不存在的时候会抛出异常
     */
    private CodeResembleRule selectByOid(String oid) throws VciBaseException {
        VciBaseUtil.alertNotNull(oid,"主键");
        CodeResembleRule codeResembleRuleDO = baseMapper.selectById(oid.trim());
//        CodeResembleRule codeResembleRuleDO = codeResembleRuleMapper.selectByPrimaryKey(oid.trim());
        if(codeResembleRuleDO == null || StringUtils.isBlank(codeResembleRuleDO.getOid())){
            throw new VciBaseException(DATA_OID_NOT_EXIST);
        }
        return codeResembleRuleDO;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeResembleRuleDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public  CodeResembleRuleVO codeResembleRuleDO2VO(CodeResembleRule codeResembleRuleDO) throws VciBaseException{
        CodeResembleRuleVO vo = new CodeResembleRuleVO();
        if(codeResembleRuleDO != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDO,vo);
            //如果有lcstatus的类的话
            vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
        }
        return vo;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemServiceImpl.java
@@ -1,14 +1,18 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
import com.vci.ubcs.code.mapper.DockingSystemMapper;
import com.vci.ubcs.code.service.IDockingSystemService;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -17,8 +21,10 @@
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING;
import static com.vci.ubcs.code.constant.MdmLifeCycleConstant.CODE_RULE_LC;
@@ -35,6 +41,12 @@
     */
    @Autowired(required = false)
    private  DockingSystemMapper dockingSystemMapper;
    /***
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
    @Autowired(required = false)
    private DockingSystemConfigMapper dockingSystemConfigMapper;
    /**
     * å¯¹è±¡çš„æ“ä½œ
@@ -69,20 +81,40 @@
        return DockingSystemWrapper.build().entityVO(dockingSystem);
    }
    /***
     * æ ¹æ®ç³»ç»Ÿä¸»é”®åˆ é™¤ç³»ç»Ÿåç§°
     * @param oids
     * @return
     * @throws VciBaseException
     */
    @Override
    public boolean delSystemData(DockingSystemDTO dockingSystemDTO) {
        VciBaseUtil.alertNotNull(dockingSystemDTO,"系统集成的系统信息数据对象",dockingSystemDTO.getOid(),"系统集成的系统信息的主键");
        /*DockingSystem dockingSystem = dockingSystemMapper.selectById(dockingSystemDTO.getOid());
        BaseResult baseResult = checkIsCanDeleteForDO(sysIntBaseDTO,sysIntBaseDO);
        if(baseResult.isSuccess()) {
    public boolean deleteDataById(String oids) throws VciBaseException {
        String message="";
        try {
            VciBaseUtil.alertNotNull(oids, "系统集成的系统信息的主键");
            List<DockingSystem> dockingSystemList = dockingSystemMapper.selectBatchIds(VciBaseUtil.str2List(oids));
            Map<String/**系统oid**/, String/**系统名称**/> systemNameMap = dockingSystemList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t.getName(),(o1, o2)->o2));
            List<DockingSystemConfig> dockingSystemConfigList = dockingSystemConfigMapper.selectList(Wrappers.<DockingSystemConfig>query().lambda().in(DockingSystemConfig::getSourceSystemOid, VciBaseUtil.str2List(oids)));
            Set<String> systemOidList=new HashSet<>();
            Map<String,String> errorMap = new HashMap<>();
            if (!CollectionUtils.isEmpty(dockingSystemConfigList)) {
                dockingSystemConfigList.stream().forEach(dockingSystemConfig -> {
                    if(!systemOidList.contains(dockingSystemConfig.getSourceSystemOid())&&
                        systemNameMap.containsKey(dockingSystemConfig.getSourceSystemOid())){
                        String systemName=systemNameMap.get(dockingSystemConfig.getSourceSystemOid());
                        errorMap.put("error",errorMap.getOrDefault("error","") + ";"+systemName);
                    }
                    systemOidList.add(dockingSystemConfig.getSourceSystemOid());
                });
            }
            if(errorMap.size()>0){
                throw  new Throwable(errorMap.getOrDefault("error",""));
            }
            return    dockingSystemMapper.deleteBatchIds(VciBaseUtil.str2List(oids))>0;
        }catch (Throwable e){
            e.printStackTrace();
            throw  new VciBaseException(e.getMessage());
        }else{
            return baseResult;
        }
        //执行删除操作
        BatchCBO batchCBO = sysIntBaseMapper.deleteByPrimaryKey(sysIntBaseDO.getOid());
        return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
*/
        return false;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -24,6 +24,7 @@
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IEnumClient;
import com.vci.ubcs.omd.feign.IRevisionRuleClient;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.EnumVO;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
@@ -40,7 +41,11 @@
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import com.vci.ubcs.starter.web.util.*;
import com.vci.ubcs.system.entity.DictBiz;
import com.vci.ubcs.system.entity.Menu;
import com.vci.ubcs.system.feign.IDictBizClient;
import com.vci.ubcs.system.feign.ISysClient;
import com.vci.ubcs.system.user.entity.User;
import com.vci.ubcs.system.user.feign.IUserClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
import org.slf4j.Logger;
@@ -50,6 +55,7 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -69,6 +75,7 @@
import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -105,7 +112,16 @@
     */
    @Resource
    IDictBizClient iDictBizClient;
    /**
     * ç³»ç»Ÿçš„æœåŠ¡
     */
    @Resource
    ISysClient iSysClient;
    /**
     * ç”¨æˆ·æœåŠ¡
     */
    @Resource
    IUserClient iUserClient;
    /**
     * å­—典的服务
     */
@@ -780,6 +796,11 @@
            data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
            data.put(CODE_FULL_PATH_FILED,fullPath);
            cbo.setData(data);
            cbo.setOid(VciBaseUtil.getPk());
            cbo.setCreateTime(new Date());
            cbo.setLastModifyTime(new Date());
            cbo.setCreator(AuthUtil.getUser().getUserName());
            cbo.setLastModifier(AuthUtil.getUser().getUserName());
//            cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
//            cbo.setTemplateOid(templateVO.getOid());
//            cbo.setCodeclsfpath(fullPath);
@@ -792,7 +813,7 @@
//                        cbo.setLcStatus("Editing");
////                        cbo.setLcStatus(lifeCycleVO.getStartStatus());
//                    } else {
                        cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
                    cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
//                    }
                } else {
                    cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
@@ -801,7 +822,7 @@
            }
            int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade()));
            //插个点,后续看密级服务是否可用
            //后续看密级服务是否可用
//            if (secret == 0 || !secretService.checkDataSecret(secret)) {
            if (secret == 0 ) {
                Integer userSecret = VciBaseUtil.getCurrentUserSecret();
@@ -828,12 +849,14 @@
            btmName = btmName.trim().toLowerCase();
        }
        try {
            String keyPrefix = BTM_NAME.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
            String finalBtmName = btmName;
            return CacheUtil.get(BTM_INIT_CACHE, keyPrefix, btmName, () -> {
                BaseModel baseModel = createBaseModel(finalBtmName);
                return baseModel;
            });
            String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
//            String finalBtmName = btmName;
            Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
            if(valueWrapper == null){
                CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName));
                valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
            }
            return (BaseModel) valueWrapper.get();
        } catch (Exception e) {
            logger.error("创建业务类型对象",e);
            throw new VciBaseException("initBtmError",new String[]{btmName});
@@ -940,15 +963,15 @@
        }
    }
    @Override
    public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
    @Override
    public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
        CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
        MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
        uiInfoVO.setTemplateVO(templateVO);
        uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
        wrapperResemble(templateVO, uiInfoVO);
        return uiInfoVO;
    }
    }
    /**
@@ -1270,10 +1293,10 @@
        //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可
        if (!CollectionUtils.isEmpty(conditionMap)) {
            Map<String, String> andConditionMap = new HashMap<>();
            andConditionMap.put("lastr", "1");
            andConditionMap.put("lastv", "1");
            andConditionMap.put("t.lastr", "1");
            andConditionMap.put("t.lastv", "1");
            if (StringUtils.isNotBlank(orderDTO.getOid())) {
                andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
                andConditionMap.put("t.oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
            }
            conditionMap.putAll(andConditionMap);
            PageHelper pageHelper = new PageHelper(-1);
@@ -1380,21 +1403,33 @@
    public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
        CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
//        List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
        List<Map> maps = commonsMapper.selectBySql(sqlBO.getSqlHasPage());
        List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
        DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
        List<Map<String, String>> dataList = new ArrayList<>();
//        if (!CollectionUtils.isEmpty(maps)) {
//            maps.stream().forEach(map -> {
//                Map<String, String> data = new HashMap<>();
//                map.forEach((key, value) -> {
//                    data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
//                });
//                dataList.add(data);
//            });
//        }
//        dataGrid.setData(dataList);
        if (!CollectionUtils.isEmpty(maps)) {
            wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false);
            maps.stream().forEach(map -> {
                Map<String, String> data = new HashMap<>();
                map.forEach((key, value) -> {
                    data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
                });
//                map.forEach((key, value) -> {
//                    data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
//                });
                for (String s : map.keySet()) {
                    data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s)));
                }
                dataList.add(data);
            });
        }
        dataGrid.setData(dataList);
        if (!CollectionUtils.isEmpty(dataList)) {
            wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false);
            dataGrid.setData(dataList);
            dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString()));
        }
        return dataGrid;
@@ -1457,17 +1492,27 @@
            }
        });
        if (!CollectionUtils.isEmpty(userIds)) {
            Map<String, User> userVOMap = new HashMap<>();
            for (String userId : userIds) {
                if(!StringUtils.isNumeric(userId)){
                    continue;
                }
                User data = iUserClient.userInfoById(Long.valueOf(userId)).getData();
                if(data != null){
                    userVOMap.put(String.valueOf(data.getId()),data);
                }
            }
//            Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
//            dataMap.stream().forEach(data -> {
//                String creator = data.getOrDefault("creator", null);
//                if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
//                    data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")");
//                }
//                String lastmodifier = data.getOrDefault("lastmodifier", null);
//                if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
//                    data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")");
//                }
//            });
            dataMap.stream().forEach(data -> {
                String creator = data.getOrDefault("creator", null);
                if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
                    data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getRealName() + ")");
                }
                String lastmodifier = data.getOrDefault("lastmodifier", null);
                if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
                    data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getRealName() + ")");
                }
            });
        }
    }
@@ -1510,8 +1555,9 @@
        //处理枚举的内容,为了兼容以前的数据,如果数据不能使用枚举转换的话,那还是显示以前的值
        if (!CollectionUtils.isEmpty(enumAttrVOs)) {
            enumAttrVOs.stream().forEach(enumAttrVO -> {
//                String attrId = enumAttrVO.getId().toUpperCase(Locale.ROOT);
                String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT);
                String oldValue = data.getOrDefault(attrId, null);
                String oldValue = String.valueOf(data.getOrDefault(attrId, null));
                if (StringUtils.isNotBlank(oldValue)) {
                    List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO);
                    String newValue = oldValue;
@@ -1560,9 +1606,11 @@
                    referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
                    referVO.setTextField("name");
                }
                //表需要改
                //使用传入的业务类型查询表
                R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referVO.getReferType()));
//                String referTable = VciBaseUtil.getTableName(referVO.getReferType());
                String referTable = "pl_code_wupin";
                String referTable = listR.getData().get(0).getTableName();
//                String referTable = "pl_code_classify";
                String referTableNick = attrVO.getId() + "0";
                String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " =  t." + attrVO.getId();
                joinTableList.put(attrVO.getId(), left);
@@ -1578,12 +1626,20 @@
                selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
            });
        }
        // å¾…完善
//        Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> {
//            if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) {
//                selectFieldList.add(attrId);
        R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType);
//        Optional.ofNullable(allAttributeByBtmId.getData()).orElseGet(allAttributeByBtmId.getData().getAttributes()).stream().forEach(attrId -> {
//            if (!selectFieldList.contains(attrId.getOid()) && !"secretgrade".equalsIgnoreCase(attrId.getOid())) {
//                selectFieldList.add(attrId.getOid());
//            }
//        });
        if(allAttributeByBtmId.getData() != null ){
            for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) {
                if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) {
                    selectFieldList.add(attribute.getId());
                }
            }
        }
        if (!selectFieldList.contains(CODE_FIELD)) {
            selectFieldList.add(CODE_FIELD);
        }
@@ -1653,7 +1709,10 @@
        }
        //要改,表明获取有问题
//        String tableName = VciBaseUtil.getTableName(btmType);
        String tableName = "pl_code_wupin";
//        String tableName = "pl_code_wupin";
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
//                String referTable = VciBaseUtil.getTableName(referVO.getReferType());
        String tableName = listR.getData().get(0).getTableName();
        String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
            + " from " + tableName + SPACE + "t" + SPACE
            + joinTableList.values().stream().collect(Collectors.joining(SPACE))
@@ -1786,7 +1845,7 @@
     */
    private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
        StringBuilder sql = new StringBuilder();
        // å¾…完善
        //待完善
//        if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
//            sql.append("t.");
//        }
@@ -2420,10 +2479,20 @@
        CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid());
        String btmId = topClassifyVO.getBtmtypeid();
        //查询数据
        Map<String, String> conditionMap = WebUtil.getOidQuery(oid);
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("t.oid",oid);
        CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
        //我们使用和业务类型的来查询
        List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
        List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
        List<Map<String,String>> cbos = new ArrayList<>();
        cbosB.stream().forEach(map -> {
            Map<String, String> data = new HashMap<>();
            for (Object o : map.keySet()) {
                data.put(((String) o).toLowerCase(Locale.ROOT), String.valueOf(map.get(o)));
            }
            cbos.add(data);
        });
//        List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage());
        if (CollectionUtils.isEmpty(cbos)) {
            throw new VciBaseException("数据在系统中不存在,是否因为修改过业务类型?");
@@ -2436,7 +2505,7 @@
        wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true);
        R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo));
        //我们要看是否不是升版的,升版的话,需要对比不相等的属性
        String copy = String.valueOf(cbo.get("COPYFROMVERSION"));
        String copy = cbo.get("copyfromversion");
//        if (StringUtils.isBlank(copy)) {
//            copy = cbo.getAttributeValue("copyfromversion");
//        }
@@ -2860,27 +2929,31 @@
        MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
        uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
        if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
            List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData();
            //功能按钮服务还未实现,等实现了,在进行调用
            //List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
//            List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
//            if (operationVOS == null) {
//                operationVOS = new ArrayList<>();
//            }
            //查询扩展按钮
//            //查询扩展按钮
//            List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid);
//            if (!CollectionUtils.isEmpty(buttonVOS)) {
//                for (int i = 0; i < buttonVOS.size(); i++) {
//                    CodeButtonVO buttonVO = buttonVOS.get(i);
//                    SmOperationVO operationVO = new SmOperationVO();
//                    operationVO.setModuleNo(functionId);
//                    operationVO.setUniqueFlag(buttonVO.getId());
//                    operationVO.setName(buttonVO.getName());
//                    operationVO.setAlias(operationVO.getName());
//                    operationVO.setExecuteJs(buttonVO.getExecutejs());
//                    operationVO.setIconCls(buttonVO.getIconcls());
//                    operationVOS.add(operationVO);
//                }
//            }
//            uiInfoVO.setButtons(operationVOS);
            List<SmOperationVO> operationVOS = new ArrayList<>();
            if (!CollectionUtils.isEmpty(buttonVOS)) {
                for (int i = 0; i < buttonVOS.size(); i++) {
                    Menu buttonVO = buttonVOS.get(i);
                    SmOperationVO operationVO = new SmOperationVO();
                    operationVO.setModuleNo(functionId);
                    operationVO.setUniqueFlag(buttonVO.getCode());
                    operationVO.setName(buttonVO.getName());
                    operationVO.setAlias(buttonVO.getAlias());
                    operationVO.setOrderNo(String.valueOf(buttonVO.getSort()));
//                    operationVO.setExecuteJs(buttonVO.getExecuteJs());
//                    operationVO.setIconCls(buttonVO.getIconCls());
                    operationVOS.add(operationVO);
                }
            }
            uiInfoVO.setButtons(operationVOS);
        }
        return uiInfoVO;
    }
@@ -3013,7 +3086,7 @@
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName));
        String userName = AuthUtil.getUser().getUserName();
        BaseModel bo = new BaseModel();
        bo.setOid(VciBaseUtil.getPk());
//        bo.setOid(VciBaseUtil.getPk());
//        bo.setRevisionid(VciBaseUtil.getPk());
//        bo.setNameoid(VciBaseUtil.getPk());
        bo.setBtmname(boName);
@@ -3038,7 +3111,7 @@
        bo.setLctid(listR.getData().get(0).getLifeCycleId());
//        if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){
//            OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId());
            bo.setLcStatus("Editing");
        bo.setLcStatus("Editing");
//        }
        bo.setId("");
        bo.setName("");
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -21,6 +21,7 @@
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import lombok.AllArgsConstructor;
@@ -37,6 +38,7 @@
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@@ -255,15 +257,60 @@
        String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true);
        CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
        List<String> needRowIndexList = new ArrayList<>();
//        String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
//        if(StringUtils.isNotBlank(filePath)) {
//            codeImProtRusultVO.setFilePath(filePath);
//        }
//        if(StringUtils.isNotBlank(redisUUid)){
//            codeImProtRusultVO.setRedisUuid(redisUUid);
//        }
        return null;
//        return codeImProtRusultVO;
        String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
        if(StringUtils.isNotBlank(filePath)) {
            codeImProtRusultVO.setFilePath(filePath);
        }
        if(StringUtils.isNotBlank(redisUUid)){
            codeImProtRusultVO.setRedisUuid(redisUUid);
        }
//        return null;
        return codeImProtRusultVO;
    }
    /**
     * é”™è¯¯ä¿¡æ¯è¿”回excel
     * @param rowDataList æ‰€æœ‰çš„导入数据
     * @param errorMap é”™è¯¯çš„信息
     * @param needRowIndexList éœ€è¦å†™å…¥çš„æ•°æ®çš„行号
     * @param titleRowData æ ‡é¢˜è¡Œ
     *
     * @return é”™è¯¯çš„excel文件,没有错误会返回空
     */
    private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
                                      Map<String,String> errorMap,
                                      List<String> needRowIndexList,List<String> titleRowData){
        if(CollectionUtils.isEmpty(errorMap)){
            return "";
        }
        Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
        List<WriteExcelData> errorDataList = new ArrayList<>();
        errorDataList.add(new WriteExcelData(0,0,"错误信息"));
        for (int i = 0; i < titleRowData.size(); i++) {
            //错误信息在最后
            errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
        }
        Integer[] newRowIndex = new Integer[]{1};
        errorMap.forEach((index,error)->{
            //错误信息全部组合到一起
            SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
            if(rowData!=null){
                errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
                rowData.getData().forEach((colIndex,value)->{
                    errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
                });
                newRowIndex[0]++;
            }
        });
        String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误信息.xls";
        WriteExcelOption eo = new WriteExcelOption(errorDataList);
        try {
            new File(excelFileName).createNewFile();
        } catch (IOException e) {
            throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
        }
        ExcelUtil.writeDataToFile(excelFileName,eo);
        return excelFileName;
    }
    /**
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -240,4 +240,60 @@
        order by id asc
    </select>
    <select id="selectCodeClassifyDOByTree" resultMap="plCodeClassifyResultMap">
        select codeclassify0.OWNER                 as owner,
        codeclassify0.BTMTYPEID             as btmtypeid,
        codeclassify0.CREATOR               as creator,
        codeclassify0.CREATETIME            as createtime,
        codeclassify0.LASTMODIFIER          as lastmodifier,
        codeclassify0.DESCRIPTION           as description,
        codeclassify0.ORDERNUM              as ordernum,
        codeclassify0.CODERULEOID           as coderuleoid,
        codeclassify0.OID                   as oid,
        codeclassify0.BTMNAME               as btmname,
        codeclassify0.BTMTYPENAME           as btmtypename,
        codeclassify0.CODEKEYATTRREPEATOID  as codekeyattrrepeatoid,
        codeclassify0.PARENTCODECLASSIFYOID as parentcodeclassifyoid,
        codeclassify0.NAME                  as name,
        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
        codeclassify0.ID                    as id,
        codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
        codeclassify0.LCSTATUS              as lcstatus,
        codeclassify0.TS                    as ts,
        coderuleoid.name                    as codeRuleOidName,
        codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
        coderesembleruleoid.name            as codeResembleRuleOidName
        from pl_code_classify codeclassify0
        left join pl_code_rule coderuleoid
        on codeclassify0.codeRuleOid = coderuleoid.oid
        left join pl_code_keyattrrepeat codekeyattrrepeatoid
        on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
        left join pl_code_resemblerule coderesembleruleoid
        on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
        where codeclassify0.lcstatus = #{lcstatus}
        <if test="parentcodeclassifyoid != null and parentcodeclassifyoid != ''">
            and codeclassify0.parentcodeclassifyoid = #{parentcodeclassifyoid}
        </if>
        <if test="parentcodeclassifyoid == null or parentcodeclassifyoid == ''">
            and codeclassify0.parentcodeclassifyoid is null
            and codeclassify0.id = #{id}
        </if>
        order by id asc
    </select>
    <select id="selectClassifyByKeyAndReseRel" resultMap="plCodeClassifyResultMap">
        SELECT PCC.*,
               PCK.NAME AS CODEKEYATTRREPEATOIDNAME,
               PCR.NAME AS CODERESEMBLERULEOIDNAME,
               PCE.NAME CODERULEOIDNAME
        FROM PL_CODE_CLASSIFY PCC
                 LEFT JOIN PL_CODE_KEYATTRREPEAT PCK
                           ON PCC.CODEKEYATTRREPEATOID = PCK.OID
                 LEFT JOIN PL_CODE_RESEMBLERULE PCR
                           ON PCC.CODERESEMBLERULEOID = PCR.OID
                 LEFT JOIN PL_CODE_RULE PCE
                           ON PCC.CODERULEOID = PCE.OID
        WHERE PCC.OID IN (${oids})
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateAttrMapper.xml
@@ -100,5 +100,13 @@
        where codeclstempattr0.classifytemplateoid = #{oid}
    </select>
    <select id="selectByClassifytemplateoidRel" resultMap="CodeClstempattrResultMap">
        select PCC.*, PLT.NAME classifyTemplateOidName
        from PL_CODE_CLSTEMPATTR PCC, PL_CODE_CLSTEMPLATE PLT
        where PCC.CLASSIFYTEMPLATEOID = PLT.OID
          AND PCC.classifytemplateoid IN (${oid})
        ORDER BY PCC.ORDERNUM ASC
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeResembleRule.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodeResembleRuleMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="CodeResembleRuleResultMap" type="com.vci.ubcs.code.entity.CodeResembleRule">
        <id property="oid" column="OID"/>
        <result property="btmname" column="BTMNAME"/>
        <result property="revisionOid" column="REVISIONOID"/>
        <result property="nameOid" column="NAMEOID"/>
        <result property="lastR" column="LASTR"/>
        <result property="firstR" column="FIRSTR"/>
        <result property="lastV" column="LASTV"/>
        <result property="firstV" column="FIRSTV"/>
        <result property="creator" column="CREATOR"/>
        <result property="createTime" column="CREATETIME"/>
        <result property="lastModifier" column="LASTMODIFIER"/>
        <result property="lastModifyTime" column="LASTMODIFYTIME"/>
        <result property="revisionRule" column="REVISIONVALUE"/>
        <result property="versionRule" column="VISIONRULE"/>
        <result property="revisionValue" column="REVISIONRULE"/>
        <result property="versionValue" column="VERSIONVALUE"/>
        <result property="revisionSeq" column="REVISIONSEQ"/>
        <result property="versionSeq" column="VERSIONSEQ"/>
        <result property="lctid" column="LCTID"/>
        <result property="lcStatus" column="LCSTATUS"/>
        <result property="ts" column="TS"/>
        <result property="id" column="ID"/>
        <result property="name" column="NAME"/>
        <result property="description" column="DESCRIPTION"/>
        <result property="owner" column="OWNER"/>
        <result property="copyFromVersion" column="COPYFROMVERSION"/>
        <result property="ignoreCaseFlag" column="IGNORECASEFLAG"/>
        <result property="ignoreSpaceFlag" column="IGNORESPACEFLAG"/>
        <result property="ignoreAllSpaceFlag" column="IGNOREALLSPACEFLAG"/>
        <result property="ignoreWidthFlag" column="IGNOREWIDTHFLAG"/>
        <result property="linkCharacter" column="LINKCHARACTER"/>
    </resultMap>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -22,6 +22,10 @@
        ${inSql}
    </select>
    <select id="queryByOnlySqlForMap" resultType="java.util.Map">
        ${inSql}
    </select>
    <insert id="insertByBaseModel" parameterType="java.util.Map">
        insert into ${tableName}
        (
Source/UBCS/ubcs-service/ubcs-omd/pom.xml
@@ -69,6 +69,12 @@
            <artifactId>orai18n</artifactId>
            <version>${orai18n.version}</version>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-code-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java
@@ -94,4 +94,16 @@
        revisionRuleService.batchDelete(revisionRuleVOList);
        return R.status(true);
    }
    /**
     * æŸ¥çœ‹ä½¿ç”¨èŒƒå›´
     * @param id ç‰ˆæœ¬è§„则id
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/get-apply-range")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "版本规则id",notes = "传入id")
    public R getApplyRange(String id){
        return R.data(revisionRuleService.getApplyRange(id));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java
@@ -188,4 +188,10 @@
     */
    IPage<RevisionRuleVO> pageQueryVO(BaseQueryObject baseQueryObject) throws VciBaseException;
    /**
     * æŸ¥çœ‹åº”用范围
     * @param id id
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeVO> getApplyRange(String id);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -116,15 +116,10 @@
    @Override
    public List<BtmTypeVO> applyRange(String oid) {
        List<BtmType> btmTypes = baseMapper.selectApplyRange(oid);
        if (!CollectionUtils.isEmpty(btmTypes)){
            return btmTypes.stream().map(btm -> {
                BtmTypeVO vo = new BtmTypeVO();
                vo.setId(btm.getId());
                vo.setName(btm.getName());
                return vo;
            }).collect(Collectors.toList());
        if (CollectionUtils.isEmpty(btmTypes)){
            return null;
        }
        return null;
        return BtmTypeWrapper.build().listEntityVO(btmTypes);
    }
    /**
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
@@ -845,7 +845,7 @@
        }else {
            throw new VciBaseException("领域名称不符合规则");
        }
        return PL + StringPool.UNDERSCORE + domain + StringPool.UNDERSCORE + id;
        return PL + StringPool.UNDERSCORE + domain.toUpperCase(Locale.ROOT) + StringPool.UNDERSCORE + id.toUpperCase(Locale.ROOT);
    }
    /**
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java
@@ -560,4 +560,16 @@
        beanMap.putAll(conditionMap);
        return RevisionRuleWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(queryConditionObj).lambda().orderByAsc(RevisionRule::getId)));
    }
    /**
     * æŸ¥çœ‹åº”用范围
     *
     * @param id id
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public List<BtmTypeVO> getApplyRange(String id) {
        VciBaseUtil.alertNotNull(id,"版本规则英文名称");
        return BtmTypeWrapper.build().listEntityVO(btmTypeMapper.selectList(Wrappers.<BtmType>query().lambda().eq(BtmType::getRevisionRuleId,id)));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java
@@ -49,6 +49,7 @@
        });
        vo.setFromBtmTypes(fromBtm);
        vo.setToBtmTypes(toBtm);
        vo.setTableName(vo.getTableName().toUpperCase(Locale.ROOT));
        // æžšä¸¾å¤„理
        vo.setDomainText(NewAppConstantEnum.getTextByName(vo.getDomain()));
        return vo;
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml
@@ -51,8 +51,7 @@
    </select>
    <select id="selectApplyRange" resultType="com.vci.ubcs.omd.entity.BtmType">
        select
            btm.name,
            btm.ID
            btm.*
        from pl_omd_btm_type btm
        join pl_omd_btm_type_attribute btmAttr on btmAttr.pk_btm_type = btm.oid
        join <include refid="tableName"/> attr on attr.id = btmAttr.id
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java
@@ -21,10 +21,7 @@
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
@@ -65,6 +62,11 @@
    public R<Menu> getMenu(Long id) {
        return R.data(menuService.getById(id));
    }
    @Override
    @GetMapping(MENU_BUTTON)
    public R<List<Menu>> getMenuButtonByType(String btmType) {
        return R.data(menuService.getMenuButtonByType(btmType));
    }
    @Override
    @GetMapping(DEPT)
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/MenuMapper.java
@@ -124,6 +124,12 @@
     * @return
     */
    List<Menu> allMenu();
    /**
     * æ ¹æ®ä¸šåŠ¡ç±»åž‹æŸ¥è¯¢èœå•çš„å­æŒ‰é’®
     *
     * @return
     */
    List<Menu> selectMenuChildByBtnType(String btmType);
    /**
     * æƒé™é…ç½®èœå•
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.core.tool.support.Kv;
import com.vci.ubcs.system.entity.Menu;
@@ -162,5 +163,11 @@
     * @return
     */
    boolean submit(Menu menu);
    /**
     * èŽ·å–èœå•ä¸‹é¢çš„æŒ‰é’®
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return List<Menu>
     */
    List<Menu> getMenuButtonByType(String btmType);
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -30,9 +30,10 @@
import com.vci.ubcs.system.service.ITopMenuSettingService;
import com.vci.ubcs.system.wrapper.MenuWrapper;
import lombok.AllArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
import com.vci.ubcs.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.TreeNode;
@@ -294,4 +295,9 @@
        return saveOrUpdate(menu);
    }
    @Override
    public List<Menu> getMenuButtonByType(String btmType) {
        return baseMapper.selectMenuChildByBtnType(btmType);
    }
}
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml
@@ -475,4 +475,13 @@
        GROUP BY m.path
    </select>
    <select id="selectMenuChildByBtnType" resultMap="menuResultMap">
        select pm.*
        from pl_sys_menu ps, pl_sys_menu pm
        where ps.is_deleted = 0
          and ps.category = 1
          and ps.alias = #{btmType}
          and ps.id = pm.parent_id order by pm.sort asc
    </select>
</mapper>