xiejun
2023-09-13 0e5ba7238d31dc8fb5015001661811dceab55c42
Merge remote-tracking branch 'origin/master'
已修改48个文件
已添加4个文件
990 ■■■■ 文件已修改
Source/UBCS-WEB/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Master/MasterTree.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/cloneOtherBasicSecDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referBtmTypeCrudDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigCrudDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referSelectBtmAttrDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/index/logo.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/login/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/MasterData/items.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/data.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/loge.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/task.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/originalAdd.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeResourceServerConfiguration.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/PwdFreeLoginEndpoint.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/pom.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyFor410Dialog.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyFor410MainPanel.java 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyFor410SearchProvider.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyPanelFor410.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyPanelFor410ActionListener.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeDataMainPanelDataProvider.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/RMDataReferTempDialogActionListener.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/IPage.java 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/OrderItem.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/Page.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyValueVO.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/config/AuthenticationInterceptor.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/config/WebConfig.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyValueMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyValueMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package.json
@@ -23,6 +23,7 @@
    "js-md5": "^0.7.3",
    "js-pinyin": "^0.2.4",
    "mockjs": "^1.0.1-beta3",
    "moment": "^2.29.4",
    "node-gyp": "^5.0.6",
    "nprogress": "^0.2.0",
    "portfinder": "^1.0.23",
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -84,10 +84,15 @@
    trendsSpan: {
      type: Number,
      default: 8,
    }
    },
    TreeValue:{
      type: String,
      default: "",
    },
  },
  data() {
    return {
      TreeValueForm:'',
      updateIndex: 0,
      form: {},
      option: {
@@ -114,7 +119,7 @@
      slotColumnList: [],
    };
  },
  mounted() {
    mounted() {
    this.handleResize();
  },
  computed: {
@@ -126,10 +131,31 @@
        return 24 / Math.floor(windowWidth / 500);
      }
    },
  },
  watch: {
    // è¡¨å•数据修改反馈到父组件
    form: {
      deep: true,
      immediate: true,
      handler(newV) {
        this.$emit("getFormData", newV);
      },
    },
    TreeValue:{
      handler(newval,oldval){
        if(newval){
          this.TreeValueForm=newval;
          // console.log(this.TreeValueForm)
        }
      },
      deep:true,
      immediate:true
    }
  },
  methods: {
    // æ¸²æŸ“表单模板
    templateRender(formItemList) {
    templateRender(formItemList,TreeValue) {
      // æ— éœ€åˆ†ç»„数据
      let column = [];
      let group = [];
@@ -138,7 +164,6 @@
      let value=''
      formItemList.forEach((formItem) => {
        formItem = this.resetFormConfig(formItem);
        // console.log('formItem',formItem)
        // console.log('formItem.dicData.value',formItem.dicData)
        if (formItem.type === "line") {
          group.push({
@@ -196,7 +221,7 @@
          format: formItem.dateFormate,
          keyAttr: formItem.keyAttr,
          value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
            (formItem.secType == "codedatesec"?formItem.codeDateFormatStr: null),
            (formItem.secType == "codedatesec"?formItem.codeDateFormatStr: null) || ( TreeValue&& formItem.secType == "codelevelsec" ? TreeValue : null),
          placeholder: formItem.inputTip,
          comboxKey: formItem.comboxKey,
          tip: formItem.tooltips,
@@ -415,16 +440,6 @@
        this.$emit("getFormData", this.form);
        this.$emit("referConfigDataUpdate", data);
      }
    },
  },
  watch: {
    // è¡¨å•数据修改反馈到父组件
    form: {
      deep: true,
      immediate: true,
      handler(newV) {
        this.$emit("getFormData", newV);
      },
    },
  },
};
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -13,6 +13,7 @@
    <FormTemplate
      v-bind="$attrs"
      :type="type"
      :TreeValue="TreeValue"
      :rowOid="rowOid"
      :templateOid="templateOid"
      v-if="dialogVisible"
@@ -90,6 +91,10 @@
    visible: {
      type: Boolean,
      default: false,
    },
    TreeValue:{
      type: String,
      default: "",
    },
    type: {
      type: String,
@@ -291,7 +296,7 @@
            that.showCodeApply = true;
            that.activeName = "codeApply";
            that.$nextTick(() => {
              that.$refs.CodeApply.templateRender(that.secVOList);
              that.$refs.CodeApply.templateRender(that.secVOList,this.TreeValue);
            });
          } else {
            that.showCodeApply = false;
@@ -319,7 +324,7 @@
        }
        return item;
      });
      this.$refs.CodeApply.templateRender(this.secVOList);
      this.$refs.CodeApply.templateRender(this.secVOList,this.TreeValue);
    },
    resembleQuerySubmit() {
      this.activeName = "resembleQuery";
Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -28,6 +28,7 @@
  },
  data() {
    return {
      TreeValue:'',
      idData: '',
      masterVrBtnList: [],
      tableHeadFindData: [],
@@ -165,6 +166,9 @@
    //树点击事件
    async nodeClick(data) {
      try {
        console.log(data)
        this.TreeValue=data.label.split(" ")[0].trim();
        this.$emit('TreeValue',this.TreeValue)
        this.nodeClickList = data;
        this.tableHeadDataFateher = []
        this.tableHeadFindData = []
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -54,7 +54,7 @@
          </el-row>
          <!--          æ–°å¢ž-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible" :TreeValue="TreeValue"
                              type="add"
                              @submit="AddSumbit">
          </FormTemplateDialog>
@@ -155,6 +155,10 @@
    tableDataArray: {
      type: Array,
    },
    TreeValue:{
      type: String,
      default: "",
    },
    total: {
      type: String,
      default: "",
Source/UBCS-WEB/src/components/code-dialog-page/cloneOtherBasicSecDialog.vue
@@ -1,5 +1,6 @@
<template>
  <el-dialog
    :close-on-click-modal="false"
    :visible.sync="cloneOtherCodeRuleSettingBox"
    append-to-body
    class="avue-dialog avue-dialog--top"
Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue
@@ -1,5 +1,6 @@
<template>
  <el-dialog
      :close-on-click-modal="false"
      :visible.sync="cloneSettingBox"
      append-to-body
      class="avue-dialog avue-dialog--top"
Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
@@ -3,6 +3,7 @@
  <el-dialog
    title="公式编辑框"
    append-to-body
    :close-on-click-modal="false"
    :visible.sync="isShowformulaEdit"
    @close="closeFormulaEdit"
    width="75%"
Source/UBCS-WEB/src/components/code-dialog-page/referBtmTypeCrudDialog.vue
@@ -1,5 +1,6 @@
<template>
    <el-dialog 
        :close-on-click-modal="false"
        title="为【参照引用的业务类型】选取值"
        append-to-body
        :visible.sync="referBtmDialogParams.isShowDialog"
Source/UBCS-WEB/src/components/code-dialog-page/referConfigCrudDialog.vue
@@ -1,5 +1,6 @@
<template>
    <el-dialog
        :close-on-click-modal="false"
        title="选择参照配置"
        append-to-body
        :visible.sync="isShowReferConfigCrud"
Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue
@@ -1,6 +1,7 @@
<template>
    <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗 -->
    <el-dialog
      :close-on-click-modal="false"
      title="参照配置"
      append-to-body
      :visible.sync="isShowReferConfigForm"
Source/UBCS-WEB/src/components/code-dialog-page/referSelectBtmAttrDialog.vue
@@ -1,5 +1,6 @@
<template>
     <el-dialog 
        :close-on-click-modal="false"
        :title="options.title"
        append-to-body
        :visible.sync="crudParams.isShowDialog"
Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue
@@ -1,21 +1,15 @@
<template>
  <div style="display: flex" >
    <el-form :inline="true" :model="formInline" class="demo-form-inline">
<!--      é›†æˆæ—¥å¿— ä»»åŠ¡ æ•°æ®å…¨éƒ¨å…¬ç”¨-->
      <el-form-item label="集成查询:" size="small">
        <el-select v-model="formInline.type" placeholder="请选择分类" @change="SelectChange">
          <el-option :label="item.label" :value="item.value" v-for="item in SearchObject.searchData" ></el-option>
          <el-option :label="item.label" :value="item.value" :key="item.value" v-for="(item,index) in SearchObject.searchData"></el-option>
        </el-select>
      </el-form-item>
<!--      é›†æˆæ—¥å¿—是否成功-->
<!--      é›†æˆæ—¥å¿— æ˜¯å¦æˆåŠŸ-->
      <el-form-item v-if="(status.type == 'loge' && status.stateFlag)" size="small">
        <el-select v-model="formInline.state" placeholder="请选择状态">
          <el-option label="是" value="true"></el-option>
          <el-option label="否" value="false"></el-option>
        </el-select>
      </el-form-item>
<!--      é›†æˆä»»åŠ¡æ˜¯å¦æŽ¨é€æˆåŠŸ-->
      <el-form-item v-if="(status.type == 'task' && status.stateTaskFlag)" size="small">
        <el-select v-model="formInline.stateTask" placeholder="请选择状态">
          <el-option label="是" value="true"></el-option>
          <el-option label="否" value="false"></el-option>
        </el-select>
@@ -32,15 +26,22 @@
          <el-option label="数据查询" value="queryData"></el-option>
        </el-select>
      </el-form-item>
<!--      é›†æˆä»»åŠ¡æŽ¨é€ç±»åž‹-->
      <el-form-item v-if="(status.type === 'task' && status.sendTypeFlga)" size="small">
<!--      é›†æˆä»»åŠ¡ æ˜¯å¦æŽ¨é€æˆåŠŸ  é›†æˆæ•°æ®  æ˜¯å¦åˆ†è§£ä»»åŠ¡-->
      <el-form-item v-if="((status.type == 'task' || status.type == 'data')&& status.stateTaskDataFlag)" size="small">
        <el-select v-model="formInline.stateTask" placeholder="请选择状态">
          <el-option label="是" value="true"></el-option>
          <el-option label="否" value="false"></el-option>
        </el-select>
      </el-form-item>
<!--      é›†æˆä»»åŠ¡ é›†æˆæ•°æ® æŽ¨é€ç±»åž‹-->
      <el-form-item v-if="((status.type === 'task' || status.type === 'data') && status.sendTypeFlga)" size="small">
        <el-select v-model="formInline.taskCut" placeholder="请选择推送类型">
          <el-option label="发布" value="Enabled"></el-option>
          <el-option label="回收" value="TakeBack"></el-option>
          <el-option label="停用" value="Disabled"></el-option>
        </el-select>
      </el-form-item>
<!--      åˆ›å»ºæ—¥æœŸ-->
<!--      é›†æˆä»»åŠ¡ åˆ›å»ºæ—¥æœŸ  é›†æˆæ—¥å¿— è®°å½•æ—¶é—´-->
      <el-form-item size="small" v-if="((status.type == 'loge' ||status.type == 'task') && status.dateFlag)">
        <el-date-picker
          v-model="formInline.Date"
@@ -48,7 +49,7 @@
          placeholder="选择日期时间">
        </el-date-picker>
      </el-form-item>
<!--      æœ€åŽæŽ¨é€æ—¶é—´-->
<!--      é›†æˆä»»åŠ¡ æœ€åŽæŽ¨é€æ—¶é—´-->
      <el-form-item size="small" v-if="status.type == 'task' && status.lastDateFlag">
        <el-date-picker
          v-model="formInline.lastDate"
@@ -56,13 +57,14 @@
          placeholder="选择日期时间">
        </el-date-picker>
      </el-form-item>
<!--      å…¬ç”¨æ¨¡å—-->
<!--      è¾“入内容-->
      <el-form-item size="small" v-if="shouldShowInput">
        <el-input v-model="formInline.text" placeholder="请输入内容" @keyup.enter.native="SaveHandler"></el-input>
      </el-form-item>
<!--      æŸ¥è¯¢æŒ‰é’®-->
      <el-form-item size="small" v-if="shouldShowButton">
        <el-button type="success" size="small">查询</el-button>
        <el-button type="success" size="small" @click="handleSearch">查询</el-button>
      </el-form-item>
    </el-form>
  </div>
@@ -82,18 +84,22 @@
    shouldShowInput() {
      const isLogeType = this.status.type === 'loge';
      const isTaskType = this.status.type === 'task';
      const isDataType = this.status.type === 'data';
      return (
        (isLogeType && !this.status.stateFlag && !this.status.dateFlag && !this.status.typeFlag) ||
        (isTaskType && !this.status.stateTaskFlag && !this.status.dateFlag && !this.status.lastDateFlag && !this.status.sendTypeFlga)
        (isTaskType && !this.status.stateTaskDataFlag && !this.status.dateFlag && !this.status.lastDateFlag && !this.status.sendTypeFlga) ||
        (isDataType && !this.status.stateTaskDataFlag && !this.status.sendTypeFlga)
      );
    },
    //按钮判断
    shouldShowButton() {
      const isLogeType = this.status.type === 'loge';
      const isTaskType = this.status.type === 'task';
      const isDataType = this.status.type === 'data';
      return(
        (isLogeType && (this.status.dateFlag || this.status.stateFlag || this.status.typeFlag)) ||
        (isTaskType && (this.status.stateTaskFlag || this.status.dateFlag || this.status.lastDateFlag || this.status.sendTypeFlga))
        (isTaskType && (this.status.stateTaskDataFlag || this.status.dateFlag || this.status.lastDateFlag || this.status.sendTypeFlga)) ||
        (isDataType && (this.status.stateTaskDataFlag || this.status.sendTypeFlga))
      );
    }
  },
@@ -101,18 +107,23 @@
    SelectChange(val) {
      const logeType = this.status.type === 'loge';
      const taskType = this.status.type === 'task';
      const dataType = this.status.type === 'data';
      this.status.typeFlag = logeType && val === 5;
      this.status.dateFlag = (logeType && val === 6) || (taskType && val === 6);
      this.status.stateFlag = logeType && val === 7;
      this.status.stateTaskFlag = taskType && val === 8;
      this.status.lastDateFlag = taskType && val === 7;
      this.status.sendTypeFlga = taskType && val === 5;
      this.status.stateTaskDataFlag = (taskType && val === 8) || (dataType && val === 4);
      this.status.sendTypeFlga = (taskType && val === 5) || (dataType && val === 3);
    },
    SaveHandler(){
      let name = this.SearchObject.searchData[this.formInline.type].prop;
      getList(this.page.currentPage, this.page.pageSize, {[name]: this.formInline.text}).then(res => {
      getList(this.page.currentPage, this.page.pageSize, { [`conditionMap['${name}_like']`]: this.formInline.text}).then(res => {
        console.log(res);
      });
    },
    handleSearch(){
      let formattedDate = this.$moment(this.formInline.Date).format('YYYY-M-D');
      console.log('formattedDate',formattedDate);
    }
  }
}
Source/UBCS-WEB/src/main.js
@@ -78,6 +78,9 @@
//复制插件
import VueClipboard from 'vue-clipboard2'
Vue.use( VueClipboard )
//时间插件
import moment from 'moment';
Vue.prototype.$moment = moment;
// æ³¨å†Œå…¨å±€å®¹å™¨
Vue.component('basicContainer', basicContainer);
Vue.component('basicBlock', basicBlock);
Source/UBCS-WEB/src/page/index/logo.vue
@@ -16,7 +16,7 @@
          <span>
            <img class="imgSpan" :src=imgurl>
          </span>
          <span>  {{ website.indexTitle }}</span>
          <span style="font-size: 17px;margin-left: 27px">编码资源管理系统</span>
         </span>
      </template>
    </transition-group>
@@ -91,7 +91,7 @@
.imgSpan {
  position: absolute;
  top: 15px;
  left: 37px;
  left: 26px;
}
.logimg{
  position: absolute;
Source/UBCS-WEB/src/page/login/index.vue
@@ -20,7 +20,7 @@
      <div class="login-border">
        <div class="login-main">
          <h4 class="login-title">
            {{ $t('login.title') }}{{website.title}}
            {{ $t('login.title') }}
            <top-lang></top-lang>
          </h4>
          <userLogin v-if="activeName==='user'"></userLogin>
Source/UBCS-WEB/src/views/MasterData/items.vue
@@ -6,7 +6,7 @@
        <master-tree @codeClassifyOid="codeClassifyOidList" @coderuleoid="coderuleoidList" :pageSize="this.pageSize"
          :currentPage="this.currentPage" @tableDataArray="tableDataArrays" @tableHeadDataFateher="tableHeadDatas"
          @tableHeadBttoms="tableHeadBttoms" @total="totals" @nodeClick="nodeClick"
          @tableHeadFindData="tableHeadFindDatas" @Treedata="TreedataList"></master-tree>
          @tableHeadFindData="tableHeadFindDatas" @Treedata="TreedataList" @TreeValue="TreeValueEmit"></master-tree>
      </basic-container>
    </el-aside>
    <el-main>
@@ -14,7 +14,7 @@
      <VciMasterCrud :page="this.page" :codeClassifyOid="this.codeClassifyOid" :coderuleoid="this.coderuleoid"
        @pageSize="pageSizes" @currentPage="currentPages" :tableDataArray="tableDataArray" :total="this.total"
        :tableHeadDataFateher="this.tableHeadDataFateher" :isLoading="isLoading" :templateOid="templateOid"
        :tableHeadFindData="tableHeadFindData" :tableHeadBtnData="masterVrBtnList" :Treedata="Treedata"></VciMasterCrud>
        :tableHeadFindData="tableHeadFindData" :tableHeadBtnData="masterVrBtnList" :Treedata="Treedata" :TreeValue="TreeValue"></VciMasterCrud>
    </el-main>
  </el-container>
</template>
@@ -42,12 +42,16 @@
      tableHeadDataFateher: [],
      total: "",
      isLoading: false,
      tableHeadFindData: {}
      tableHeadFindData: {},
      TreeValue:''
    }
  },
  created() {
  },
  methods: {
    TreeValueEmit(val){
      this.TreeValue=val
    },
    codeClassifyOidList(val) {
      this.codeClassifyOid = val;
    },
Source/UBCS-WEB/src/views/code/code.vue
@@ -1876,6 +1876,8 @@
              oid: this.codefixedsecOrCodeclassifysec.oid,
            });
            this.clearFixedOrClassifyForm("codefixedsec");
            this.$refs.crudFixedValue.refreshTable();
            this.$refs.crudFixedValue.doLayout();
            this.$message({
              type: "success",
              message: "操作成功!",
Source/UBCS-WEB/src/views/docking/data.vue
@@ -15,6 +15,9 @@
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      <template slot-scope="scope" slot="menuLeft">
        <vci-docking-search :SearchObject="SearchObject" :page="page" :formInline="formInline" :status="status"></vci-docking-search>
      </template>
    </avue-crud>
  </basic-container>
</template>
@@ -29,6 +32,49 @@
name: "data",
  data(){
  return {
    //各个类型状态
    status:{
      type:'data',
      sendTypeFlga:false,
      stateTaskDataFlag:false
    },
    //model绑定
    formInline:{
      type:'',
      text:'',
      stateTask:'',
      taskCut:''
    },
    //集成类型死数据
    SearchObject:{
      searchData:[
        {
          label:'数据编码',
          prop: "id",
          value:0
        },
        {
          label:'分类代号',
          prop: "classifyId",
          value:1
        },
        {
          label:'分类名称',
          prop: 'classifyName',
          value:2
        },
        {
          label:'推送类型',
          prop: 'sendType',
          value:3
        },
        {
          label:'是否分解任务',
          prop: 'sendFlag',
          value:4
        },
      ]
    },
    value:'',
    loading: false,
    query: {},
Source/UBCS-WEB/src/views/docking/loge.vue
@@ -32,12 +32,14 @@
  data(){
    return {
      value:'',
      //各个类型状态
      status:{
        type:'loge',
        typeFlag:false,
        dateFlag:false,
        stateFlag:false,
      },
      //model绑定
      formInline:{
        type:'',
        cut:'',
@@ -45,6 +47,7 @@
        Date:'',
        state:''
      },
      //集成类型死数据
      SearchObject:{
        searchData:[
          {
Source/UBCS-WEB/src/views/docking/task.vue
@@ -40,6 +40,7 @@
  name: "task",
  data(){
    return {
      //model绑定
      formInline:{
        type:'',
        stateTask:'',
@@ -48,13 +49,15 @@
        text:'',
        taskCut:''
      },
      //各个类型状态
      status:{
        type:'task',
        stateTaskFlag:false,
        stateTaskDataFlag:false,
        dateFlag:false,
        lastDateFlag:false,
        sendTypeFlga:false
      },
      //集成类型死数据
      SearchObject:{
        searchData:[
          {
Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -111,6 +111,19 @@
            <!-- é€‰æ‹©æžšä¸¾æ—¶çš„弹窗 -->
            <el-dialog title="枚举列表" :visible.sync="enumRefer.show" append-to-body @close="closeEnumDialog" width="70%"
                style="height: 115vh;">
                <div>
                  <el-form :inline="true" :model="form" class="demo-form-inline" size="small">
                    <el-form-item label="枚举代号">
                      <el-input v-model="form.name" placeholder="枚举代号"></el-input>
                    </el-form-item>
                    <el-form-item label="枚举名称">
                        <el-input v-model="form.label" placeholder="枚举名称"></el-input>
                    </el-form-item>
                    <el-form-item>
                      <el-button type="primary" @click="onSubmit">查询</el-button>
                    </el-form-item>
                  </el-form>
                </div>
                <avue-crud ref="eunmTable" :option="enumRefer.option"  @on-load="enumOnLoad" :data="enumRefer.data" class="enumTable"
                    @row-click="enumReferClick" :page.sync="enumRefer.enumPage">
                    <template slot="radio" slot-scope="{row}">
@@ -141,6 +154,10 @@
    },
    data() {
        return {
            form:{
              name:'',
              label:''
            },
            showSubmitDialog: false,
            // é»˜è®¤çš„页签
            activeName: 'referTab',
@@ -229,7 +246,8 @@
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan: 32,
                    searchShowBtn: false,
                    // searchShowBtn: false,
                    // search:true,
                    highlightCurrentRow: true,
                    column: [{
                        label: '',
@@ -241,13 +259,13 @@
                        prop: 'name',
                        align: 'center',
                        searchSpan: 8,
                        search: true,
                        // search: true,
                    }, {
                        label: '枚举名称',
                        prop: 'label',
                        align: 'center',
                        searchSpan: 8,
                        search: true,
                        // search: true,
                    }]
                },
                // æžšä¸¾å‚照表格数据
@@ -281,6 +299,20 @@
        this.initAttributeReferTypeList();
    },
    methods: {
      onSubmit() {
        const conditionMap = {};
        if (this.form.name) {
          conditionMap[`conditionMap['name_like']`] = this.form.name;
        }
        if (this.form.label) {
          conditionMap[`conditionMap['label_like']`] = this.form.label;
        }
        getParentList(this.enumRefer.enumPage.currentPage, this.enumRefer.enumPage.pageSize, conditionMap)
          .then((res) => {
            this.enumRefer.enumPage.total = res.data.data.total;
            this.enumRefer.data = res.data.data.records;
          });
      },
        enumOnLoad(){
          getParentList(this.enumRefer.enumPage.currentPage, this.enumRefer.enumPage.pageSize).then(res => {
            this.enumRefer.enumPage.total = res.data.data.total;
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeResourceServerConfiguration.java
@@ -38,6 +38,7 @@
            .antMatchers(
                "/actuator/**",
                "/oauth/captcha",
                "/oauth/passwordFreeLogin",
                "/oauth/logout",
                "/oauth/clear-cache",
                "/oauth/render/**",
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java
@@ -32,16 +32,34 @@
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.core.tool.utils.WebUtil;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.InsufficientAuthenticationException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2RefreshToken;
import org.springframework.security.oauth2.common.exceptions.InvalidClientException;
import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
import org.springframework.security.oauth2.common.exceptions.InvalidRequestException;
import org.springframework.security.oauth2.common.exceptions.UnsupportedGrantTypeException;
import org.springframework.security.oauth2.common.util.OAuth2Utils;
import org.springframework.security.oauth2.provider.AuthorizationRequest;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.ClientDetailsService;
import org.springframework.security.oauth2.provider.TokenRequest;
import org.springframework.security.oauth2.provider.endpoint.TokenEndpoint;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.util.StringUtils;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.security.Principal;
import java.util.Collections;
import java.util.Map;
import javax.servlet.http.HttpSession;
import java.time.Duration;
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/PwdFreeLoginEndpoint.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
//package com.vci.ubcs.auth.endpoint;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.ResponseEntity;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.oauth2.common.OAuth2AccessToken;
//import org.springframework.security.oauth2.provider.ClientDetailsService;
//import org.springframework.security.oauth2.provider.OAuth2RequestFactory;
//import org.springframework.security.oauth2.provider.TokenGranter;
//import org.springframework.security.oauth2.provider.TokenRequest;
//import org.springframework.security.oauth2.provider.endpoint.TokenEndpoint;
//import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
//import org.springframework.stereotype.Component;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.web.HttpRequestMethodNotSupportedException;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RequestParam;
//
//import java.util.Map;
//
///**
// * å…å¯†ç™»å½•
// * @author ludc
// * @date 2023/9/12 18:03
// */
//@Component
//public class PwdFreeLoginEndpoint extends TokenEndpoint {
//
//
//    @Autowired
//    private AuthorizationServerTokenServices tokenServices;
//
//    @Autowired
//    private ClientDetailsService clientDetailsService;
//
//    /*@Autowired
//    private OAuth2RequestFactory requestFactory;
//
//    @Autowired
//    private TokenGranter tokenGranter;*/
//
//    @RequestMapping(value = "/oauth/password-free-login",method = RequestMethod.GET)
//    public ResponseEntity<OAuth2AccessToken> getPasswordFreeLogin(@RequestParam Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
//        return postPasswordFreeLogin(parameters);
//    }
//
//    @RequestMapping(value = "/oauth/password-free-login",method = RequestMethod.POST)
//    public ResponseEntity<OAuth2AccessToken> postPasswordFreeLogin(@RequestParam Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
//        // åˆ¤æ–­æ˜¯å¦æ»¡è¶³å…å¯†ç™»å½•的条件
//        if (isSkipLogin(parameters)) {
//            // ç”Ÿæˆè®¿é—®ä»¤ç‰Œ
//            OAuth2AccessToken accessToken = createAccessToken(parameters);
//            // è¿”回访问令牌
//            return ResponseEntity.ok(accessToken);
//        }
//
//        // ä¸æ»¡è¶³å…å¯†ç™»å½•条件,返回错误信息
//        return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
//    }
//
//    private boolean isSkipLogin(Map<String, String> parameters) {
//        // æ ¹æ®å…·ä½“需求判断是否满足免密登录的条件
//        // ä¾‹å¦‚,判断请求参数中是否包含某个特定的标识符
//        return parameters.containsKey("skipLogin");
//    }
//
//    private OAuth2AccessToken createAccessToken(Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
//        // æž„造请求参数
//        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
//        for (Map.Entry<String, String> entry : parameters.entrySet()) {
//            params.add(entry.getKey(), entry.getValue());
//        }
//
//        // è°ƒç”¨TokenEndpoint的postAccessToken方法生成访问令牌
//        //return postAccessToken(PrincipalUtils.getPrincipal(), params).getBody();
//        return null;
//    }
//
//    private ResponseEntity<OAuth2AccessToken> postAccessToken(Authentication authentication, MultiValueMap<String, String> parameters) throws HttpRequestMethodNotSupportedException {
//        // æž„造请求
//        // TokenRequest tokenRequest = requestFactory.createTokenRequest(parameters, clientDetailsService.loadClientByClientId("your-client-id"));
//
//        // ç”Ÿæˆè®¿é—®ä»¤ç‰Œ
//        // OAuth2AccessToken accessToken = tokenGranter.grant("password", tokenRequest);
//
//        // è¿”回访问令牌
//        //return ResponseEntity.ok(accessToken);
//        return null;
//    }
//
//}
Source/UBCS/ubcs-codeApply/pom.xml
@@ -12,7 +12,9 @@
        <vciplt.version>2022.RELEASE</vciplt.version>
        <old.spring.version>3.2.0.RELEASE</old.spring.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <java.version>1.7</java.version>
        <maven.compiler.source>7</maven.compiler.source>
        <maven.compiler.target>7</maven.compiler.target>
    </properties>
    <artifactId>ubcs-codeApply</artifactId>
    <dependencies>
@@ -66,4 +68,18 @@
            <url>http://nexus.vci-tech.com:9000/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
<!--    <build>-->
<!--        <plugins>-->
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-compiler-plugin</artifactId>-->
<!--                <version>3.10.1</version>-->
<!--                <configuration>-->
<!--                    <source>1.7</source>-->
<!--                    <target>1.7</target>-->
<!--                </configuration>-->
<!--            </plugin>-->
<!--        </plugins>-->
<!--    </build>-->
</project>
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyFor410Dialog.java
@@ -32,7 +32,7 @@
    private Map<String, String> attrNameAndValMap = new LinkedHashMap();//存储属性名称(包含内部名称和外部名称)和对应的值
    private String tokenUrl= ConfigUtils.getConfigValue("410.code.token.url","http://127.0.0.1:37000/ubcs-auth/oauth/token");
    private String[] fields;
    private String[] Values;
    private String[] values;
    /**
     * å­˜å‚¨åˆ†ç±»çš„Map,key:分类名称,value:分类值
     */
@@ -50,6 +50,9 @@
    public CodeApplyFor410Dialog(JDialog dialog, String clsfName, String deptName) {
        this(dialog, "pdmUser", clsfName, deptName,new String[]{});
    }
    public CodeApplyFor410Dialog(JDialog dialog, String clsfName, String deptName,String[] fields,String[] values) {
        this(dialog, "pdmUser", clsfName, deptName,new String[]{},fields,values);
    }
    public CodeApplyFor410Dialog(Frame frame, String clsfName, String deptName,String[] fields,String[] values){
        this.setModal(true);
        parentComponet = frame;
@@ -57,7 +60,7 @@
        this.clsfName = clsfName;
        this.deptName = deptName;
        this.fields=fields;
        this.Values=values;
        this.values=values;
        //this.libName = libName;
        init();
@@ -89,6 +92,23 @@
            this.deptName = deptName;
            //    this.libName = libName;
            init();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public CodeApplyFor410Dialog(JDialog dialog, String userName, String clsfName, String deptName, String[] libName,String[] fields,String[] values) {
        super(dialog, true);
        VCISwingUtil.setClientMainFrame(new Frame());
        try {
            this.setModal(true);
            parentComponet = dialog;
            this.userName = userName;
            this.clsfName = clsfName;
            this.deptName = deptName;
            this.fields      = fields;
            this.values      = values;
            init();
        } catch (Exception e) {
            e.printStackTrace();
@@ -152,7 +172,14 @@
    private void bulidPal() throws Exception {
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setTitle("代码申请");
        mainPal = new CodeApplyPanelFor410(this,tokenUserObject, true, clsfName, deptName,libName);
        Map<String , String> displayValues = new HashMap<>();
        if(fields != null && fields.length > 0 && values !=null && values.length > 0){
            for (int i = 0; i < fields.length; i++) {
                displayValues.put(fields[i] , values[i]);
            }
        }
        mainPal = new CodeApplyPanelFor410(this,tokenUserObject, true, clsfName, deptName,libName,displayValues);
        VCIJPanel btnPal = new VCIJPanel();
        btnPal.add(okBtn);
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyFor410MainPanel.java
@@ -32,7 +32,6 @@
import java.util.*;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class CodeApplyFor410MainPanel  extends VCIJPanel {
@@ -87,6 +86,10 @@
    private RMDataTransmitObject transmitForRMData = null;
    private CodeRuleVO codeRuleVO=null;
    /**
     * å­˜å‚¨å±žæ€§å’Œå€¼çš„Map,key,用于默认值的显示
     */
    private Map<String,String> displayValues = new HashMap<>();
    /**
     * å±žæ€§ID与属性对应的控件之间的映射MAP
     */
    private LinkedHashMap<String, JComponent> attrIdToCtrlMaps = new LinkedHashMap<String, JComponent>();
@@ -117,11 +120,12 @@
        this.currentCodeClassifyTemplateVO=currentCodeClassifyTemplateVO;
    }
    public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject,TokenUserObject tokenUserObject,String deptName,CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
    public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject,TokenUserObject tokenUserObject,String deptName,CodeClassifyTemplateVO currentCodeClassifyTemplateVO,Map displayValues) {
        this.transTreeObject = transTreeObject;
        this.tokenUserObject = tokenUserObject;
        this.deptName = deptName;
        this.currentCodeClassifyTemplateVO=currentCodeClassifyTemplateVO;
        this.displayValues = displayValues;
    }
    /**
@@ -590,10 +594,10 @@
                        if(codeClassifyValueList.size()>1) {
                            secCombo.addItem(new CodeClassifyValue());
                        }
                        codeClassifyValueList.stream().forEach(codeClassifyValue -> {
                        for (CodeClassifyValue codeClassifyValue : codeClassifyValueList) {
                            secCombo.addItem(codeClassifyValue);
                            valueOidList.add(codeClassifyValue.getOid());
                        });
                        }
                    }
                    secIdTOListValueOidMap.put(secObj.getOid(),valueOidList);
                    /**代码项下拉事件**/
@@ -632,11 +636,11 @@
                    if(fixedValueVOList.size() >1) {
                        secCombo.addItem(new CodeFixedValue());
                    }
                    fixedValueVOList.stream().forEach(codeFixedValueVO -> {
                    for (CodeFixedValueVO codeFixedValueVO : fixedValueVOList) {
                        CodeFixedValue codeFixedValue=new CodeFixedValue();
                        BeanUtilForVCI.copyPropertiesIgnoreCase(codeFixedValueVO,codeFixedValue);
                        secCombo.addItem(codeFixedValue);
                    });
                    }
                    /**当系统选择的是指定码段值时,组别代号的码段系统不显示 Begin**/
                    /*FixCodeValObject selObj = (FixCodeValObject) secCombo.getSelectedItem();
                    if(isSpecialRuleFlag && (secObj.getName().equals(specialControlSecName) && secValMap.containsKey(selObj.getValue())) || secValMap.containsKey(getControlSecSelectValue())) {
@@ -742,10 +746,16 @@
        transmit.setRmTypeObject(codeClassify);
        if(currentCodeClassifyTemplateVO!=null) {
            transmit.setTemplateId(templateId);
            Map<String, CodeClassifyTemplateAttrVO> tempPropObjMapsByInnerName = currentCodeClassifyTemplateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
            Map<String, CodeClassifyTemplateAttrVO> tempPropObjMapsByInnerName = new HashMap<>();
            for (CodeClassifyTemplateAttrVO attribute : currentCodeClassifyTemplateVO.getAttributes()) {
                tempPropObjMapsByInnerName.put(attribute.getId().toLowerCase(Locale.ROOT),attribute);
            }
            transmit.setClassifyCode(codeClassify.getId());
            transmit.setTempPropObjMapsByInnerName(tempPropObjMapsByInnerName);
            Map<String, CodeClassifyTemplateAttrVO> tempPropObjsMap = currentCodeClassifyTemplateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getOid().toLowerCase(Locale.ROOT), t -> t));
            Map<String, CodeClassifyTemplateAttrVO> tempPropObjsMap = new HashMap<>();
            for (CodeClassifyTemplateAttrVO attribute : currentCodeClassifyTemplateVO.getAttributes()) {
                tempPropObjsMap.put(attribute.getOid().toLowerCase(Locale.ROOT),attribute);
            }
            transmit.setTempPropObjsMap(tempPropObjsMap);
            transmit.setTemplateObject(currentCodeClassifyTemplateVO);
            transmit.setTempPropObjsList(this.currentCodeClassifyTemplateVO.getAttributes());
@@ -785,7 +795,7 @@
                if (index >= realAttrs.length) {
                    break;
                }
                CodeClassifyTemplateAttrVO attrObj = realAttrs[index];
                final CodeClassifyTemplateAttrVO attrObj = realAttrs[index];
                /***如果模板配置了引用模板,属性名称列表添加链接进行处理 BEGIN**/
                //ADD BY liujw
@@ -951,10 +961,19 @@
                for (int i = 0; i < objs.length; i++) {
                    objs[i] = new AttrRangObjectWarper(keyValues[i]);
                    model.addElement(objs[i]);
                    specMap.put(objs[i].toString(), comboBoxIndex++);
                }
                cbx.setModel(model);
                if(displayValues.containsKey(attrObj.getId())){
//                    cbx.setSelectedItem(displayValues.get(attrObj.getId()));
//                    cbx.setSelectedIndex(3);
                    for (int i = 0; i < objs.length; i++) {
                        if(objs[i].getKeyValue().getKey().equals(displayValues.get(attrObj.getId()))){
                            cbx.setSelectedIndex(i);
                        }
                    }
                    cbx.setEnabled(false);
                }
                compt = cbx;
            }
        } else if(StringUtils.isNotBlank(attrObj.getReferConfig())){//参照的需要设置成下拉框,并且只读
@@ -968,34 +987,69 @@
            cbx.setModel(model);
            compt = cbx;
        } else { // ä¸å­˜åœ¨å–值范围则按类型生成不同的控件
             if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTBoolean)) { // Boolean类型
             if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTBoolean.toString())) { // Boolean类型
                VCIJComboBox cbx = new VCIJComboBox();
                DefaultComboBoxModel model = new DefaultComboBoxModel();
                model.addElement("0");
                model.addElement("1");
                cbx.setModel(model);
                if(displayValues.containsKey(attrObj.getId())){
                    cbx.setSelectedIndex(Integer.parseInt(displayValues.get(attrObj.getId())));
                    cbx.setEnabled(false);
                    return cbx;
                }
                compt = cbx;
            } else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDate)) { // æ—¥æœŸç±»åž‹
                compt = new VCIJCalendarPanel("yyyy-MM-dd",
                    attrObj.getRequireFlag().equals("true"), true, false);
            } else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDateTime)) { // æ—¥æœŸç±»åž‹
                 compt = new VCIJCalendarPanel("yyyy-MM-dd HH:mm:ss",
            } else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDate.toString())) { // æ—¥æœŸç±»åž‹
                 VCIJCalendarPanel aTrue = new VCIJCalendarPanel("yyyy-MM-dd",
                     attrObj.getRequireFlag().equals("true"), true, false);
             }else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTTime)) { // æ—¥æœŸç±»åž‹
                 compt = new VCIJCalendarPanel("HH:mm:ss",
                 if(displayValues.containsKey(attrObj.getId())){
                     aTrue.setDateString(displayValues.get(attrObj.getId()));
                     aTrue.setEnabled(false);
                     return aTrue;
                 }
                 compt = aTrue;
            } else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDateTime.toString())) { // æ—¥æœŸç±»åž‹
                 VCIJCalendarPanel aTrue = new VCIJCalendarPanel("yyyy-MM-dd HH:mm:ss",
                     attrObj.getRequireFlag().equals("true"), true, false);
                 if(displayValues.containsKey(attrObj.getId())){
                     aTrue.setDateString(displayValues.get(attrObj.getId()));
                     aTrue.setEnabled(false);
                     return aTrue;
                 }
                 compt = aTrue;
             }else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTTime.toString())) { // æ—¥æœŸç±»åž‹
                 VCIJCalendarPanel aTrue = new VCIJCalendarPanel("HH:mm:ss",
                     attrObj.getRequireFlag().equals("true"), true, false);
                 if(displayValues.containsKey(attrObj.getId())){
                     aTrue.setDateString(displayValues.get(attrObj.getId()));
                     aTrue.setEnabled(false);
                     return aTrue;
                 }
                 compt = aTrue;
             }
             else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDouble)||attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTLong)) { // Real类型
             else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDouble.toString())||attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTLong.toString())) { // Real类型
                RealTextField txt = new RealTextField("");
                txt.setRequired(attrObj.getRequireFlag().equals("true"));
                if(displayValues.containsKey(attrObj.getId())){
                    txt.setText(displayValues.get(attrObj.getId()));
                    txt.setEditable(false);
                }
                compt = txt;
            } else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTInteger)) { // Integer类型
            } else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTInteger.toString())) { // Integer类型
                IntegerTextField txt = new IntegerTextField("");
                txt.setRequired(attrObj.getRequireFlag().equals("true"));
                if(displayValues.containsKey(attrObj.getId())){
                     txt.setText(displayValues.get(attrObj.getId()));
                     txt.setEditable(false);
                }
                compt = txt;
            }
             else{
                 VCIJTextField txt = new VCIJTextField(this,attrObj.getRequireFlag().equals("true"));
                 if(displayValues.containsKey(attrObj.getId())){
                     txt.setText(displayValues.get(attrObj.getId()));
                     txt.setEditable(false);
                 }
                 compt = txt;
                 textCompts.add(txt);
             }
@@ -1153,7 +1207,8 @@
    private void getComptAttrValue( CodeClassifyTemplateAttrVO  tempPropObj, LinkedHashMap<String, JComponent> attrIdToCtrlMaps) {
        Map<String,String> dataMap=new HashMap<>();
        Map<String,String> condtionMap=new HashMap<>();
        attrIdToCtrlMaps.forEach((key,compt)->{
        for(String key: attrIdToCtrlMaps.keySet()){
            JComponent compt = attrIdToCtrlMaps.get(key);
            String value = "";
            if (compt instanceof JTextComponent) {
                value = ((JTextComponent) compt).getText();
@@ -1170,7 +1225,7 @@
            }
            dataMap.put(key,value);
            condtionMap.put("dataMap["+key+"]",value);
        });
        }
        condtionMap.put("componentRuleValue",tempPropObj.getComponentRule());
        Map<String,String> headerMap=new HashMap<>();
        headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
@@ -1263,7 +1318,7 @@
        dialog.setVisible(true);
    }
    private void doSearch(VCIJComboxBox comboxBox,CodeBasicSecVO secObj){
    private void doSearch(final VCIJComboxBox comboxBox, CodeBasicSecVO secObj){
        if(StringUtils.isBlank(secObj.getReferConfig())){
            VCIOptionPane.showMessage(this,"参照配置信息不正确,请核对!");
            return;
@@ -1552,7 +1607,10 @@
        LinkedList<String> listValues = new LinkedList<String>();
        // å„属性的类型
        LinkedList<String> listDataTypes = new LinkedList<String>();
        Map<String,CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOMap=transmitForRMData.getTempPropObjsList().stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
        Map<String,CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOMap = new HashMap<>();
        for (CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO : transmitForRMData.getTempPropObjsList()) {
            codeClassifyTemplateAttrVOMap.put(codeClassifyTemplateAttrVO.getId(),codeClassifyTemplateAttrVO);
        }
        Iterator<String> keys = attrIdToCtrlMaps.keySet().iterator();
        JComponent compt = null;
        JComponent firstCompt = null;
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyFor410SearchProvider.java
@@ -13,6 +13,7 @@
import com.vci.rmip.code.client.codeapply.Apply410.object.R;
import com.vci.rmip.code.client.codeapply.Apply410.utils.HttpUtil;
import com.vci.rmip.code.client.codeapply.Apply410.utils.ListUtil;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.rmip.code.client.codeapply.Apply410.utils.ConfigUtils;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -36,10 +37,10 @@
        CodeClassifyTemplateVO codeClassifyTemplateVO=this.dialog.getOwnerPanel().getCurrentCodeClassifyTemplateVO();
        if(codeClassifyTemplateVO!=null){
            if(!CollectionUtils.isEmpty(codeClassifyTemplateVO.getAttributes())){
                codeClassifyTemplateVO.getAttributes().stream().forEach(codeClassifyTemplateAttrVO -> {
                for (CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO : codeClassifyTemplateVO.getAttributes()) {
                    fieldList.add(codeClassifyTemplateAttrVO.getId());
                    nameList.add(codeClassifyTemplateAttrVO.getName());
                });
                }
            }
        }
        fields = fieldList.toArray(new String[]{});
@@ -61,11 +62,11 @@
        String data="";
        for (String field:fields){
            if(defaultDataMap.containsKey(field+"_text")){
                 data=defaultDataMap.getOrDefault(field+"_text","");
                 data=defaultDataMap.get(field+"_text") ;
            }else if(defaultDataMap.containsKey(field+"Text")){
                data=defaultDataMap.getOrDefault(field+"Text","");
                data=defaultDataMap.get(field+"Text") ;
            }else{
                data=defaultDataMap.getOrDefault(field,"");
                data=defaultDataMap.get(field);
            }
            res.setPropertyValue(getColumns()[i++], data);
@@ -108,11 +109,11 @@
        List<Map>  dataList= dataGrid.getData();
        List<BaseModel> hostInfos=new ArrayList<>();
        //List<BaseModel> hostInfos=    ListUtil.listMapParseListObj(dataList, BaseModel.class);
        dataList.stream().forEach(map->{
        for (Map map : dataList) {
            BaseModel baseModel= ListUtil.mapParseJavaBean(map,BaseModel.class);
            baseModel.setData(map);
            hostInfos.add(baseModel);
        });
        }
        //List<BaseModel> hostInfos = (List<BaseModel>) dataList.stream().map(entity -> JSONUtil.toBean(JSONUtil.parseObj(entity), BaseModel.class)).collect(Collectors.toList());
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyPanelFor410.java
@@ -59,6 +59,10 @@
     * å­˜å‚¨å±žæ€§å’Œå€¼çš„Map,key:属性名称,value:属性值
     */
    private String deptName = null;
    /**
     * å­˜å‚¨å±žæ€§å’Œå€¼çš„Map,key,用于默认值的显示
     */
    private Map displayValues = new HashMap<String,String>();
    private String[] libName = new String[]{};//代码项名称
    private VCIBaseTree leftTree = null;
@@ -78,7 +82,7 @@
     * @param deptName
     * @param libName
     */
    public CodeApplyPanelFor410(CodeApplyFor410Dialog owner , TokenUserObject tokenUserObject, boolean isIntegrate, String clsfName, String deptName, String[] libName){
    public CodeApplyPanelFor410(CodeApplyFor410Dialog owner , TokenUserObject tokenUserObject, boolean isIntegrate, String clsfName, String deptName, String[] libName,Map displayValues){
        this.tokenUserObject = tokenUserObject;
        this.owner =owner;
        rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,getCurrentCodeClassifyTemplateVO());
@@ -86,6 +90,7 @@
        this.clsfName = clsfName;
        this.deptName = deptName;
        this.libName = libName;
        this.displayValues = displayValues;
        init();
        initActionListener();
    }
@@ -188,9 +193,9 @@
            VCIOptionPane.showMessage(this,r.getMsg());
        }
        if(!CollectionUtils.isEmpty(codeClassifyList)){
            codeClassifyList.stream().forEach(codeClassify -> {
            for (CodeClassify codeClassify : codeClassifyList) {
                codeItemCombo.addItem(codeClassify);
            });
            }
            codeItemCombo.setSelectedIndex(0);
        }
        initLeftPanel();
@@ -293,7 +298,7 @@
                initBtnStatus(res);
            }
        }
        rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,deptName,getCurrentCodeClassifyTemplateVO());
        rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,deptName,getCurrentCodeClassifyTemplateVO(),displayValues);
        scrollPane.setViewportView(rightMainPanel);
        rightMainPanel.buildMainPanel(1);
        int location = jspLeftToRight.getDividerLocation();
