fujunling
2023-05-26 087511862a295eda0cf808a92f2ed2df348d54ff
动态表单
已修改56个文件
已添加20个文件
4879 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/GetItem.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/btmType.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Crud/Crud.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 1579 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/flow/flowPath.vue 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 553 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/originalAdd.vue 452 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingGroupDataVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingMainData.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingViewVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/ResultDataVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataObjectVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/ResultDataObject.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/IMdmInterJtClient.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmInterJtClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java 434 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java 2 ●●● 补丁 | 查看 | 原始文档 | 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/wrapper/AttributeWrapper.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/GetItem.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
import request from "@/router/axios";
export const MasterTable =(params)=>{
  return request({
    url: 'api/ubcs-code/ubcs-code//mdmEngineController/getUIInfoByClassifyOid',
    method: 'get',
    params:{
      ...params
    }
  })
}
export const TableData =(params)=>{
  return request({
    url: 'api/ubcs-code/ubcs-code//mdmEngineController/gridTableDataByClassifyOid',
    method: 'get',
    params:{
      ...params
    }
  })
}
Source/UBCS-WEB/src/api/omd/btmType.js
@@ -56,4 +56,16 @@
        method: 'post',
        data: btmType
    })
}
export const btmPage = (current,size,params) => {
    return request ({
        url: '/api/ubcs-omd/btm-type/page',
        method: 'get',
        params: {
            current,
            size,
            ...params
        }
    })
}
Source/UBCS-WEB/src/components/Crud/Crud.vue
@@ -1,15 +1,94 @@
<template>
  <avue-crud :data="data" ></avue-crud>
<basic-container style="height: 750px">
  <avue-crud ref="crud" :data="data" :option="option" style="height: 750px" @sort-change="sortChange"></avue-crud>
</basic-container>
</template>
<script>
import { MasterTable,TableData } from "@/api/GetItem";
export default {
  name: "Crud.vue",
  data(){
    return{
      data:[],
      option:{}
      data:[
        {
          zhiliangbz:"111",
        },
        {
          xinghaoguige:"1121",
        },
      ],
      option:{
        //默认高度,
        align:'center',
        menuAlign:'center',
        column:[]
      },
      List:[],
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        datetime: "datetime",
      },
    }
  },
  created() {
   this.CrudHeaderRend();
   this.CrudRend()
  },
  activated() {
    this.doLayout()
  },
  methods:{
    doLayout() {
      this.$nextTick(() => {
        this.$refs.crud.doLayout();
      });
    },
    CrudHeaderRend(){
      MasterTable({codeClassifyOid:"D9CF223F-317D-71EB-BD11-433A94CAD9F3",functionId: 5,_: 1685067339479}).then(res=>{
        this.List=res.data.tableDefineVO.cols[0];
        this.List.forEach(item=>{
          console.log(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);
        })
      })
    },
    CrudRend(){
      TableData({templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
        page: 1,
        limit: 9,
        _: 1685089123575
      }).then(res=>{
        console.log(res)
        this.data=res.data.data
      })
    },
    // æŽ’序
    sortChange(val){
      console.log(val)
      // TableData(  {
      //   templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
      //   codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
      //   order:"desc",
      //   sort:val.prop
      // }).then(res=>{
      //   console.log(res.data.data)
      //   this.data=res.data.data
      // })
    },
  }
}
</script>
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -1,790 +1,789 @@
<template>
  <el-dialog
    :visible.sync="dialogVisible"
    v-dialogDrag
    top="0vh"
    title="提示"
    class="avue-dialog avue-dialog--top"
    :width="dialogOptions.width"
    append-to-body
  >
    <avue-form
      v-model="form"
      :option="option"
      v-loading="loading"
      ref="form"
      :key="index"
    >
      <template :slot="item.prop + 'Label'" v-for="item in option.column">
        <span>{{ item.label }} </span>
        <el-tooltip
          v-if="item.keyAttr"
          class="item"
          effect="dark"
          content="该属性为关键属性"
          placement="top-start"
        >
          <i class="el-icon-star-on key_attr_icon"></i>
        </el-tooltip>
        <el-tooltip
          v-if="item.tip"
          class="item"
          effect="dark"
          :content="item.tip"
          placement="top-start"
        >
          <i class="el-icon-warning"></i>
        </el-tooltip>
      </template>
    </avue-form>
    <div class="avue-dialog__footer">
      <el-button @click="close()">取 æ¶ˆ</el-button>
      <el-button @click="close()" type="primary">ç¡® å®š</el-button>
    </div>
    <el-dialog title="测试参照" :visible.sync="visible2" append-to-body>
      <div style="height: 100px;">
        <p>部门数据 {depName: '我是部门名称', depId: '我是部门id'}</p>
      </div>
      <div class="avue-dialog__footer">
        <el-button @click="visible2 = false">取 æ¶ˆ</el-button>
        <el-button @click="czSubmit" type="primary">ç¡® å®š</el-button>
      </div>
    </el-dialog>
  </el-dialog>
</template>
<script>
import { getFormTemplate } from "../../api/common";
import { getDictionary } from "../../api/system/dict";
export default {
  name: "FormTemplate",
  props: {
    visible: {
      type: Boolean,
      default: false,
    },
    disabledProp: {
      type: Array,
      default: () => ["id"],
    },
  },
  data() {
    return {
      index: 0,
      form: {},
      loading: false,
      dialogOptions: {
        width: "60%",
      },
      option: {
        emptyBtn: false,
        submitBtn: false,
        labelWidth: "120",
        column: [],
      },
      templateData: {},
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        textarea: "textarea",
        datetime: "datetime",
        date: "date",
        file: "upload",
      },
      // å‡æ•°æ®
      testItems: [
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "id",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "传值禁用功能",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "state",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "接口禁用功能",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "oldcode",
          hidden: false,
          keyAttr: false,
          prefix: "el-icon-search",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "文本后缀测试",
          text: "前后缀功能",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "materialname",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: true,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "正则校验功能",
          tooltips: "请输入数字",
          type: "text",
          unique: false,
          verify: "/[0-9]/",
        },
        {
          comboxKey: null,
          customClass: null,
          data: [
            {
              attributes: {},
              key: "model_type",
              value: "模型",
            },
            {
              attributes: {},
              key: "part_type",
              value: "零件",
            },
          ],
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "dataSelect",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "直接返回下拉",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: "formTemplateTest",
          customClass: null,
          data: [],
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "dictSelect",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "字典返回下拉",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "firstfl",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "数字输入框",
          tooltips: "",
          type: "number",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "yyyy-MM-dd HH:mm:ss",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "datetime",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "日期时间选择器",
          tooltips: "",
          type: "datetime",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "time",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "时间选择器",
          tooltips: "",
          type: "date",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "false",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "xiaoshouwl",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "开关",
          tooltips: "",
          type: "truefalse",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "我是默认值",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "tuhao",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "默认值功能",
          tooltips: "提示",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "xinghaoguige",
          hidden: false,
          keyAttr: true,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "属性关键值",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "jiliangdw",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          tip: "我是提示功能",
          required: false,
          selectLibFlag: "",
          showField: "jiliangdwname",
          suffix: "",
          text: "提示功能",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
          extendAttrMap: null,
          extendAttrString: null,
          field: "fun1",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "参数1测试js",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
          extendAttrMap: null,
          extendAttrString: null,
          field: "fun2",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          required: false,
          selectLibFlag: "",
          showField: "hesuanfenleiname",
          suffix: "",
          text: "参数2测试js",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "sum",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          required: false,
          selectLibFlag: "",
          showField: "",
          suffix: "",
          text: "参数1参数2求和",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "textarea",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "文本域",
          tooltips: "",
          type: "textarea",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "beizhushuoming",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "文件功能",
          tooltips: "",
          type: "file",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "cz",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          referConfig: true,
          required: false,
          selectLibFlag: "",
          showField: "depId",
          suffix: "",
          text: "参照",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
      ],
      visible2: false,
    };
  },
  created() {
  },
  computed: {
    dialogVisible: {
      get() {
        return this.visible;
      },
      set(val) {
        this.$emit("update:visible", val);
      },
    },
  },
  methods: {
    getFormTemplate() {
      this.loading = true;
      getFormTemplate({
        templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
        codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
        page: 1,
        limit: 30,
      })
        .then((res) => {
          if (res.status === 200) {
            this.templateData = res.data;
            this.templateRender();
          }
          this.loading = false;
          console.log(res.data);
        })
        .catch((err) => {
          this.loading = false;
          console.log(err);
        });
    },
    templateRender() {
      // const items = this.templateData.formDefineVO.items;
      const items = this.testItems;
      let column = [];
      let dictKeys = [];
      items.forEach((item) => {
        // éšè—è¡¨å•元素
        if (item.hide) {
          return;
        }
        // æ‰‹æœºå­—å…¸key统一异步请求获取
        if (!this.$utilFunc.isEmpty(item.comboxKey)) {
          dictKeys.push({ dictKey: item.comboxKey, field: item.field });
        }
        // ç¦ç”¨éƒ¨åˆ†å±žæ€§
        if (this.disabledProp.includes(item.field)) {
          item.disabled = true;
        }
        // è®¾ç½®è¡¨å•校验的规则,文本
        let message = "请选择";
        let trigger = "change";
        if (item.type === "text") {
          message = "请输入";
          trigger = "blur";
        } else if (item.type === "file") {
          message = "请上传";
        }
        let columnItem = {
          label: item.text,
          labelslot: true,
          prop: item.referConfig ? item.showField : item.field,
          type: this.columnType[item.type],
          dicData: this.getDataList(item.type, item.data),
          disabled: item.disabled,
          readonly: item.readOnly,
          prepend: this.preOrSufFixShow("text", item.prefix),
          append: this.preOrSufFixShow("text", item.suffix),
          prefixIcon: this.preOrSufFixShow("icon", item.prefix),
          suffixIcon: this.preOrSufFixShow("icon", item.suffix),
          valueFormat: item.dateFormate,
          format: item.dateFormate,
          keyAttr: item.keyAttr,
          value: item.defaultValue,
          tip: item.tip,
          comboxKey: item.comboxKey,
          change: ({ value, column }) => {
            this.changeFun(value, column, item.displayExtension);
          },
          click: this.clickFun(item.referConfig),
          // action:
          //   item.type === "file"
          //     ? "/api/ubcs-resource/oss/endpoint/put-file"
          //     : "",
          // propsHttp: {
          //   res: "data",
          //   url: "link",
          // },
          rules: [
            {
              required: item.required,
              message: `请${message}${item.text}`,
              trigger,
            },
            {
              // å¦‚果没有正则则匹配任何字符
              pattern: item.verify ? item.verify : /[\s\S.]*/g,
              message: item.tooltips,
              trigger,
            },
          ],
          props: {
            label: "value",
            value: "key",
          },
        };
        column.push(columnItem);
        this.$set(this.option, "column", column);
      });
      this.index++;
      this.geDictData(dictKeys);
    },
    changeFun(value, column, jsCode) {
      if (typeof jsCode === "string" && jsCode.length > 0) {
        eval(jsCode);
      }
    },
    clickFun(referConfig) {
      if (referConfig) {
        return () => {
          this.visible2 = true
        }
      }
    },
    czSubmit() {
      this.visible2 = false
      this.form = Object.assign(this.form, {
        depName: "我是部门名称",
        depId: "我是部门id",
      });
    },
    close() {
      this.dialogVisible = false;
    },
    // å‰åŽç¼€
    preOrSufFixShow(type, val) {
      if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
      const isIcon = val.slice(0, 8) === "el-icon-";
      if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
        return val;
      }
    },
    // èŽ·å–swich和已拿到的下拉数据
    getDataList(type, dicData) {
      if (type === "truefalse") {
        return [
          {
            key: false,
            value: "否",
          },
          {
            key: true,
            value: "是",
          },
        ];
      } else if (type === "combox") {
        return dicData;
      }
      return [];
    },
    // èŽ·å–å­—å…¸æ•°æ®
    geDictData(dictKeys) {
      dictKeys.forEach((dictObj) => {
        getDictionary({ code: dictObj.dictKey }).then((res) => {
          if (res.data && res.data.code === 200) {
            this.option.column = this.option.column.map((item) => {
              if (item.field === dictObj.field) {
                let dictData = (res.data.data || []).map((itm) => {
                  itm.value = itm.dictValue;
                  itm.key = itm.dictKey;
                  return itm;
                });
                item.dicData = dictData;
              }
              return item;
            });
          }
        });
      });
    },
  },
  watch: {
    visible(newV) {
      if (newV) {
        this.getFormTemplate();
      }
    },
  },
};
</script>
<style lang="scss" scoped>
.key_attr_icon {
  font-size: 24px;
  position: relative;
  top: 2px;
  color: red;
}
// è§£å†³swich组件不垂直居中的问题
/deep/ .el-switch {
  vertical-align: baseline;
}
</style>
<template>
  <el-dialog
    :visible.sync="dialogVisible"
    v-dialogDrag
    top="0vh"
    title="提示"
    class="avue-dialog avue-dialog--top"
    :width="dialogOptions.width"
    append-to-body
  >
    <avue-form
      v-model="form"
      :option="option"
      v-loading="loading"
      ref="form"
      :key="index"
    >
      <template :slot="item.prop + 'Label'" v-for="item in option.column">
        <span>{{ item.label }} </span>
        <el-tooltip
          v-if="item.keyAttr"
          class="item"
          effect="dark"
          content="该属性为关键属性"
          placement="top-start"
        >
          <i class="el-icon-star-on key_attr_icon"></i>
        </el-tooltip>
        <el-tooltip
          v-if="item.tip"
          class="item"
          effect="dark"
          :content="item.tip"
          placement="top-start"
        >
          <i class="el-icon-warning"></i>
        </el-tooltip>
      </template>
    </avue-form>
    <div class="avue-dialog__footer">
      <el-button @click="close()">取 æ¶ˆ</el-button>
      <el-button @click="close()" type="primary">ç¡® å®š</el-button>
    </div>
    <el-dialog title="测试参照" :visible.sync="visible2" append-to-body>
      <div style="height: 100px;">
        <p>部门数据 {depName: '我是部门名称', depId: '我是部门id'}</p>
      </div>
      <div class="avue-dialog__footer">
        <el-button @click="visible2 = false">取 æ¶ˆ</el-button>
        <el-button @click="czSubmit" type="primary">ç¡® å®š</el-button>
      </div>
    </el-dialog>
  </el-dialog>
