xiejun
2023-09-18 7db3ee6e84714a868e0b57a61a033d050b1a61fc
Merge remote-tracking branch 'origin/master'
已修改24个文件
345 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/docking/data.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/loge.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/task.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/config/website.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/login/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/data.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/loge.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/task.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/originalAdd.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/wel/Statistic.vue 139 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeReferConfig.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFieldSortVO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSyncUniversalController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/data.js
@@ -1,6 +1,6 @@
import request from '@/router/axios';
export const getList = (page, size, params) => {
export const getDataList = (page, size, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridDockingData',
    method: 'get',
Source/UBCS-WEB/src/api/docking/loge.js
@@ -1,6 +1,6 @@
import request from '@/router/axios';
export const getList = (page, limit, params) => {
export const getLogoList = (page, limit, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridLoge',
    method: 'get',
Source/UBCS-WEB/src/api/docking/task.js
@@ -1,6 +1,6 @@
import request from '@/router/axios';
export const getList = (page, size, params) => {
export const getTaskList = (page, size, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridDockingTask',
    method: 'get',
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -90,9 +90,13 @@
      type: String,
      default: "",
    },
    eventList:{
      type:Array
    }
  },
  data() {
    return {
      eventFlag:{},
      TreeValueForm:'',
      updateIndex: 0,
      form: {},
@@ -122,6 +126,9 @@
  },
    mounted() {
    this.handleResize();
  },
  created() {
  },
  computed: {
    localTrendsSpan() {
@@ -157,6 +164,16 @@
  methods: {
    // 渲染表单模板
    templateRender(formItemList,TreeValue) {
      if (this.eventList) {
        this.eventFlag= this.eventList.some(item => {
          if (item.classifyInvokeEditFlag === 'true') {
            console.log('even', item);
            this.eventObject = item;
            return true;
          }
        });
        // console.log('add',add)
      }
      // 无需分组数据
      let column = [];
      let group = [];
@@ -165,6 +182,7 @@
      let value=''
      formItemList.forEach((formItem) => {
        formItem = this.resetFormConfig(formItem);
        console.log(formItem)
        // console.log('formItem.dicData.value',formItem.dicData)
        if (formItem.type === "line") {
          group.push({
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -15,6 +15,7 @@
      :type="type"
      :TreeValue="TreeValue"
      :rowOid="rowOid"
      :eventList="eventList"
      :templateOid="templateOid"
      v-if="dialogVisible"
      ref="FormTemplate"
@@ -128,6 +129,7 @@
  },
  data() {
    return {
      eventList:[],
      //码值的第二种只读隐藏情况
      codeValueApplyStatus:'',
      loading: false,
@@ -256,6 +258,8 @@
              this.$refs.FormTemplate.templateRender(
                res.data.formDefineVO.items
              );
              this.eventList=res.data.templateVO.attributes
              // this.$refs.FormTemplate.$emit('eventList',  res.data.templateVO.attributes);
              if (Object.keys(this.setForm).length > 0) {
                this.$refs.FormTemplate.form = this.setForm;
              }
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -182,7 +182,8 @@
    },
    Treedata: {
      type: Array
    }
    },
  },
  data() {
    return {
Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue
@@ -26,7 +26,8 @@
          <el-option label="数据查询" value="queryData"></el-option>
        </el-select>
      </el-form-item>
<!--      集成任务 是否推送成功  集成数据  是否分解任务-->
<!--      集成任务 是否推送成功
集成数据  是否分解任务-->
      <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>
@@ -71,7 +72,9 @@
</template>
<script>
import {getList} from "@/api/docking/loge";
import {getLogoList} from "@/api/docking/loge";
import {getDataList} from "@/api/docking/data";
import {getTaskList} from "@/api/docking/task";
export default {
  name: "VciDockingSearch",
  props:['SearchObject','page','formInline','status'],
@@ -117,7 +120,8 @@
    },
    SaveHandler(){
      let name = this.SearchObject.searchData[this.formInline.type].prop;
      getList(this.page.currentPage, this.page.pageSize, { [`conditionMap[${name}_like]`]: this.formInline.text}).then(res => {
      const requestApi = (api) => {
        api(this.page.currentPage, this.page.pageSize, { [`conditionMap[${name}_like]`]: this.formInline.text}).then(res => {
        if(!res.data.data.records){
          this.$message.error('暂未查到数据!')
        }else {
@@ -125,12 +129,35 @@
          this.$emit('getList',Data);
        }
      });
      }
      //日志
      if(this.status.type=='loge'){
        requestApi(getLogoList);
      }
      //数据
      if(this.status.type=='data'){
        requestApi(getDataList);
      }
      //任务
      if(this.status.type=='task'){
        requestApi(getTaskList);
      }
    },
    handleSearch() {
      const { type, typeFlag, stateFlag, stateTaskDataFlag, dateFlag, lastDateFlag ,sendTypeFlga} = this.status;
      const { currentPage, pageSize } = this.page;
      const { cut, state, stateTask, Date, lastDate, taskCut } = this.formInline;
      const requestParams = {};
      const requestApi = (api) => {
        api(currentPage, pageSize, requestParams).then(res => {
          if(!res.data.data.records){
            this.$message.error('暂未查到数据!');
          } else {
            let Data=res.data.data;
            this.$emit('getList',Data);
          }
        });
      }
      // 集成日志类型
      if (type === 'loge' && typeFlag) {
        requestParams['conditionMap[type_like]'] = cut;
@@ -157,15 +184,16 @@
      if ((type === 'task' || type === 'data') && sendTypeFlga) {
        requestParams['conditionMap[sendType_like]'] = taskCut;
      }
      // 请求
      getList(currentPage, pageSize, requestParams).then(res => {
        if(!res.data.data.records){
          this.$message.error('暂未查到数据!')
        }else {
          let Data=res.data.data;
          this.$emit('getList',Data);
      if (type == 'loge') {
        requestApi(getLogoList);
        }
      });
      if (type == 'data') {
        requestApi(getDataList);
      }
      if (type == 'task') {
        requestApi(getTaskList);
      }
    }
  }
}
Source/UBCS-WEB/src/config/website.js
@@ -46,6 +46,7 @@
  // 报表设计器地址(cloud端口为8108,boot端口为80)
  reportUrl: 'http://localhost:8108/ureport',
  // 单点登录系统认证(ubcs-auth服务的地)
  ssoUrl:'http://localhost:37000/oauth/authorize?client_id=saber&response_type=code&redirect_uri=',
  // 单点登录回调地址(Saber服务的地址)
  redirectUri: 'http://localhost:1888',
  redirectUri: 'http://localhost:37000',
}
Source/UBCS-WEB/src/page/login/index.vue
@@ -12,10 +12,6 @@
        <div style="font-size: 15px">
          <el-image src="/img/pageLogo.jpeg"   style="width: 360px; height: 280px"></el-image>
        </div>
<!--        <div style="font-size: 15px" class="image-container">-->
<!--          <el-image class="background-image" src="/img/pageLogo.jpeg"  ></el-image>-->
<!--        </div>-->
      <!--<img class="img" src="/img/logo.png" alt="">-->
      </div>
      <div class="login-border">
        <div class="login-main">
@@ -25,7 +21,12 @@
          </h4>
          <userLogin v-if="activeName==='user'"></userLogin>
          <thirdLogin v-else-if="activeName==='third'"></thirdLogin>
          <div class="login-menu">
            <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>
            <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
            <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>
            <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a>
          </div>
        </div>
      </div>
Source/UBCS-WEB/src/views/code/code.vue
@@ -1324,6 +1324,7 @@
export default {
  data() {
    return {
      crudOption:{...optionRule},
      ruleForm: {},
      query: {},
      loading: true,
@@ -2536,7 +2537,7 @@
      this.query = {};
      this.onLoad(this.page);
    },
    // 编码规则快速查询
    // 编码规则快速查询searchChange
    searchChange(params, done) {
      this.page.currentPage = 1;
      // 多个conditionMap这样传参,快速查询默认采用模糊查询
@@ -2549,6 +2550,11 @@
      }
      this.query = requestData;
      this.onLoad(this.page, this.query);
      // console.log(  this.findObject(this.optionRule.column,'id'))
      // console.log(this.crudOption.column[0])
      // this.crudOption.column && this.crudOption.column.length > 0
      //   ? (this.crudOption.column[0].value = '')
      //   : null;
      done();
    },
    /** 编码规则当前选中行变化的时候触发*/
Source/UBCS-WEB/src/views/docking/data.vue
@@ -23,7 +23,7 @@
</template>
<script>
import {getList} from "@/api/docking/data";
import {getDataList} from "@/api/docking/data";
import {validatenull} from "@/util/validate";
import {mapGetters} from "vuex";
import website from "@/config/website";
@@ -90,6 +90,7 @@
      calcHeight: 0,
      tip: false,
      searchShow: false,
      searchShowBtn:false,
      searchMenuSpan: 6,
      border: true,
      index: true,
@@ -242,7 +243,7 @@
          query['conditionMap["' + key + '"]'] = this.query[key];
        }
      }
      getList(page.currentPage, page.pageSize, Object.assign(params,this.params, query,this.query)).then(res => {
      getDataList(page.currentPage, page.pageSize, Object.assign(params,this.params, query,this.query)).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
Source/UBCS-WEB/src/views/docking/loge.vue
@@ -23,7 +23,7 @@
</template>
<script>
import {getList} from "@/api/docking/loge";
import {getLogoList} from "@/api/docking/loge";
import {validatenull} from "@/util/validate";
import {mapGetters} from "vuex";
@@ -271,7 +271,7 @@
          query['conditionMap["' + key + '"]'] = this.query[key];
        }
      }
      getList(page.currentPage, page.pageSize, Object.assign(params,this.params, query,this.query)).then(res => {
      getLogoList(page.currentPage, page.pageSize, Object.assign(params,this.params, query,this.query)).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
Source/UBCS-WEB/src/views/docking/task.vue
@@ -31,7 +31,7 @@
</template>
<script>
import {getList,sendData} from "@/api/docking/task";
import {getTaskList,sendData} from "@/api/docking/task";
import {validatenull} from "@/util/validate";
import {mapGetters} from "vuex";
import {remove} from "@/api/code/codeSynonym";
@@ -122,7 +122,8 @@
        calcHeight: 0,
        tip: false,
        searchShow: false,
        searchMenuSpan: 6,
        searchShowBtn:false,
        // searchMenuSpan: 6,
        border: true,
        index: true,
        viewBtn: true,
@@ -295,7 +296,7 @@
          query['conditionMap["' + key + '"]'] = this.query[key];
        }
      }
      getList(page.currentPage, page.pageSize, Object.assign(params, this.params, query, this.query)).then(res => {
      getTaskList(page.currentPage, page.pageSize, Object.assign(params, this.params, query, this.query)).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
Source/UBCS-WEB/src/views/modeling/original.vue
Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -300,18 +300,20 @@
    },
    methods: {
      onSubmit() {
        const conditionMap = {};
        if (this.form.name || this.form.label) {
          const params = {};
        if (this.form.name) {
          conditionMap[`conditionMap['name_like']`] = this.form.name;
            params.name = this.form.name;
        }
        if (this.form.label) {
          conditionMap[`conditionMap['label_like']`] = this.form.label;
            params.label = this.form.label;
        }
        getParentList(this.enumRefer.enumPage.currentPage, this.enumRefer.enumPage.pageSize, conditionMap)
          getParentList(this.enumRefer.enumPage.currentPage, this.enumRefer.enumPage.pageSize, params)
          .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 => {
Source/UBCS-WEB/src/views/wel/Statistic.vue
@@ -1,13 +1,6 @@
<template>
  <div>
    <el-row :gutter="20">
      <el-col :xs="8" :sm="8" :md="8" :lg="6" :xl="4" v-for="item in listMyTask">
        <div class="box" :style="item.style" @click="goto(item)">
          {{item.name}}
          <div><avue-count-up class="value" :end="item.count"></avue-count-up></div>
        </div>
      </el-col>
    </el-row>
        <avue-data-box :option="option" :animation="true"></avue-data-box>
  </div>
</template>
@@ -21,7 +14,48 @@
  data(){
  return {
    countByServer:true,
    listMyTask:[]
    // listMyTask:[]
    option: {
      span:6,
      data: [
        {
          click: this.handleItemAClick,
          title: '物品主数据',
          count: 1723,
          icon: 'iconfont iconicon_doc',
          color: 'rgb(49, 180, 141)',
          uiUrl: "/MasterData/items?id=wupin@name=物品主数据",
          countUrl:'priceIndexController/countNeedConfirmPlan'
        },
        {
          click: this.handleItemBClick,
          title: '人员主数据',
          count: 1225,
          icon: 'iconfont iconicon_dispose',
          color: 'rgb(56, 161, 242)',
          uiUrl:'/MasterData/items?id=renyuan@@name=人员主数据',
          countUrl:'priceIndexController/countPricingPlan'
        },
        {
          click: this.handleItemCClick,
          title: '主题库定义',
          count: 523,
          icon: 'el-icon-setting',
          color: 'rgb(117, 56, 199)',
          uiUrl:'/modeling/classifyTree',
          countUrl:'priceIndexController/countNeedFeedbackPlan'
        },
        {
          click: this.handleItemDClick,
          title: '供应商主数据',
          count: 0,
          icon: 'iconfont iconicon_work',
          color: 'rgb(255, 102, 51)',
          uiUrl:'/MasterData/items?id=gongyingshang@@name=供应商主数据',
          countUrl:'priceIndexController/countMyUnCreatePricePlan'
        },
      ]
    },
  }
  },
  created() {
@@ -31,89 +65,42 @@
  },
  methods: {
    getList() {
      let data = [{
        "backgroundColor": "#FF5722",
        "btmname": "hometask",
        "countUrl": "priceIndexController/countNeedConfirmPlan",
        "name": "物品主数据",
        "nameOid": "",
        "oid": "34aebfde-eb11-4555-87eb-0a779be9aad0",
        "uiUrl": "/MasterData/items?id=wupin@name=物品主数据",
      }, {
        "backgroundColor": "#5FB878",
        "btmname": "hometask",
        "countUrl": "priceIndexController/countPricingPlan",
        "name": "人员主数据",
        "nameOid": "2C72EA23-8AA5-E5FC-9BC1-DE4AD182EF7B",
        "oid": "6256ae79-7765-4c66-afc7-f12fad350065",
        "uiUrl": "/MasterData/items?id=renyuan@@name=人员主数据",
      },{
          "backgroundColor": "#1E9FFF",
          "btmname": "hometask",
          "countUrl": "priceIndexController/countNeedFeedbackPlan",
          "name": "主题库定义",
          "nameOid": "2536978C-CD1B-5B56-6529-A8C3456B5260",
          "oid": "3043cdf1-8479-4c2a-9eab-fc35e9f9d5a7",
          "uiUrl": "/modeling/classifyTree",
    handleItemAClick() {
      this.$router.push({ path: "/MasterData/items?id=wupin@name=物品主数据"} );
        },
        {
          "backgroundColor": "#FF5722",
          "btmname": "hometask",
          "countUrl": "priceIndexController/countMyUnCreatePricePlan",
          "name": "供应商主数据",
          "nameOid": "",
          "oid": "529634e7-1854-4f61-b911-a91e3c406757",
          "uiUrl": "/MasterData/items?id=gongyingshang@@name=供应商主数据",
        }]
      this.listMyTask = data.map(record => {
        record.style=record.style || ''
        if(record.backgroundColor!=''){
          record.style = 'background-color:'+record.backgroundColor;
        }
    handleItemBClick() {
      this.$router.push({ path: '/MasterData/items?id=renyuan@@name=人员主数据'} );
    },
    handleItemCClick() {
      this.$router.push({ path: '/modeling/classifyTree'} );
    },
    handleItemDClick() {
      this.$router.push({ path: '/MasterData/items?id=gongyingshang@@name=供应商主数据'} );
    },
    getList() {
      // debugger
      Object.values(this.option.data).map(record => {
        record.count=record.count || 0;
        if(!this.countByServer){
          //是前端查询
          getList(record.countUrl,{}).then(res=>{
            // console.log('res',res)
            if(res.data.data.success){
              record.count=res.data.data.obj;
            }else{
              record.count=0
              record.count = 0;
            }
          })
          });
        }
        return {
          ...record
        }
      })
        };
      });
    },
    goto(item){
      this.$router.push({ path: item.uiUrl });
    }
  }
}
</script>
<style scoped>
.el-col{margin-bottom: 0}
.box{
  text-align: center;
  background: rgb(235, 238, 245);
  color: #303133;
  height: 70px;
  margin: 10px 0!important;
  padding: 15px 10px;
  position: relative;
  border-radius: 4px;
  box-sizing: border-box;
  font-size: 14px;
}
.value{
  font-size: 12px;
  opacity: .69;
  line-height: 20px;
  margin-top: 5px;
  display: block;
}
</style>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeReferConfig.java
@@ -70,7 +70,12 @@
    /**
     * 窗口显示的高度
     */
    private Long height;
    private Integer height;
    /**
     * 过滤(级联)属性
     */
    private String useFormKey;
    /**
     * 过滤属性请求参数
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFieldSortVO.java
@@ -24,6 +24,14 @@
     */
    private String type;
    public UIFieldSortVO(String field, String type) {
        this.field = field;
        this.type = type;
    }
    public UIFieldSortVO() {
    }
    public String getField() {
        return field;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSyncUniversalController.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.controller;
import com.vci.ubcs.code.service.UniversalInterfaceI;
import org.apache.tools.ant.taskdefs.condition.Http;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.api.R;
@@ -13,6 +14,7 @@
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
import java.util.concurrent.ConcurrentHashMap;
/**
 * 主题库分类控制器
@@ -43,10 +45,12 @@
     * @throws Throwable
     */
    @PostMapping("/applyCode")
    public String applyCode(@RequestParam("dataString")String dataString, @RequestParam("dataType")String dataType, ServletRequest request)  {
    public String applyCode(@RequestParam("dataString")String dataString, @RequestParam("dataType")String dataType, HttpServletRequest request)  {
        String result="";
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        try {
            ThreadLocal<HttpServletRequest> threadLocal = new ThreadLocal<>();
            threadLocal.set(request);
            universalInterfaceI.setThreadLocal(threadLocal);
            result = universalInterfaceI.applyCode(dataString, dataType);
        }catch (Throwable e){
            e.printStackTrace();
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java
@@ -27,6 +27,8 @@
     */
    public String applyCode(String data, String dataType)throws Throwable;
    public void setThreadLocal(ThreadLocal<HttpServletRequest> threadLocal);
    /****
     * 人员数据同步
     * @param personData
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -338,6 +338,9 @@
        uiTableConfigVO.setQueryColumns(queryColumns);
        //set给表格配置属性
        uiFormReferVO.setTableConfig(uiTableConfigVO);
        //字段名不一致,需要手动set
        uiFormReferVO.setMuti(Func.toBoolean(codeReferConfig.getIsMuti()));
        uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType()));
        // 筛选条件
        HashMap<String, String> whereMap = new HashMap<>();
        if(!codeReferConfig.getCodeSrchCondConfigVOS().isEmpty()){
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1389,6 +1389,9 @@
        uiTableConfigVO.setQueryColumns(queryColumns);
        //set给表格配置属性
        uiFormReferVO.setTableConfig(uiTableConfigVO);
        //字段名不一致,需要手动set
        uiFormReferVO.setMuti(Func.toBoolean(codeReferConfig.getIsMuti()));
        uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType()));
        // 筛选条件
        HashMap<String, String> whereMap = new HashMap<>();
        if(!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())){
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
@@ -11,6 +11,7 @@
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
@@ -84,9 +85,11 @@
        String ipAddr = request.getRemoteAddr();
        // 先尝试从缓存当中取,存在就直接从缓存中获取
        String authToken = bladeRedis.get(PWD_FREE_LOGIN_TOKEN+ipAddr+":"+userName);
        BladeUser user = null;
        // 解析token存放进attr中
        String token2 = JwtUtil.getToken(authToken);
        BladeUser user = this.getUser(token2);
        //不存在就请求
        if(Func.isEmpty(authToken)){
        if(Func.isEmpty(authToken) || Func.isEmpty(user)){
            // 免密登录接口地址
            String loginUrl = "http://localhost:"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token";
            // 请求ubcs-auth服务获取token,先设置请求头
@@ -118,10 +121,10 @@
            authToken = "bearer " + tokenUserObject.getAccess_token();
            // 将token存入缓存当中,过期时间为24小时
            bladeRedis.setEx(PWD_FREE_LOGIN_TOKEN+ipAddr+":"+userName,"bearer "+tokenUserObject.getAccess_token(),tokenRedisExpire);
        }
        // 解析token存放进attr中
        String token2 = JwtUtil.getToken(authToken);
            token2 = JwtUtil.getToken(authToken);
        user = this.getUser(token2);
        }
        //request.setAttribute("Blade-Auth",token);
        request.setAttribute("_BLADE_USER_REQUEST_ATTR_",user);
        return true;
@@ -186,11 +189,9 @@
        if (StringUtil.isNotBlank(authToken)) {
            token = JwtUtil.getToken(authToken);
        }
        if (StringUtil.isNotBlank(token)) {
            claims = parseJWT(token);
        }
        if (ObjectUtil.isNotEmpty(claims) && getJwtProperties().getState()) {
            tenantId = Func.toStr(claims.get("tenant_id"));
            String userId = Func.toStr(claims.get("user_id"));
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -53,6 +53,9 @@
import com.vci.ubcs.system.vo.DeptVO;
import com.vci.ubcs.system.vo.RoleVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.tools.ant.taskdefs.condition.Http;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
@@ -62,7 +65,9 @@
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import java.util.*;
@@ -161,13 +166,31 @@
    private  String objerrorCode="0";
    private String objerrorMsg="成功";
    private final ThreadLocal<HttpServletRequest> threadLocal = new ThreadLocal<>();
    @Resource
    private WebServiceContext webServiceContext;
    @Override
    public void setThreadLocal(ThreadLocal<HttpServletRequest> requestThreadLocal){
        this.threadLocal.set(requestThreadLocal.get());
        requestThreadLocal.remove();
    }
    @WebMethod
    public HttpServletRequest getRequest() {
        // 获取HttpServletRequest对象
        HttpServletRequest request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST);
    private HttpServletRequest getRequest() {
        //rest请求方式获取request
        HttpServletRequest request = this.threadLocal.get();
        if(Func.isEmpty(request)){
            try {
                // webservice请求方式获取HttpServletRequest对象
                request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST);
            }catch (Exception e){
                throw new ServiceException("获取httpServletRequest失败,原因:"+e.getMessage());
            }
        }else {
            this.threadLocal.remove();
        }
        return request;
    }
@@ -215,6 +238,7 @@
            UserVO userVo = interParameterVO.getData().getUser();
            //免密登录申请token,request中添加用户信息
            passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest());
            AuthUtil.getUser();
            List<ClassfyVO> classVOList = classfysVO.getClassify();
            InterParameterVO finalInterParameterVO = interParameterVO;
            //这是账号信息
@@ -1463,7 +1487,6 @@
    @Override
    public String queryClassifyRule(String data, String dataType) throws Throwable {
        boolean issucess=false;
        String resultStr = "";
        String errorid="0";