@@ -358,7 +363,7 @@
        transmitTreeObject.setCurrentTreeNode(selectedTreeNode);
        if(selectedTreeNode.isRoot() && selectedTreeNode.getObj() instanceof String) return;
        scrollPane = new JScrollPane();
        rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,deptName,getCurrentCodeClassifyTemplateVO());
        rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,deptName,getCurrentCodeClassifyTemplateVO(),displayValues);
        scrollPane.setViewportView(rightMainPanel);
        rightMainPanel.buildMainPanel(1);
        VCIJPanel rightPanel = new VCIJPanel();
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeApplyPanelFor410ActionListener.java
@@ -25,6 +25,7 @@
    private LinkedHashMap<String, Runnable> actionMaps = new LinkedHashMap<String, Runnable>();
    boolean codeAlreadExist = false;
    private String url= ConfigUtils.getConfigValue("410.code.url","http://127.0.0.1:36014/codeApplySwingController");
    private String classifyGroupCode= ConfigUtils.getConfigValue("410.code.codeApply.classifyGroupCode");
    public CodeApplyPanelFor410ActionListener(CodeApplyPanelFor410 owner){
        this.owner = owner;
        this.initActionMap();
@@ -103,12 +104,12 @@
        codeOrderDTO.setTemplateOid(codeClassifyTemplateVO.getOid());
        codeOrderDTO.setCodeRuleOid(codeRuleVO.getOid());
        List<CodeOrderSecDTO> secDTOList=new ArrayList<>();
        keyValueList.stream().forEach(keyValue -> {
        for (KeyValue keyValue : keyValueList) {
            CodeOrderSecDTO codeOrderSecDTO=new CodeOrderSecDTO();
            codeOrderSecDTO.setSecOid(keyValue.getKey());
            codeOrderSecDTO.setSecValue(keyValue.getValue());
            secDTOList.add(codeOrderSecDTO);
        });
        }
        codeOrderDTO.setLcStatus("Released");
        codeOrderDTO.setSecDTOList(secDTOList);
        codeOrderDTO.setData(dataMap);
@@ -119,6 +120,9 @@
        String code="";
        //校验关键属性存在的数据直接返回编码
        R checkKeyAttrOnOrderR= HttpUtil.sendPost(url+"/checkKeyAttrOnOrderFordatas",object.toString(),headerMap);
        //查询当前申请编码的类型
        R checkGroupCode= HttpUtil.sendGet(url+"/checkGroupCode?oid="+codeClassify.getOid()+
            "&classifyGroupCode="+classifyGroupCode,null,headerMap);
        if(checkKeyAttrOnOrderR.isSuccess()){
            List<Map> list=(List)checkKeyAttrOnOrderR.getData();
            if(!CollectionUtils.isEmpty(list)) {
@@ -127,6 +131,15 @@
                this.owner.getApplyTxt().requestFocusInWindow();
                this.owner.getApplyTxt().selectAll();
                this.owner.setAttrNameAndValMap(attrNameAndValMap);
                if(checkGroupCode.isSuccess()){
                    if(checkGroupCode.getData().equals("true")){
                        VCIOptionPane.showMessage(this.owner, "当前分类的企业编码为:"+list.get(0).get("GROUPCODE"));
                    }else{
                        VCIOptionPane.showMessage(this.owner, "当前编码分类未找到相应的集团,请检查!!");
                    }
                }else {
                    VCIOptionPane.showMessage(this.owner, "远程调用失败,请重试!");
                }
                return;
            }
        }
@@ -139,6 +152,20 @@
            this.owner.setAttrNameAndValMap(attrNameAndValMap);
        }else{
            VCIOptionPane.showMessage(this.owner,r.getMsg());
        }
        if(checkGroupCode.isSuccess()){
            if(checkGroupCode.getData().equals("false")){
                Map<String,String> applyMap = new HashMap<>();
                applyMap.put("oids",codeClassify.getOid());
                applyMap.put("btmName",codeClassify.getBtmname());
                Object applyGroupCodeData = JSONObject.toJSON(applyMap);
                R applyResult= HttpUtil.sendPost(url+"/DockingPreApplyCode/applyGroupCode",applyGroupCodeData.toString(),headerMap);
                if(!applyResult.isSuccess()){
                    VCIOptionPane.showMessage(this.owner, r.getMsg());
                }
            }
        }else {
            VCIOptionPane.showMessage(this.owner, "远程调用失败,请注意!");
        }
    }