</template>
<script>
import { getFormTemplate } from "../../api/common";
import { getDictionary } from "../../api/system/dict";
export default {
  name: "FormTemplate",
  props: {
    visible: {
      type: Boolean,
      default: false,
    },
    disabledProp: {
      type: Array,
      default: () => ["id"],
    },
  },
  data() {
    return {
      index: 0,
      form: {},
      loading: false,
      dialogOptions: {
        width: "60%",
      },
      option: {
        emptyBtn: false,
        submitBtn: false,
        labelWidth: "120",
        column: [],
      },
      templateData: {},
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        textarea: "textarea",
        datetime: "datetime",
        date: "date",
        file: "upload",
      },
      // å‡æ•°æ®
      testItems: [
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "id",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "传值禁用功能",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "state",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "接口禁用功能",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "oldcode",
          hidden: false,
          keyAttr: false,
          prefix: "el-icon-search",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "文本后缀测试",
          text: "前后缀功能",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "materialname",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: true,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "正则校验功能",
          tooltips: "请输入数字",
          type: "text",
          unique: false,
          verify: "/[0-9]/",
        },
        {
          comboxKey: null,
          customClass: null,
          data: [
            {
              attributes: {},
              key: "model_type",
              value: "模型",
            },
            {
              attributes: {},
              key: "part_type",
              value: "零件",
            },
          ],
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "dataSelect",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "直接返回下拉",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: "formTemplateTest",
          customClass: null,
          data: [],
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "dictSelect",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "字典返回下拉",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "firstfl",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "数字输入框",
          tooltips: "",
          type: "number",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "yyyy-MM-dd HH:mm:ss",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "datetime",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "日期时间选择器",
          tooltips: "",
          type: "datetime",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "time",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "时间选择器",
          tooltips: "",
          type: "date",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "false",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "xiaoshouwl",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "开关",
          tooltips: "",
          type: "truefalse",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "我是默认值",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "tuhao",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "默认值功能",
          tooltips: "提示",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "xinghaoguige",
          hidden: false,
          keyAttr: true,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "属性关键值",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "jiliangdw",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          tip: "我是提示功能",
          required: false,
          selectLibFlag: "",
          showField: "jiliangdwname",
          suffix: "",
          text: "提示功能",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
          extendAttrMap: null,
          extendAttrString: null,
          field: "fun1",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "参数1测试js",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
          extendAttrMap: null,
          extendAttrString: null,
          field: "fun2",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          required: false,
          selectLibFlag: "",
          showField: "hesuanfenleiname",
          suffix: "",
          text: "参数2测试js",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "sum",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          required: false,
          selectLibFlag: "",
          showField: "",
          suffix: "",
          text: "参数1参数2求和",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "textarea",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "文本域",
          tooltips: "",
          type: "textarea",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "beizhushuoming",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "文件功能",
          tooltips: "",
          type: "file",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "cz",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          referConfig: true,
          required: false,
          selectLibFlag: "",
          showField: "depId",
          suffix: "",
          text: "参照",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
      ],
      visible2: false,
    };
  },
  created() {
  },
  computed: {
    dialogVisible: {
      get() {
        return this.visible;
      },
      set(val) {
        this.$emit("update:visible", val);
      },
    },
  },
  methods: {
    getFormTemplate() {
      this.loading = true;
      getFormTemplate({
        templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
        codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
        page: 1,
        limit: 30,
      })
        .then((res) => {
          if (res.status === 200) {
            this.templateData = res.data;
            this.templateRender();
          }
          this.loading = false;
          console.log(res.data);
        })
        .catch((err) => {
          this.loading = false;
          console.log(err);
        });
    },
    templateRender() {
      // const items = this.templateData.formDefineVO.items;
      const items = this.testItems;
      let column = [];
      let dictKeys = [];
      items.forEach((item) => {
        // éšè—è¡¨å•元素
        if (item.hide) {
          return;
        }
        // æ‰‹æœºå­—å…¸key统一异步请求获取
        if (!this.$utilFunc.isEmpty(item.comboxKey)) {
          dictKeys.push({ dictKey: item.comboxKey, field: item.field });
        }
        // ç¦ç”¨éƒ¨åˆ†å±žæ€§
        if (this.disabledProp.includes(item.field)) {
          item.readOnly = true;
        }
        // è®¾ç½®è¡¨å•校验的规则,文本
        let message = "请选择";
        let trigger = "change";
        if (item.type === "text") {
          message = "请输入";
          trigger = "blur";
        } else if (item.type === "file") {
          message = "请上传";
        }
        let columnItem = {
          label: item.text,
          labelslot: true,
          prop: item.referConfig ? item.showField : item.field,
          type: this.columnType[item.type],
          dicData: this.getDataList(item.type, item.data),
          disabled: item.readOnly,
          prepend: this.preOrSufFixShow("text", item.prefix),
          append: this.preOrSufFixShow("text", item.suffix),
          prefixIcon: this.preOrSufFixShow("icon", item.prefix),
          suffixIcon: this.preOrSufFixShow("icon", item.suffix),
          valueFormat: item.dateFormate,
          format: item.dateFormate,
          keyAttr: item.keyAttr,
          value: item.defaultValue,
          tip: item.tip,
          comboxKey: item.comboxKey,
          change: ({ value, column }) => {
            this.changeFun(value, column, item.displayExtension);
          },
          click: this.clickFun(item.referConfig),
          // action:
          //   item.type === "file"
          //     ? "/api/ubcs-resource/oss/endpoint/put-file"
          //     : "",
          // propsHttp: {
          //   res: "data",
          //   url: "link",
          // },
          rules: [
            {
              required: item.required,
              message: `请${message}${item.text}`,
              trigger,
            },
            {
              // å¦‚果没有正则则匹配任何字符
              pattern: item.verify ? item.verify : /[\s\S.]*/g,
              message: item.tooltips,
              trigger,
            },
          ],
          props: {
            label: "value",
            value: "key",
          },
        };
        column.push(columnItem);
        this.$set(this.option, "column", column);
      });
      this.index++;
      this.geDictData(dictKeys);
    },
    changeFun(value, column, jsCode) {
      if (typeof jsCode === "string" && jsCode.length > 0) {
        eval(jsCode);
      }
    },
    clickFun(referConfig) {
      if (referConfig) {
        return () => {
          this.visible2 = true
        }
      }
    },
    czSubmit() {
      this.visible2 = false
      this.form = Object.assign(this.form, {
        depName: "我是部门名称",
        depId: "我是部门id",
      });
    },
    close() {
      this.dialogVisible = false;
    },
    // å‰åŽç¼€
    preOrSufFixShow(type, val) {
      if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
      const isIcon = val.slice(0, 8) === "el-icon-";
      if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
        return val;
      }
    },
    // èŽ·å–swich和已拿到的下拉数据
    getDataList(type, dicData) {
      if (type === "truefalse") {
        return [
          {
            key: false,
            value: "否",
          },
          {
            key: true,
            value: "是",
          },
        ];
      } else if (type === "combox") {
        return dicData;
      }
      return [];
    },
    // èŽ·å–å­—å…¸æ•°æ®
    geDictData(dictKeys) {
      dictKeys.forEach((dictObj) => {
        getDictionary({ code: dictObj.dictKey }).then((res) => {
          if (res.data && res.data.code === 200) {
            this.option.column = this.option.column.map((item) => {
              if (item.field === dictObj.field) {
                let dictData = (res.data.data || []).map((itm) => {
                  itm.value = itm.dictValue;
                  itm.key = itm.dictKey;
                  return itm;
                });
                item.dicData = dictData;
              }
              return item;
            });
          }
        });
      });
    },
  },
  watch: {
    visible(newV) {
      if (newV) {
        this.getFormTemplate();
      }
    },
  },
};
</script>
<style lang="scss" scoped>
.key_attr_icon {
  font-size: 24px;
  position: relative;
  top: 2px;
  color: red;
}
// è§£å†³swich组件不垂直居中的问题
/deep/ .el-switch {
  vertical-align: baseline;
}
</style>
Source/UBCS-WEB/src/main.js
@@ -41,6 +41,7 @@
import referConfigFormDialog from "@/components/code-dialog-page/referConfigFormDialog"
import businessAdd from "@/views/modeling/BusinessAdd"
import TableCrud from "@/components/Crud/Crud"
import originalAdd from "@/views/modeling/originalAdd"
// å°†å·¥å…·å‡½æ•°æ·»åŠ åˆ°å…¨å±€
import utilFunc from './util/func'
@@ -83,6 +84,7 @@
Vue.component('businessAdd',businessAdd)
Vue.component('attrCrud',attrCrud)
Vue.component('TableCrud',TableCrud)
Vue.component('originalAdd',originalAdd)
// åŠ è½½ç›¸å…³url地址
Source/UBCS-WEB/src/views/flow/flowPath.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,188 @@
<template>
    <div>
        <el-button @click="outerVisible = true">流程测试</el-button>
        <el-dialog :title="`执行${title}`" width="90%" append-to-body="true" :visible.sync="outerVisible">
            <div class="dialogwarp">
                <div class="dialogwarp_tab">
                    <el-card class="dialogwarp_tab_card">
                        <el-tabs v-model="activeName" @tab-click="handleClick">
                            <el-tab-pane label="业务数据信息" name="first">
                            </el-tab-pane>
                            <el-tab-pane label="流程跟踪" name="second">
                                <avue-crud :data="data" :option="option" ref="crud">
                                </avue-crud>
                                <el-image style="width: 100%; height: 100%" :src="url" fit="cover"></el-image>
                            </el-tab-pane>
                        </el-tabs>
                    </el-card>
                </div>
                <div class="dialogwarp_card">
                    <el-card class="box-card">
                        <div slot="header" class="clearfix">
                            <span>当前任务:</span>
                            <span>{{ title }}</span>
                        </div>
                        <div style="width: 100%;">
                            <p>请在下方输入您的审批意见:</p>
                            <el-input type="textarea" :rows="4" placeholder="请输入内容" v-model="opinionVal">
                            </el-input>
                        </div>
                        <div style="width: 100%;">
                            <p>审批意见附件:</p>
                            <el-upload drag action="https://jsonplaceholder.typicode.com/posts/" multiple
                                style="width: 100%;">
                                <i class="el-icon-upload"></i>
                                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
                            </el-upload>
                        </div>
                        <div style="width: 100%;">
                            <p>已上传审批文件:</p>
                            <el-card class="box-card">
                                <el-table :data="tableData" stripe style="width: 100%">
                                    <el-table-column prop="date" label="文件名">
                                    </el-table-column>
                                    <el-table-column prop="name" label="上传人  ">
                                    </el-table-column>
                                    <el-table-column prop="address" label="操作">
                                    </el-table-column>
                                </el-table>
                            </el-card>
                        </div>
                        <div style="margin-top: 20px;">
                            <el-button v-if="!isRefuse" type="primary" size="mini" @click="handelAgree">同意</el-button>
                            <el-button v-if="!isAgree" type="primary" size="mini" @click="handelRefuse">不同意</el-button>
                            <el-button v-if="isAgree && !isRefuse" type="primary" size="mini" @click="handelRevert"
                                v-for="item in btnList" :key="item">{{ item }}</el-button>
                            <el-button v-if="isRefuse" type="primary" size="mini" @click="handelExecute">执行</el-button>
                        </div>
                    </el-card>
                </div>
            </div>
        </el-dialog>
    </div>
</template>
<script>
export default {
    data() {
        return {
            outerVisible: false,
            destroyClose: true,
            activeName: 'first',
            fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
            url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
            title: '业务测试-申请-物品-审核',
            data: [
                {
                    name: '张三',
                    sex: '男'
                }, {
                    name: '李四',
                    sex: '女'
                }, {
                    name: '李四',
                    sex: '女'
                }, {
                    name: '李四',
                    sex: '女'
                }
            ],
            btnList: ['返回1', '返回1', '返回1'],
            isAgree: false,
            isRefuse: false,
            opinionVal: '',
            option: {
                menu: false,
                addBtn: false,
                refreshBtn: false,
                columnBtn: false,
                index: true,
                header: false,
                stripe: true,
                indexLabelClassName: '序号',
                column: [
                    { label: '任务名称', prop: 'name', minWidth: 120 },
                    { label: '执行操作', prop: 'sex', minWidth: 80 },
                    { label: '任务开始时间', prop: 'sex', minWidth: 140 },
                    { label: '审批意见', prop: 'sex', minWidth: 220, overHidden: true },
                    { label: '执行人', prop: 'sex', minWidth: 80 },
                    { label: '任务完成时间', prop: 'sex', minWidth: 140 },
                    { label: '已上传审批文件', prop: 'sex', minWidth: 220, overHidden: true },
                ]
            },
        }
    },
    methods: {
        closeDialog() {
            this.destroyClose = true
            this.outerVisible = false
        },
        handleClick(tab, event) {
            console.log(event)
        },
        handelAgree() {
            this.isAgree = !this.isAgree
            this.outerVisible = false
            console.log(this.isAgree)
        },
        handelRefuse() {
            if (!this.opinionVal) {
                this.$alert('当处理方式为不同意时,需要填写审批意见', '提示信息', {
                    confirmButtonText: '确定',
                }).then(() => {
                });
            } else {
                this.isRefuse = true
                this.isAgree = true
                this.outerVisible = false
                this.opinionVal = ''
            }
        },
        handelExecute() {
            this.outerVisible = false
            this.isAgree = false
            this.isRefuse = false
        },
        handelRevert() {
            this.outerVisible = false
            this.isAgree = false
        }
    }
}
</script>
<style lang="scss" scoped>
.dialogwarp {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    justify-content: space-between;
    height: 70vh;
    &_tab {
        width: 79%;
        &_card {
            width: 100%;
            height: 100%;
        }
    }
    &_card {
        // margin-left: 20px;
        width: 20%;
    }
}
/deep/ .el-upload,
/deep/ .el-upload-dragger {
    width: 100%;
    height: 120px;
}
/deep/ .el-upload-dragger .el-icon-upload {
    margin: 15px 0 16px;
}
</style>
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -2,22 +2,30 @@
  <el-container>
    <el-main>
      <basic-container>
        <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave"
          @row-update="rowUpdate" :before-open="beforeOpen" @row-del="rowDel" :page.sync="page"
          @refresh-change="refreshChange" @row-click="rowClick"
          @selection-change="selectChange">
          <template slot-scope="{row,index,type}" slot="selInputForm">
          <div style="margin-left: 75px">
            <el-input v-model="form.text" :size="size" style="width: 210px" :readonly="true" @focus="selectBtmType" :disabled="referType.disable"></el-input>
          </div>
        </template>
        <template slot="radio"
                slot-scope="{row}">
                    <el-radio v-model="selectRow"
                        :label="row.$index">&nbsp;
                    </el-radio>
        <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>
          </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"
