ludc
2023-07-14 36d3d9da36c71e65081e38cf9cfbd5e0ff6bfeed
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改51个文件
已删除1个文件
已重命名4个文件
已复制4个文件
已添加6个文件
1161 ■■■■■ 文件已修改
Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/public/public/index.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/GetItem.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Master/MasterTree.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/attrCrud.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/file/main.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/template/Stage.vue 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/work/BusinessWork.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/integration/integrationTransfer.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskDTO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskUserDTO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessStageAttrDTO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessTemplateDTO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowTaskUser.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessStageAttr.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessTemplate.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMFlowAttrClientFallback.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMIFlowAttrClient.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/MDMFlowAttrClient.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | 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/CodeClstemplateServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java
@@ -110,6 +110,10 @@
        String roleName = Func.toStr(claims.get(AuthUtil.ROLE_NAME));
        String userName = Func.toStr(claims.get(AuthUtil.USER_NAME));
        String nickName = Func.toStr(claims.get(AuthUtil.NICK_NAME));
        String tenantName = Func.toStr(claims.get("tenantName"));
        String email = Func.toStr(claims.get("email"));
        String deptName = Func.toStr(claims.get("deptName"));
        String secretGrade = Func.toStr(claims.get("secretGrade"));
        Kv detail = Kv.create().setAll((Map<? extends String, ?>) claims.get(AuthUtil.DETAIL));
        BladeUser bladeUser = new BladeUser();
        bladeUser.setClientId(clientId);
@@ -123,6 +127,10 @@
        bladeUser.setRoleName(roleName);
        bladeUser.setUserName(userName);
        bladeUser.setNickName(nickName);
        detail.put("tenantName",tenantName);
        detail.put("deptName",deptName);
        detail.put("email",email);
        detail.put("secretGrade",secretGrade);
        bladeUser.setDetail(detail);
        return bladeUser;
    }
Source/UBCS-WEB/public/public/index.html
@@ -19,6 +19,8 @@
  <script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
  <script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
  <link rel="icon" href="<%= BASE_URL %>favicon.png">
  <script src="https://cdn.staticfile.org/FileSaver.js/2014-11-29/FileSaver.min.js"></script>
  <script src="https://cdn.staticfile.org/xlsx/0.18.2/xlsx.full.min.js"></script>
  <title>ubcs企业平台</title>
  <style>
    html,
Source/UBCS-WEB/src/api/GetItem.js
@@ -51,6 +51,8 @@
  return request({
    url: 'api/ubcs-code/mdmEngineController/getFlowdUIInfoByClassifyOid',
    method: 'get',
    data
    params:{
      ...data
    }
  })
}
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -2,7 +2,7 @@
  <basic-container>
    <div class="main">
      <div class="top">
        <div class="testbox">
        <div class="testbox" style="">
          <div>
            <!-- <el-button plain size="small" type="primary" @click="addvisible = true">增加
            </el-button>
@@ -27,9 +27,10 @@
              style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input> -->
          </div>
          <el-row style="height: 700px; width: 100%">
          <el-row style="width: 100%;margin-bottom: 20px">
            <div>
              <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary" v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
              <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary"
                         v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
                         @click="handelBtnClick(item)">{{
                  item.name
                }}
@@ -37,8 +38,8 @@
              <el-input v-model="WupinFindValue" placeholder="请输入关键字按回车查询"
                        size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input>
            </div>
            <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" max-height="700" style=""
                      @cell-click="handleCellClick" @selection-change="handleSelectionChange" @sort-change="sortChange">
            <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" :height="tableHeight" ref="dataTable"
                      @cell-click="handleCellClick" @row-click="handleRowClick" @select="handleSelection" @select-all="handleSelectionAll" @selection-change="handleSelectionChange" @sort-change="sortChange">
              <el-table-column fixed type="selection" width="55"></el-table-column>
              <el-table-column fixed label="序号" type="index" width="55">
              </el-table-column>
@@ -50,25 +51,31 @@
              </el-table-column>
            </el-table>
          </el-row>
<!--          æ–°å¢ž-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible" type="add"
                              @submit="AddSumbit">
          </FormTemplateDialog>
<!--          ä¿®æ”¹-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'修改编码信息'"
                              :visible.sync="editvisible"
                              type="edit" @submit="EditSumbit"></FormTemplateDialog>
<!--          å·²å‘布数据修改-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'已发布数据更改'"
                              :type="edit"
                              :visible.sync="DataVisible"></FormTemplateDialog>
<!--          å‘布-->
          <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow"></set-personnel>
<!--          é«˜çº§æŸ¥è¯¢-->
          <advanced-query :options="this.options" :visible.sync="findvisible" @echoContion="echoContion"></advanced-query>
          <integration-transfer :data="transferData" :props="transferProps" :visible.sync="dialogPush"
                                @save="handelTransferSave"></integration-transfer>
          <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                               :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
        </div>
        <div class="block" style="display: flex; justify-content: flex-end">
          <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
                         :total="page.total" layout="total, sizes, prev, pager, next, jumper"
@@ -76,11 +83,12 @@
                         @current-change="handleCurrentChange">
          </el-pagination>
        </div>
      </div>
        <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :visible.sync="batchImportData.visible">
        </BatchImport>
      </div>
      <div class="bottom">
        <el-collapse v-model="visibleNames">
        <el-collapse v-model="visibleNames" @change="handleCollapse">
          <el-collapse-item title="附件列表" name="1">
            <fileInHtml :options="fileOptions"></fileInHtml>
          </el-collapse-item>
@@ -196,6 +204,7 @@
        datetime: "datetime",
      },
      tableData: [],
      tableHeight:'calc(100vh - 330px)',
      DataVisible: false,
      tableHeadData: [],
      items: {},
@@ -210,12 +219,13 @@
      // ä¸»æ•°æ®æŒ‰é’®
      masterVrBtnList: [],
      fileOptions:{
        ownbizOid:"1",
        ownbizBtm:"1",
        ownbizOid:"0",
        ownbizBtm:"0",
        fileDocClassify:'!=processAuditSuggest',
        fileDocClassifyName:'',
        hasDownload:true,
        hasUpload:true
        hasUpload:true,
        height:100
      }
    };
  },
@@ -273,7 +283,7 @@
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
        this.fileOptions.ownbizOid="1";
        this.fileOptions.ownbizOid="0";
        this.parameter.vars.templateOid = newval
      },
      deep: true,