@@ -161,7 +188,8 @@
        CodeApplyFor410MainPanel rightMainPanel2 = this.owner.getRightMainPanel();
        LinkedHashMap<String, JComponent> attrInnerNameToCtrlMaps = rightMainPanel2.getAttrInnerNameToCtrlMaps();
        if(attrInnerNameToCtrlMaps!=null&&attrInnerNameToCtrlMaps.size()>0){
            attrInnerNameToCtrlMaps.forEach((key,component)->{
            for(String key : attrInnerNameToCtrlMaps.keySet()){
                JComponent component = attrInnerNameToCtrlMaps.get(key);
                if(component instanceof JTextComponent){
                    if(((JTextComponent) component).isEnabled())
                        ((JTextComponent) component).setText("");
@@ -169,7 +197,7 @@
                    if(((VCIJComboBox) component).isEnabled())
                        ((VCIJComboBox) component).setSelectedIndex(0);
                }
            });
            }
        }
        String applyCode = this.owner.getApplyCode();
        if(StringUtils.isBlank(applyCode)) {
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/CodeDataMainPanelDataProvider.java
@@ -20,7 +20,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
public class CodeDataMainPanelDataProvider extends AbstractVCIJTableDataProvider<BaseModel> {
    private CodeDataMainPanel ownerPanel;
@@ -37,12 +36,12 @@
        LinkedList<String> nameList = new LinkedList<>();
        LinkedList<String> fieldList = new LinkedList<>();
        List<CodeShowFieldConfigVO> colsList=ownerPanel.getUiFormRefer().getCodeShowFieldConfigVOS();
        colsList.stream().forEach(columns->{
        for (CodeShowFieldConfigVO columns : colsList) {
            String  title= columns.getTitle();
            String field=columns.getField();
            nameList.add(title);
            fieldList.add(field);
        });
        }
        specialColumns = nameList.toArray(new String[]{});
        fields = fieldList.toArray(new String[]{});
        return specialColumns;
@@ -61,7 +60,7 @@
        VCIJTableNode<BaseModel> res = new VCIJTableNode<BaseModel>(model);
        int i=dataColumnStartIndex;
        for (String field:fields){
            String data=defaultDataMap.getOrDefault(field,"");
            String data=defaultDataMap.containsKey(field) ? defaultDataMap.get(field) : "" ;
            res.setPropertyValue(getColumns()[i++], data);
        }
        return res;
@@ -81,19 +80,18 @@
            List<CodeSrchCondConfigVO> codeSrchCondConfigVOS=uiFormRefer.getCodeSrchCondConfigVOS();
            JSONObject jsonObject=new JSONObject();
            if(!CollectionUtils.isEmpty(codeSrchCondConfigVOS)){
                codeSrchCondConfigVOS.stream().forEach(codeSrchCondConfigVO -> {
                for (CodeSrchCondConfigVO codeSrchCondConfigVO : codeSrchCondConfigVOS) {
                    String field=codeSrchCondConfigVO.getFilterField();
                    String value=codeSrchCondConfigVO.getFilterValue();
                    String filterType= codeSrchCondConfigVO.getFilterType();
                    condtionMap.put("conditionMap["+field+"]",value);
                });
                }
            }
            Map<String, String> customCondtionMap=ownerPanel.getCustomCondtionMap();
            if(customCondtionMap!=null&&customCondtionMap.size()>0){
                customCondtionMap.forEach((field, value) -> {
                    condtionMap.put("conditionMap["+field+"]",value);
                });
                for(String field : customCondtionMap.keySet()){
                    condtionMap.put("conditionMap["+field+"]",customCondtionMap.get(field));
                }
            }
            Map<String,String> headerMap=new HashMap<>();
            headerMap.put("Blade-Auth",this.ownerPanel.getTokenUserObject().getAccess_token());
@@ -116,7 +114,10 @@
        List dataList=  iPage.getRecords();
        BaseModel [] baseModels=new BaseModel[]{};
        if(!CollectionUtils.isEmpty(dataList)) {
            List<BaseModel> hostInfos = (List<BaseModel>) dataList.stream().map(entity -> JSONUtil.toBean(JSONUtil.parseObj(entity), BaseModel.class)).collect(Collectors.toList());
            List<BaseModel> hostInfos = new ArrayList<>();
            for (Object entity : dataList) {
                hostInfos.add(JSONUtil.toBean(JSONUtil.parseObj(entity),BaseModel.class));
            }
            baseModels = hostInfos.toArray(new BaseModel[]{});
        }
        return baseModels;
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/RMDataReferTempDialogActionListener.java
@@ -65,8 +65,8 @@
                if(treeNode.getObj() instanceof Tree) {
                    Tree tree =(Tree)treeNode.getObj();
                    Map<String,String> attibuteMap=    tree.getAttributes();
                    String fieldValue=attibuteMap.getOrDefault(valueField,"");
                    String textValue=attibuteMap.getOrDefault(textField,"");
                    String fieldValue=attibuteMap.containsKey(valueField) ? attibuteMap.get(valueField) : "";
                    String textValue=attibuteMap.containsKey(textField) ? attibuteMap.get(textField) : "";
                    KeyValue keyValue=new KeyValue();
                    keyValue.setKey(fieldValue);
                    keyValue.setValue(textValue);
@@ -85,8 +85,8 @@
                BaseModel baseModel=list.get(0);
                Map<String, String> defaultDataMap= VciBaseUtil.objectToMapString(list.get(0));
                defaultDataMap.putAll(baseModel.getData());
                String fieldValue=defaultDataMap.getOrDefault(valueField,"");
                String textValue=defaultDataMap.getOrDefault(textField,"");
                String fieldValue=defaultDataMap.containsKey(valueField) ? defaultDataMap.get(valueField) : "";
                String textValue=defaultDataMap.containsKey(textField) ? defaultDataMap.get(textField) : "";
                KeyValue keyValue=new KeyValue();
                keyValue.setKey(fieldValue);
                keyValue.setValue(textValue);
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/IPage.java
@@ -1,49 +1,48 @@
package com.vci.rmip.code.client.codeapply.Apply410.object;
import java.io.Serializable;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public interface IPage<T> extends Serializable {
    List<OrderItem> orders();
    default boolean optimizeCountSql() {
        return true;
    }
//    default boolean optimizeCountSql() {
//        return true;
//    }
    default boolean optimizeJoinOfCountSql() {
        return true;
    }
//    default boolean optimizeJoinOfCountSql() {
//        return true;
//    }
//
//    default boolean searchCount() {
//        return true;
//    }
//
//    default long offset() {
//        long current = this.getCurrent();
//        return current <= 1L ? 0L : Math.max((current - 1L) * this.getSize(), 0L);
//    }
    default boolean searchCount() {
        return true;
    }
//    default Long maxLimit() {
//        return null;
//    }
//
//    default long getPages() {
//        if (this.getSize() == 0L) {
//            return 0L;
//        } else {
//            long pages = this.getTotal() / this.getSize();
//            if (this.getTotal() % this.getSize() != 0L) {
//                ++pages;
//            }
//
//            return pages;
//        }
//    }
    default long offset() {
        long current = this.getCurrent();
        return current <= 1L ? 0L : Math.max((current - 1L) * this.getSize(), 0L);
    }
    default Long maxLimit() {
        return null;
    }
    default long getPages() {
        if (this.getSize() == 0L) {
            return 0L;
        } else {
            long pages = this.getTotal() / this.getSize();
            if (this.getTotal() % this.getSize() != 0L) {
                ++pages;
            }
            return pages;
        }
    }
    default IPage<T> setPages(long pages) {
        return this;
    }
//    default IPage<T> setPages(long pages) {
//        return this;
//    }
    List<T> getRecords();
@@ -61,11 +60,11 @@
    IPage<T> setCurrent(long current);
    default <R> IPage<T> convert(Function<? super T, ? extends R> mapper) {
        List<T> collect = (List)this.getRecords().stream().map(mapper).collect(Collectors.toList());
        return this.setRecords(collect);
    }
    default String countId() {
        return null;
    }
//    default <R> IPage<T> convert(Function<? super T, ? extends R> mapper) {
//        List<T> collect = (List)this.getRecords().stream().map(mapper).collect(Collectors.toList());
//        return this.setRecords(collect);
//    }
//    default String countId() {
//        return null;
//    }
}
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/OrderItem.java
@@ -1,7 +1,7 @@
package com.vci.rmip.code.client.codeapply.Apply410.object;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class OrderItem {
@@ -18,11 +18,21 @@
    }
    public static List<OrderItem> ascs(String... columns) {
        return (List) Arrays.stream(columns).map(OrderItem::asc).collect(Collectors.toList());
        List<OrderItem> orderItems = new ArrayList<>();
        for (String column : columns) {
            orderItems.add(asc(column));
        }
        return orderItems;
//            (List) Arrays.stream(columns).map(OrderItem::asc).collect(Collectors.toList());
    }
    public static List<OrderItem> descs(String... columns) {
        return (List)Arrays.stream(columns).map(OrderItem::desc).collect(Collectors.toList());
        List<OrderItem> orderItems = new ArrayList<>();
        for (String column : columns) {
            orderItems.add(desc(column));
        }
        return orderItems;
//            (List)Arrays.stream(columns).map(OrderItem::desc).collect(Collectors.toList());
    }
    private static OrderItem build(String column, boolean asc) {
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/Page.java
@@ -3,7 +3,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
public class Page<T> {
    private static final long serialVersionUID = 8545996863226528798L;
@@ -113,25 +112,25 @@
        return this.maxLimit;
    }
    private String[] mapOrderToArray(Predicate<OrderItem> filter) {
        List<String> columns = new ArrayList(this.orders.size());
        this.orders.forEach((i) -> {
            if (filter.test(i)) {
                columns.add(i.getColumn());
            }
//    private String[] mapOrderToArray(Predicate<OrderItem> filter) {
//        List<String> columns = new ArrayList(this.orders.size());
//        this.orders.forEach((i) -> {
//            if (filter.test(i)) {
//                columns.add(i.getColumn());
//            }
//
//        });
//        return (String[])columns.toArray(new String[0]);
//    }
        });
        return (String[])columns.toArray(new String[0]);
    }
    private void removeOrder(Predicate<OrderItem> filter) {
        for(int i = this.orders.size() - 1; i >= 0; --i) {
            if (filter.test(this.orders.get(i))) {
                this.orders.remove(i);
            }
        }
    }
//    private void removeOrder(Predicate<OrderItem> filter) {
//        for(int i = this.orders.size() - 1; i >= 0; --i) {
//            if (filter.test(this.orders.get(i))) {
//                this.orders.remove(i);
//            }
//        }
//
//    }
    public Page<T> addOrder(OrderItem... items) {
        this.orders.addAll(Arrays.asList(items));
Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties
@@ -26,5 +26,4 @@
410.code.token.tenantId=000000
410.code.token.authorization=Basic c3dvcmQ6c3dvcmRfc2VjcmV0
410.code.token.contentType=application/x-www-form-urlencoded
410.code.codeApply.classifyGroupCode=wupin#appendix#renyuanku
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyValueVO.java
@@ -23,7 +23,7 @@
    /**
    * åˆ†ç±»ç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
    */
    private String codeclassifysecoidName;
    private String codeClassifySecOidName;
    /**
    * ç å€¼åºå·
@@ -61,15 +61,15 @@
    /**
     * èŽ·å–åˆ†ç±»ç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getCodeclassifysecoidName (){
        return codeclassifysecoidName;
    public String getCodeClassifySecOidName (){
        return codeClassifySecOidName;
    }
    /**
    * è®¾ç½®åˆ†ç±»ç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
    */
    public void setCodeclassifysecoidName (String codeclassifysecoidName){
        this.codeclassifysecoidName = codeclassifysecoidName;
    public void setCodeClassifySecOidName (String codeclassifysecoidName){
        this.codeClassifySecOidName = codeclassifysecoidName;
    }
    /**
     * èŽ·å– ç å€¼åºå·
@@ -118,16 +118,16 @@
        this.name = name;
    }
    @Override
    public String toString() {
        return "CodeClassifyValueVO{" +
                "codeClassifySecOid='" + codeClassifySecOid + '\'' +
                ", codeclassifysecoidName='" + codeclassifysecoidName + '\'' +
                ", codeClassifySecOidName='" + codeClassifySecOidName + '\'' +
                ", orderNum=" + orderNum +
                ", parentClassifyValueOid='" + parentClassifyValueOid + '\'' +
                ", id='" + id + '\'' +
                ", name='" + name + '\'' +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
@@ -207,6 +207,7 @@
    }
    @Override
    public String toString() {
        return "Tree{oid='" + this.oid + '\'' + ", text='" + this.text + '\'' + ", leaf=" + this.leaf + ", showCheckbox=" + this.showCheckbox + ", checked=" + this.checked + ", children=" + this.children + ", icon='" + this.icon + '\'' + ", iconCls='" + this.iconCls + '\'' + ", parentId='" + this.parentId + '\'' + ", parentName='" + this.parentName + '\'' + ", parentBtmName='" + this.parentBtmName + '\'' + ", expanded=" + this.expanded + ", href='" + this.href + '\'' + ", index='" + this.index + '\'' + ", attributes=" + this.attributes + '}';
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/config/AuthenticationInterceptor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.vci.ubcs.code.config;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @author ludc
 * @date 2023/9/12 11:49
 */
public class AuthenticationInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/config/WebConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.vci.ubcs.code.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * webservice接口拦截器
 * @author ludc
 * @date 2023/9/12 11:16
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthenticationInterceptor())
            .addPathPatterns("/api/protected/**");
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
@@ -237,4 +237,15 @@
    public R checkKeyAttrOnOrderFordatas(@RequestBody CodeOrderDTO orderDTO) throws Exception {
        return R.data(mdmEngineService.checkKeyAttrOnOrderFordatas(orderDTO));
    }
    /**
     * é›†å›¢/企业码段判断
     * @param parameter ä¼ å…¥æ•°æ® ,classifyGroupCode:配置的中的分类顶节点,oid:选择节点的oid--,nowApplyCode:当前申请编码的分类
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/checkGroupCode")
    @VciBusinessLog(operateName = "集团/企业码段判断")
    public R checkGroupCode(Map<String,String> parameter) throws Exception {
        return R.data(mdmEngineService.checkGroupCode(parameter));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.vci.ubcs.code.controller;
import com.vci.ubcs.code.service.IPasswordFreeLoginService;
import io.swagger.annotations.Api;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * @author ludc
 * @date 2023/9/12 9:07
 */
@RestController
@RequestMapping("/passwordFree")
@Api(value = "免密登录接口", tags = "免密登录接口")
public class PasswordFreeLoginController {
    @Resource
    private IPasswordFreeLoginService passwordFreeLoginService;
    @GetMapping("/login")
    public R passwordFreeLogin(String account) {
        boolean resBoolean = passwordFreeLoginService.passwordFreeLogin(account);
        return R.status(resBoolean);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -161,4 +161,12 @@
     * @param classifyList
     */
    void batchUpdateLcStatus(@Param("records") List<CodeClassify> classifyList);
    /**
     * å‘上查询树形结构
     *
     * @param oid åˆ†ç±»çš„主键
     * @return æ•°æ®é›†åˆ
     */
    List<CodeClassify> selectAllParents(@Param("oid") String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyValueMapper.java
@@ -16,6 +16,8 @@
    List<String> selectAllLevelChildOid(@Param("oid") String oid);
    List<String> selectChildOid(@Param("oid") String oid);
    Long countAllLevelChildOid(@Param("oid") String oid);
    String getClassifyValueStr(@Param("oid") String oid);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -454,4 +454,10 @@
     */
    public List<Map>  checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) ;
    }
    /**
     * æ ¹æ®å½“前申请编码的分类,逐层往上校验是否符合属于配置的中的分类子节点的分
     * ç±»ï¼Œå¦‚果符合,则该分类申请的编码为集团码返回true,反之则为企业编码返回false
     * @param parameter ä¼ å…¥æ•°æ®,classifyGroupCode:配置的中的分类顶节点,oid:选择节点的oid
     */
    R checkGroupCode(Map<String, String> parameter);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -101,7 +101,7 @@
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
        return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyValueVO s) ->{
            //可以在这里处理树节点的显示
            return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
            return s.getId() + " " + (Func.isNotEmpty(s.getName()) ? s.getName():"") + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
                .getLcStatus()) ? (" ã€åœç”¨ã€‘ ") : "");
        });
    }
@@ -130,11 +130,15 @@
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyValueDTO,codeClassifyValueDO);
        //填充一些默认值
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeClassifyValueDO, MdmBtmTypeConstant.CODE_CLASSIFY_VALUE);
        LambdaQueryWrapper<CodeClassifyValue> wrapper = Wrappers.<CodeClassifyValue>query()
            .lambda().eq(CodeClassifyValue::getCodeClassifySecOid, codeClassifyValueDO.getCodeClassifySecOid());
        if(Func.isEmpty(codeClassifyValueDO.getParentClassifyValueOid())){
            wrapper.isNull(CodeClassifyValue::getParentClassifyValueOid);
        }else{
            wrapper.eq(CodeClassifyValue::getParentClassifyValueOid, codeClassifyValueDO.getParentClassifyValueOid());
        }
        //查询
        List<CodeClassifyValue> existList = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query()
            .lambda().eq(CodeClassifyValue::getCodeClassifySecOid, codeClassifyValueDO.getCodeClassifySecOid())
            .eq(CodeClassifyValue::getParentClassifyValueOid, codeClassifyValueDO.getParentClassifyValueOid())
        );
        List<CodeClassifyValue> existList = codeClassifyValueMapper.selectList(wrapper);
        codeClassifyValueDO.setOrderNum(existList.size() + 1);
        boolean resBoolean = codeClassifyValueMapper.insert(codeClassifyValueDO) > 0;
        return resBoolean;