@@ -31,76 +39,105 @@
            <avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable"
            ></avue-crud>
        </el-dialog>
        <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px">
          <original-range @rowchange="rowchange"></original-range>
          <span slot="footer" class="dialog-footer">
            <el-button @click="dialoghandelfalse">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="dialoghandeltrue">ç¡® å®š</el-button>
          </span>
        </el-dialog>
        <!-- <el-dialog :visible.sync="packageLinkBox" append-to-body title="查看链接类型" width="1000px">
          <original-link @rowLinkchange="rowLinkchange"></original-link>
          <span slot="footer" class="dialog-footer">
            <el-button @click="Linkdialoghandelfalse">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="Linkdialoghandeltrue">ç¡® å®š</el-button>
          </span>
        </el-dialog> -->
      </basic-container>
    </el-main>
    <el-aside>
      <basic-container class="itemForm">
        <el-tabs v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="属性项" name="attrTab">
            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
              <el-form-item label="属性编码">
                <el-input v-model="itemData.id" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="属性名称">
                <el-input v-model="itemData.name" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="属性类型">
                <el-input v-model="itemData.typeValue" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="标签">
                <el-input v-model="itemData.hashtag" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="默认值">
                <el-input v-model="itemData.defaultValue" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="允许为空">
                <el-switch v-model="itemData.nullable" :disabled="true"></el-switch>
              </el-form-item>
              <el-form-item label="长度">
                <el-input v-model="itemData.maxLength" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="描述">
                <el-input v-model="itemData.description" :disabled="true"></el-input>
              </el-form-item>
            </el-form>
          </el-tab-pane>
          <el-tab-pane label="参照" name="valueTab">
            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
              <el-form-item label="参照类型">
                <el-input v-model="itemData.referTypeValue" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="参照名称">
                <el-input v-model="itemData.referToName" :disabled="true"></el-input>
              </el-form-item>
            </el-form>
            <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-descriptions class="margin-top" :column="1" size="medium" border>
              <el-descriptions-item>
                <template slot="label">
                  ä½¿ç”¨å‚ç…§
                </template>
                {{ itemForm.itemData.referTypeValue ? '是' : '否' }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å‚照类型
                </template>
                {{ itemForm.itemData.referTypeValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å‚照名称
                </template>
                {{ itemForm.itemData.referToName }}
              </el-descriptions-item>
            </el-descriptions>
          </el-tab-pane>
          <el-tab-pane label="枚举" name="enumTab">
            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
              <el-form-item label="使用枚举">
                <el-switch v-model="itemData.usingDict" :disabled="true"></el-switch>
              </el-form-item>
              <el-form-item label="枚举类型">
                <el-input v-model="form.dictCode" :disabled="true"></el-input>
              </el-form-item>
            </el-form>
            <el-descriptions class="margin-top" :column="1" :size="small" border>
              <el-descriptions-item>
                <template slot="label">
                  ä½¿ç”¨æžšä¸¾
                </template>
                {{ itemForm.itemData.usingDict ? '是' : '否' }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  æžšä¸¾ç±»åž‹
                </template>
                {{ itemForm.itemData.dictCode }}
              </el-descriptions-item>
            </el-descriptions>
          </el-tab-pane>
        </el-tabs>
      </basic-container>
    </el-aside>
    <originalAdd ref="originalAdd" :attribute="attribute" @refreshTable="refreshChange"></originalAdd>
  </el-container>
</template>
@@ -112,52 +149,21 @@
  update, getPage, getApplyRange
} from "@/api/omd/OmdAttribute";
import { getDictionary } from "@/api/omd/enum";
export default {
  name: "original",
  data() {
    return {
      datas: [],
      itemData: {},
      activeName: 'attrTab',
      formAtrr: {},
      rouname: "",
      referType: {
        code: 'referType',
        key: '',
        value: '',
        display: false,
        title: '',
        disable: true
      },
      //值域下拉框数据
      Typelist: [],
      //版本数据
      banList: [],
      // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†æ•°æ®
      typeSelectList: [
        {
          label: "哈哈哈",
          value: 0
        },],
      // æ˜¯å¦ä¸ºç©º
      nullable: [],
      form: {
        text: ""
      },
      detailForm: {
        text: ""
      },
    return {
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 100
      },
      selectRow: '',
      data: [
      ],
      data: [],
      form:{},
      attribute: {
        nullable: true
      },
      option: {
        height: "550px",
        headerAlign: 'center',
@@ -165,7 +171,13 @@
        index: true,
        rowKey: 'id',
        tabs: true,
        stripe:true,
        indexFixed: false,
        menuWidth: 150,
        highlightCurrentRow: true,
        addBtn:false,
        editBtn:false,
        delBtn:false,
        column: [{
            label: '选择',
            prop: 'radio',
@@ -178,7 +190,8 @@
            prop: 'id',
            align: 'left',
            display: false,
            width: 200
            width: 200,
            required: true
          }, {
            label: '属性名称',
            prop: 'name',
@@ -200,10 +213,10 @@
            display: false,
            dicData: [{
              label: '是',
              value: 0
              value: 'true'
            }, {
              label: '否',
              value: 1
              value: 'false'
            }]
          },
          {
@@ -226,10 +239,10 @@
            labelWidth: 132,
            dicData: [{
              label: '否',
              value: 1
              value: 'false'
            }, {
              label: '是',
              value: 0
              value: 'true'
            }]
          },
          {
@@ -244,195 +257,6 @@
            type: "textarea",
            display: false
          },
        ],
        group: [
          {
            label: '属性项',
            prop: "index",
            column: [
              {
                label: '属性编号',
                prop: 'id',
                align: 'left',
              },
              {
                label: '属性名称',
                prop: 'name',
                align: 'left',
              },
              {
                label: '标签',
                prop: 'hashtag',
                hide: true
              }, {
                label: '属性类型字典码',
                prop: 'typeCode',
                display: false,
                value: 'attributeType'
              },
              {
                label: '属性类型',
                prop: 'typeKey',
                type: "select",
                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=attributeType',
                dicType: 'String',
                props: {
                  label: 'dictValue',
                  value: 'dictKey'
                },
                rules: [
                  {
                    required: true,
                    message: "请选择属性类型",
                    trigger: "click"
                  }
                ]
              },
              {
                label: '默认值',
                prop: 'defaultValue',
              },
              {
                label: '允许为空',
                prop: 'nullable',
                type: 'switch',
                hide: true,
                labelWidth: 132,
                dicData: [{
                  label: '否',
                  value: 1
                }, {
                  label: '是',
                  value: 0
                }]
              },
              {
                label: "长度",
                prop: "maxLength",
                hide: true
              },
              {
                label: '描述',
                prop: 'description',
                type: "textarea"
              },
            ]
          },
          {
            label: '参照',
            column: [
              {
                label: '参照类别',
                prop: 'referTypeCode',
                display: false,
                hide: true
              },{
                span: 12,
                label: '参照类别',
                prop: 'referTypeKey',
                type: "select",
                change: this.selectChange,
                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=referType',
                dicType: 'String',
                props: {
                  label: 'dictValue',
                  value: 'dictKey'
                },
                rules: [
                  {
                    required: true,
                    message: "请选择参照类别",
                    trigger: "click"
                  }
                ]
              },
              {
                prop: "selInput",
                placeholder: false,
                readonly: true,
                display: true,
                formslot: true,
              },
              // {
              //   label: "选择版本",
              //   prop: "banben",
              //   type: 'select',
              //   value: 0,
              //   change: this.selchange,
              //   display: true,
              //   dicData: [
              //     {
              //       label: '当前版本次',
              //       value: 0
              //     },
              //     {
              //       label: '最新版本次',
              //       value: 1
              //     }
              //   ]
              // },
              {
                //默认表格插槽
                prop: "default",
                span: 24,
                display: false
              }
            ]
          },
          {
            label: '枚举',
            column: [
              {
                label: '是否使用枚举',
                prop: 'isnot',
                type: 'switch',
                hide: true,
                labelWidth: 132,
                span: 8,
                dicData: [{
                  label: '否',
                  value: 1
                }, {
                  label: '是',
                  value: 0
                }]
              },
              {
                prop: 'text',
                type: 'input',
                placeholder: '请输入内容',
                hide: true,
                display: false
              },
              {
                prop: 'enumerationSelect',
                type: 'select',
                placeholder: '请选择',
                hide: true,
                span: 12,
                dicData: [
                  {
                    label: 'a',
                    value: 0
                  },
                  {
                    label: 'b',
                    value: 1
                  },
                  {
                    label: 'c',
                    value: 2
                  }
                ]
              },
              {
                label: '描述',
                prop: 'endesc',
                type: "textarea",
                labelWidth: 132,
              },
            ]
          }
        ]
      },
      applyRange: {
@@ -464,115 +288,32 @@
        },
        data: [],
        display: false,
      },
      itemForm:{
        itemData: {},
        activeName: 'referTab',
        form:{}
      }
    }
  },
  created() {
    const column =this.findObject(this.option.group,"referTypeKey")
    console.log(column);
  },
  methods: {
    rowLinkchange(row) {
      this.form.text = row.name
    },
    rowchange(row) {
      this.form.text = row.name
    },
    //值域类型选择
    addHandle() {
      this.packageBox = true
      if (this.Typelist.value == 0) {
        this.packageBox = true
        this.packageLinkBox = false
      } else if (this.Typelist.value == 1) {
        this.packageBox = false
        this.packageLinkBox = true
      }
    },
    // å€¼åŸŸä¸šåŠ¡ç±»åž‹å¯¹è¯æ¡†å–æ¶ˆ
    dialoghandelfalse() {
      this.packageBox = false;
      this.form.text = ""
    },
    //值域业务类型对话框确定
    dialoghandeltrue() {
      this.packageBox = false
    },
    // å€¼åŸŸé“¾æŽ¥ç±»åž‹å¯¹è¯æ¡†å–消
    Linkdialoghandelfalse() {
      this.packageLinkBox = false;
      this.form.text = ""
    },
    //值域链接类型对话框确定
    Linkdialoghandeltrue() {
      this.packageLinkBox = false
    },
    selectChange(val) {
       this.referType.key = val.value
      if (val.value == 'businessType'){
        this.referType.value = '业务类型'
      }
      if (val.value == 'linkType'){
        this.referType.value = '链接类型'
      }
      if(val.value){
        this.referType.disable = false
      }
    },
    selchange(val) {
      this.banList = val
      console.log(val);
    },
    refreshChange() {
      this.onLoad(this.pageParent, this.query);
    },
    beforeOpen(done, type) {
      done();
    addSave(){
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = {};
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(row.id);
        })
        .then(() => {
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.onLoad();
        });
    updateSave(){
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = this.attribute;
    },
    rowSave(row, done) {
      add(row).then(() => {
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        done(row)
        this.onLoad()
      }).catch((res) => {
        this.$message({
          type: "success",
          message: res
        });
      })
    },
    rowUpdate(row, index, done) {
      update(row).then(() => {
        this.onLoad()
        this.$message({
          type: "success",
          message: "修改成功!"
        });
        done(row)
    deleteSave(){
      remove(this.itemForm.itemData).then(res => {
        this.$message.success("删除成功");
      })
    },
    onLoad(page, params = {}) {
@@ -587,9 +328,9 @@
      })
    },
    rowClick(row) {
      this.itemData = row;
      this.itemForm.itemData = row;
      this.selectRow = row.$index;
      this.attribute = row;
    }
    ,selectBtmType(){
        this.referType.display = true;
@@ -603,11 +344,9 @@
          })
        }
        var oid = this.data[this.selectRow].oid;
        console.log(oid);
        getApplyRange(oid).then(res => {
            this.applyRange.data = res.data.data;
        })
        console.log("success");
        this.applyRange.display = true;
    },
    applyRangeClose(){
Source/UBCS-WEB/src/views/modeling/originalAdd.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,452 @@
<template>
    <el-container>
        <el-dialog title="元数据" :visible.sync="showSubmitDialog" append-to-body @close="closeSubmitDialog" width="50%"
            style="height: 115vh;">
            <!-- å…ƒæ•°æ®çš„增改弹窗 -->
            <el-form ref="form" :model="attribute" show-message="true" inline size="medium" label-suffix=":"
                class="attributeForm" :rules="rules" @resetFields="resetAttributeForm" status-icon="true">
                <el-form-item label="属性编号" label-width="100px" prop="id">
                    <el-input v-model="attribute.id" maxlength="15" show-word-limit type="text"></el-input>
                </el-form-item>
                <el-form-item label="属性名称" label-width="100px" prop="name">
                    <el-input v-model="attribute.name"></el-input>
                </el-form-item>
                <el-form-item label="属性类型" label-width="100px" prop="typeValue">
                    <el-select v-model="attribute.typeValue" placeholder="请选择属性类型" @change="typeSelectChange">
                        <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="标签" label-width="100px">
                    <el-input v-model="attribute.hashtag"></el-input>
                </el-form-item>
                <el-form-item label="默认值" label-width="100px">
                    <el-input v-model="attribute.defaultValue"></el-input>
                </el-form-item>
                <el-form-item label="允许为空" label-width="100px">
                    <el-switch v-model="attribute.nullable" active-text="允许" inactive-text="不允许"></el-switch>
                </el-form-item>
                <el-form-item label="长度" label-width="100px" prop="maxLength">
                    <el-input-number v-model="attribute.maxLength" :min="1" :max="4000" :step="1" controls-position="right"></el-input-number>
                </el-form-item>
                <el-form-item label="精度" label-width="100px" v-if="attribute.typeValue == 'VTDouble'">
                    <el-input-number v-model="attribute.precision" :min="1" :max="20" :step="1" controls-position="right" @change="changeNumber"></el-input-number>
                </el-form-item>
                <el-form-item label="描述" label-width="100px">
                    <el-input v-model="attribute.description" type="text"></el-input>
                </el-form-item>
                <el-tabs v-model="activeName" @tab-click="handleClick" stretch="true">
                    <el-tab-pane label="参照" name="referTab">
                        <el-form-item label="参照类型" label-width="100px">
                            <el-select v-model="attribute.referTypeKey" @change="referTypeSelectChange">
                                <el-option v-for="item in btmRefer.referTypeList" :key="item.value" :label="item.label"
                                    :value="item.value">
                                </el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="参照名称" label-width="100px">
                            <el-input v-model="attribute.referToName" @focus="openReferConfig" clearable="true"
                                :disabled="referToFlag" @clear="clearReferTo">
                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
                            </el-input>
                        </el-form-item>
                    </el-tab-pane>
                    <el-tab-pane label="枚举" name="enumTab">
                        <el-form-item label="枚举" label-width="100px">
                            <el-input v-model="attribute.dictValue" @focus="openEnumConfig" clearable="true">
                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
                            </el-input>
                        </el-form-item>
                        <el-form-item label="枚举项" label-width="100px">
                        </el-form-item>
                    </el-tab-pane>
                </el-tabs>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="submitAttribute">确定</el-button>
                <el-button @click="cancleSubmit">取消</el-button>
            </div>
            <!-- é€‰æ‹©å‚照时的弹窗 -->
            <el-dialog title="参照列表" :visible.sync="btmRefer.show" append-to-body @close="closeReferDialog" width="80%"
                style="height: 115vh;">
                <el-container>
                    <el-aside>
                        <basic-container>
                           <span class="el-dialog__title"> {{ domain.treeOption.title }} </span>
                            <div style="height:20px;"></div>
                            <avue-tree id="domain" :data="domain.data" :option="domain.treeOption" @node-click="nodeClick"
                                class="businessTree" style="height: 418px">
                                <span class="el-tree-node__label" slot-scope="{ node, data }">
                                    <span>
                                        <i class="el-icon-star-on"></i>
                                        {{ (node || {}).label }}
                                    </span>
                                </span>
                            </avue-tree>
                        </basic-container>
                    </el-aside>
                    <el-main>
                        <basic-container>
                            <avue-crud ref="btmTable" :option="btmRefer.option" :data="btmRefer.data" class="btmTable" @row-click="btmReferClick">
                                <template slot="radio" slot-scope="{row}">
                                    <el-radio v-model="btmRefer.selectRow" :label="row.$index">&nbsp;
                                    </el-radio>
                                </template>
                            </avue-crud>
                        </basic-container>
                    </el-main>
                </el-container>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="confirmBtm" size="small">确定</el-button>
                    <el-button @click="cancleBtm" size="small">取消</el-button>
                </div>
            </el-dialog>
            <!-- é€‰æ‹©æžšä¸¾æ—¶çš„弹窗 -->
            <el-dialog title="枚举列表" :visible.sync="enumRefer.show" append-to-body @close="closeEnumDialog" width="70%"
                style="height: 115vh;">
                <avue-crud ref="eunmTable" :option="enumRefer.option" :data="enumRefer.data" class="enumTable" @row-click="enumReferClick" :page.sync="enumRefer.enumPage">
                    <template slot="radio" slot-scope="{row}">
                        <el-radio v-model="enumRefer.selectRow" :label="row.$index">&nbsp;
                        </el-radio>
                    </template>
                </avue-crud>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="confirmEnum" size="small">确定</el-button>
                    <el-button @click="cancleEnum" size="small">取消</el-button>
                </div>
            </el-dialog>
        </el-dialog>
    </el-container>
</template>
<script>
import { getDictionary,getParentList } from '@/api/omd/enum'
import { initTree,btmPage } from '@/api/omd/btmType'
import { add} from '@/api/omd/OmdAttribute'
export default {
    name: 'originalAdd',
    props: {
        attribute: {
            type: Object
        },
    },
    data() {
        return {
            showSubmitDialog: false,
            // é»˜è®¤çš„页签
            activeName: 'referTab',
            // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†æ•°æ®
            typeList: [],
            // å‚照下拉框是否可用
            referToFlag: true,
            // è¡¨å•校验规则
            rules: {
                id: [
                    { required: true, message: '请输入属性编号', trigger: 'blur' },
                    { pattern: /^[A-Za-z]+$/, message: '属性编号只能为英文', trigger: 'blur' },
                    { min: 2, max: 15, message: '长度在2到15个字符', trigger: 'blur' }
                ],
                name: [
                    { required: true, message: '请输入属性名称', trigger: 'blur' }
                ],
                typeValue: [
                    { required: true, message: '请选择属性类型', trigger: 'change' }
                ],
                maxLength: [
                    { required: true, message: '需要指定长度', trigger: 'blur' }
                ]
            },
            // å‚照页面表格配置
            btmRefer: {
                show: false,
                btmPage: {
                    pageSize: 10,
                    currentPage: 1,
                    total: 100
                },
                option: {
                    height: 405,
                    addBtn: false,
                    refreshBtn: false,
                    columnBtn: false,
                    menu: false,
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan: 32,
                    searchShowBtn: false,
                    highlightCurrentRow: true,
                    column: [
                        {
                        label: '',
                        prop: 'radio',
                        width: 60,
                        hide: false
                    },
                    {
                        label: '英文名称',
                        prop: 'id',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }, {
                        label: '中文名称',
                        prop: 'name',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }]
                },
                // å‚照页面表格数据
                data: [],
                selectRow: '',
                selectItem: {},
                referTypeList: []
            },
            // æžšä¸¾å‚照表格配置
            enumRefer: {
                show: false,
                enumPage: {
                    pageSize: 10,
                    currentPage: 1,
                    total: 100
                },
                option: {
                    height: 360,
                    addBtn: false,
                    refreshBtn: false,
                    columnBtn: false,
                    selection: true,
                    menu: false,
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan: 32,
                    searchShowBtn: false,
                    highlightCurrentRow: true,
                    column: [{
                        label: '',
                        prop: 'radio',
                        width: 60,
                        hide: false
                    },{
                        label: '枚举代号',
                        prop: 'name',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }, {
                        label: '枚举名称',
                        prop: 'label',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }]
                },
                // æžšä¸¾å‚照表格数据
                data: [],
                enumDictionary: [],
                // é€‰å®šè¡Œ
                selectRow: '',
                selectItem: {}
            },
            domain: {
                data: [],
                treeOption: {
                    defaultExpandAll: true,
                    title: '领域服务树',
                    props: {
                        labelText: '',
                        label: 'name',
                        value: 'oid',
                    }
                }
            }
        }
    },
    created() {
        this.initAttributeTypeList();
        this.initAttributeReferTypeList();
    },
    methods: {
        closeSubmitDialog() {
            this.resetAttributeForm();
            this.showSubmitDialog = false;
        },
        resetAttributeForm() {
            this.attribute = {
                nullable: true,
                referTypeKey: '',
            };
            this.referToFlag = true;
            this.$refs.form.resetFields();
        },
        submitAttribute() {
            add(this.attribute).then(res => {
                this.$message.success("保存成功");
                this.showSubmitDialog = false;
                this.attribute = {};
                this.$emit('refreshTable');
            });
        },
        cancleSubmit() {
            this.closeSubmitDialog();
        },
        closeEnumDialog() {
            this.cancleEnum();
         },
        closeReferDialog() {
            this.cancleBtm();
        },
        confirmBtm() {
            this.attribute.referToId = this.btmRefer.selectItem.oid;
            this.attribute.referToName = this.btmRefer.selectItem.name;
            this.btmRefer.show = false;
        },
        cancleBtm() {
            this.btmRefer.selectItem = {};
            this.btmRefer.show = false;
            this.btmRefer.selectRow = '';
        },
        confirmEnum() {
            this.attribute.usingDict = true;
            this.attribute.dictCode = this.enumRefer.selectItem.name;
            this.attribute.dictValue = this.enumRefer.selectItem.label;
            this.enumRefer.show = false;
         },
        cancleEnum() {
            this.enumRefer.selectItem = {};
            this.enumRefer.show = false;
            this.enumRefer.selectRow = '';
        },
        // å‚照名称输入框获取焦点时的事件
        openReferConfig() {
            if (!this.attribute.referTypeKey) {
                this.$message.warning('请先选择参照的类型');
                this.referToFlag = true;
                return;
            }
            this.domain.data = [];
            this.btmRefer.data = [];
            initTree().then(res => {
                this.domain.data = res.data.data;
            })
            this.btmRefer.show = true;
        },
        // å‚照类型树的点击事件
        nodeClick(data) {
            // åŒºåˆ†ä¸šåŠ¡ç±»åž‹çš„æŸ¥è¯¢å’Œé“¾æŽ¥ç±»åž‹çš„æŸ¥è¯¢
            if(this.attribute.referTypeKey == 'btmType'){
                btmPage(this.btmRefer.btmPage.currentPage,this.btmRefer.btmPage.pageSize,{domain:data.id}).then(res => {
                    this.btmRefer.data = res.data.data.records;
                    this.btmRefer.btmPage.total = res.data.data.total;
                })
            }
            if(this.attribute.referTypeKey == 'linkType'){
            }
        },
        // æžšä¸¾ç±»åž‹è¾“入框获得焦点时的事件
        openEnumConfig() {
            getParentList(this.enumRefer.enumPage.currentPage,this.enumRefer.enumPage.pageSize).then(res => {
                this.enumRefer.enumPage.total = res.data.data.total;
                this.enumRefer.data = res.data.data.records;
            })
            this.enumRefer.show = true;
        },
        // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†é€‰æ‹©äº‹ä»¶
        typeSelectChange(value) {
            if (value == 'VTString') {
                this.$set(this.attribute,"maxLength",150)
            } else if (value == 'VTInteger') {
                this.$set(this.attribute,"maxLength",50)
            } else if (value == 'VTBoolean') {
                this.$set(this.attribute,"maxLength",5)
            } else if (value == 'VTDouble') {
                this.$set(this.attribute,"maxLength",26)
                this.$set(this.attribute,"precision",8)
            } else if (value == 'VTLong') {
                this.$set(this.attribute,"maxLength",150)
            } else if (value == 'VTDate' || value == 'VTTime' || value == 'VTDateTime') {
                this.$set(this.attribute,"maxLength",6)
            } else {
                this.$set(this.attribute,"maxLength",50)
            }
            this.attribute.typeCode = 'attributeType';
            this.attribute.typeKey = value;
        },
        referTypeSelectChange(value) {
            this.attribute.referTypeCode = 'attributeReferType';
            this.attribute.referTypeKey = value;
            this.referToFlag = false;
        },
        initAttributeTypeList() {
            getDictionary({ code: 'attributeType' }).then(res => {
                res.data.data.forEach(element => {
                    this.typeList.push(
                        { value: element.itemValue, label: element.itemName }
                    )
                });
            }).catch(() => {
                this.$message.error('属性类型没找到或者未定义')
            })
        },
        initAttributeReferTypeList(){
            getDictionary({ code: 'attributeReferType' }).then(res => {
                res.data.data.forEach(element => {
                    this.btmRefer.referTypeList.push(
                        { value: element.itemValue, label: element.itemName }
                    )
                });
            }).catch(() => {
                this.$message.error('参照类型没找到或者未定义')
            })
        },
        btmReferClick(row){
            this.btmRefer.selectItem = row;
            this.btmRefer.selectRow = row.$index;
        },
        enumReferClick(row){
            this.enumRefer.selectItem = row;
            this.enumRefer.selectRow = row.$index;
        },
        // å‚照名称点击清除数据
        clearReferTo(){
            this.$delete(this.attribute,'referToId');
            this.$delete(this.attribute,'referToName');
            this.btmRefer.selectItem = {};
            this.btmRefer.selectRow = '';
        },
        handleClick(tab){
            // å› ä¸ºåªèƒ½å‚照和枚举二选一。所以在切换的时候把属性给清空。
            this.$delete(this.attribute,'referTypeCode');
            this.$delete(this.attribute,'referTypeKey');
            this.$delete(this.attribute,'referTypeValue');
            this.$delete(this.attribute,'referToId');
            this.$delete(this.attribute,'referToName');
            this.$delete(this.attribute,'dictCode');
            this.$delete(this.attribute,'dictKey');
            this.$delete(this.attribute,'dictValue');
            this.$delete(this.attribute,'usingDict');
        }
    }
}
</script>
<style>
.btmTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
    display: none !important;
}
.enumTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
    display: none !important;
}
.attributeForm>.el-form-item>.el-form-item__content>.el-input>.el-input__inner {
    width: 200px;
}
</style>
Source/UBCS-WEB/vue.config.js
@@ -28,7 +28,8 @@
        //本地服务接口地址
        // target: 'http://localhost:37000',
        //target: 'http://192.168.3.7:37000',
        target: 'http://dev.vci-tech.com:37000',
        // target: 'http://dev.vci-tech.com:37000',
        target: 'http://192.168.1.51:37000/',
        //远程演示服务地址,可用于直接启动项目
        // target: 'https://saber.bladex.vip/api',
        ws: true,
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "localhost:8848";
    String NACOS_DEV_ADDR = "127.0.0.1:8848";
    /**
     * nacos prod åœ°å€
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import io.swagger.annotations.ApiModelProperty;
/**
 * è®°å½•集成属数据申请id
@@ -16,6 +17,11 @@
    /***
     * é›†å›¢ç¼–码
     */
    private String groupCode;
    /***
     * é”™è¯¯æ ‡è¯†ç 
     */
    private String code;
    /***
@@ -34,6 +40,11 @@
     * æ¶ˆæ¯
     */
    private String msg;
    /**
     * ç”³è¯·å•类型1:申请,2:更改
     */
    private  String operationType;
    public String getCode() {
        return code;
@@ -75,14 +86,32 @@
        this.msg = msg;
    }
    public String getOperationType() {
        return operationType;
    }
    public void setOperationType(String operationType) {
        this.operationType = operationType;
    }
    public String getGroupCode() {
        return groupCode;
    }
    public void setGroupCode(String groupCode) {
        this.groupCode = groupCode;
    }
    @Override
    public String toString() {
        return "DockingPreApplyCodeFormVO{" +
            "code='" + code + '\'' +
        return "DockingPreApplyFormDTO{" +
            "groupCode='" + groupCode + '\'' +
            ", code='" + code + '\'' +
            ", content='" + content + '\'' +
            ", dataOid='" + dataOid + '\'' +
            ", dataBtmName='" + dataBtmName + '\'' +
            ", msg='" + msg + '\'' +
            ", operationType='" + operationType + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java
@@ -2,6 +2,8 @@
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import java.util.List;
/***
 * è®°å½•集团分类信息
 * @author xiejun
@@ -29,6 +31,10 @@
     * çˆ¶çº§èŠ‚ç‚¹
     */
    private  String pid;
    /**
     * é›†å›¢åˆ†ç±»åŒ…含的模型视图
     */
    List<DockingPreViewModelDTO> dockingPreViewModelDTOList;
    public String getClassName() {
        return className;
@@ -62,6 +68,14 @@
        this.pid = pid;
    }
    public List<DockingPreViewModelDTO> getDockingPreViewModelDTOList() {
        return dockingPreViewModelDTOList;
    }
    public void setDockingPreViewModelDTOList(List<DockingPreViewModelDTO> dockingPreViewModelDTOList) {
        this.dockingPreViewModelDTOList = dockingPreViewModelDTOList;
    }
    @Override
    public String toString() {
        return "DockingPreClassifyDTO{" +
@@ -69,6 +83,7 @@
            ", nodeLink='" + nodeLink + '\'' +
            ", getNodeLinkName='" + getNodeLinkName + '\'' +
            ", pid='" + pid + '\'' +
            ", dockingPreViewModelDTOList=" + dockingPreViewModelDTOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java
@@ -1,6 +1,9 @@
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
import java.util.List;
/**
 * è®°å½•集成集团分类视图信息
@@ -27,7 +30,10 @@
     * æ•°æ®xinx
     */
    private  String impactList;
    /***
     * æ¨¡åž‹è§†å›¾åŒ…含的属性
     */
    private List<DockingPreMetaAttrDTO> dockingPreMetaAttrDTOList;
    public String getViewName() {
        return viewName;
@@ -53,12 +59,21 @@
        this.impactList = impactList;
    }
    public List<DockingPreMetaAttrDTO> getDockingPreMetaAttrDTOList() {
        return dockingPreMetaAttrDTOList;
    }
    public void setDockingPreMetaAttrDTOList(List<DockingPreMetaAttrDTO> dockingPreMetaAttrDTOList) {
        this.dockingPreMetaAttrDTOList = dockingPreMetaAttrDTOList;
    }
    @Override
    public String toString() {
        return "DockingPreViewModelVO{" +
        return "DockingPreViewModelDTO{" +
            "viewName='" + viewName + '\'' +
            ", sourceClassifyId='" + sourceClassifyId + '\'' +
            ", impactList='" + impactList + '\'' +
            ", dockingPreMetaAttrDTOList=" + dockingPreMetaAttrDTOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java
@@ -16,11 +16,15 @@
@ApiModel(value = "DockingPreApplyForm", description = "集团编码申请单记录对象")
@EqualsAndHashCode
public class DockingPreApplyForm extends BaseModel {
    /***
     * é›†å›¢ç¼–码
     */
    @ApiModelProperty(value = "集团编码")
    private String groupCode;
    /***
     * é”™è¯¯æ ‡è¯†ç 
     */
    @ApiModelProperty(value = "错误标识码")
    private String code;
    /***
@@ -43,4 +47,9 @@
     */
    @ApiModelProperty(value = "消息")
    private String msg;
    /**
     * ç”³è¯·å•类型1:申请,2:更改
     */
    @ApiModelProperty(value = "消息")
    private  String operationType;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java
@@ -1,5 +1,8 @@
package com.vci.ubcs.code.vo.pagemodel;
import io.swagger.annotations.ApiModelProperty;
import javax.xml.soap.SAAJResult;
/**
 * è®°å½•集成属数据申请id
@@ -15,6 +18,10 @@
    /***
     * é›†å›¢ç¼–码
     */
    private String  groupCode;
    /***
     * é”™è¯¯æ ‡è¯†ç 
     */
    private String code;
    /***
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java
@@ -1,5 +1,7 @@
package com.vci.ubcs.code.vo.pagemodel;
import java.util.List;
/**
 * è®°å½•集成集团分类信息
 * @author xiejun
@@ -27,6 +29,10 @@
     * çˆ¶çº§èŠ‚ç‚¹
     */
    private  String pid;
    /***
     * åˆ†ç±»æ¨¡åž‹è§†å›¾
     */
    private List<DockingPreViewModelVO> dockingPreViewModelVOList;
    public String getClassName() {
        return className;
@@ -60,13 +66,22 @@
        this.pid = pid;
    }
    public List<DockingPreViewModelVO> getDockingPreViewModelVOList() {
        return dockingPreViewModelVOList;
    }
    public void setDockingPreViewModelVOList(List<DockingPreViewModelVO> dockingPreViewModelVOList) {
        this.dockingPreViewModelVOList = dockingPreViewModelVOList;
    }
    @Override
    public String toString() {
        return "DockingPreClassifyDTO{" +
        return "DockingPreClassifyVO{" +
            "className='" + className + '\'' +
            ", nodeLink='" + nodeLink + '\'' +
            ", getNodeLinkName='" + getNodeLinkName + '\'' +
            ", pid='" + pid + '\'' +
            ", dockingPreViewModelVOList=" + dockingPreViewModelVOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java
@@ -1,4 +1,7 @@
package com.vci.ubcs.code.vo.pagemodel;
import java.util.List;
/**
 * è®°å½•集成集团分类视图信息
 * @author xiejun
@@ -24,8 +27,10 @@
     * æ•°æ®xinx
     */
    private  String impactList;
    /***
     * æ¨¡åž‹è§†å›¾åŒ…含的属性
     */
    private List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList;
    public String getViewName() {
        return viewName;
    }
@@ -50,12 +55,21 @@
        this.impactList = impactList;
    }
    public List<DockingPreMetaAttrVO> getDockingPreMetaAttrVOList() {
        return dockingPreMetaAttrVOList;
    }
    public void setDockingPreMetaAttrVOList(List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList) {
        this.dockingPreMetaAttrVOList = dockingPreMetaAttrVOList;
    }
    @Override
    public String toString() {
        return "DockingPreViewModelVO{" +
            "viewName='" + viewName + '\'' +
            ", sourceClassifyId='" + sourceClassifyId + '\'' +
            ", impactList='" + impactList + '\'' +
            ", dockingPreMetaAttrVOList=" + dockingPreMetaAttrVOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
@XStreamAlias("classify")
public class ClassifyVO {
    /**
     * åˆ†ç±»id
     */
    @XStreamAsAttribute
    private String id;
    /***
     * åˆ†ç±»åç§°
     */
    @XStreamAsAttribute
    private String name;
    /***
     * çˆ¶èŠ‚ç‚¹id
     */
    @XStreamAsAttribute
    private String pid;
    /***
     * åˆ†ç±»ä»£å·
     */
    @XStreamAsAttribute
    private String classCode;
    /***
     * æè¿°
     */
    @XStreamAsAttribute
    private  String description;
    /***
     * åˆ†ç±»é“¾æŽ¥è·¯å¾„
     */
    @XStreamAsAttribute
    private  String fullPathName;
    /***
     * åˆ†ç±»çŠ¶æ€
     */
    @XStreamAsAttribute
    private String lcStatus;
    /***
     * è§„则id
     */
    @XStreamAsAttribute
    private String codeRuleId;
    /***
     * æ˜¯å¦ä¸ºå¶å­èŠ‚ç‚¹
     */
    @XStreamAsAttribute
    private boolean isLeaf;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getClassCode() {
        return classCode;
    }
    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getFullPathName() {
        return fullPathName;
    }
    public void setFullPathName(String fullPathName) {
        this.fullPathName = fullPathName;
    }
    public String getLcStatus() {
        return lcStatus;
    }
    public void setLcStatus(String lcStatus) {
        this.lcStatus = lcStatus;
    }
    public String getCodeRuleId() {
        return codeRuleId;
    }
    public void setCodeRuleId(String codeRuleId) {
        this.codeRuleId = codeRuleId;
    }
    public boolean isLeaf() {
        return isLeaf;
    }
    public void setLeaf(boolean leaf) {
        isLeaf = leaf;
    }
    @Override
    public String toString() {
        return "ClassifyVO{" +
            "id='" + id + '\'' +
            ", name='" + name + '\'' +
            ", pid='" + pid + '\'' +
            ", classCode='" + classCode + '\'' +
            ", description='" + description + '\'' +
            ", fullPathName='" + fullPathName + '\'' +
            ", lcStatus='" + lcStatus + '\'' +
            ", codeRuleId='" + codeRuleId + '\'' +
            ", isLeaf=" + isLeaf +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
public class CodeRuleVO {
//    private String
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
@XStreamAlias("library ")
public class LibraryVO {
    @XStreamAsAttribute
    private String id;
    @XStreamAsAttribute
    private  String name;
    @XStreamImplicit
    private List<ClassifyVO>classify;
    private List<CodeRuleVO> coderule;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<ClassifyVO> getClassify() {
        return classify;
    }
    public void setClassify(List<ClassifyVO> classify) {
        this.classify = classify;
    }
    @Override
    public String toString() {
        return "LibraryVO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", classify=" + classify +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
public class QueryClassifyVO {
    /***
     *
     */
    private QueryData data;
    public QueryData getData() {
        return data;
    }
    public void setData(QueryData data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "QueryClassifyVO{" +
                "data=" + data +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.vci.ubcs.code.vo.webserviceModel.apply.UserVO;
@XStreamAlias("data")
public class QueryData {
    @XStreamAsAttribute
    private String systemId;
    private UserVO user;
    private QueryLibraryVO library ;
    public QueryLibraryVO getLibrary() {
        return library;
    }
    public void setLibrary(QueryLibraryVO library) {
        this.library = library;
    }
    public String getSystemId() {
        return systemId;
    }
    public void setSystemId(String systemId) {
        this.systemId = systemId;
    }
    public UserVO getUser() {
        return user;
    }
    public void setUser(UserVO user) {
        this.user = user;
    }
    @Override
    public String toString() {
        return "QueryData{" +
                "systemId='" + systemId + '\'' +
                ", library=" + library +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
@XStreamAlias("library")
public class QueryLibraryVO {
    @XStreamAsAttribute
    private String id;
    @XStreamImplicit
    private List<String> classifyid;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public List<String> getClassifyid() {
        return classifyid;
    }
    public void setClassifyid(List<String> classifyid) {
        this.classifyid = classifyid;
    }
    @Override
    public String toString() {
        return "LibraryVO{" +
                "id='" + id + '\'' +
                ", classifyid=" + classifyid +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
public class ResultClassifyVO {
   private ResultData resultData;
    public ResultData getResultData() {
        return resultData;
    }
    public void setResultData(ResultData resultData) {
        this.resultData = resultData;
    }
    @Override
    public String toString() {
        return "ResultClassifyVO{" +
                "resultData=" + resultData +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("data")
public class ResultData {
    @XStreamAlias("errorid")
    private  String errorid;
    @XStreamAlias("msg")
    private String msg;
    private LibraryVO library ;
    public LibraryVO getLibrary() {
        return library;
    }
    public void setLibrary(LibraryVO library) {
        this.library = library;
    }
    public String getErrorid() {
        return errorid;
    }
    public void setErrorid(String errorid) {
        this.errorid = errorid;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    @Override
    public String toString() {
        return "ResultData{" +
                "code='" + errorid + '\'' +
                ", msg='" + msg + '\'' +
                ", library=" + library +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingGroupDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.vci.ubcs.code.vo.webserviceModel.group;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/***
 * é›†å›¢ç”³è¯·æŽ¥å£å‚数信息
 */
@Data
public class DockingGroupDataVO {
    /***
     * ç³»ç»Ÿæ ‡è¯†
     */
    private String sysName;
    /**
     * ä¸šåŠ¡æ•°æ®
     */
    private List<DockingMainData> mainData;
    @Override
    public String toString() {
        return "DockingGroupDataVO{" +
            "sysName='" + sysName + '\'' +
            ", mainData=" + mainData +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingMainData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.vci.ubcs.code.vo.webserviceModel.group;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
@Data
public class DockingMainData {
    /**
     * ç”³è¯·å•号
     */
    private String  applyId;
    /***
     * å¯†çº§
     */
    private  String secretLevel;
    /***
     * ç”³è¯·å•位代码(如131460)
     */
    private  String applyEntId;
    /***
     * ç”³è¯·äººå‘˜ç¼–码(用户名,如85645824)
     */
    private  String createBy;
    /***
     * åˆ†ç±»åç§°
     */
    private String  className;
    /***
     * æ¨¡åž‹è§†å›¾ä¿¡æ¯
     */
    private List<DockingViewVO> viewInfos;
    @Override
    public String toString() {
        return "DockingMainData{" +
            "applyId='" + applyId + '\'' +
            ", secretLevel='" + secretLevel + '\'' +
            ", applyEntId='" + applyEntId + '\'' +
            ", createBy='" + createBy + '\'' +
            ", className='" + className + '\'' +
            ", viewInfos=" + viewInfos +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingViewVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.vci.ubcs.code.vo.webserviceModel.group;
import lombok.Data;
import java.util.List;
import java.util.Map;
/***
 * æ¨¡åž‹è§†å›¾ä¿¡æ¯
 */
@Data
public class DockingViewVO {
    /**
     * æ¨¡åž‹è§†å›¾åç§°
     */
    private  String viewName;
    /**
     * å±žæ€§å¯¹è±¡ä¿¡æ¯
     */
    private List<Map<String,Object>> viewValue;
    @Override
    public String toString() {
        return "DockingViewVO{" +
            "viewName='" + viewName + '\'' +
            ", viewValue=" + viewValue +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/ResultDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.vci.ubcs.code.vo.webserviceModel.group;
import lombok.Data;
@Data
public class ResultDataVO<T> {
    /***
     * æ¶ˆæ¯
     */
    private String code;
    private String msg;
    private T data;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataObjectVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.vci.ubcs.code.vo.webserviceModel.group.result;
public class DataObjectVO {
    private String msg;
    private String code;
    private DataVO data;
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public DataVO getData() {
        return data;
    }
    public void setData(DataVO data) {
        this.data = data;
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.vci.ubcs.code.vo.webserviceModel.group.result;
public class DataVO {
    private String applyId;
    private String customCoding;
    private String formState;
    public String getApplyId() {
        return applyId;
    }
    public void setApplyId(String applyId) {
        this.applyId = applyId;
    }
    public String getCustomCoding() {
        return customCoding;
    }
    public void setCustomCoding(String customCoding) {
        this.customCoding = customCoding;
    }
    public String getFormState() {
        return formState;
    }
    public void setFormState(String formState) {
        this.formState = formState;
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/ResultDataObject.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.vci.ubcs.code.vo.webserviceModel.group.result;
import java.util.List;
public class ResultDataObject {
    /**
     * çŠ¶æ€ç     1:成功;2:失败
     */
    private String code;
    /**
     * æŽ¥å£è°ƒç”¨ç»“æžœ    æˆåŠŸï¼›å¤±è´¥åŽŸå› 
     */
    private String msg;
    /***
     * æ•°æ®å¯¹è±¡
     */
    private List<DataObjectVO> data;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public List<DataObjectVO> getData() {
        return data;
    }
    public void setData(List<DataObjectVO> data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "ResultDataObject{" +
            "code='" + code + '\'' +
            ", msg='" + msg + '\'' +
            ", data=" + data +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -36,6 +37,7 @@
     */
    @ApiModelProperty(value = "主键")
    @NotNull
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -27,6 +28,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -25,6 +26,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -26,6 +27,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -61,12 +62,13 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -25,6 +26,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -26,6 +27,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -24,6 +25,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -26,6 +27,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -105,6 +106,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -24,6 +25,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -27,6 +28,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
@@ -5,6 +5,21 @@
 */
public class MdmBtmTypeConstant {
    /**
     * çŠ¶æ€
     */
    public static final String CODE_STATUS_FILED = "lcstatus";
    /**
     * é›†å›¢ç çš„字段
     */
    public static final String CODE_GROUP_FIELD = "groupcode";
    /**
     * åˆ†ç±»çš„主键字段
     */
    public static final String CODE_CLASSIFY_OID_FIELD = "codeclsfid";
    /**
     * ä¸»é¢˜åº“分类
     */
@@ -157,17 +172,30 @@
    public static final String DOCKING_PRE_JINTEGMAPCONFIG = "jintegmapconifg";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     * é›†æˆé›†å›¢åˆ†ç±»ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JCLASS = "jclass";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     * é›†æˆé›†å›¢æ¨¡åž‹å±žæ€§ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JMETAATRR = "jmetaattr";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     * é›†æˆå±žæ€§å–值范围关系业务类型
     */
    public static final String DOCKING_PRE_JRANGE = "jrange";
    /**
     * é›†æˆé›†å›¢ç”³è¯·å•业务类型
     */
    public static final String DOCKING_PRE_JAPPLYFORM = "japplyform";
    /**
     * é›†æˆé›†å›¢æ¨¡åž‹å±žæ€§ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JVIEWMODEL = "jviewmodel";
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java
@@ -1,14 +1,27 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.entity.DockingPreApplyForm;
import com.vci.ubcs.code.feign.IMdmInterJtClient;
import com.vci.ubcs.code.service.IDockingPreApplyFormService;
import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
import com.vci.ubcs.code.service.IDockingPreClassifyService;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyFormVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.wrapper.DockingPreApplyFormWrapper;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
@@ -24,7 +37,7 @@
 */
@RestController
@AllArgsConstructor
@RequestMapping("ubcs-code/DockingPreApplyCode")
@RequestMapping("/DockingPreApplyCode")
@Api(value = "集团属性映射配置", tags = "集团属性映射配置接口")
public class DockingPreApplyCodeController {
    /**
@@ -37,6 +50,20 @@
    private final IDockingPreAttrRangeService dockingPreAttrRangeService;
    /***
     * åˆ†ç±»å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final IDockingPreClassifyService dockingPreClassifyService;
    /***
     * å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final IDockingPreApplyFormService dockingPreApplyFormService;
    /**
     * æ ¹æ®ä¸»æ•°æ®ç¼–码oid获取集团属性映射信息
     * @param codeClassifyId ä¸»é”®
@@ -44,9 +71,9 @@
     */
    @GetMapping("/gridAttrMapping")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "分类主键获取与集团模型属性映射关系", notes = "传入codeClassifyId")
    public R getDockingAttrMappingsByCodeClassId(String codeClassifyId){
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingService.getdockingAttrMappingsByCodeclassId(codeClassifyId);
    @ApiOperation(value = "分类主键获取与集团模型属性映射关系", notes = "传入主数据:codeClassifyId,集团分类:sourceClassifyId")
    public R getDockingAttrMappingsByCodeClassId(String codeClassifyId,String sourceClassifyId){
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingService.getDockingAttrMappingsByCodeClassifyId(codeClassifyId,sourceClassifyId);
        return R.data(dockingPreAttrMappingVOList);
    }
@@ -64,11 +91,23 @@
    }
    /**
     * ç”³è¯·å•查询 è‡ªå®šä¹‰åˆ†é¡µ
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入dockingPreApplyForm")
    public R<IPage<DockingPreApplyFormVO>> page(DockingPreApplyForm dockingPreApplyForm, Query query) {
        IPage<DockingPreApplyForm> pages = dockingPreApplyFormService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingPreApplyForm));
        return R.data(DockingPreApplyFormWrapper.build().pageVO(pages));
    }
    /**
     * ä¿å­˜å±žæ€§æ˜ å°„配置组件
     * @param dockingPreAttrMappingVOList å±žæ€§æ˜ å°„配置数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/batchAddSave")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "保存属性映射配置", notes = "dockingPreAttrMappingVOList")
    public R batchSave(@Valid @RequestBody List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList){
        List<DockingPreAttrMappingVO> dockingPreAttrRangeVOS=new ArrayList<>();
        try {
@@ -79,4 +118,30 @@
        return R.data(dockingPreAttrRangeVOS);
    }
    /**
     * å‚ç…§æ ‘ é›†å›¢åˆ†ç±»ï¼ˆæ˜¯å¦åŒ…含属性)
     * @param treeQueryObject æ ‘形查询对象 conditionMap å­˜ä¸Š codeclsfid=主数据的分类oid
     * @return ä¸»é¢˜åº“分类显示树
     */
    @GetMapping("/referTree")
    public List<Tree> referTree(@RequestBody TreeQueryObject treeQueryObject)  {
        return dockingPreClassifyService.treeCompanyGroupClassify(treeQueryObject);
    }
    /***
     * ç”³è¯·é›†å›¢ç¼–码
     * @return
     */
    @PostMapping( "/applyGroupCode")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "集团码申请", notes = "dockingPreAttrMappingVOList")
    public R applyGroupCode(String oids,String btmName){
        List<BaseModelVO> BaseModelVOs=new ArrayList<>();
        try {
            return dockingPreAttrMappingService.applyGroupCode(oids,btmName);
        }catch (Throwable e){
            return R.fail("集团码申请失败:"+e.getMessage());
        }
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/IMdmInterJtClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.vo.webserviceModel.group.DockingGroupDataVO;
import com.vci.ubcs.code.vo.webserviceModel.group.result.ResultDataObject;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.constraints.NotNull;
/**
 * ä¸Žé›†å›¢ç³»ç»Ÿé›†æˆçš„调用器
 * @author xiejun
 * @date 2023-5-24
 */
@FeignClient(name = "groupCOdeIntegration",
    url = "${docking.apply.jtInterUrl:http://116.205.176.185:8099}",
    path = "")
public interface IMdmInterJtClient {
    /**
     * mdm调用集团mdm申请集团编码
     * @param dockingGroupDataVO AO/TO的信息
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/externalMainData/receiveAddApply")
    ResultDataObject receiveAddApply(@NotNull @RequestBody DockingGroupDataVO dockingGroupDataVO);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmInterJtClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
package com.vci.ubcs.code.feign;
public class MdmInterJtClient {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java
@@ -1,7 +1,29 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.DockingPreClassify;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface DockingPreClassifyMapper extends BaseMapper<DockingPreClassify> {
    /**
     * æŸ¥æ‰¾æ ‘形结构
     *
     * @param oid åˆ†ç±»çš„主键
     * @return æ•°æ®é›†åˆ
     */
    List<DockingPreClassify> selectCompanyGroupClassifyVOByTree(@Param("oid") String oid);
    /**
     * æ ¡éªŒæ˜¯å¦åŒ…含子节点
     *
     * @param oid åˆ†ç±»çš„主键
     * @return true è¡¨ç¤ºåŒ…含
     */
    Boolean checkHasChild(@Param("oid") String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java
@@ -3,7 +3,10 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import org.springblade.core.tool.api.R;
import java.util.List;
/**
@@ -18,7 +21,7 @@
     * @param codeClassifyId
     * @return
     */
    List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId);
    List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId);
    /**
     * ä½¿ç”¨æŸ¥è¯¢å°è£…器来查询
@@ -33,4 +36,13 @@
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    public  List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingVO> dockingPreAttrMappingDTOS)throws Exception;
    /***
     * ä¸»æ•°æ®åƒé›†å›¢ç”³è¯·ç¼–码
     * @param oids
     * @param btmName
     * @return
     * @throws Exception
     */
    public R applyGroupCode(String oids, String btmName)throws Throwable;
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java
@@ -2,6 +2,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingPreClassify;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import java.util.List;
/***
 * é›†å›¢åˆ†ç±»æœåŠ¡
@@ -9,4 +13,13 @@
 * @date 2022-05-23
 */
public interface IDockingPreClassifyService extends IService<DockingPreClassify> {
    /**
     * æŸ¥è¯¢ä¸»é¢˜åº“分类 æ ‘
     * @param treeQueryObject æ ‘查询对象
     * @return ä¸»é¢˜åº“分类 æ˜¾ç¤ºæ ‘
     */
    List<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
import java.util.List;
@@ -22,4 +23,8 @@
     */
    public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper);
    /***
     * æ ¹æ®viewModel查询模型视图属性
     */
    List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingPreViewModel;
import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
import java.util.List;
/***
 * é›†å›¢åˆ†ç±»æ¨¡åž‹æœåŠ¡
@@ -9,4 +12,11 @@
 * @date 2023-05-23
 */
public interface IDockingPreViewModelService extends IService<DockingPreViewModel> {
    /**
     * æ ¹æ®åˆ†ç±»id查询分类视图
     * @param classifyId é›†å›¢åˆ†ç±»id
     * @param isContainAttr æ˜¯å¦æŸ¥è¯¢å±žæ€§ï¼Œtrue: æ˜¯ï¼Œfalse,否
     * @return è¿”回分类模型视图集合对象
     */
    List<DockingPreViewModelVO> selectDockingPreViewModelByClassId(String classifyId, boolean isContainAttr);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -1,28 +1,43 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.entity.DockingPreMetaAttr;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.feign.IMdmInterJtClient;
import com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper;
import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.vo.webserviceModel.group.DockingGroupDataVO;
import com.vci.ubcs.code.vo.webserviceModel.group.DockingMainData;
import com.vci.ubcs.code.vo.webserviceModel.group.DockingViewVO;
import com.vci.ubcs.code.vo.webserviceModel.group.ResultDataVO;
import com.vci.ubcs.code.vo.webserviceModel.group.result.DataObjectVO;
import com.vci.ubcs.code.vo.webserviceModel.group.result.DataVO;
import com.vci.ubcs.code.vo.webserviceModel.group.result.ResultDataObject;
import com.vci.ubcs.code.wrapper.DockingPreAttrMappingWrapper;
import com.vci.ubcs.code.wrapper.DockingPreAttrRangeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/***
@@ -32,31 +47,70 @@
 */
@Service
public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService {
    @Value("${docking.apply.unitCode:410-MDM}")
    public String dockingApplyUnitCode;
    @Autowired(required = false)
    private  IMdmInterJtClient mdmInterJtClient;
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§å±žæ€§æ˜ å°„配置服务
     */
    @Autowired(required = false)
    DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
    private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
    /***
     * ä¸šåŠ¡æ•°æ®å±žæ€§æœåŠ¡
     */
    @Autowired(required = false)
    private MdmEngineService mdmEngineService;
    /***
     * é›†å›¢å±žæ€§æœåŠ¡
     */
    @Autowired(required = false)
    IDockingPreMetaAttrService dockingPreMetaAttrService;
    private IDockingPreMetaAttrService dockingPreMetaAttrService;
    /***
     * å±žæ€§å–值范围服务
     */
    @Autowired(required = false)
    IDockingPreAttrRangeService dockingPreAttrRangeService;
    private IDockingPreAttrRangeService dockingPreAttrRangeService;
    /***
     * é›†å›¢åˆ†ç±»æœåŠ¡
     */
    @Autowired(required = false)
    private IDockingPreClassifyService dockingPreClassifyService;
    /***
     * ç”³è¯·å•服务
     */
    @Autowired(required = false)
    private IDockingPreApplyFormService dockingPreApplyFormService;
    /***
     * æ¨¡åž‹è§†å›¾å•服务
     */
    @Autowired(required = false)
    private IDockingPreViewModelService dockingPreViewModelService;
    /***
     * æ ¹æ®ä¸»æ•°æ®åˆ†ç±»ä¸»é”®èŽ·å–åˆ†ç±»ä¿¡æ¯é…ç½®
     * @param codeClassifyId
     * @return
     */
    @Override
    public List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId) {
    public List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId) {
        VciBaseUtil.alertNotNull(codeClassifyId,"主数据分类主键");
        //VciBaseUtil.alertNotNull(sourceClassifyId,"集团分类主键");
        //首先获取分类模板属性,然后与属性配置坐比较,以防被有增删属性的可能
        List<DockingPreMetaAttr> dockingPreMetaAttrList=    dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,codeClassifyId));
        List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, codeClassifyId));
        List<DockingPreMetaAttr> dockingPreMetaAttrList=    dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId));
        List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, sourceClassifyId).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
        Map<String/**属性主键**/, DockingPreAttrMapping> dockingPreAttrMappingMap = dockingPreAttrMappings.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getMetaListId(), t -> t));
        List<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>();
@@ -66,6 +120,7 @@
            if(dockingPreAttrMappingMap.containsKey(attrOid)){
                dockingPreAttrMapping=    dockingPreAttrMappingMap.get(attrOid);
            }else{
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
                dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//属性主键
                dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//英文名称
                dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//中文名称
@@ -165,6 +220,120 @@
        }
        return dockingPreAttrMappingVOList;
    }
    private String code="";
    private String msg="";
    /***
     * åƒé›†å›¢ç”³è¯·é›†å›¢ç 
     * @param oids
     * @param btmName
     * @return
     * @throws Exception
     */
    @Override
    @Transactional
    public R applyGroupCode(String oids, String btmName) throws VciBaseException {
        List<BaseModel> updateCbos=new ArrayList<BaseModel>();
        List<DockingPreApplyForm> dockingPreAttrMappings=new ArrayList<>();
        VciBaseUtil.alertNotNull(oids,"选择的数据");
        VciBaseUtil.alertNotNull(btmName,"业务类型");
        //List<BaseModelVO> codeWupins=mdmEngineService.listByIds(VciBaseUtil.str2List(oids));
        List<BaseModelVO> dataModelList = new ArrayList<>();
        if (!CollectionUtils.isEmpty(dataModelList)) {
            DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
            //申请单和申请单对象关系
            Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
            Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
            Map<String, BaseModelVO> baseModelVOMap = new HashMap<String, BaseModelVO>();
            //组织数据
            dockingGroupDataVO = queryApplycodeDataObjects(dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
            ResultDataObject resultDataObject = mdmInterJtClient.receiveAddApply(dockingGroupDataVO);
            code = resultDataObject.getCode();
            msg = resultDataObject.getMsg();
            if ("1".equals(resultDataObject.getCode())) {//结果正确的情况
                List<DataObjectVO> dataObjectVOList = resultDataObject.getData();
                dataObjectVOList.stream().forEach(dataObject -> {
                    boolean isEditDatas = false;
                    String code2 = dataObject.getCode();
                    DataVO data2 = dataObject.getData();
                    String applyId = data2.getApplyId();//申请单id
                    String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//集团码段
                    msg = dataObject.getMsg();
                    if (code2.equals("1")) {//结果正确的情况
                        if (!"".equals(customCoding)) {
                            isEditDatas = true;
                        }
                    }
                    //需要修改的申请单数据
                    if (editDockingPreApplyFormMap.containsKey(applyId)) {
                        DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
                        dockingPreApplyForm.setCode(code2);
                        dockingPreApplyForm.setMsg("申请:" + msg);
                        dockingPreApplyForm.setGroupCode(customCoding);
                        ObjectMapper mp = new ObjectMapper();
                        String writeValueAsString = null;
                        try {
                            writeValueAsString = mp.writeValueAsString(dataObject);
                            dockingPreApplyForm.setContent(writeValueAsString);
                        } catch (JsonProcessingException e) {
                        }
                    }
                    //新增的申请单数据
                    if (addDockingPreApplyFormMap.containsKey(applyId)) {
                        DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
                        dockingPreApplyForm.setCode(code2);
                        dockingPreApplyForm.setMsg("申请:" + msg);
                        dockingPreApplyForm.setGroupCode(customCoding);
                        ObjectMapper mp = new ObjectMapper();
                        String writeValueAsString = null;
                        try {
                            writeValueAsString = mp.writeValueAsString(dataObject);
                            dockingPreApplyForm.setContent(writeValueAsString);
                        } catch (JsonProcessingException e) {
                        }
                    }
                    //如果有集团码则更新数据
                    if (isEditDatas) {
                        if (baseModelVOMap.containsKey(applyId)) {
                            BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
                            BaseModel baseModel = new BaseModel();
                            BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                            baseModelVO.setId(customCoding);
                            updateCbos.add(baseModel);//更新数据集团code
                        }
                    }
                });
            } else {
                editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                    dockingPreApplyForm.setCode("2");
                    dockingPreApplyForm.setMsg("申请:" + msg);
                    dockingPreApplyForm.setContent("");
                    dockingPreApplyForm.setGroupCode("");
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
                });
                addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                    dockingPreApplyForm.setCode("2");
                    dockingPreApplyForm.setMsg("申请:" + msg);
                    dockingPreApplyForm.setContent("");
                    dockingPreApplyForm.setGroupCode("");
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
                });
            }
            if (editDockingPreApplyFormMap.size() > 0) {
                dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//添加申请单数据
            }
            if (addDockingPreApplyFormMap.size() > 0) {
                dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//需要修改的申请单数据
            }
            //保存表单数据
            dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
            //mdmEngineService.saveBatch(updateCbos);//保存数据
        }
        return R.success("申请接口调用成功");
    }
    /***
     * å¯¹è±¡è½¬æ¢
@@ -184,4 +353,237 @@
            }
            return dockingPreAttrMappingVOList;
        }
    /**
     * ç»„织数据
     * */
    private DockingGroupDataVO queryApplycodeDataObjects(List<BaseModelVO> codeWupins,Map<String,DockingPreApplyForm>   addDockingPreApplyFormMap,Map<String,DockingPreApplyForm>  editDockingPreApplyFormMap,Map<String,BaseModelVO>  codeWupinMap) throws VciBaseException{
        try {
            String curUserName = AuthUtil.getUser().getUserName();
            //申请的数据
            List<DockingMainData> mainDataList=new ArrayList<DockingMainData>();
            for (BaseModelVO dataBusinessObject : codeWupins) {
                String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
                String codeclsfid = dataBusinessObject.getData().getOrDefault("codeclsfid","");
                String btmName = dataBusinessObject.getBtmname();
                String oid = dataBusinessObject.getOid();
                DockingPreApplyForm dockingPreApplyForm = new DockingPreApplyForm();
                String dataOid = dataBusinessObject.getOid();
                Map<String, String> conditionsMap = new HashMap<String, String>();
                List<DockingPreApplyForm> applyFormObjects = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().eq(DockingPreApplyForm::getDataOid, dataOid).eq(DockingPreApplyForm::getOperationType, "1"));
                String apllyCode = "";
                if (!CollectionUtils.isEmpty(applyFormObjects)) {
                    dockingPreApplyForm = applyFormObjects.get(0);
                    apllyCode = dockingPreApplyForm.getId();
                    editDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//申请单和申请单对象关系
                } else {
                    apllyCode = dockingApplyUnitCode + "-" + format;
                    dockingPreApplyForm.setId(apllyCode);
                    dockingPreApplyForm.setName("");
                    dockingPreApplyForm.setOperationType("2");
                    dockingPreApplyForm.setDescription(dataBusinessObject.getDescription());//获取数据描述信息
                    dockingPreApplyForm.setDataOid(oid);
                    dockingPreApplyForm.setDataBtmName(btmName);
                    addDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//申请单和申请单对象关系
                }
                codeWupinMap.put(apllyCode, dataBusinessObject);//申请单和对应数据关系
                conditionsMap = new HashMap<String, String>();
                conditionsMap.put("jtargetclsfid", codeclsfid);//视图oid
                List<DockingPreAttrMapping> dockingPreAttrMappingList = this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid));
                if (CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
                    throw new Exception("根据所选的数据,没有找到对应的集团分类设置,请核对!");
                }
                String jsourceclsfid = dockingPreAttrMappingList.get(0).getSourceClassifyId();
                //获取数据模型分类信息
                DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(jsourceclsfid);
                DockingMainData mainData = new DockingMainData();
                mainData.setApplyEntId(dockingApplyUnitCode);//申请单位代码
                mainData.setApplyId(apllyCode);//申请单号
                mainData.setClassName(dockingPreClassify.getGetNodeLinkName());//分类名称
                mainData.setCreateBy(curUserName);//
                mainData.setSecretLevel("内部");//密级,默认为内部
                mainData.setViewInfos(getviewInfos(dockingPreClassify, dataBusinessObject));//获取视图模型
                mainDataList.add(mainData);
            }
            //根据数据模型,组织所需要数据
            DockingGroupDataVO postParameters=new DockingGroupDataVO();
            postParameters.setSysName("420-CODE");//系统标识
            postParameters.setMainData(mainDataList);//
            return postParameters;
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            throw new VciBaseException("查询数据出错"+e);
        }
    }
    /**
     * èŽ·å–æ¨¡åž‹è§†å›¾
     * @param dockingPreClassify
     * @param dataBusinessObject
     * @throws VciBaseException
     */
    private List<DockingViewVO>getviewInfos(DockingPreClassify dockingPreClassify,BaseModelVO dataBusinessObject) throws Throwable{
        List<DockingViewVO> viewInfoList=new ArrayList<>();
        String jclassOid=    dockingPreClassify.getOid();
        Map<String,String>conditionsMap=new HashMap<String, String>();
        conditionsMap.put("jsourceclsfid",jclassOid);
        conditionsMap.put("jviewname","编码视图");//申请只传编码视图
        //根据分类查询模型视图对象
        List<DockingPreViewModel> dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid).eq(DockingPreViewModel::getViewName,"编码视图"));
        for (DockingPreViewModel dockingPreViewModel : dockingPreViewModels) {
            //组织数据属性信息
            DockingViewVO viewInfo=new DockingViewVO();
            viewInfo.setViewName(dockingPreViewModel.getViewName());//视图名称
            viewInfo.setViewValue(getViewValueList(dockingPreViewModel,jclassOid,dataBusinessObject));//视图
            viewInfoList.add(viewInfo);
        }
        return viewInfoList;
    }
    /***
     * èŽ·å–é…ç½®ä¿¡æ¯
     * @param dockingPreViewModel
     * @param jclassOid
     * @param dataBusinessObject
     * @return
     * @throws VciBaseException
     */
    private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModelVO dataBusinessObject) throws Throwable{
        //构造模型视图数据
        List<Map<String, Object>> viewValueList=new ArrayList<Map<String,Object>>();
        String oid = dockingPreViewModel.getOid();
        Map<String,String> dataValueMap=dataBusinessObject.getData();
        String codeClassifyId=dataValueMap.get("codeclsfid");
        Map<String,String>conditionsMap=new HashMap<String, String>();
        List<DockingPreAttrMapping> dockingPreAttrMappingList = this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda()
            .eq(DockingPreAttrMapping::getSourceClassifyId, jclassOid).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
        if(CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
            return viewValueList;
        }
        Map<String,DockingPreAttrMapping> jintegmappconfigMap=new HashMap<String, DockingPreAttrMapping>();
        for (DockingPreAttrMapping businessObject : dockingPreAttrMappingList) {
            jintegmappconfigMap.put(businessObject.getSourceAttrKey(), businessObject);
        }
        List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(
            Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,dockingPreViewModel.getOid())
                .eq(DockingPreMetaAttr::getSourceClassifyId,dockingPreViewModel.getSourceClassifyId()));
        Map<String,Object> viewValueMap=new HashMap<String,Object>();
        for (DockingPreMetaAttr dockingPreMetaAttr : dockingPreMetaAttrList) {
            String jenglishname=dockingPreMetaAttr.getEnglishName();////集团配置属性
            if(jintegmappconfigMap.containsKey(jenglishname)){
                DockingPreAttrMapping dockingPreAttrMapping=jintegmappconfigMap.get(jenglishname);
                String attrId = dockingPreAttrMapping.getTargetAttrId();//编码属性id
                String jtargetattrkey = dockingPreAttrMapping.getTargetAttrKey();//编码属性id
                Object newVaue=null;
                if(StringUtils.isNotBlank(jtargetattrkey)){
                    getAttrRange(dockingPreMetaAttr);//获取字段取值范围
                    String value=dataValueMap.get(jtargetattrkey)==null?"":dataValueMap.getOrDefault(jtargetattrkey,"");
                    newVaue = getVaue(dockingPreMetaAttr, value);
                }else{
                    newVaue = getVaue(dockingPreMetaAttr, "");
                }
                if(newVaue==null||"".equals(newVaue)){
                    newVaue= dockingPreMetaAttr.getDefaultValue();
                }
                viewValueMap.put(jenglishname, newVaue);
            }
        }
        viewValueList.add(viewValueMap);
        return viewValueList;
    }
    /***
     * èŽ·å–å±žæ€§æžšä¸¾æ˜ å°„é…ç½®
     */
    Map<String,Map<String,DockingPreAttrRange>> attrRangeMap=new HashMap<String, Map<String,DockingPreAttrRange>>();
    private void getAttrRange(DockingPreMetaAttr jmetaatter) throws Throwable{
        String jmetalistoid = jmetaatter.getOid();
        if(attrRangeMap.containsKey(jmetalistoid)) {
            return;
        }
        Map<String,String>conditionsMap=new HashMap<String, String>();
        conditionsMap.put("jmetalistid", jmetalistoid);//视图oid
        List<DockingPreAttrRange> dockingPreAttrRangeList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().eq(DockingPreAttrRange::getMetaListId, jmetalistoid));
        if (CollectionUtils.isEmpty(dockingPreAttrRangeList)) {
            return;
        }
        Map<String, DockingPreAttrRange> rangeMap = new HashMap<String, DockingPreAttrRange>();
        rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getNumTextValue(), t -> t, (o1, o2) -> o2));
        attrRangeMap.put(jmetalistoid, rangeMap);
    }
    /****
     * å€¼ç±»åž‹è½¬æ¢
     * @param jmetaatter
     * @param value
     * @return
     * @throws Throwable
     */
    private Object getVaue(DockingPreMetaAttr jmetaatter,String value) throws Throwable{
        //jmetadatatype    å…ƒæ•°æ®ç±»åž‹ï¼ˆ1 å­—符型, 2 æ•´åž‹, 3 é•¿æ•´åž‹, 4 å•精度, 5 åŒç²¾åº¦,6 æ—¥æœŸåž‹, 7 æ—¶é—´åž‹, 8 å¸ƒå°”åž‹, 9 æ–‡ä»¶, 10复合型)
        int jmetadatatype = jmetaatter.getMetaDataType();
        String jmetalistoid = jmetaatter.getOid();
        Map<String, DockingPreAttrRange> rangeMap=new HashMap<String, DockingPreAttrRange>();
        if(attrRangeMap.containsKey(jmetalistoid)){
            rangeMap = attrRangeMap.get(jmetalistoid);
            if(rangeMap.containsKey(value)){
                DockingPreAttrRange dockingPreAttrRange = rangeMap.get(value);
                value=dockingPreAttrRange.getNumText();//将编码属性域值转换成集团对应的域值
            }
        }
        if(jmetadatatype==1){//1 å­—符型
            return StringUtils.isBlank(value)?"":value;
        }else if(jmetadatatype==2){//2 æ•´åž‹
            return StringUtils.isBlank(value)?null:Integer.parseInt(value);
        }else if(jmetadatatype==3){//3 é•¿æ•´åž‹
            return StringUtils.isBlank(value)?null:Long.parseLong(value);
        }else if(jmetadatatype==4){//4 å•精度,
            return StringUtils.isBlank(value)?null:Float.parseFloat(value);
        }else if(jmetadatatype==5){// 5 åŒç²¾åº¦
            return StringUtils.isBlank(value)?null:Double.parseDouble(value);
        }else if(jmetadatatype==6){//6 æ—¥æœŸåž‹
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
            if(StringUtils.isBlank(value)) {
                return null;
            }else {
                try {
                    return simpleDateFormat.parse(value);
                } catch (ParseException e) {
                    throw new VciBaseException("date", new String[]{"日期格式转换错误"});
                }
            }
        }else if(jmetadatatype==7){//7 æ—¶é—´åž‹
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
            if(StringUtils.isBlank(value)) {
                return null;
            }else{
                try {
                    return simpleDateFormat.parse(value);
                } catch (ParseException e) {
                    throw new VciBaseException("date", new String[]{"日期格式转换错误"});
                }
            }
        }else    if(jmetadatatype==8){//8 å¸ƒå°”åž‹
            return value;
        }else if(jmetadatatype==9){//9 æ–‡ä»¶,
            return value;
        }else if(jmetadatatype==10){//10复合型
            return value;//符合型是什么东东如何处理
        }
        return value;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java
@@ -1,17 +1,26 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.entity.DockingPreClassify;
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
import com.vci.ubcs.code.mapper.DockingPreClassifyMapper;
import com.vci.ubcs.code.service.IDockingPreClassifyService;
import com.vci.ubcs.code.service.IDockingPreViewModelService;
import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
import com.vci.ubcs.code.wrapper.DockingPreClassifyWrapper;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Map;
import java.util.function.Function;
import javax.annotation.Resource;
import java.util.*;
import static com.vci.ubcs.code.constant.MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD;
import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME;
/**
 * é›†å›¢åˆ†ç±»ä¸šåŠ¡æœåŠ¡
@@ -19,7 +28,77 @@
 * @date 2023-05-23
 */
@Service
@Slf4j
public class DockingPreClassifyServiceImpl extends ServiceImpl<DockingPreClassifyMapper, DockingPreClassify> implements IDockingPreClassifyService {
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
    @Resource
    private DockingPreClassifyMapper dockingPreClassifyMapper;
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
    @Resource
    private IDockingPreViewModelService dockingPreViewModelService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Resource
    private RevisionModelUtil revisionModelUtil;
    /***
     * é›†å›¢åˆ†ç±»æ ‘对象查
     *@param treeQueryObject é›†å›¢åˆ†ç±»æŸ¥è¯¢å¯¹è±¡
     *@return è¿”回分类树对象
     */
    @Override
    public List<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject) {
        log.info("获取集团分类树start...");
        Map<String,String> conditionMap= treeQueryObject.getConditionMap();
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
        List<DockingPreClassifyVO> dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),true);
        List<Tree> tree= revisionModelUtil.doList2Trees(dockingPreClassifyVOS,treeWrapperOptions,(DockingPreClassifyVO s) ->{
            //可以在这里处理树节点的显示
            return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
                .getLcStatus()) ? (" ã€åœç”¨ã€‘ ") : "");
        });
        Iterator var6 =  tree.listIterator();
        while(var6.hasNext()){
            Tree trees = (Tree) var6.next();
            boolean checkHasChild=dockingPreClassifyMapper.checkHasChild(trees.getOid());
            //如果与条件传过来的值匹配的上则设置为选中
            if(conditionMap.containsKey(CODE_CLASSIFY_OID_FIELD)){
                trees.setChecked(true);
            }
            ;
            if(checkHasChild){
                trees.setLeaf(false);
            }else{
                trees.setLeaf(true);
            }
        }
        log.info("获取集团分类树end...");
        return tree;
    }
    /***
     * æ ¹æ®çˆ¶åˆ†ç±»id查询层级树数据对象集合
     * @param pid é›†å›¢åˆ†ç±»çš„oid
     * @return è¿”回层级树数据对象集合
     */
    private List<DockingPreClassifyVO> getCompanyGourpClassByParentId(String pid,boolean isContainView){
        log.info("根据父分类pid->"+pid+"查询层级树数据对象集合start...");
        List<DockingPreClassify> doList =dockingPreClassifyMapper.selectCompanyGroupClassifyVOByTree(pid);
        List<DockingPreClassifyVO>dockingPreClassifyVOS= DockingPreClassifyWrapper.build().entityVOs(doList);
        if(isContainView){
            dockingPreClassifyVOS.stream().forEach(dockingPreClassifyVO -> {
            List<DockingPreViewModelVO> dockingViewVOS=    dockingPreViewModelService.selectDockingPreViewModelByClassId(dockingPreClassifyVO.getOid(),isContainView);
                dockingPreClassifyVO.setDockingPreViewModelVOList(dockingViewVOS);
            });
        }
        log.info("根据父分类pid->"+pid+"查询层级树数据对象集合end...");
        return dockingPreClassifyVOS;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java
@@ -1,11 +1,15 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.mapper.DockingPreMetaAttrMapper;
import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
import com.vci.ubcs.code.wrapper.DockingPreMetaAttrWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -17,6 +21,7 @@
 * @date 2023-05-23
 */
@Service
@Slf4j
public class DockingPreMetaAttrServiceImpl extends ServiceImpl<DockingPreMetaAttrMapper, DockingPreMetaAttr> implements IDockingPreMetaAttrService {
    @Autowired(required = false)
@@ -26,4 +31,18 @@
    public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper) {
        return dockingPreMetaAttrMapper.selectList(wrapper);
    }
    /***
     * æ ¹æ®æ¨¡åž‹è§†å›¾oid查询数据
     * @param viewModelId
     * @return è¿”回属性对象
     */
    @Override
    public List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId) {
        log.info("根据模型视图oid"+viewModelId+"查询数据 star");
        List<DockingPreMetaAttr> dockingPreMetaAttrList= selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,viewModelId));
        List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList=DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList);
        log.info("根据模型视图oid"+viewModelId+"查询数据 end");
        return dockingPreMetaAttrVOList;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java
@@ -1,10 +1,23 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.entity.DockingPreViewModel;
import com.vci.ubcs.code.mapper.DockingPreViewModelMapper;
import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.service.IDockingPreViewModelService;
import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
import com.vci.ubcs.code.wrapper.DockingPreMetaAttrWrapper;
import com.vci.ubcs.code.wrapper.DockingPreViewWrapper;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/***
 * é›†å›¢æ¨¡åž‹æœåŠ¡
@@ -12,5 +25,46 @@
 * @date 2023-05-23
 */
@Service
@Slf4j
public class DockingPreViewModelServiceImpl extends ServiceImpl<DockingPreViewModelMapper,DockingPreViewModel> implements IDockingPreViewModelService {
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
    @Resource
    private  DockingPreViewModelMapper dockingPreViewModelMapper;
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§æŸ¥è¯¢æœåŠ¡
     */
    @Resource
    private IDockingPreMetaAttrService dockingPreMetaAttrService;
    /**
     * æ ¹æ®åˆ†ç±»id查询分类视图
     * @param classifyId é›†å›¢åˆ†ç±»id
     * @param isContainAttr æ˜¯å¦æŸ¥è¯¢å±žæ€§ï¼Œtrue: æ˜¯ï¼Œfalse,否
     * @return è¿”回分类模型视图集合对象
     */
    @Override
    public List<DockingPreViewModelVO> selectDockingPreViewModelByClassId(String classifyId, boolean isContainAttr) {
        log.info("根据分类id->"+classifyId+",查询分类视图statr");
        VciBaseUtil.alertNotNull(classifyId,"集团分类主键");
        List<DockingPreViewModel> dockingPreViewModels= dockingPreViewModelMapper.selectList(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,classifyId));
        List<DockingPreViewModelVO> dockingPreViewModelVOS=DockingPreViewWrapper.build().entityVOs(dockingPreViewModels);
        if(isContainAttr) {
            dockingPreViewModelVOS.stream().forEach(dockingPreViewModelVO -> {
                String viewModelVOOid=dockingPreViewModelVO.getOid();
                String sourceClassifyId=dockingPreViewModelVO.getSourceClassifyId();
                List<DockingPreMetaAttr> dockingPreMetaAttrList=dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId).eq(DockingPreMetaAttr::getViewModelId,viewModelVOOid));
                List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList= DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList);
                if(!CollectionUtils.isEmpty(dockingPreMetaAttrVOList)) {
                    dockingPreViewModelVO.setDockingPreMetaAttrVOList(dockingPreMetaAttrVOList);
                }
            });
        }
        log.info("根据分类id->"+classifyId+",查询分类视图end");
        return dockingPreViewModelVOS;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -2066,7 +2066,7 @@
        } else {
            //表需要改
//            conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
            conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_wupin where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
            conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_classify where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
                "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
        }
        conditionMap.put("lastr", "1");
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java
@@ -1,16 +1,67 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingLog;
import com.vci.ubcs.code.vo.pagemodel.DockingLogeVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
public class DockingLogeWrapper extends BaseEntityWrapper<DockingLog, DockingLogeVO> {
    public static DockingLogeWrapper build() {
        return new DockingLogeWrapper();
    }
    @Override
    public DockingLogeVO entityVO(DockingLog entity) {
        DockingLogeVO dockingLogeVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingLogeVO.class));
        return dockingLogeVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingLogeVO> entityVOs(Collection<DockingLog> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingLogeVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingLog> voentitys(Collection<DockingLogeVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingLog>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingLog voentity( DockingLogeVO vo) {
        DockingLog entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingLog.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java
@@ -1,10 +1,14 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreApplyForm;
import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyFormVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/***
@@ -13,10 +17,54 @@
 * @date 2023-05-23
 */
public class DockingPreApplyFormWrapper extends BaseEntityWrapper<DockingPreApplyForm, DockingPreApplyFormVO> {
    public static DockingPreApplyFormWrapper build() {
        return new DockingPreApplyFormWrapper();
    }
    @Override
    public DockingPreApplyFormVO entityVO(DockingPreApplyForm entity) {
        DockingPreApplyFormVO dockingPreApplyFormVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreApplyFormVO.class));
        return dockingPreApplyFormVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreApplyFormVO> entityVOs(Collection<DockingPreApplyForm> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreApplyFormVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreApplyForm> voentitys(Collection<DockingPreApplyFormVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreApplyForm>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreApplyForm voentity( DockingPreApplyFormVO vo) {
        DockingPreApplyForm entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreApplyForm.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java
@@ -2,9 +2,7 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -31,14 +29,15 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrMappings
     * @param entitys
     * @return
     */
    public List<DockingPreAttrMappingVO> entityVOs(Collection<DockingPreAttrMapping> dockingPreAttrMappings) {
    public List<DockingPreAttrMappingVO> entityVOs(Collection<DockingPreAttrMapping> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrMappings)) {
            dockingPreAttrMappings.stream().forEach(dockingPreAttrMapping -> {
                dockingPreAttrMappingVOList.add(entityVO(dockingPreAttrMapping));
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(entity -> {
                dockingPreAttrMappingVOList.add(entityVO(entity));
            });
        }
        return dockingPreAttrMappingVOList;
@@ -46,14 +45,15 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrMappingVOS
     * @param vos
     * @return
     */
    public List<DockingPreAttrMapping> voentitys(Collection<DockingPreAttrMappingVO> dockingPreAttrMappingVOS) {
    public List<DockingPreAttrMapping> voentitys(Collection<DockingPreAttrMappingVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreAttrMapping> dockingPreAttrMappingList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrMappingVOS)) {
            dockingPreAttrMappingVOS.stream().forEach(dockingPreAttrMappingVO -> {
                dockingPreAttrMappingList.add(voentity(dockingPreAttrMappingVO));
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(vo -> {
                dockingPreAttrMappingList.add(voentity(vo));
            });
        }
        return dockingPreAttrMappingList;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java
@@ -1,11 +1,8 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -32,14 +29,16 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrRanges
     * @param entitys
     * @return
     */
    public List<DockingPreAttrRangeVO> entityVOs(Collection<DockingPreAttrRange> dockingPreAttrRanges) {
    public List<DockingPreAttrRangeVO> entityVOs(Collection<DockingPreAttrRange> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrRanges)) {
            dockingPreAttrRanges.stream().forEach(dockingPreAttrRange -> {
                dockingPreAttrRangeVOList.add(entityVO(dockingPreAttrRange));
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(entity -> {
                dockingPreAttrRangeVOList.add(entityVO(entity));
            });
        }
        return dockingPreAttrRangeVOList;
@@ -47,14 +46,15 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrRangeVos
     * @param vos
     * @return
     */
    public List<DockingPreAttrRange> voentitys(Collection<DockingPreAttrRangeVO> dockingPreAttrRangeVos) {
    public List<DockingPreAttrRange> voentitys(Collection<DockingPreAttrRangeVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreAttrRange> dockingPreAttrRangeList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrRangeVos)) {
            dockingPreAttrRangeVos.stream().forEach(dockingPreAttrRangeVO -> {
                dockingPreAttrRangeList.add(voentity(dockingPreAttrRangeVO));
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(vo -> {
                dockingPreAttrRangeList.add(voentity(vo));
            });
        }
        return dockingPreAttrRangeList;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java
@@ -1,11 +1,14 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreClassify;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/**
 *集团编码分类包装类
@@ -14,9 +17,54 @@
 * @since 2023-05-23
 */
public class DockingPreClassifyWrapper extends BaseEntityWrapper<DockingPreClassify, DockingPreClassifyVO> {
    public static DockingPreClassifyWrapper build() {
        return new DockingPreClassifyWrapper();
    }
    @Override
    public DockingPreClassifyVO entityVO(DockingPreClassify entity) {
        DockingPreClassifyVO dockingPreClassifyVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreClassifyVO.class));
        return dockingPreClassifyVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreClassifyVO> entityVOs(Collection<DockingPreClassify> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreClassifyVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreClassify> voentitys(Collection<DockingPreClassifyVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreClassify>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreClassify voentity( DockingPreClassifyVO vo) {
        DockingPreClassify entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreClassify.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java
@@ -1,12 +1,14 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.entity.DockingPreViewModel;
import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/**
 *集团编码申请模型属性包装类
@@ -15,9 +17,58 @@
 * @since 2023-05-23
 */
public class DockingPreMetaAttrWrapper extends BaseEntityWrapper<DockingPreMetaAttr, DockingPreMetaAttrVO> {
    public static DockingPreMetaAttrWrapper build() {
        return new DockingPreMetaAttrWrapper();
    }
    @Override
    public DockingPreMetaAttrVO entityVO(DockingPreMetaAttr entity) {
        DockingPreMetaAttrVO dockingPreMetaAttrVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreMetaAttrVO.class));
        return dockingPreMetaAttrVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreMetaAttrVO> entityVOs(Collection<DockingPreMetaAttr> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreMetaAttrVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreMetaAttr> voentitys(Collection<DockingPreMetaAttrVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreMetaAttr>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreMetaAttr voentity( DockingPreMetaAttrVO vo) {
        DockingPreMetaAttr entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreMetaAttr.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java
@@ -1,11 +1,14 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreViewModel;
import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/**
 *集团编码申请视图包装类
@@ -14,9 +17,54 @@
 * @since 2023-05-23
 */
public class DockingPreViewWrapper  extends BaseEntityWrapper<DockingPreViewModel, DockingPreViewModelVO> {
    public static DockingPreViewWrapper build() {
        return new DockingPreViewWrapper();
    }
    @Override
    public DockingPreViewModelVO entityVO(DockingPreViewModel entity) {
        DockingPreViewModelVO dockingPreViewModelVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreViewModelVO.class));
        return dockingPreViewModelVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreViewModelVO> entityVOs(Collection<DockingPreViewModel> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreViewModelVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(dockingPreAttrRange -> {
                vos.add(entityVO(dockingPreAttrRange));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreViewModel> voentitys(Collection<DockingPreViewModelVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreViewModel>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreViewModel voentity( DockingPreViewModelVO vo) {
        DockingPreViewModel entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreViewModel.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
@@ -12,6 +12,10 @@
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false
docking:
  apply:
    jtInterUrl: http://116.205.176.185:8099
    unitCode: 410-MDM
######应用基本配置
#app:
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingLogeMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingLog">
    <resultMap id="plDockingLogResultMap" type="com.vci.ubcs.code.entity.DockingLog">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml
@@ -33,6 +33,10 @@
        <result column="CONTENT" property="content"/>
        <result column="DATAOID" property="dataOid"/>
        <result column="DATABTMNAME" property="dataBtmName"/>
        <result column="MSG" property="msg"/>
        <result column="MSG" property="msg"  />
        <result column="OPERATIONTYPE" property="operationType" />
        <result column="GROUPCODE" property="groupCode" />
    </resultMap>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingPreAttrMappingMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrMapping">
    <resultMap id="plDockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrMapping">
            <result column="OID" property="oid"/>
            <result column="REVISIONOID" property="revisionOid"/>
            <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingPreAttrRangeMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrRange">
    <resultMap id="plDockingPreAttrRangeResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrRange">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingPreClassifyMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreClassify">
    <resultMap id="plDockingClassifyResultMap" type="com.vci.ubcs.code.entity.DockingPreClassify">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
@@ -34,5 +34,51 @@
        <result column="NODELINKNAME" property="getNodeLinkName"/>
        <result column="PID" property="pid"/>
    </resultMap>
    <select id="selectCompanyGroupClassifyVOByTree" resultMap="plDockingClassifyResultMap">
        select codeclassify0.OID                 as oid,
        codeclassify0.REVISIONOID             as revisionoid,
        codeclassify0.NAMEOID              as nameOid,
        codeclassify0.BTMNAME            as btmname,
        codeclassify0.LASTR          as lastr,
        codeclassify0.FIRSTR              as firstr,
        codeclassify0.LASTV           as lastv,
        codeclassify0.FIRSTV           as firstv,
        codeclassify0.CREATOR           as creator,
        codeclassify0.CREATETIME           as createtime,
        codeclassify0.LASTMODIFIER           as lastmodifier,
        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
        codeclassify0.REVISIONRULE        as revisionrule,
        codeclassify0.VERSIONRULE        as versionrule,
        codeclassify0.REVISIONSEQ        as revisionseq,
        codeclassify0.REVISIONVALUE        as revisionvalue,
        codeclassify0.VERSIONSEQ        as versionseq,
        codeclassify0.VERSIONVALUE        as versionvalue,
        codeclassify0.LCTID        as lctid,
        codeclassify0.LCSTATUS              as lcstatus,
        codeclassify0.OID                   as oid,
        codeclassify0.TS                    as ts,
        codeclassify0.DESCRIPTION           as description,
        codeclassify0.OWNER                 as owner,
        codeclassify0.COPYFROMVERSION       as copyfromversion,
        codeclassify0.ID                    as id,
        codeclassify0.NAME                  as name,
        codeclassify0.CLASSNAME               as classname,
        codeclassify0.NODELINK   as nodelink,
        codeclassify0.NODELINKNAME   as nodelinkname,
        codeclassify0.PID   as pid
        from PL_CODE_JCLASSIFY codeclassify0
        <where>
            <if test="oid != null and oid != ''">
                codeclassify0.pid = '${oid}'
            </if>
            <if test="oid = null">
                codeclassify0.pid is null
            </if>
        </where>
        order by id asc
    </select>
    <select id="checkHasChild" resultType="java.lang.Boolean">
        select count(oid) from PL_CODE_JCLASSIFY  where pid = #{oid}
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingPreMetaAttrMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreMetaAttr">
    <resultMap id="plDockingPreMetaAttrResultMap" type="com.vci.ubcs.code.entity.DockingPreMetaAttr">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingPreViewModelMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreViewModel">
    <resultMap id="plDockingPreViewModelResultMap" type="com.vci.ubcs.code.entity.DockingPreViewModel">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
@@ -127,7 +127,7 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入元数据对象")
    public R submit(@Valid @RequestBody AttributeDTO dto) {
    public R submit(@RequestBody AttributeDTO dto) {
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return R.status(attributeService.submit(dto));
    }
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -53,9 +53,6 @@
    private final String REGEXP = "^[A-Za-z]+$";
    @Resource
    private BtmTypeMapper btmTypeMapper;
    @Override
    public boolean deleteLogic(@NotEmpty List<Long> ids) {
        return false;
@@ -86,17 +83,17 @@
     */
    @Override
    public boolean submit(AttributeDTO dto) {
        if (Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
        if (!Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
            throw new VciBaseException("属性名称{0}只能是英文",new Object[]{dto.getId()});
        }
        LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getId, dto.getId());
        Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(Attribute::getId, dto.getId()));
        Long count = baseMapper.selectCount((Func.isEmpty(dto.getOid())) ? wrapper : wrapper.notIn(Attribute::getOid, dto.getOid()));
        if (count > 0L) {
            throw new ServiceException("属性名已存在!");
        }
        Attribute omdAttribute = BeanUtil.copy(dto, Attribute.class);
        Attribute attribute = AttributeWrapper.build().copyBeforeSave(dto);
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return saveOrUpdate(omdAttribute);
        return saveOrUpdate(attribute);
    }
    /**
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
@@ -1,12 +1,18 @@
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.vci.ubcs.omd.dto.AttributeDTO;
import com.vci.ubcs.omd.entity.Attribute;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.system.cache.DictBizCache;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.StringUtil;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -32,12 +38,13 @@
    @Override
    public AttributeVO entityVO(Attribute entity) {
        AttributeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, AttributeVO.class));
        vo.setTypeValue(DictBizCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
        vo.setTypeValue(EnumCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
        if (StringUtil.isNotBlank(vo.getReferTypeCode())){
            vo.setReferTypeValue(DictBizCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
            vo.setReferTypeValue(EnumCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
        }
        vo.setDictValue(vo.getDictKey());
        vo.setTypeValue(vo.getTypeKey());
        if (StringUtil.isNotBlank(vo.getDictCode())) {
            vo.setDictValue(EnumCache.getValue(vo.getDictCode(),vo.getDictKey()));
        }
        return vo;
    }
@@ -49,4 +56,27 @@
    public List<AttributeVO> listEntityVO(List<Attribute> list) {
        return list.stream().map(this::entityVO).collect(Collectors.toList());
    }
    /**
     * åœ¨ä¿å­˜ä¹‹å‰è¦è®¾ç½®é»˜è®¤å±žæ€§
     * @param dto
     * @return
     */
    public Attribute copyBeforeSave(AttributeDTO dto) {
        Attribute attribute = BeanUtil.copy(dto, Attribute.class);
        Objects.requireNonNull(attribute);
        String currentUser = AuthUtil.getUserAccount();
        Date now = new Date();
        if (StringUtil.isBlank(dto.getOid())) {
            attribute.setBtmName(BtmTypeConstant.ATTRIBUTE);
            attribute.setCreator(currentUser);
            attribute.setCreateTime(now);
            attribute.setOwner(currentUser);
            attribute.setOid(VciBaseUtil.getPk());
        }
        attribute.setLastModifier(currentUser);
        attribute.setLastModifyTime(now);
        attribute.setTs(now);
        return attribute;
    }
}