@@ -288,6 +298,16 @@
    }
  },
  methods: {
    //展开附件
    handleCollapse(activeNames) {
      if (activeNames.length > 0) {
        this.tableHeight = 'calc(100vh - 630px)';
        this.$refs.dataTable.doLayout()
      } else {
        this.tableHeight = 'calc(100vh - 330px)';
        this.$refs.dataTable.doLayout()
      }
    },
    // å‘布
    setHandler() {
      if (this.selectRow.length <= 0) {
@@ -325,6 +345,7 @@
      this.getListCodeByClassId();
    },
    async getListCodeByClassId() {
      this.dialogPush=true;
      this.transferData = [];
      const response = await listCodeAttributeByClassId({
        codeClassifyId: this.codeClassifyOid,
@@ -333,6 +354,9 @@
        const data = response.data.data;
        this.transferData = data;
      }
    },
    handelTransferSave(val){
      console.log('发布',val)
    },
    rend() {
      this.tableData = this.tableHeadData;
@@ -359,9 +383,10 @@
      this.editShow = column.property;
      this.rowOid = row.oid;
    },
    handleRowClick(row,column){
      this.fileOptions.ownbizOid= row.oid;
      this.fileOptions.ownbizBtm=row.btmname;
    handleRowClick(row, column) {
      this.fileOptions.ownbizOid = row.oid;
      this.fileOptions.ownbizBtm = row.btmname;
      this.$refs.dataTable.toggleRowSelection(row);
    },
    //删除
    enumDeleteRow(row) {
@@ -457,9 +482,15 @@
      });
    },
    //选择
    handleSelection(list,row) {
      this.fileOptions.ownbizOid= row.oid;
      this.fileOptions.ownbizBtm=row.btmname;
    handleSelection(list, row) {
      this.fileOptions.ownbizOid = row.oid;
      this.fileOptions.ownbizBtm = row.btmname;
    },
    //选择全部
    handleSelectionAll() {
      this.fileOptions.ownbizOid = '0';
      this.fileOptions.ownbizBtm = '0';
    },
    //编辑
@@ -517,7 +548,7 @@
    AddSumbit(val) {
      this.addvisible = false;
      console.log(val)
      addSaveCode(val).then(res=>{
      addSaveCode(val).then(res => {
        console.log(res)
        this.$nextTick(() => {
          this.onLoad()
@@ -527,11 +558,11 @@
    EditSumbit(val) {
      this.editvisible = false;
      console.log(val)
     editSaveCode(val).then(res=>{
       console.log(res)
       this.$nextTick(() => {
         this.onLoad()
       })
      editSaveCode(val).then(res => {
        console.log(res)
        this.$nextTick(() => {
          this.onLoad()
        })
      })
    },
    openBatchImport(type) {
@@ -539,7 +570,7 @@
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    }
  },
  }
};
</script>
@@ -571,7 +602,10 @@
.bottom {
  margin-top: 20px;
  max-height: 43%;
  overflow-y: scroll;
}
.el-collapse-item__content{
  padding-bottom: 0;
}
</style>
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -3,7 +3,8 @@
    :visible.sync="dialogVisible"
    v-if="dialogVisible"
    v-dialogDrag
    top="5vh"
    top="-5vh"
    class="avue-dialog avue-dialog--top"
    :title="title"
    :width="width"
    append-to-body
@@ -313,13 +314,13 @@
      if (!formValidate) return;
      let codeValidate = true;
      // è¿›è¡Œç å€¼ç”³è¯·æ ¡éªŒ
      if (this.showCodeApply) {
        codeValidate = await this.$refs.CodeApply.validate();
        if (!codeValidate) {
          this.activeName = "codeApply";
          return false;
        }
      }
      // if (this.showCodeApply) {
      //   codeValidate = await this.$refs.CodeApply.validate();
      //   if (!codeValidate) {
      //     this.activeName = "codeApply";
      //     return false;
      //   }
      // }
      let resembleQueryList = [];
      if (this.$refs.resembleQueryRef) {
        // è¿›è¡Œç›¸ä¼¼é¡¹æŸ¥è¯¢
Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -116,13 +116,20 @@
    },
    //表格头部
    TableHeadRend() {
      return new Promise((resolve,reject)=>{
      return new Promise((resolve, reject) => {
        MasterTable({
          codeClassifyOid: this.nodeClickList.oid,
          functionId: 5,
        }).then(res => {
          console.log(res.data.buttons)
          this.masterVrBtnList = res.data.buttons
          console.log('1-', res.data)
          console.log('123-', res.data.buttons)
          const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEBATCHADD", "CODESTARTPROCESS", "CODEEXPORT", "CODEQUERY"];
          //不同节点显示不同按钮
          if (!res.data.leaf) {
            this.masterVrBtnList = res.data.buttons.filter(obj => flagsToDeleteBtn.includes(obj.uniqueFlag));
          } else {
            this.masterVrBtnList = res.data.buttons
          }
          this.tableHeadDataFateher = res.data;
          this.templateOids = res.data.tableDefineVO.oid;
          let List = res.data.tableDefineVO.cols[0];
@@ -134,14 +141,14 @@
              sortable: item.sort,
              width: item.minWidth
            };
         this.tableHeadFindData.push(columnItem)
            this.tableHeadFindData.push(Object.assign(item, columnItem))
            // console.log(' this.tableHeadFindData', this.tableHeadFindData)
          })
          this.$emit('tableHeadDataFateher', this.tableHeadDataFateher);
          this.$emit('tableHeadFindData', this.tableHeadFindData);
          this.$emit('tableHeadBttoms', this.masterVrBtnList);
          resolve();
        }).catch(err=>{
        }).catch(err => {
          reject(err)
        })
      })
@@ -156,7 +163,7 @@
        this.TableRend(); // TableHeadRend() æ–¹æ³•完成后再执行 TableRend()
        this.$emit('nodeClick',this.templateOids)
        this.$emit("codeClassifyOid", this.nodeClickList.oid )
        console.log('树',this.nodeClickList.oid)
        console.log('树',this.nodeClickList)
      } catch (error) {
        // å¤„理错误
        this.$message.error(error)
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -374,6 +374,7 @@
      editingRows: null,
      editShows:"",
      attrFlag: false,
      referObject:{},
      //编码申请预览option
      applicationoption: {
        column: []
@@ -1391,6 +1392,7 @@
    //参照配置子组件
    echoReferConfig(val){
      console.log('val--',val)
      this.referObject=val
      this.$set(this.CurrentCell,'referConfig',JSON.stringify(val))
    },
Source/UBCS-WEB/src/components/file/main.vue
@@ -7,7 +7,6 @@
               :before-open="beforeOpen"
               :permission="permissionList"
               v-model="form"
               :height="options.height || 200"
               ref="crud"
               @row-del="rowDel"
               @search-change="searchChange"
@@ -88,10 +87,10 @@
      hasDel:validatenull(this.options.hasDel) ? true :this.options.hasDel,
      hasDownload:validatenull(this.options.hasDownload) ? true :this.options.hasDownload,
      option: {
        height:(this.options.tableHeight?this.options.tableHeight:'auto'),
        height:(this.options.tableHeight?this.options.tableHeight:'200'),
        calcHeight: 30,
        tip: false,
        searchShow: true,
        searchShow: false,
        searchMenuSpan: 6,
        border: true,
        index: true,
Source/UBCS-WEB/src/components/template/Stage.vue
ÎļþÒÑɾ³ý
Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -22,17 +22,25 @@
      :show-overflow-tooltip="true"
      align="center"
    >
      <!-- ç¼–辑和展示逻辑 -->
      <!--              <template slot-scope="{ row }">-->
      <!--                <el-input v-if="editingRow === row && editShow== item.prop" v-model="row[item.prop]" @blur="saveRow"></el-input>-->
      <!--                <span v-else>{{row[item.prop]}}</span>-->
      <!--                <el-switch-->
      <!--                  v-if="editShow === 'true'"-->
      <!--                  v-model="row[item.prop]"-->
      <!--                  active-color="#13ce66"-->
      <!--                  inactive-color="#ff4949">-->
      <!--                </el-switch>-->
      <!--              </template>-->
      <template slot-scope="{ row }">
        <el-input v-if="editingRow === row && editShow== item.prop && item.prop != 'codeDateFormat' && (item.edit == 'text'  ||item.edit == 'refer' )" v-model="row[item.prop]"
                  @blur="editingRows=null"></el-input>
        <el-input-number size="small" controls-position="right" v-if="editingRow === row && editShow== item.prop && item.edit == 'number'" v-model="row[item.prop]"
                         @blur="editingRows=null" :style="{width:(item.width-10)+'px'}"></el-input-number>
        <el-select v-model="row[item.prop]" filterable  allow-create  default-first-option slot="prepend" v-if="editingRow === row && editShow== item.prop && item.edit == 'select' " @blur="editingRows=null">
          <el-option
            v-for="optionItem in item.data"
            :key="optionItem.dictValue"
            :label="optionItem.dictValue"
            :value="optionItem.dictValue">
          </el-option>
        </el-select>
        <el-switch
          v-if="item.edit === 'switch' || item.edit === 'truefalse'" v-model="row[item.prop]" active-value="true"
          inactive-value="false">
        </el-switch>
        <span v-else>{{ row[item.prop] }}</span>
      </template>
    </el-table-column>
  </el-table>
</div>
@@ -53,16 +61,22 @@
      tableData:[],
      editingRow: null,
      editShow: "",
      editAttr: ""
      editAttr: "",
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        datetime: "datetime",
      }
    }
  },
  watch:{
    ids:{
      handler(newval,oldval){
        this.BuinessOids=newval;
        this.CrudHeaderRend()
        this.BuinseseRend()
        console.log(newval)
        console.log(this.BuinessOids)
      },
      deep:true
    }
@@ -78,11 +92,16 @@
    //表格头渲染
    CrudHeaderRend() {
      if (this.codeClassifyOid != "") {
        var data=new FormData()
        data.append('templateId', this.templateId)
        data.append('taskId', this.taskId)
        data.append('modelKey', this.modelKey)
        data.append('codeClassifyOid', this.codeClassifyOid)
        FlowTable({
          templateId: this.templateId,
          taskId    : this.taskId    ,
          modelKey: this.modelKey,
          codeClassifyOid: this.codeClassifyOid
          'templateId': this.templateId,
          'taskId': this.taskId,
          'modelKey': this.modelKey,
          'codeClassifyOid': this.codeClassifyOid
        }).then((res) => {
          this.options = res.data.tableDefineVO.seniorQueryColumns;
          this.List = res.data.tableDefineVO.cols[0];
@@ -106,8 +125,12 @@
                  return row[column.property] == 'true' || row[column.property] == '1' ? '是' : '否'
                }
              }
              if (item.edit == 'select') {
                //需要获取下拉框数据
                columnItem.data=[]
              }
            }
            this.tableHeadData.push(columnItem)
            this.tableHeadData.push(Object.assign(item, columnItem))
          });
        });
      }
@@ -122,7 +145,7 @@
      })
    },
    // ç›‘听单元格点击事件并存储正在编辑的行
    handleCellClick(row, column) {
    handleCellClick(row, column, cell, event) {
      this.editingRow = row;
      this.editShow = column.property;
    },
Source/UBCS-WEB/src/views/integration/integrationTransfer.vue
@@ -1,5 +1,5 @@
<template>
    <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true" destroy-on-close width="30%"
    <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true" destroy-on-close width="35%"
        @close="handelClose">
        <el-form :model="form">
            <el-form-item label="查询条件" label-width="70px" size="small">
@@ -138,4 +138,4 @@
    padding: 10px 0;
    color: #F56C6C;
}
</style>
</style>
Source/UBCS-WEB/vue.config.js
@@ -26,12 +26,12 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://localhost:37000',
        // target: 'http://localhost:37000',
        // target: 'http://192.168.1.51:37000',
        // target: 'http://192.168.1.46:37000',
        //target: 'http://192.168.1.46:37000',
        // target: 'http://dev.vci-tech.com:37000',
        // target: 'http://192.168.1.51:37000/',
        // target: 'http://192.168.1.104:37000',
         target: 'http://192.168.1.104:37000',
        // target: 'http://192.168.1.63:37000',
        // target: 'http://192.168.3.7:37000',
        // target: 'http://192.168.1.51:37000/',
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java
@@ -40,6 +40,10 @@
     */
    private final String tenantId;
    /**
     * ç§Ÿæˆ·åç§°
     */
    private String tenantName;
    /**
     * ç¬¬ä¸‰æ–¹è®¤è¯ID
     */
    private final String oauthId;
@@ -59,6 +63,10 @@
     * éƒ¨é—¨id
     */
    private final String deptId;
    /**
     * éƒ¨é—¨åç§°
     */
    private String deptName;
    /**
     * å²—位id
     */
@@ -84,6 +92,10 @@
     * ç”¨æˆ·å¯†çº§
     */
    private String secretGrade;
    /**
     * é‚®ä»¶
     */
    private String email;
    /**
     * å¯†ç ç­–略修改状态
@@ -91,7 +103,7 @@
    private Long strategyUpdateStatus;
    public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail,String secretGrade, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus) {
    public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail,String secretGrade, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus,String tenantName,String deptName,String email) {
        super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
        this.userId = userId;
        this.tenantId = tenantId;
@@ -107,6 +119,9 @@
        this.detail = detail;
        this.secretGrade = secretGrade;
        this.strategyUpdateStatus = strategyUpdateStatus;
        this.tenantName = tenantName;
        this.deptName = deptName;
        this.email = email;
    }
    public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) {
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -221,7 +221,7 @@
                BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(),
                    user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),
                    username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(),user.getSecretGrade(), true, true, true, true,
                    AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus());
                    AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus(),tenant.getData().getTenantName(),user.getDeptName(),user.getEmail());
                return bladeUserDetails;
            } else {
                throw new UsernameNotFoundException(result.getMsg());
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java
@@ -65,6 +65,10 @@
        info.put(TokenUtil.DETAIL, principal.getDetail());
        info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME);
        info.put(TokenUtil.STRATEGYUPDATESTATUS, principal.getStrategyUpdateStatus());
        info.put(TokenUtil.TENANTNAME, principal.getTenantName());
        info.put(TokenUtil.DEPTNAME, principal.getDeptName());
        info.put(TokenUtil.EMAIL, principal.getEmail());
        info.put(TokenUtil.SECRETGRADE, principal.getSecretGrade());
        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info);
        //token状态设置
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java
@@ -54,6 +54,10 @@
    public final static String LICENSE = TokenConstant.LICENSE;
    public final static String LICENSE_NAME = TokenConstant.LICENSE_NAME;
    public final static String STRATEGYUPDATESTATUS = "strategyUpdateStatus";
    public final static String TENANTNAME = "tenantName";
    public final static String DEPTNAME = "deptName";
    public final static String EMAIL = "email";
    public final static String SECRETGRADE = "secretGrade";
    public final static String DEPT_HEADER_KEY = "Dept-Id";
    public final static String ROLE_HEADER_KEY = "Role-Id";
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java ÐÞ¸Ä
@@ -14,11 +14,12 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.dto;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@@ -28,7 +29,7 @@
 * @author wang1
 */
@Data
public class FlowTaskDTO implements Serializable {
public class FlowTaskDTO extends FlowTaskUser{
    private static final long serialVersionUID = 1L;
@@ -61,7 +62,7 @@
    private Map<String, Object> variables;//流程参数
    //流程阶段绑定的属性
    private List<ProcessStageAttr> stageAttrs;
    private List<ProcessStageAttrDTO> stageAttrs;
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskUserDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.core.dto;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import lombok.Data;
/**
 * æµç¨‹æ¯ä¸€ä¸ªèŠ‚ç‚¹å®¡æ ¸äºº
 *
 * @author wang1
 */
@Data
public class FlowTaskUserDTO extends FlowTaskUser {
    private static final long serialVersionUID = 1L;
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessStageAttrDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.core.dto;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import lombok.Data;
/**
 * æµç¨‹é˜¶æ®µ
 *
 * @author wang1
 */
@Data
public class ProcessStageAttrDTO extends ProcessStageAttr {
    private static final long serialVersionUID = 1L;
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessTemplateDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.core.dto;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import lombok.Data;
/**
 * æµç¨‹æ¨¡æ¿
 *
 * @author wang1
 */
@Data
public class ProcessTemplateDTO extends ProcessTemplate {
    private static final long serialVersionUID = 1L;
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowTaskUser.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java ÐÞ¸Ä
@@ -14,10 +14,9 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import lombok.Data;
import java.io.Serializable;
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessStageAttr.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessStageAttr.java ÐÞ¸Ä
@@ -14,7 +14,7 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessTemplate.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java ÐÞ¸Ä
@@ -14,14 +14,13 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * æµç¨‹æ¨¡æ¿
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMFlowAttrClientFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.core.feign;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
 * æµç¨‹è¿œç¨‹è°ƒç”¨å¤±è´¥å¤„理类
 *
 * @author Chill
 */
@Component
public class IMDMFlowAttrClientFallback implements IMDMIFlowAttrClient {
    @Override
    public R<List<ProcessStageAttrVO>> ssslist(String templateId, String modelKey, String taskId){
        return R.fail("远程调用失败");
    }
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMIFlowAttrClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.core.feign;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
 * å·¥ä½œæµè¿œç¨‹è°ƒç”¨æŽ¥å£.
 *
 * @author Chill
 */
@FeignClient(
    value = AppConstant.APPLICATION_FLOW_NAME,
    fallback = IMDMFlowAttrClientFallback.class
)
public interface IMDMIFlowAttrClient {
    String API_PREFIX = "/mdmflowclient";
    String GET_FLOW_ATTR_BY = API_PREFIX + "/ssslist";
    /**
     * å¼€å¯æµç¨‹
     *
     * @return BladeFlow
     */
    @PostMapping(GET_FLOW_ATTR_BY)
    R<List<ProcessStageAttrVO>> ssslist(@RequestParam String templateId, @RequestParam String modelKey, @RequestParam String taskId);
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java
Îļþ´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java ¸´ÖÆ
@@ -14,10 +14,10 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import lombok.Data;
import java.io.Serializable;
@@ -29,24 +29,8 @@
 * @author wang1
 */
@Data
@TableName("ACT_DE_TASK_USER")
public class FlowTaskUser implements Serializable {
public class FlowTaskUserVO extends FlowTaskUser {
    private static final long serialVersionUID = 1L;
    private String id;
    private String name;//保存的这个收藏名称
    private String modelKey;
    private String modelName;
    private String classifyId;
    private String templateId;
    private String taskId;//流程taskid
    private String taskName;
    private String userId;
    private String userName;
    private String description;
    private Date created;
    private Date lastUpdated;
    private String createdBy;
    private String lastUpdatedBy;
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java
Îļþ´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java ¸´ÖÆ
@@ -14,8 +14,10 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.vo;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import lombok.Data;
import java.io.Serializable;
@@ -28,7 +30,7 @@
 * @author wang1
 */
@Data
public class FlowTaskDTO implements Serializable {
public class FlowTaskVO extends FlowTaskUser{
    private static final long serialVersionUID = 1L;
@@ -57,11 +59,11 @@
    private String conditionValue;//同意、驳回到的下一个节点的条件value
    //流程中参数
    private List<FlowTaskDTO> toTasks;//流程下一步按钮
    private List<FlowTaskVO> toTasks;//流程下一步按钮
    private Map<String, Object> variables;//流程参数
    //流程阶段绑定的属性
    private List<ProcessStageAttr> stageAttrs;
    private List<ProcessStageAttrVO> stageAttrs;
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java
Îļþ´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java ¸´ÖÆ
@@ -14,35 +14,23 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * æµç¨‹æ¨¡æ¿
 * æµç¨‹é˜¶æ®µ
 *
 * @author wang1
 */
@Data
@TableName("ACT_DE_PROCESS_TEMPLATE")
public class ProcessTemplate implements Serializable {
public class ProcessStageAttrVO extends ProcessStageAttr {
    private static final long serialVersionUID = 1L;
    private String id;
    private String templateId;//当前模板id
    private String modelKey;//流程模型key,部署key
    private String modelName;//部署流程名称
    private String buttonTypeKey;//应用按钮,ProcessTemplateTypeEnum的key
    private String buttonTypeValue;//应用按钮,ProcessTemplateTypeEnum的value
    private String description;
    private Date created;
    private Date lastUpdated;
    private String createdBy;
    private String lastUpdatedBy;
}
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java
Îļþ´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java ¸´ÖÆ
@@ -14,14 +14,14 @@
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.engine.entity;
package com.vci.ubcs.flow.core.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * æµç¨‹æ¨¡æ¿
@@ -29,20 +29,8 @@
 * @author wang1
 */
@Data
@TableName("ACT_DE_PROCESS_TEMPLATE")
public class ProcessTemplate implements Serializable {
public class ProcessTemplateVO extends ProcessTemplate {
    private static final long serialVersionUID = 1L;
    private String id;
    private String templateId;//当前模板id
    private String modelKey;//流程模型key,部署key
    private String modelName;//部署流程名称
    private String buttonTypeKey;//应用按钮,ProcessTemplateTypeEnum的key
    private String buttonTypeValue;//应用按钮,ProcessTemplateTypeEnum的value
    private String description;
    private Date created;
    private Date lastUpdated;
    private String createdBy;
    private String lastUpdatedBy;
}
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/MDMFlowAttrClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.flow.business.feign;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
import com.vci.ubcs.flow.engine.service.ProcessStageAttrService;
import lombok.AllArgsConstructor;
import org.flowable.engine.IdentityService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * æµç¨‹è¿œç¨‹è°ƒç”¨å®žçŽ°ç±»
 *
 * @author Chill
 */
@NonDS
@RestController
@AllArgsConstructor
public class MDMFlowAttrClient implements IMDMIFlowAttrClient {
    private final ProcessStageAttrService processStageAttrService;
    @Override
    @PostMapping(GET_FLOW_ATTR_BY)
    public R<List<ProcessStageAttrVO>> ssslist(@RequestParam String templateId, @RequestParam String modelKey, @RequestParam String taskId) {
        Map<String, Object> m = new HashMap<>();
        m.put("template_id", templateId);
        m.put("task_id", taskId);
        m.put("model_key", modelKey);
        QueryWrapper q = Condition.getQueryWrapper(m, ProcessStageAttr.class)
            .select("attr_id attrId,attr_name attrName,attr_group attrGroup");
        return R.data(processStageAttrService.list(q));
    }
}
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
@@ -20,7 +20,6 @@
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import com.vci.ubcs.flow.engine.entity.FlowModel;
import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
import com.vci.ubcs.flow.engine.service.FlowEngineService;
import com.vci.ubcs.flow.engine.service.FlowTaskUserService;
import io.swagger.annotations.ApiImplicitParam;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java
@@ -2,9 +2,10 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
import com.vci.ubcs.flow.engine.service.FlowEngineService;
import com.vci.ubcs.flow.engine.service.ProcessStageAttrService;
import com.vci.ubcs.flow.engine.service.ProcessTemplateService;
@@ -88,7 +89,7 @@
     * æµç¨‹é˜¶æ®µï¼Œè¿™ä¸ªæµç¨‹,这个节点,绑定的属性
     */
    @GetMapping("/ssslist")
    public R<List<ProcessStageAttr>> ssslist(@RequestParam String templateId,@RequestParam String modelKey,@RequestParam String taskId) {
    public R<List<ProcessStageAttrVO>> ssslist(@RequestParam String templateId, @RequestParam String modelKey, @RequestParam String taskId) {
        Map<String, Object> m = new HashMap<>();
        m.put("template_id", templateId);
        m.put("task_id", taskId);
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java
@@ -1,6 +1,6 @@
package com.vci.ubcs.flow.engine.controller;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.engine.service.FlowTaskUserService;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java
@@ -1,7 +1,7 @@
package com.vci.ubcs.flow.engine.controller;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import com.vci.ubcs.flow.engine.service.VICFlowService;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.engine.entity.FlowModel;
import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java
@@ -17,7 +17,7 @@
package com.vci.ubcs.flow.engine.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
/**
 * æµç¨‹é˜¶æ®µ
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java
@@ -17,8 +17,7 @@
package com.vci.ubcs.flow.engine.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
/**
 * æµç¨‹æ¨¡æ¿
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
@@ -18,11 +18,11 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.engine.entity.FlowExecution;
import com.vci.ubcs.flow.engine.entity.FlowModel;
import com.vci.ubcs.flow.engine.entity.FlowProcess;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java
@@ -17,6 +17,8 @@
package com.vci.ubcs.flow.engine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.engine.entity.*;
import java.util.List;
@@ -54,5 +56,5 @@
     * @param modelKey
     * @return
     */
    List<FlowTaskUser> getTaskUserByTemplateAndModelKey(String templateId,String modelKey);
    List<FlowTaskUser> getTaskUserByTemplateAndModelKey(String templateId, String modelKey);
}
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java
@@ -17,8 +17,8 @@
package com.vci.ubcs.flow.engine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
/**
 * æµç¨‹é˜¶æ®µæœåŠ¡
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java
@@ -17,7 +17,7 @@
package com.vci.ubcs.flow.engine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import java.util.List;
import java.util.Map;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java
@@ -16,8 +16,8 @@
 */
package com.vci.ubcs.flow.engine.service;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import org.springblade.core.tool.api.R;
/**
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -20,6 +20,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.core.enums.FlowModeEnum;
import com.vci.ubcs.flow.core.utils.TaskUtil;
@@ -27,7 +28,6 @@
import com.vci.ubcs.flow.engine.entity.FlowExecution;
import com.vci.ubcs.flow.engine.entity.FlowModel;
import com.vci.ubcs.flow.engine.entity.FlowProcess;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import com.vci.ubcs.flow.engine.mapper.FlowMapper;
import com.vci.ubcs.flow.engine.service.FlowEngineService;
import com.vci.ubcs.flow.engine.utils.FlowCache;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java
@@ -18,6 +18,9 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import com.vci.ubcs.flow.engine.entity.*;
import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java
@@ -18,9 +18,9 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import com.vci.ubcs.flow.engine.mapper.ProcessStageAttrMapper;
import com.vci.ubcs.flow.engine.service.ProcessStageAttrService;
import lombok.AllArgsConstructor;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper;
import com.vci.ubcs.flow.engine.service.ProcessTemplateService;
import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum;
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
@@ -18,7 +18,9 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vci.ubcs.flow.core.constant.ProcessConstant;
import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
import com.vci.ubcs.flow.core.entity.BladeFlow;
import com.vci.ubcs.flow.core.entity.FlowTaskUser;
import com.vci.ubcs.flow.core.utils.TaskUtil;
import com.vci.ubcs.flow.engine.entity.*;
import com.vci.ubcs.flow.engine.service.FlowEngineService;
Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java
@@ -16,7 +16,7 @@
 */
package com.vci.ubcs.report.config;
import com.vci.ubcs.core.report.datasource.ReportDataSource;
//import org.springblade.core.report.datasource.ReportDataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -32,12 +32,12 @@
@ConditionalOnProperty(value = "report.enabled", havingValue = "true", matchIfMissing = true)
public class BladeReportConfiguration {
    /**
     * è‡ªå®šä¹‰æŠ¥è¡¨å¯é€‰æ•°æ®æº
     */
    @Bean
    public ReportDataSource reportDataSource(DataSource dataSource) {
        return new ReportDataSource(dataSource);
    }
//    /**
//     * è‡ªå®šä¹‰æŠ¥è¡¨å¯é€‰æ•°æ®æº
//     */
//    @Bean
//    public ReportDataSource reportDataSource(DataSource dataSource) {
//        return new ReportDataSource(dataSource);
//    }
}
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java
@@ -17,10 +17,6 @@
package com.vci.ubcs.resource.endpoint;
import com.vci.ubcs.resource.entity.Attach;
import com.vci.ubcs.resource.service.IFileService;
import com.vci.ubcs.resource.utils.FileDownloadUtil;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
@@ -63,6 +63,12 @@
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-flow-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
        </dependency>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
@@ -1,5 +1,7 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
import java.util.List;
public class MdmUIInfoVO implements java.io.Serializable {
@@ -36,7 +38,6 @@
     * å½“前分类是否为叶子节点
     */
    private boolean leaf;
    public List<SmOperationVO> getButtons() {
        return buttons;
    }
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java
@@ -89,6 +89,11 @@
     */
    private String deptId;
    /**
     * éƒ¨é—¨åç§°
     */
    @TableField(exist = false)
    private String deptName;
    /**
     * å¯†ç ç­–ç•¥
     */
    @TableField(exist = false)
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java
@@ -4,6 +4,7 @@
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import org.springblade.core.secure.utils.AuthUtil;
import java.util.*;
import java.util.stream.Collectors;
@@ -45,25 +46,23 @@
    public static Map<String, String> getSystemVarValueMap() {
        Map<String, String> systemVarMap = new HashMap();
        SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
        if (sessionInfo != null) {
            systemVarMap.put("#CURRENTUSER.OID#", sessionInfo.getUserOid());
            systemVarMap.put("#CURRENTUSER.ID#", sessionInfo.getUserId());
            systemVarMap.put("#CURRENTUSER_NAME#", sessionInfo.getUserName());
            systemVarMap.put("#CURRENTDATETIME#", VciDateUtil.getNowString());
            systemVarMap.put("#CURRENTDATE#", VciDateUtil.getNowString("yyyy-MM-dd"));
            systemVarMap.put("#CURRENTTIME#", VciDateUtil.getNowString("HH:mm:ss"));
            systemVarMap.put("#CURRENTUSER.SECRETGRADE#", sessionInfo.getUserSecret());
            systemVarMap.put("#CURRENTUSER.GROUPNAME#", sessionInfo.getDeptName());
            systemVarMap.put("#CURRENTUSER.GROUPOID#", sessionInfo.getDeptOid());
            systemVarMap.put("#CURRENTUSER.EMAIL#", sessionInfo.getEmail());
            systemVarMap.put("#CURRENTUSER.ROLENAME#", (String) ((Collection) Optional.ofNullable(sessionInfo.getRolesName().values()).orElseGet(() -> {
                return new ArrayList();
            })).stream().collect(Collectors.joining(",")));
            systemVarMap.put("#CURRENTUSER.IPSECRET#", sessionInfo.getIpSecret());
            systemVarMap.put("#CURRENTUSER.BUSINESSUNIT#", sessionInfo.getOrgsOid());
            systemVarMap.put("#CURRENTUSER.BUSINESSUNITNAME#", sessionInfo.getOrgsName());
        }
//        SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
//        if (sessionInfo != null) {
        systemVarMap.put("#CURRENTUSER.OID#", String.valueOf(AuthUtil.getUser().getUserId()));
        systemVarMap.put("#CURRENTUSER.ID#", AuthUtil.getUser().getAccount());
        systemVarMap.put("#CURRENTUSER_NAME#", AuthUtil.getUser().getUserName());
        systemVarMap.put("#CURRENTDATETIME#", VciDateUtil.getNowString());
        systemVarMap.put("#CURRENTDATE#", VciDateUtil.getNowString("yyyy-MM-dd"));
        systemVarMap.put("#CURRENTTIME#", VciDateUtil.getNowString("HH:mm:ss"));
        systemVarMap.put("#CURRENTUSER.SECRETGRADE#", (String) AuthUtil.getUser().getDetail().get("secretGrade"));
        systemVarMap.put("#CURRENTUSER.GROUPNAME#", (String) AuthUtil.getUser().getDetail().get("deptName"));
        systemVarMap.put("#CURRENTUSER.GROUPOID#", AuthUtil.getUser().getDeptId());
        systemVarMap.put("#CURRENTUSER.EMAIL#", (String) AuthUtil.getUser().getDetail().get("email"));
        systemVarMap.put("#CURRENTUSER.ROLENAME#", AuthUtil.getUser().getRoleName());
        systemVarMap.put("#CURRENTUSER.IPSECRET#", "");
        systemVarMap.put("#CURRENTUSER.BUSINESSUNIT#", AuthUtil.getUser().getTenantId());
        systemVarMap.put("#CURRENTUSER.BUSINESSUNITNAME#", (String) AuthUtil.getUser().getDetail().get("tenantName"));
//        }
        return systemVarMap;
    }
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -137,6 +137,12 @@
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-flow-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <!--axis2 end -->
    </dependencies>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -12,6 +12,7 @@
import com.vci.ubcs.code.service.MdmEngineService;
import com.vci.ubcs.code.service.MdmIOService;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.annotation.VciBusinessLog;
import com.vci.ubcs.starter.revision.model.BaseModel;
@@ -55,6 +56,7 @@
     */
    @Autowired
    private MdmIOService mdmIOService;
    /**
     * ä¸‹è½½æ‰¹é‡ç”³è¯·çš„导入模板
@@ -627,6 +629,17 @@
        return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
    }
    /**
     * ä½¿ç”¨åˆ†ç±»èŽ·å–è¡¨æ ¼çš„å®šä¹‰
     * @param codeClassifyOid åˆ†ç±»ä¸»é”®
     * @param functionId åŠŸèƒ½çš„ç¼–å·
     * @return UI相关的信息(仅包含表格)
     */
    @GetMapping("/getFlowdUIInfoByClassifyOid")
    public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId,String templateId,String taskId,String modelKey){
        return engineService.getFlowUIInfoByClassifyOid(codeClassifyOid,functionId,templateId,taskId,modelKey);
    }
    @GetMapping("/thisistest")
    @ResponseBody
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -372,6 +372,14 @@
     * @return UI相关的内容
     */
    MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
    /**
     * ä½¿ç”¨åˆ†ç±»ä¸»é”®ï¼Œæ¨¡æ¿ä¸»é”®ï¼Œé˜¶æ®µæ ‡è¯†ï¼Œæµç¨‹æ¨¡æ¿kek获取流程审批中页面的内容,包含按钮
     *
     * @param codeClassifyOid ä¸»é¢˜åº“分类主键
     * @param functionId      åŠŸèƒ½çš„ç¼–å·,默认5
     * @return UI相关的内容
     */
    MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey);
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ’å…¥æ“ä½œ
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -1088,7 +1088,7 @@
            //递归找上级的模板
            CodeClassify classifyDO = codeClassifyMapper.selectById(codeClassifyOid);
//                codeClassifyDaoI.selectByPrimaryKey(codeClassifyOid);
            if(StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
            if(classifyDO==null&&StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
                //说明已经是顶了,也没找到的话,那就返回了
                return null;
            }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -68,8 +68,8 @@
    private IDockingLogeService dockingLogeService;
    @Resource
    private IDockingDataService dockingDataService;
    @Resource
    private IDockingTaskService dockingTaskService;
//    @Resource
//    private IDockingTaskService dockingTaskService;
    @Resource
    private IDockingSystemConfigService dockingSystemConfigService;
    @Resource
@@ -243,7 +243,7 @@
            }
            if(dockingTask_insert.size()!=0) {
                dockingTaskService.saveBatch(dockingTask_insert);
//                dockingTaskService.saveBatch(dockingTask_insert);
            }
            //dockingTaskDaoI.updateByPrimaryKey方法报错了,所以手写了这个
            boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -95,11 +95,11 @@
     */
    @Autowired(required = false)
    private DockingSystemMapper dockingSystemMapper;
    /***
     * ä»»åŠ¡ç”ŸæˆæœåŠ¡
     */
    @Autowired( required = false)
    private IDockingTaskService dockingTaskService;
//    /***
//     * ä»»åŠ¡ç”ŸæˆæœåŠ¡
//     */
//    @Resource
//    private IDockingTaskService dockingTaskService;
    /**
@@ -450,7 +450,7 @@
                    dockingTaskDO_insert.add(dockingTaskDO);
                });
            }
            dockingTaskService.saveBatch(dockingTaskDO_insert);
//            dockingTaskService.saveBatch(dockingTaskDO_insert);
        }catch (Throwable e){
            msg="数据推送到定时任务失败!";
            log.error("数据推送到定时任务失败!"+e);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java
@@ -12,15 +12,17 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class DokingSysManaentServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDokingSysManaentService {
    /***
     * ä»»åŠ¡ç”ŸæˆæœåŠ¡
     */
    @Autowired( required = false)
    private IDockingTaskService dockingTaskService;
//    /***
//     * ä»»åŠ¡ç”ŸæˆæœåŠ¡
//     */
//    @Resource
//    private IDockingTaskService dockingTaskService;
    /***
@@ -52,7 +54,8 @@
     */
    @Override
    public IPage<DockingTaskVO> gridDockingTask(DockingTask dockingTask, Query query) {
        IPage<DockingTask> pages=dockingTaskService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingTask));
        IPage<DockingTask> pages=null;
//        IPage<DockingTask> pages=dockingTaskService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingTask));
        return DockingTaskWrapper.build().pageVO(pages);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -22,6 +22,9 @@
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.feign.*;
@@ -38,6 +41,7 @@
import com.vci.ubcs.starter.util.UBCSSqlKeyword;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.constant.RegExpConstant;
import com.vci.ubcs.starter.web.constant.VciSystemVarConstants;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
@@ -278,6 +282,11 @@
     * æ›¿æ¢å­—符
     */
    public static final String SPECIAL_CHAR = "VCI";
    /**
     * ä¸»æ•°æ®æµç¨‹é˜¶æ®µæœåŠ¡
     */
    @Autowired
    private IMDMIFlowAttrClient imdmiFlowAttrClient;
//    @Autowired
//    private CodeOsbtmtypeMapper codeOsbtmtypeMapper;----
@@ -391,6 +400,7 @@
    public String addSaveCode(CodeOrderDTO orderDTO) throws Exception {
        VciBaseUtil.alertNotNull(orderDTO, "编码申请相关的属性和码段的内容都为空", orderDTO.getCodeClassifyOid(), "主题库分类的主键",
                orderDTO.getTemplateOid(), "模板的主键", orderDTO.getCodeRuleOid(), "编码规则的主键");
        VciSystemVarConstants.getSystemVarValueMap();
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
        CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
        CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
@@ -2857,6 +2867,51 @@
        return uiInfoVO;
    }
    /**
     * ä½¿ç”¨åˆ†ç±»çš„主键获取表格的定义-ubcs后修改获取流程阶段熟悉获取方法
     * @param codeClassifyOid
     * @param templateId
     * @param taskId
     * @param modelKey
     * @return
     */
    public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid,String templateId,String taskId,String modelKey) {
        MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
        CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
        uiInfoVO.setTemplateVO(templateVO);
        UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true);
        R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId);
        List<ProcessStageAttrVO> stageAttrVOS = r.getData();
        List<String> attrList = new ArrayList<>();
        stageAttrVOS.stream().forEach(attr->{
            attrList.add(attr.getAttrId());
        });
        uiTableDefineVO.getCols().stream().forEach(list -> {
            List<UITableFieldVO> visiableTableField = new ArrayList<>();
            visiableTableField = list.stream().filter(col ->
                attrList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) ||
                    (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s))
                    || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s))
                )).collect(Collectors.toList());
            visiableTableField.stream().forEach(vo -> {
                uiTableDefineVO.setHasEditor(true);
                if ("refer".equalsIgnoreCase(vo.getFieldType())) {
                    setReferConfig2EditConfig(vo);
                } else if ("combox".equalsIgnoreCase(vo.getFieldType())) {
                    setComboxConfig2EditConfig(vo);
                } else if (StringUtils.isNotBlank(vo.getDateFormate())) {
                    vo.setEdit("date");
                } else {
                    vo.setEdit(vo.getFieldType());
                }
            });
        });
        uiInfoVO.setTableDefineVO(uiTableDefineVO);
        wrapperResemble(templateVO, uiInfoVO);
        return uiInfoVO;
    }
    /**
     * æ¨¡æ¿å±žæ€§è½¬æ¢ä¸ºè¡¨æ ¼å®šä¹‰çš„信息
     *
@@ -3122,6 +3177,33 @@
        }
        return uiInfoVO;
    }
    @Override
    public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey){
//        MdmUIInfoVO uiInfoVO = getTableDefineByClassifyOid_v2(codeClassifyOid,templateId,taskId,modelKey);
        MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
        R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId);
        List<ProcessStageAttrVO> stageAttrVOS = r.getData();
        Set<String> attrSet = new HashSet<>();
        stageAttrVOS.stream().forEach(attr->{
            attrSet.add(attr.getAttrId());
        });
        try {
            UITableDefineVO tableDefineVO = uiInfoVO.getTableDefineVO();
            List<List<UITableFieldVO>> tableFieldVOs = tableDefineVO.getCols();
            List<UITableFieldVO> uiTableFieldVOS = tableFieldVOs.get(0);
            uiTableFieldVOS.stream().forEach(ui->{
//                if(!attrSet.contains(ui.getField())){
//                    ui.setEdit(null);
//                    ui.setEditConfig(null);
//                }
            });
        }catch (Exception e){
            throw new ServiceException("模板没有定义属性,读取表头失败!");
        }
        return uiInfoVO;
    }
    /**
     * ä½¿ç”¨åˆ†ç±»ä¸»é”®èŽ·å–å·¥å…·æ ä¸­çš„æŒ‰é’®ä¿¡æ¯
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -780,8 +780,13 @@
     * @param rule è§„则的内容
     * @return è½¬æ¢åŽçš„
     */
    private String getValueByFormulaForCBO(BaseModel cbo,String rule){
        Map<String, Object> dataMap = BeanUtils.beanToMap(cbo);
    private String getValueByFormulaForCBO(BaseModel cbo,String rule)  {
        Map<String, Object> dataMap = null;
        try{
            dataMap = VciBaseUtil.convertBean2Map(cbo);
        }catch(Exception e){
            throw new VciBaseException("mapToBeanError:"+e);
        }
        Map<String, String> map = new HashMap<String, String>();
        for (String i : dataMap.keySet()) {
            map.put(i, String.valueOf(dataMap.get(i)));
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.omd.dto.LifeCycleDTO;
@@ -15,12 +16,14 @@
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
@@ -46,12 +49,9 @@
    @GetMapping("page")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页查询生命周期",notes = "分页查询生命周期")
    public R<IPage<LifeCycleVO>> page(BladeQueryObject baseQueryObject){
        Map<String, Object> conditionMap = baseQueryObject.getConditionMap();
        if (conditionMap == null){
            conditionMap = new HashMap<>();
        }
        return R.data(lifeCycleService.listLife(conditionMap,baseQueryObject.getQuery()));
    public R<IPage<LifeCycleVO>> page(@RequestParam Map<String, Object> conditionMap, Query query){
        return R.data(lifeCycleService.listLife(conditionMap,query));
    }
@@ -147,14 +147,8 @@
     */
    @GetMapping("page-event")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "全部的事件",notes = "分页查询事件")
    public R<IPage<LifeCycleEventVO>> pageEvent(BladeQueryObject baseQueryObject){
        Map<String, Object> conditionMap = baseQueryObject.getConditionMap();
        if (conditionMap == null){
            conditionMap = new HashMap<>();
        }
        return R.data(lifeCycleService.listEvent(conditionMap,baseQueryObject.getQuery()));
    @ApiOperation(value = "全部的事件",notes = "list查询事件")
    public R<List<LifeCycleEventVO>> pageEvent(){
        return R.data(lifeCycleService.listEventNoPage());
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java
@@ -39,6 +39,11 @@
    IPage<LifeCycleEventVO> listEvent(Map<String, Object> conditionMap, Query query);
    /**
     * èŽ·å–å…¨éƒ¨çš„äº‹ä»¶
     */
    List<LifeCycleEventVO> listEventNoPage();
    /**
     * æ·»åŠ ä¿å­˜
     * @param lifeCycleDTO æ•°æ®ä¼ è¾“对象
     * @return æ·»åŠ åŽçš„æ˜¾ç¤ºå¯¹è±¡
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java
@@ -106,6 +106,18 @@
        return LifeCycleEventWrapper.build().pageVO(eventMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(conditionMap, LifeCycleEvent.class).lambda().orderByAsc(LifeCycleEvent::getEventFullName)));
    }
    public List<LifeCycleEventVO> listEventNoPage(){
        QueryWrapper<LifeCycleEvent> queryWrapper = new QueryWrapper();
        List<LifeCycleEvent> lifeCycleEvents =  eventMapper.selectList(queryWrapper);
        List<LifeCycleEventVO> vos = new ArrayList<>();
        lifeCycleEvents.stream().forEach(lifeCycleEvent -> {
            LifeCycleEventVO vo = new LifeCycleEventVO();
            BeanUtil.convert(lifeCycleEvent,vo);
            vos.add(vo);
        });
        return vos;
    }
    /**
     * æ·»åŠ ä¿å­˜
     *
@@ -317,9 +329,7 @@
        LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid());
        //查询重复
        QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
        if(rule.getId().equals(lifeCycleDTO.getId())){
            throw new VciBaseException("生命周期编号不能修改");
        }
        wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT));
        wrapper.ne("oid",lifeCycleDTO.getOid());
        if(baseMapper.selectCount(wrapper)>0){
@@ -336,7 +346,7 @@
        String lifeOid = lifeCycleRule.getOid();
        QueryWrapper<LifeCycleNode> nodeWrapper = new QueryWrapper<>();
        nodeWrapper.eq("lifeCycleOid",lifeOid.toLowerCase(Locale.ROOT));
        nodeWrapper.eq("life_cycle_oid",lifeOid.toLowerCase(Locale.ROOT));
        List<LifeCycleNode> nodes = nodeMapper.selectList(nodeWrapper);
        List<LifeCycleNodeVO> nodeVos = new ArrayList<>();
        nodes.stream().forEach(doo->{
@@ -347,7 +357,7 @@
        vo.setNodes(nodeVos);
        QueryWrapper<LifeCycleEdge> edgeWrapper = new QueryWrapper<>();
        edgeWrapper.eq("lifeCycleOid",lifeOid.toLowerCase(Locale.ROOT));
        edgeWrapper.eq("life_cycle_oid",lifeOid.toLowerCase(Locale.ROOT));
        List<LifeCycleEdge> edges = edgeMapper.selectList(edgeWrapper);
        List<LifeCycleEdgeVO> edgeVos = new ArrayList<>();
        edges.stream().forEach(doo->{
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
@@ -244,6 +244,7 @@
        if (ObjectUtil.isEmpty(user)) {
            return null;
        }
        user.setDeptName(Func.join(SysCache.getDeptNames(user.getDeptId())));
        UserInfo userInfo = new UserInfo();
        userInfo.setUser(user);
        if (Func.isNotEmpty(user)) {