@@ -244,19 +248,17 @@
        VciBaseUtil.alertNotNull(codeClassifyValueDTO,"分类码段的码值数据对象",codeClassifyValueDTO.getOid(),"分类码段的码值的主键");
        CodeClassifyValue codeClassifyValueDO = selectByOid(codeClassifyValueDTO.getOid());
        R baseResult = checkIsCanDeleteForDO(codeClassifyValueDTO,codeClassifyValueDO);
        if(!baseResult.isSuccess()) {
            //找下级的,这个是可以删除的时候R
            List<String> childrenOids = codeClassifyValueMapper.selectAllLevelChildOid(codeClassifyValueDO.getOid().trim());
        if(baseResult.isSuccess()) {
            //先删除下级码值,找下级的,这个是可以删除的时候
            List<String> childrenOids = codeClassifyValueMapper.selectChildOid(codeClassifyValueDO.getOid().trim());
            if (!CollectionUtils.isEmpty(childrenOids)) {
                Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids);
                for(Collection<String> s : childrenCollections){
                    codeClassifyValueMapper.delete(Wrappers.<CodeClassifyValue>query().lambda().eq(CodeClassifyValue::getOid,s));
                    codeClassifyValueMapper.deleteBatchIds(s);
                }
            }
        }else{
            return baseResult;
        }
        //执行删除操作
        //执行删除操作,再删除父的码值
        boolean resBoolean = codeClassifyValueMapper.deleteById(codeClassifyValueDO.getOid()) > 0;
        return R.status(resBoolean);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -119,9 +119,6 @@
    @Resource
    private ICodeFixedValueService codeFixedValueService;
    @Resource
    private ICodeClassifyValueService codeClassifyValueService;
    /**
     * åˆ†é¡µæŸ¥è¯¢
     * @param query
@@ -129,7 +126,7 @@
     * @return
     */
    @Override
    public IPage<CodeRuleVO> gridCodeRule(Query query, Map<String,Object> conidtionMap) {
    public IPage<CodeRuleVO> gridCodeRule(Query query, Map<String,Object> conidtionMap) throws VciBaseException {
        //如果等于自己配置的管理组租户id和管理组超管账号,就不需要按照规则所有者来进行查询
        if(!(AuthUtil.getTenantId().equals(nacosConfigCache.getAdminUserInfo().getTenantId())
            && AuthUtil.getUserId().toString().equals(nacosConfigCache.getAdminUserInfo().getUserId().toString()))
@@ -170,7 +167,7 @@
     * @return è¿”回false表示未重复
     */
    @Override
    public boolean checkCodeRuleRepeat(CodeRuleDTO codeRuleDTO){
    public boolean checkCodeRuleRepeat(CodeRuleDTO codeRuleDTO)throws VciBaseException {
        LambdaQueryWrapper<CodeRule> wrapper = Wrappers.<CodeRule>query()
            .lambda().eq(CodeRule::getId, codeRuleDTO.getId());
        if(AuthUtil.getTenantId().equals(nacosConfigCache.getAdminUserInfo().getTenantId())){
@@ -331,7 +328,7 @@
     * @return true表示已经使用,false表示未被使用
     */
    @Override
    public boolean isAlreadyInUse(String oid) {
    public boolean isAlreadyInUse(String oid) throws VciBaseException {
        Collection<CodeClassifyVO> codeClassifyVOS = listUseRangeInCodeClassify(oid);
        if (codeClassifyVOS.size() > 0) {
            return true;
@@ -347,7 +344,7 @@
     * @return ä¸»é¢˜åº“分类使用到该编码规则的所有集合
     */
    @Override
    public Collection<CodeClassifyVO> listUseRangeInCodeClassify(String oid) {
    public Collection<CodeClassifyVO> listUseRangeInCodeClassify(String oid) throws VciBaseException {
        List<CodeClassify> codeClassifies = codeClassifyServcie.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getCodeRuleOid, oid));
        return CodeClassifyWrapper.build().listVO(codeClassifies);
    }
@@ -400,7 +397,7 @@
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeRule> listCodeRuleDOByOidCollections(Collection<String> oidCollections) {
    private List<CodeRule> listCodeRuleDOByOidCollections(Collection<String> oidCollections) throws VciBaseException {
        List<CodeRule> codeRuleDOList = new ArrayList<CodeRule>();
        if (!CollectionUtils.isEmpty(oidCollections)) {
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
@@ -434,7 +431,7 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R updateStatus(String oid, String update) {
    public R updateStatus(String oid, String update) throws VciBaseException {
        int count = 0;
        //先查询对象
        CodeRule codeRuleDO = selectByOid(oid);
@@ -545,7 +542,7 @@
     * @return è§„则的显示对象
     */
    @Override
    public CodeRuleVO getObjectHasSecByOid(String oid) {
    public CodeRuleVO getObjectHasSecByOid(String oid) throws VciBaseException {
        CodeRule ruleDO = selectByOid(oid);
        return codeRuleDO2VO(ruleDO, true);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -746,7 +746,29 @@
        return dataList;
    }
    /**
    /**
     * æ ¹æ®å½“前申请编码的分类,逐层往上校验是否符合属于配置的中的分类子节点的分
     * ç±»ï¼Œå¦‚果符合,则该分类申请的编码为集团码返回true,反之则为企业编码返回false
     * @param parameter ä¼ å…¥æ•°æ®,classifyGroupCode:配置的中的分类顶节点,oid:选择节点的oid
     */
    @Override
    public R checkGroupCode(Map<String, String> parameter) {
        List<CodeClassify> codeClassifyList = classifyService.selectAllLevelParents(parameter.get("oid"));
        Set<String> configGroupCode = Arrays.stream(parameter.get("classifyGroupCode").split("#")).collect(Collectors.toSet());
//        Boolean checkGroupFlag = false;//是否查询到配置的顶层分类中
        for (int i = codeClassifyList.size()-1; i >= 0; i--) {
            if(configGroupCode.contains(codeClassifyList.get(i).getId())){
//                checkGroupFlag = true;
                return R.data("true");
            }
//            if(checkGroupFlag && parameter.get("nowApplyCode").equals(codeClassifyList.get(i).getId())){
//                return R.data(true);
//            }
        }
        return R.data("false");
    }
    /**
     * å°è£…关键属性的查询语句
     *
     * @param value        å½“前的值
@@ -2408,7 +2430,6 @@
        return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase);
    }
    /**
     * è·¯å¾„上包含当前分类的所有分类信息
     *
@@ -2756,13 +2777,13 @@
            CodeSecTypeEnum.CODE_FIXED_SEC.getValue(),
            CodeSecTypeEnum.CODE_VARIABLE_SEC.getValue(),
            CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue(),
            CodeSecTypeEnum.CODE_REFER_SEC.getValue()
            CodeSecTypeEnum.CODE_REFER_SEC.getValue(),
            CodeSecTypeEnum.CODE_DATE_SEC.getValue()
        );
        // åªè¯»ç æ®µç±»åž‹
        List<String> readOnlyTypes = Arrays.asList(
            CodeSecTypeEnum.CODE_LEVEL_SEC.getValue(),
            CodeSecTypeEnum.CODE_ATTR_SEC.getValue(),
            CodeSecTypeEnum.CODE_DATE_SEC.getValue()
            CodeSecTypeEnum.CODE_ATTR_SEC.getValue()
        );
        // éšè—ç æ®µç±»åž‹
        /*List<String> hideType = Arrays.asList(
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
@@ -1,8 +1,12 @@
package com.vci.ubcs.code.service.impl;
import com.vci.ubcs.code.service.IPasswordFreeLoginService;
import com.vci.ubcs.code.util.HttpUtils;
import org.apache.commons.collections4.MultiValuedMap;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
@@ -13,6 +17,9 @@
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.List;
/**
 * å…å¯†ç™»å½•服务
 * @author ludc
@@ -21,8 +28,22 @@
@Service
public class PasswordFreeLoginServiceImpl implements IPasswordFreeLoginService {
    private RestTemplate restTemplate;
    // é€šè¿‡æœåŠ¡æ³¨å†Œä¸­å¿ƒèŽ·å–ç½‘å…³çš„ç«¯å£å·
    @Autowired
    private DiscoveryClient discoveryClient;
    /**
     * èŽ·å–ç½‘å…³ç«¯å£
     * @return
     */
    public String getGatewayPort() {
        List<ServiceInstance> instances = discoveryClient.getInstances("ubcs-gateway");
        if (!instances.isEmpty()) {
            ServiceInstance gatewayInstance = instances.get(0);
            return String.valueOf(gatewayInstance.getPort());
        }
        return "80";
    }
    /**
     * å…å¯†ç™»å½•
@@ -32,7 +53,7 @@
    @Override
    public boolean passwordFreeLogin(String account) {
        // å…å¯†ç™»å½•接口地址
        String loginUrl = "http://ubcs-auth/auth/login";
        String loginUrl = "http://localhost:"+this.getGatewayPort()+"/ubcs-auth/oauth/passwordFreeLogin?username=admin&grant_type=captcha&scope=all&type=account";
        // è®¾ç½®è¯·æ±‚头
        HttpHeaders headers = new HttpHeaders();
@@ -42,13 +63,9 @@
        MultiValueMap<String,String> bodyParams = new LinkedMultiValueMap<String,String>();
        bodyParams.add("account",account);
        // åˆ›å»ºè¯·æ±‚实体
        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(bodyParams, headers);
        // å‘送POST请求
        ResponseEntity<String> responseEntity = restTemplate.exchange(loginUrl, HttpMethod.POST, requestEntity, String.class);
        String responseBody = responseEntity.getBody();
        String responseBody = HttpUtils.post(loginUrl, bodyParams);
        System.out.println(responseBody);
        //拿到响应体将token存入到redis中,以account作为存储的key
        // è§£æžå“åº”体获取令牌
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -510,4 +510,11 @@
        </foreach>
        ;END;
    </update>
    <select id="selectAllParents" resultMap="plCodeClassifyResultMap">
        select * from PL_CODE_CLASSIFY p
            start with p.OID =#{oid}
        connect by p.oid = prior p.PARENTCODECLASSIFYOID
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyValueMapper.xml
@@ -9,6 +9,9 @@
        CONNECT BY PRIOR PARENTCLASSIFYVALUEOID = OID
    </select>
    <select id="selectChildOid" resultType="java.lang.String">
        select OID from PL_CODE_CLASSIFYVALUE where PARENTCLASSIFYVALUEOID =#{oid}
    </select>
    <select id="countAllLevelChildOid" resultType="java.lang.Long">
        select count(OID) countsize