xiejun
2023-12-06 e9a590e862148092027510b15d33cdd32691a6f5
Merge remote-tracking branch 'origin/master'

# Conflicts:
# Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
已修改25个文件
已添加1个文件
763 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/GetItem.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/statistic/chart.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/BatchImport/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/config/website.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/index/sidebar/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/styles/sidebar.scss 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/cycle.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/statistic/statisticPage.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/system/user.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/GetItem.js
@@ -126,3 +126,13 @@
    }
  })
}
//集团码模板下载
export const exportGroupCodeExcel = (params) => {
  return request({
    url: '/api/ubcs-code/mdmEngineController/exportGroupCodeExcel',
    method: 'get',
    params,
    responseType: 'blob'
  })
}
Source/UBCS-WEB/src/api/statistic/chart.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
import request from '@/router/axios';
//统计分析数据
export const getStatisticAnalysis = (params) => {
  return request({
    url: '/api/ubcs-code/mdmEngineController/getStatisticAnalysis',
    method: 'get',
    params
  })
}
Source/UBCS-WEB/src/components/BatchImport/index.vue
@@ -13,7 +13,7 @@
      </li>
    </ul>
    <div
      v-show="currentTypeObj[type]['upParams'] === 'classifyAttr' && this.type !== 'bulkEdit'"
      v-show="currentTypeObj[type]['upParams'] === 'classifyAttr' && this.type !== 'bulkEdit'&& this.type !== 'groupCode'"
      class="radio_box"
    >
      <span>分类的路径使用的属性:</span>
@@ -61,6 +61,7 @@
      >
    </el-upload>
    <template #footer>
      <div v-if="type !== 'groupCode'">
      <el-button
        v-if="type !== 'bulkEdit'"
        :loading="downloadLoading"
@@ -76,6 +77,7 @@
                 @click="downloadTemplateFun"
      >下载编辑模板
      </el-button>
      </div>
      <el-button size="small" @click="dialogVisible = false">关闭</el-button>
    </template>
    <ShowImportData
@@ -248,6 +250,15 @@
          downloadTemplateFun: downloadBatchApplyCodeTemplate,
          upParams: "classifyAttr",
        },
        groupCode: {
          title: "集团码导入",
          tipList: [
            "1.标题带五角星的表示关键属性,带星号表示必输项",
            "2.每次仅能最多导入5000条数据(可通过nacos进行配置,推荐5000/次导入),如果出错会返回错误的数据和原因,但是正确数据可以继续保存",
            "3.Excel第一行和第二行依次为企业编码和集团编码(必填)"
          ],
          action: "/api/ubcs-code/mdmEngineController/importGroupCode"
        }
      },
      secDTOList: [],
    };
@@ -291,16 +302,9 @@
        return;
      }
      if (this.type === 'bulkEdit') {
        this.tableHeadFindData.map(item => item.prop)
          .forEach((prop, index) => {
            this.exportArrTwo[`attrIdIndexMap[${index}]`] = prop;
          });
        downloadExcelBatchEdit({
          codeClassifyOid: this.codeClassifyOid,
          'conditionMap[oid]': this.ids, ...this.exportArrTwo,
          limit: -1
        }).then(res => {
          // console.log('res',res)
          if (res) {
            func.downloadFileByBlobHandler(res);
            this.$message.success('下载成功,请查看!')
Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -103,9 +103,14 @@
      type: String,
      default: "",
    },
    selectRow:{
      type:Array,
      default:[]
    }
  },
  data() {
    return {
      selectValue:"",
      //年代号
      dataYearCode: {
        type: "",
@@ -206,6 +211,15 @@
      handler(newV) {
        this.$emit("dataYearCode", newV)
      }
    },
    selectRow:{
      handler(newval){
        console.log(newval);
        let ids = newval.map(item => item.id);
        this.selectValue= ids.join(",");
      },
      deep:true,
      immediate:true
    }
  },
  methods: {
@@ -320,7 +334,9 @@
          value:formItem.defaultValue || (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
            (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
            (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null) ||
            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null),
            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null) ||
            //父组件如果是参照数据会将selectRow置空,selectRow不为空就说明不是参照要回填源标准号数据
          (this.status === "amend" ? (this.selectRow && (formItem.field === "oldcode" ? this.selectValue : null)) : null),
          placeholder: formItem.inputTip,
          comboxKey: formItem.comboxKey,
          tip: formItem.tooltips,
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -14,6 +14,7 @@
      v-if="dialogVisible" key="masterForm"
      ref="FormTemplate"
      v-bind="$attrs"
      :selectRow="selectRow"
      :TreeValue="TreeValue"
      :eventList="eventList"
      :rowOid="rowOid"
@@ -41,6 +42,8 @@
            :selfColumnConfig="selfColumnConfig"
            :selfColumnType="selfColumnType"
            :type="type"
            :status="status"
            :selectRow="selectRow"
            data-key="codeApplyForm"
            secDTOListv-bind="$attrs"
            @attrList="attrListForm"
@@ -139,6 +142,10 @@
      type: Object,
      default: () => ({}),
    },
    selectRow:{
      type:Array,
      default:[]
    }
  },
  data() {
    return {
@@ -242,15 +249,11 @@
    },
  },
  watch: {
    codeApplyForm: {
      handler(newval, oldval) {
        // console.log('newval',newval)
      }
    }
  },
  methods: {
    openDialog() {
      //新增和修改共同调用
      //新增和修改共同调用(有改动 ä¸éœ€è¦åœ¨ä½¿ç”¨edit,方法没什么影响)
      this.getFormTemplate();
      if (this.type === "add" || (this.type !== "add" && this.status === "amend")) {
        this.getCodeRule();
@@ -473,7 +476,7 @@
            secValue: this.codeApplyForm[item.oid],
          };
        });
        //标准特定
        //标准特定字段映射
        const mappings = {
          codeStandardEditType: 'operationType',
          reviseSeries: 'series',
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -99,9 +99,9 @@
          </FormTemplateDialog>
          <!--          ä¿®è®¢-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'修改编码信息'"
                              :visible.sync="amendvisible" status="amend"
                              type="edit" @submit="amendSumbit"></FormTemplateDialog>
                              :disabledProp="disabledProp" :templateOid="templateOid" :title="'数据修订'"
                              :visible.sync="amendvisible" status="amend" :selectRow="selectRow"
                              type="add" @submit="amendSumbit"></FormTemplateDialog>
          <!--          æ–°å¢ž-->
          <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
                              :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
@@ -113,7 +113,7 @@
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :templateOid="templateOid" :title="'修改编码信息'"
                              :visible.sync="editvisible"
                              rowOid="rowOid"
                              :rowOid="rowOid"
                              type="edit" @submit="EditSumbit"></FormTemplateDialog>
          <!--          æ‰¹é‡ç¼–辑-->
          <!--          <MasterEditBulk :visible.sync="bulkeditvisible" ></MasterEditBulk>-->
@@ -187,7 +187,8 @@
  upSaveCode,
  applyGroupCode,
  receiveEditApply,
  applySaveCode
  applySaveCode,
  exportGroupCodeExcel
} from "@/api/GetItem";
import {processTS, changeStatus} from "@/api/template/setPersonnel"
import {listCodeAttributeByClassId} from "@/api/integration/integration.js";
@@ -432,14 +433,13 @@
          }
        })
        this.tableHeadFindDatas = newval;
        // console.log('new',newval)
        if (!this.isCodeArrayPushed) {
          if (newval.find(item => item.prop === 'id')) {
            this.CodeArray.push(newval.find(item => item.prop === 'id'));
          } else {
            this.CodeArray.push([]);
            // this.CodeArray.push([]);
            this.CodeArray = [];
          }
          // console.log('CodeArray', this.CodeArray);
          this.isCodeArrayPushed = true;
        }
        if (!this.islcstatusPushed) {
@@ -485,8 +485,7 @@
      this.LinkObject = row;
      this.LinkVisible = true;
      this.LinkList = Object.keys(row).map(property => property)
      // console.log(result);
      // console.log(this.LinkObject)
    },
    //状态搜索
    cellSelectHandler(row) {
@@ -554,7 +553,34 @@
        if (uniqueFlag === 'CODEAMEND') return this.codeAMENDHandler()
        //批量编辑
        if (uniqueFlag === 'bulkEdit') return this.bulkEditHandler("bulkEdit")
        //集团码导出
        if (uniqueFlag === 'excelGroupCode') return this.excelGroupCode()
        //集团码导入
        if (uniqueFlag === 'importGroupCode') return this.importGroupCode("groupCode")
      });
    },
    importGroupCode(type){
      this.batchImportData.visible = true
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    },
    //集团码导出
    excelGroupCode(){
      debugger
      this.isLoading = true;
      exportGroupCodeExcel({
        codeClassifyOid: this.codeClassifyOid,
      }).then(res => {
        console.log(res.data)
        if (res) {
          func.downloadFileByBlobHandler(res);
          this.$message.success('下载成功,请查看!');
          this.isLoading = false;
        }
      }).catch(error=>{
        this.$message.error(error);
        this.isLoading = false;
      })
    },
    //标准申请
    codeApplyHandler() {
@@ -589,45 +615,49 @@
    //标准修订
    codeAMENDHandler() {
      let foundItem = false;
      this.tableHeadFindData.forEach(item => {
        if (item.field === "oldcode" && Object.keys(item.referConfig).length >= 1) {
          foundItem = true;
        }
      });
      if (foundItem) {
        if(this.selectRow.length >= 1){
          this.$confirm('已有参照是否取消勾选继续执行?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }).then(() => {
            this.selectRow = [];
            //取消勾选状态
            this.$refs.dataTable.clearSelection();
        this.amendvisible = true;
        this.rowOid = this.selectRow[0].oid;
      } else {
        if (this.selectRow.length !== 1) {
          this.$message.warning("请选择一条数据");
          }).catch(() => {
            this.$message({
              type: 'info',
              message: '已取消当前操作'
            });
          });
        } else {
          this.amendvisible = true;
          this.rowOid = this.selectRow[0].oid;
        }
      } else {
        if (this.selectRow.length <= 0) {
          this.$message.warning("请至少选择一条数据");
        } else {
          this.amendvisible = true;
        }
      }
    },
    //批量编辑
    bulkEditHandler(type) {
      // console.log(this.nodeClickList)
      if (this.nodeClickList.children.length >= 1) {
        this.$message.warning('当前选择的分类不是叶子节点,不允许批量编辑!')
        return;
      }
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择至少一条数据!')
        return;
      }
      const Editing = this.selectRow.every(item => item.lcstatus === 'Editing');
      if (Editing) {
        this.batchImportData.visible = true
        this.batchImportData.type = type
        this.batchImportData.codeClassifyOid = this.codeClassifyOid
      } else {
        this.$message.warning('选择的数据中有编码状态不是“编辑中”,不可编辑!');
      }
    },
    addSaveHandler() {
      this.$nextTick(() => {
@@ -639,10 +669,6 @@
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据模板!')
      } else {
        // const requestData = this.selectRow.forEach(item => {
        //   return { oids: item.oid, btmName: item.btmname };
        // });
        const oids = this.selectRow.map(item => item.oid).join(',');
        applyGroupCode({oids, btmName: this.selectRow[0].btmname}).then(res => {
          if (res.data.code == 200) {
@@ -657,9 +683,6 @@
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据模板!')
      } else {
        // const requestData = this.selectRow.forEach(item => {
        //   return { oids: item.oid, btmName: item.btmname };
        // });
        const oids = this.selectRow.map(item => item.oid).join(',');
        receiveEditApply({oids, btmName: this.selectRow[0].btmname}).then(res => {
          if (res.data.code == 200) {
Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
@@ -36,7 +36,7 @@
            );
          });
          let colors = ["#91CC75", "#5470C6"];
          let colors = ['#2eadd6', '#FFA500'];
          const seriesData = [];
          for (let i = 0; i < newval.length; i++) {
@@ -50,7 +50,7 @@
                value: newval[i][j],
                itemStyle: {
                  normal: {
                    barBorderRadius: borderRadius,  // è®¾ç½®åœ†è§’
                    // barBorderRadius: borderRadius,  // è®¾ç½®åœ†è§’
                    color: colors[i],
                  }
                },
@@ -65,7 +65,10 @@
              data: curSeriesData,
              label: {
                show: true,
                position: 'top'
                position: 'top',
                formatter: function (params) {
                  return params.value === 0 ? '' : params.value; // å€¼ä¸º 0 ä¸æ˜¾ç¤ºï¼Œå…¶ä»–情况显示
                }
              },
              emphasis: {
                focus: "series",
Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue
@@ -79,7 +79,7 @@
      immediate: true,
      handler(newval, oldval) {
        if (newval) {
          const colors = ["#8fef5b", "#db3c3c"];
          const colors = ["#2eadd6", "#db3c3c"];
          const seriesData = newval.map((data, index) => ({
            name: index === 0 ? "总量" : "新增",
Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -376,7 +376,7 @@
              </el-option>
            </el-select>
            <el-switch
              v-if="item.edit === 'switch'" v-model="row[item.prop]" :disabled="!editOpenFlag" active-value="true" v-show="!AddCellFlag"
              v-if="item.edit === 'switch'" v-model="row[item.prop]" :disabled="!editOpenFlag" active-value="true"
              inactive-value="false">
            </el-switch>
            <span v-else>{{ row[item.prop] }}</span>
Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
@@ -40,12 +40,12 @@
            </div>
          </div>
          <!--          å·¦ä¾§æ ‘-->
          <div style="height: calc(100vh - 230px);overflow: auto">
          <div style="height: calc(100vh - 230px);overflow: auto;">
            <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata"
                       :defaultExpandAll="false"
                       :option="Treeoption"
                       class="classifyTree"
                       style="height: calc(100vh - 280px)"
                       style="height: calc(100vh - 280px);"
                       @node-click="nodeClick"
            >
            </avue-tree>
Source/UBCS-WEB/src/config/website.js
@@ -38,7 +38,7 @@
      label: 'name',
      path: 'path',
      icon: 'source',
      children: 'children'
      children: 'children',
    }
  },
  // ç¬¬ä¸‰æ–¹ç³»ç»ŸæŽˆæƒåœ°å€
Source/UBCS-WEB/src/page/index/sidebar/index.vue
@@ -51,6 +51,5 @@
.title{
  color: red;
}
</style>
Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue
@@ -2,37 +2,37 @@
  <div class="menu-wrapper">
    <template v-for="item in menu">
      <el-menu-item v-if="validatenull(item[childrenKey]) && vaildRoles(item)"
                    :index="item[pathKey]"
                    @click="open(item)"
                    :key="item[labelKey]"
                    :class="{'is-active':vaildActive(item)}">
                    :class="{'is-active':vaildActive(item)}"
                    :index="item[pathKey]"
                    @click="open(item)">
        <i :class="item[iconKey]"></i>
        <span slot="title"
              :alt="item[pathKey]">{{generateTitle(item)}}</span>
      </el-menu-item>
      <el-submenu v-else-if="!validatenull(item[childrenKey])&&vaildRoles(item)"
                  :index="item[pathKey]"
                  :key="item[labelKey]">
                  :key="item[labelKey]"
                  :index="item[pathKey]">
        <template slot="title">
          <i :class="item[iconKey]"></i>
          <span slot="title"
                :class="{'el-menu--display':collapse && first}">{{generateTitle(item)}}</span>
        </template>
        <template v-for="(child,cindex) in item[childrenKey]">
          <el-menu-item :index="child[pathKey],cindex"
                        @click="open(child)"
          <el-menu-item v-if="validatenull(child[childrenKey])"
                        :key="child[labelKey]"
                        :class="{'is-active':vaildActive(child)}"
                        v-if="validatenull(child[childrenKey])"
                        :key="child[labelKey]">
                        :index="child[pathKey],cindex"
                        @click="open(child)">
            <i :class="child[iconKey]"></i>
            <span slot="title">{{generateTitle(child)}}</span>
          </el-menu-item>
          <sidebar-item v-else
                        :menu="[child]"
                        :key="cindex"
                        :collapse="collapse"
                        :menu="[child]"
                        :props="props"
                        :screen="screen"
                        :collapse="collapse"></sidebar-item>
                        :screen="screen"></sidebar-item>
        </template>
      </el-submenu>
    </template>
@@ -143,4 +143,10 @@
    }
  };
</script>
<style lang="scss" scoped>
.el-menu-item:focus, .el-menu-item:hover {
  outline: 0;
  background-color: #060708;
}
</style>
Source/UBCS-WEB/src/styles/sidebar.scss
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -11,7 +11,7 @@
    <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm"
             :rules="rules" @resetFields="resetForm" status-icon="true">
      <el-form-item label="英文名称" label-width="100px" required="true" prop="id">
        <el-input v-model="btmType.id" :prefix-icon="icons.key"></el-input>
        <el-input v-model="btmType.id" :prefix-icon="icons.key" :disabled="true"></el-input>
      </el-form-item>
      <el-form-item label="中文名称" label-width="100px">
        <el-input v-model="btmType.name" :prefix-icon="icons.name"></el-input>
@@ -232,7 +232,8 @@
          {
            label: '英文名称',
            prop: 'id',
            align: 'center'
            align: 'center',
            disabled:true
          }, {
            label: '中文名称',
            prop: 'name',
@@ -284,6 +285,7 @@
              prop: 'id',
              align: 'left',
              search: true,
              disabled:true,
              width: 230
            }, {
              label: '中文名称',
@@ -356,6 +358,7 @@
            {
              label: '英文名称',
              prop: 'id',
              disabled:true,
              search: true
            },
            {
@@ -420,6 +423,7 @@
            {
              label: '英文名称',
              prop: 'id',
              disabled:true,
              search: true
            },
            {
Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -229,6 +229,8 @@
          const nodes = res.data.data.nodes.map((item) => {
            item.label = item.id;
            item.index = item.indexNum;
            item.x = Number(item.x);
            item.y = Number(item.y);
            return item;
          });
          const edges = res.data.data.edges.map((item) => {
Source/UBCS-WEB/src/views/statistic/statisticPage.vue
@@ -13,6 +13,7 @@
      top="-50px"
    >
      <el-table
        ref="table"
        :data="tableData"
        border
        style="width: 100%"
@@ -65,6 +66,8 @@
import pieChart from "../../components/StatisticsComponent/pieChart"
import ColumnarChart from "../../components/StatisticsComponent/ColumnarChart"
import mixCart from "../../components/StatisticsComponent/mixCart"
import {getStatisticAnalysis} from "@/api/statistic/chart"
import {getList} from "@/api/system/statistic";
export default {
  components: {
@@ -76,6 +79,8 @@
  name: "statisticPage",
  data() {
    return {
      menuList:[],
      dataKeyList: [],
      addVisible: false,
      chartName: "",
      lineList: [],
@@ -83,99 +88,19 @@
      columnarList: [],
      mixList: [],
      selectData: [],
      tableData: [
        {
          menuName: "工艺文件",
          codeType: "1",
          menuData: [
            [222, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "测试sc",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "产品型号",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "固定资产",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "李航主数据",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "Part",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "人员主数据",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "人员",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "标准",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "物品主数据",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
        },
        {
          menuName: "型号",
          codeType: null,
          menuData: [
            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
          ]
      tableData: []
        }
      ]
    }
  },
  created() {
    this.getMasterList()
  },
  methods: {
    getMasterList() {
      const userId = localStorage.getItem('userId');
      getList({userId: userId}).then(res => {
        this.tableData = res.data.data;
      })
    },
    //新增
    addHandler() {
      this.addVisible = true;
@@ -190,7 +115,50 @@
        this.$message.warning('请至少选择一条数据!');
        return;
      }
      let codeStatus = this.selectData.every(key => key.codeType)
      if (!codeStatus) {
        this.$message.warning("请检查已勾选数据类型是否为空!");
        return;
      }
      this.dataKeyList = this.selectData.map(obj => obj.code)
      const btmName = this.dataKeyList.join(",");
      if (btmName) {
        // this.menuList=[
        //   {
        //     menuData: [
        //       [0, 0, 0, 0, 0, 0, 4, 9, 12, 12, 12, 12],
        //       [0, 0, 0, 0, 0, 0, 4, 5, 3, 0, 0, 0]
        //     ],
        //     code:1
        //   },
        //   {
        //     menuData: [
        //       [0, 0, 0, 1, 1, 1, 1, 1, 1, 29, 5315, 5315],
        //       [0, 0, 0, 1, 0, 0, 0, 0, 0, 28, 5286, 0]
        //     ],
        //     code:2
        //   },
        //   {
        //     menuData: [
        //       [0, 58, 60, 61, 75, 84, 145, 162, 166, 177, 186, 186],
        //       [0, 58, 2, 1, 14, 9, 61, 17, 4, 11, 9, 0]
        //     ],
        //     code:3
        //   }
        // ]
        // this.nextSave();
        // this.$message.success('保存成功')
        getStatisticAnalysis({btmNames: btmName}).then(res => {
          this.menuList = res.data.data;
          this.nextSave();
          this.$message.success('保存成功')
        });
      }else {
        this.$message.warning('请选择数据!')
      }
    },
    nextSave() {
      const typeList = {
        "0": "lineList",
        "1": "pieList",
@@ -199,32 +167,29 @@
      };
      let hasValidData = false; // æ·»åŠ ä¸€ä¸ªæ ‡å¿—æ¥è®°å½•æ˜¯å¦æœ‰æœ‰æ•ˆçš„é€‰æ‹©æ•°æ®
      let codeStatus = this.selectData.every(key => key.codeType)
      if (!codeStatus) {
        this.$message.warning("请检查已勾选数据类型是否为空!");
        return;
      }
      this.selectData.forEach(item => {
      this.selectData.forEach((item, index) => {
        item.menuData = this.menuList[index].menuData;
        const dataKey = typeList[item.codeType];
        if (dataKey) {
          this[dataKey].push(item);
          hasValidData = true; // æ ‡è®°æœ‰æœ‰æ•ˆæ•°æ®è¢«æ·»åŠ 
          hasValidData = true;
        }
      });
      if (hasValidData) {
        // this.$refs.table.clearSelection();
        this.addVisible = false;
      }
    },
    //表格多选
    selectChange(selection, row) {
      // console.log(selection, row)
    selectChange(selection) {
      this.selectData = selection;
    },
  }
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
</style>
Source/UBCS-WEB/src/views/system/user.vue
@@ -396,6 +396,7 @@
      userflag:true,
      usernumber:0,
      userStatus:false,
      isUpdateShowInput:false,
    };
  },
  watch: {
@@ -558,6 +559,7 @@
                    message: "请输入登录账号",
                    trigger: "blur"
                  }],
                  disabled: this.isUpdateShowInput,
                },
                {
                  label: "用户平台",
@@ -711,7 +713,7 @@
                  multiple: true,
                  type: "tree",
                  dicData: [],
                  disabled:this.userStatus,
                  disabled: this.isUpdateShowInput,
                  props: {
                    label: "title"
                  },
@@ -1100,9 +1102,9 @@
    beforeOpen(done, type) {
      // console.log(type)
      if(type === "edit"){
        this.userStatus = true;
        this.isUpdateShowInput = true;
      }else {
        this.userStatus = false;
        this.isUpdateShowInput = false;
      }
      //console.log(type)
      // console.log('this.tenantId',this.tenantId)
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -4,17 +4,13 @@
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.apache.poi.ss.formula.functions.T;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
@@ -42,8 +38,6 @@
            baseModel.setLastModifyTime(new Date());
            baseModel.setTs(new Date());
            baseModel.setRevisionOid(VciBaseUtil.getPk());
            // ç”¨æˆ·id
            // String userId = AuthUtil.getUserId().toString();
            baseModel.setBtmname(btmName);
            baseModel.setCreator(AuthUtil.getUser().getAccount());
            baseModel.setFirstR("1");
@@ -72,6 +66,52 @@
    }
    /**
     * å½“在多线程流中调用时,获取不到请求头信息,
     * æ‰€ä»¥å¾—在多线程流外面获取到request
     * @param object ç»§æ‰¿äº†BaseModel的实体对象
     * @param <T>   è¿”回值的类型
     * @param btmName  ä¸šåŠ¡ç±»åž‹
     * @return
     * @throws VciBaseException
     */
    public static <T extends BaseModel> T addDefaultAttrAssimt(T object, String btmName, BladeUser user) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            baseModel.setOid(VciBaseUtil.getPk());
            baseModel.setCreateTime(new Date());
            baseModel.setNameOid(VciBaseUtil.getPk());
            baseModel.setLastModifyTime(new Date());
            baseModel.setTs(new Date());
            baseModel.setRevisionOid(VciBaseUtil.getPk());
            baseModel.setBtmname(btmName);
            String account = Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount();
            baseModel.setCreator(account);
            baseModel.setFirstR("1");
            baseModel.setFirstV("1");
            baseModel.setLastR("1");
            baseModel.setLastV("1");
            baseModel.setRevisionSeq(1);
            // TODO:目前只有编码规则中有用到,后期需要去掉这段代码的话,就把他加在编码规则新增中去
            if(Func.isBlank(baseModel.getOwner())){
                // è®¾ç½®æ‰€æœ‰è€…
                baseModel.setOwner(Func.isNotEmpty(user) ? user.getUserId().toString():AuthUtil.getUserId().toString());
            }
            baseModel.setVersionSeq(1);
            baseModel.setVersionRule("0");
            baseModel.setVersionValue("1");
            baseModel.setRevisionOid(VciBaseUtil.getPk());
            baseModel.setLastModifier(account);
            baseModel.setRevisionValue("1");
            baseModel.setRevisionRule("1");
            baseModel.setTenantId(Func.isNotEmpty(user) ? user.getTenantId():AuthUtil.getTenantId());
        }catch (VciBaseException e){
            e.printStackTrace();
        }
        return (T)baseModel;
    }
    /**
     * ä¿®æ”¹æ—¶å¡«å……默认值
     * @param object ç»§æ‰¿äº†BaseModel的实体对象
     * @param <T>   è¿”回值的类型
@@ -86,8 +126,29 @@
            // ç”¨æˆ·id
            // String userId = AuthUtil.getUserId().toString();
            // è¦æ±‚改成账号
            String account = AuthUtil.getUserAccount();
            baseModel.setLastModifier(account);
            baseModel.setLastModifier(AuthUtil.getUser().getAccount());
        }catch (VciBaseException e){
            e.printStackTrace();
        }
        return (T)baseModel;
    }
    /**
     * ä¿®æ”¹æ—¶å¡«å……默认值:多线程流中调用
     * @param object ç»§æ‰¿äº†BaseModel的实体对象
     * @param <T>   è¿”回值的类型
     * @return
     * @throws VciBaseException
     */
    public static <T extends BaseModel> T updateDefaultAttrAssimt(T object, BladeUser user) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            baseModel.setLastModifyTime(new Date());
            baseModel.setTs(new Date());
            // ç”¨æˆ·id
            // String userId = AuthUtil.getUserId().toString();
            // è¦æ±‚改成账号
            baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount());
        }catch (VciBaseException e){
            e.printStackTrace();
        }
@@ -172,6 +233,85 @@
            }
        }catch (VciBaseException e){
            e.printStackTrace();
            throw e;
        }
        return (T)baseModel;
    }
    /**
     * æ–°å¢žæ—¶å¡«å……默认值:多线程流中调用
     * @param object ç»§æ‰¿äº†BaseModel的实体对象
     * @param <T>   è¿”回值的类型
     * @return
     * @throws VciBaseException
     */
    public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> dataMap, T object, BladeUser user) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            baseModel.setOid(dataMap.getOrDefault("OID",""));
            baseModel.setId(dataMap.getOrDefault("ID",""));
            Map<String,Object> newDataMap=new HashMap<>();
            /*for (String key:dataMap.keySet()){
                Object value=dataMap.get(key);
                newDataMap.put(key.toLowerCase(Locale.ROOT),value);
            }*/
            /*    dataMap.forEach((key,value)->{
                newDataMap.put(key.toLowerCase(Locale.ROOT),value);
            });*/
            //baseModel.setData((Map)newDataMap);
            Object createTimeObj=dataMap.getOrDefault("CREATETIME","");
            if(createTimeObj!=null) {
                String createTime = createTimeObj.toString();
                baseModel.setCreateTime(chageStringToDate(createTime));
            }
            baseModel.setNameOid(dataMap.getOrDefault("NAMEOID",""));
            Object lastModifyTimeObj=dataMap.getOrDefault("LASTMODIFYTIME","");
            if(lastModifyTimeObj!=null) {
                String lastModifyTime = lastModifyTimeObj.toString();
                baseModel.setLastModifyTime(chageStringToDate(lastModifyTime));
            }
            Object tsObj=dataMap.getOrDefault("TS","");
            if(tsObj!=null) {
                String ts = tsObj.toString();
                baseModel.setTs(chageStringToDate(ts));
            }
            baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
            //用户id ; è¦æ±‚改成了账号
            // String userId = AuthUtil.getUserId().toString();
            baseModel.setBtmname(dataMap.getOrDefault("BTMNAME",""));
            baseModel.setCreator(dataMap.getOrDefault("CREATOR",""));
            baseModel.setFirstR(dataMap.getOrDefault("FIRSTR",""));
            baseModel.setFirstV(dataMap.getOrDefault("FIRSTV",""));
            baseModel.setLastR(dataMap.getOrDefault("LASTR",""));
            baseModel.setLastV(dataMap.getOrDefault("LASTV",""));
            Object revisionseq =dataMap.getOrDefault("REVISIONSEQ","");
            if(revisionseq!=null){
                baseModel.setRevisionSeq(chageStringToInt(revisionseq.toString()));
            }
            baseModel.setOwner(dataMap.getOrDefault("OWNER",""));
            Object versionseq =dataMap.getOrDefault("VERSIONSEQ","");
            if(versionseq!=null){
                baseModel.setVersionSeq(chageStringToInt(versionseq.toString()));
            }
            baseModel.setVersionRule(dataMap.getOrDefault("VERSIONRULE",""));
            baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE",""));
            baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
            baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount());
            baseModel.setLcStatus(dataMap.getOrDefault("LCSTATUS",""));
            baseModel.setName(dataMap.getOrDefault("NAME",""));
            baseModel.setTenantId(dataMap.getOrDefault("TENADTID",""));
            baseModel.setDescription(dataMap.getOrDefault("DESCRIOTION",""));
            baseModel.setCopyFromVersion(dataMap.getOrDefault("COPYFROMVERSION",""));
            Object secretgrade=dataMap.get("SECRETGRADE");
            if(secretgrade!=null){
                baseModel.setSecretGrade(chageStringToInt(secretgrade.toString()));
            }
        }catch (VciBaseException e){
            e.printStackTrace();
            throw e;
        }
        return (T)baseModel;
    }
@@ -196,4 +336,5 @@
        }
        return date;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -893,4 +893,15 @@
        }
    }
    /**
     * èŽ·å–ç»Ÿè®¡åˆ†æžæ•°æ®
     * @param btmNames ä¸šåŠ¡ç±»åž‹
     * @return
     */
    @GetMapping("/getStatisticAnalysis")
    @VciBusinessLog(operateName = "获取统计分析数据")
    public R getStatisticAnalysis(String btmNames) {
        return engineService.getStatisticAnalysis(btmNames);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -513,4 +513,10 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    String addSaveBZCodeNotauthUser(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception;
    /**
     * èŽ·å–ç»Ÿè®¡åˆ†æžæ•°æ®
     * @param btmNames ä¸šåŠ¡ç±»åž‹
     * @return æ•°æ®é›†
     */
    R getStatisticAnalysis(String btmNames);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -5,6 +5,7 @@
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.secure.BladeUser;
import java.util.Collection;
import java.util.List;
@@ -20,7 +21,7 @@
     * @param dataCBOList ä¸šåŠ¡æ•°æ®
     */
    List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
                                        CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception;
                                        CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList, BladeUser user) throws Exception;
    /**
        * å›žæ”¶ç å€¼
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -60,6 +60,7 @@
import com.vci.ubcs.system.feign.ISysClient;
import com.vci.ubcs.system.user.entity.User;
import com.vci.ubcs.system.user.feign.IUserClient;
import io.swagger.models.auth.In;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
import org.slf4j.Logger;
@@ -67,6 +68,7 @@
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.annotation.OperateLog;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
@@ -504,6 +506,7 @@
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
        CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
        CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
        final BladeUser user = AuthUtil.getUser();
        //1.判断规则中除了流水码段,是否有其他码段
        checkSecValueOnOrder(ruleVO, orderDTO);
        //2.判断必输项
@@ -534,13 +537,13 @@
        //cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));、
        if(authUser) {
            // è¦æ±‚显示账号,所以做了更改
            cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
            cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
            cbo.setCreator(String.valueOf(user.getAccount()));
            cbo.setLastModifier(String.valueOf(user.getAccount()));
        }else{
            cbo.setCreator(orderDTO.getCreator());
            cbo.setLastModifier(orderDTO.getLastModifier());
        }
        cbo.setTenantId(AuthUtil.getTenantId());
        cbo.setTenantId(user.getTenantId());
        if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){
            cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus"));
        }
@@ -553,7 +556,7 @@
        cbo.setDescription(orderDTO.getDescription());
        cboList.add(cbo);
        List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList);
        List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList,user);
        batchSaveSelectChar(templateVO, cboList);
        return codeList.size() > 0 ? codeList.get(0) : "";
@@ -1140,6 +1143,75 @@
    @Override
    public String addSaveBZCodeNotauthUser(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception {
        return    addSaveBZCode(codeBZApplyDTO,authUser);
    }
    /**
     * èŽ·å–ç»Ÿè®¡åˆ†æžæ•°æ®
     * @param btmNames ä¸šåŠ¡ç±»åž‹
     * @return æ•°æ®é›†
     */
    @Override
    public R getStatisticAnalysis(String btmNames) {
        //查询业务类型对应的数据库表
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmNames.split(",")));
        if (!listR.isSuccess() || listR.getData().size() == 0) {
            throw new ServiceException("传入业务类型未查询到相应表单,请检查!");
        }
        List tableData = new ArrayList();
        for (BtmTypeVO datum : listR.getData()) {
            String sql = "select count(*) countNum, to_char(CREATETIME, 'mm') countDate\n" +
                            "from "+ datum.getTableName() +"\n" +
                            "where CREATETIME >= to_date(EXTRACT(YEAR FROM SYSDATE) || '-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND LASTV = '1'\n" +
                            "group by to_char(CREATETIME, 'mm')\n" +
                            "order by to_char(CREATETIME, 'mm')";
            //查询出需要处理的数据
            List<Map> maps = commonsMapper.selectBySql(sql);
            if(maps.size() == 0){
                throw new ServiceException("传入类型["+ datum.getName() + ":" +
                    datum.getId() +"]未查到相关统计数据,请确认!!!!");
            }
            //当年每月月份之前之和
            List<Integer> monthCount = new ArrayList<>(12);
            //当年每月的月份数据
            List<Integer> month = new ArrayList<>();
            //获取当前月的数字
            Calendar instance = Calendar.getInstance();
            int nowmonth = instance.get(Calendar.MONTH) + 1;
            //从1到12月进行处理
            for (Integer i = 1; i <= 12; i++) {
                //当前月后所有数据设置为0
                if(i>nowmonth){
                    monthCount.add(0);
                    month.add(0);
                }
                //当前月份之前之和
                Integer count = 0;
                //当前月份数据
                Integer sameMonth = 0;
                //对数据库查的数据进行处理,对当前月份进行累加
                for (Map map : maps) {
                    Integer mounDate = Integer.parseInt(String.valueOf(map.get("COUNTDATE")));
                    if(mounDate <= i){
                        count += Integer.parseInt(String.valueOf(map.get("COUNTNUM")));
                    }
                    if (mounDate == i) {
                        sameMonth = Integer.parseInt(String.valueOf(map.get("COUNTNUM")));
                    }
                }
                monthCount.add(count);
                month.add(sameMonth);
            }
            //对数据进行整合
            HashMap<String,Object> menuData = new HashMap<>();
            menuData.put("menuName",datum.getName());
            menuData.put("codeType",null);
            ArrayList monthData = new ArrayList();
            monthData.add(monthCount);
            monthData.add(month);
            menuData.put("menuData",monthData);
            tableData.add(menuData);
        }
        return R.data(tableData);
    }
    /**
@@ -3116,6 +3188,15 @@
            updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo));
            // æ’入新的数据
            insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo));
            //处理码值表,对码值表进行处理替换创建数据的oid
            QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
            wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion());
            CodeAllCode codeAllCode = codeAllCodeService.getOne(wrapper);
            codeAllCode.setCreateCodeOid(cbo.getOid());
            codeAllCode.setLastModifyTime(new Date());
            codeAllCode.setTs(new Date());
            codeAllCode.setLastModifier(AuthUtil.getUser().getUserName());
            codeAllCodeService.updateById(codeAllCode);
            // è®°å½•数据更改日志
            saveLogUtil.operateLog("数据更改",false, StringUtil.format("{}\n修改为:\n{}",JSON.toJSONString(Collections.singletonList(oldCbo)),JSON.toJSONString(Collections.singletonList(cbo))));
        } catch (Exception vciError) {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -6,13 +6,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.protobuf.ServiceException;
import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.constant.MdmEngineConstant;
import com.vci.ubcs.code.dto.*;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
@@ -62,6 +60,7 @@
import org.apache.poi.ss.usermodel.Workbook;
import org.aspectj.apache.bcel.classfile.Code;
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.api.R;
import org.springblade.core.tool.utils.Func;
@@ -73,6 +72,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
@@ -90,7 +90,6 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
@@ -201,9 +200,9 @@
    private SaveLogUtil saveLogUtil;
    /**
     * å¯¼å‡ºçš„十万条
     * å®¢æˆ·çŽ°åœºexcel为老版本,导出的总数限制为65535
     */
    public static final int EXPORT_LIMIT = 100000;
    public static final int EXPORT_LIMIT = 65535;
    /**
     * æ‰¹é‡ç”³è¯·ï¼šé€‰å–选中分类下的所有模板关键属性,相似属性,必填属性,写入execl中
@@ -614,6 +613,7 @@
        ExcelUtil.writeDataToFile(excelName,eo);
        return excelName;
    }
    /**
     * èŽ·å–ç æ®µå®½åº¦
     * @param codeClassifyOid
@@ -1209,6 +1209,7 @@
                    //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
                    List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
                    CodeClassifyTemplateVO finalTemplateVO = templateVO;
                    final BladeUser user = AuthUtil.getUser();
                    ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
                        //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
                        List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
@@ -1225,7 +1226,7 @@
                        if (!CollectionUtils.isEmpty(thisCbos)) {
                            try {
                                // TODO å¤šçº¿ç¨‹æµé—®é¢˜
                                productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList);
                                productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList,user);
                                importCount.add(dataCBOList.size());
                            } catch (Throwable e) {
                                log.error("批量产生编码的时候出错了", e);
@@ -1276,6 +1277,7 @@
            throw e;
        }
    }
    /**
     * å¯¼å…¥æ‰¹é‡ç¼–辑数据
     *
@@ -1284,14 +1286,18 @@
     * @param file            excel文件的信息
     * @return æœ‰é”™è¯¯ä¿¡æ¯çš„excel
     */
    @Transactional
    @Override
    public CodeImProtRusultVO batchImportEdit(String codeClassifyOid, String classifyAttr,File file) throws  Throwable{
        VciBaseUtil.alertNotNull(codeClassifyOid,"分类的主键");
        ReadExcelOption reo = new ReadExcelOption();
        reo.setReadAllSheet(true);
        List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
        if (sheetDataSetList.size() > LIMIT + 1) {
            throw new VciBaseException("为了保证系统的稳定性,请一次不要导入超过1万条的数据");
        if (sheetDataSetList.get(0).getRowData().size() > LIMIT + 1) {
            throw new ServiceException("为了保证系统的稳定性,请一次不要导入超过1万条的数据");
        }
        if (sheetDataSetList.get(0).getRowData().size() == 0) {
            throw new ServiceException("未读取到excle相关数据,请确认!!!");
        }
        boolean isExport=false;
        Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
@@ -1327,7 +1333,7 @@
                titleRowData.remove(titleRowData.size()-1);
                templateVO= templateVOList.get(0);
            }catch (Throwable e){
                throw  new VciBaseException(e.getMessage());
                throw new ServiceException(e.getMessage());
            }
            CodeClassifyTemplateVO finalTemplateVO = templateVO;
@@ -1361,25 +1367,11 @@
                orderDTO.setOid(null);
                try {
                    mdmEngineService.upSaveCode(orderDTO);
                    List<Map> newCbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
                    //对码值表进行处理替换创建数据的oid
                    QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
                    wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion());
                    List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
                    codeAllCodes.get(0).setCreateCodeOid(newCbos.get(0).get("OID").toString());
                    codeAllCodes.get(0).setLastModifyTime(new Date());
                    codeAllCodes.get(0).setTs(new Date());
                    codeAllCodes.get(0).setLastModifier(AuthUtil.getUser().getUserName());
                    codeAllCodeService.updateBatchById(codeAllCodes);
                } catch (Throwable e) {
                    log.error("批量产生编码的时候出错了", e);
//                thisCbos.stream().forEach(cbo -> {
//                    String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
                    errorMap.put(sheetRowData.getRowIndex(), ";系统错误,存储数据的时候出错了:"+e.getMessage());
//                });
                }
            }
            if (errorMap.size() > 0) {
                isExport = true;
            }
@@ -1686,7 +1678,7 @@
                createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
            }else {
                uuid="";
                final BladeUser user = AuthUtil.getUser();
                //要把以上的错误的都抛出后,再继续处理时间和组合规则
                needSaveCboList = cboList.stream().filter(cbo -> {
                    String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -1706,7 +1698,7 @@
                        dataCBOIdList.add(baseModel.getOid());
                    });
                    try {
                        codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList);
                        codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList,user);
                        //如果是编码生成失败,则直接就失败了,其他的判断出来有错误的我们都统一返回到excel里面
                        engineService.batchSaveSelectChar(templateVO, dataCBOList);
                    } catch (Exception e) {
@@ -1839,10 +1831,10 @@
            tableName = VciBaseUtil.getTableName(btmTypeId);
        }
        String countSql = "select count(*) from " + tableName +" where 1=1" +
        String countSql = "select count(*) from (select * FROM " + tableName +" where 1=1" +
            " and lastr = '1'" +
            " and lastv='1'" +
            " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
            " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%' {}";
        //先查询总数
        int total = 0;
@@ -1856,8 +1848,7 @@
                thisPage.setSort(exportAttrDTO.getSort());
                thisPage.setOrder(exportAttrDTO.getOrder());
                thisPage.addDefaultDesc("createTime");
                total += commonsMapper.queryCountBySql(countSql);
                total += commonsMapper.queryCountBySql(StringUtil.format(countSql," limit " + exportAttrDTO.getLimit() +" offset "+ i +")subquery;"));
            }
        }else{
            total = commonsMapper.queryCountBySql(countSql);
@@ -2122,7 +2113,9 @@
                }).collect(Collectors.toList());
                List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
                Map<String, CodeRuleVO> finalRuleVOMap = ruleVOMap;
                ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
                // TODO: å¤šçº¿ç¨‹æµå¥—多线程流,有坑,我把这儿改成单线程了
                final BladeUser user = AuthUtil.getUser();
                ruleRowIndexMap.keySet().stream().forEach(ruleOid -> {
                    List <BaseModel>dataCBOList=new CopyOnWriteArrayList<>();
                    List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
                    List<ClientBusinessObject> thisCbos = needSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
@@ -2133,7 +2126,7 @@
                            dataCBOList.add(baseModel);
                        });
                        try {
                            productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList);
                            productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList, user);
                        } catch (Throwable e) {
                            //success=false;
                            log.error("批量产生编码的时候出错了", e);
@@ -2146,6 +2139,7 @@
                    engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
                });
            }else {
                final BladeUser user = AuthUtil.getUser();
                List<BaseModel> dataCBOList=new ArrayList<>();
                List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
                    String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -2159,7 +2153,7 @@
                        dataCBOList.add(baseModel);
                    });
                    try {
                        productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
                        productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
                    } catch (Exception e) {
                        log.error("批量产生编码的时候出错了", e);
                        needSaveCboList.stream().forEach(cbo -> {
@@ -2467,6 +2461,7 @@
            List<String>allNeedSaveCboList=new ArrayList<>();
            List<BaseModel> dataCBOList=new ArrayList<>();
            final BladeUser user = AuthUtil.getUser();
            needSaveCboList.stream().forEach(clientBusinessObject -> {
                BaseModel baseModel=new BaseModel();
                BeanUtil.convert(clientBusinessObject,baseModel);
@@ -2476,7 +2471,7 @@
            });
            try {
                List<String>applyGroupCodeIdList=new ArrayList<>();
                productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
                productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
                //如果是编码生成失败,则直接就失败了,其他的判断出来有错误的我们都统一返回到excel里面
                engineService.batchSaveSelectChar(templateVO, dataCBOList);
                // if(!isProcess){
@@ -2504,7 +2499,6 @@
                        resultDataObjectDetailDO.setErrorid("0");
                    }
                    resultDataObjectDetailDO.setId(sourceOid);
                    resultDataObjectDetailDO.setMsg(msg);
                    resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
                    //处理传送的数据中关键属性重复的,直接拿到已经申请到编码的数据编码直接将赋给关键属性重复的数据
@@ -3567,7 +3561,7 @@
                if (StringUtils.isBlank(field)) {
                    throw new VciBaseException("第" + (index + 1) + "列的标题在系统中不存在");
                }
                map.put(field,value);
                map.put(field.toUpperCase(),value);
            });
        try {
@@ -4273,6 +4267,7 @@
        Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
        // æŸ¥è¯¢ä¸éœ€è¦å‚与关键属性校验的除自己以外的所有分类oid
        final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
        final BladeUser user = AuthUtil.getUser();
        List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
            //每行都得查询.如果其中出现了错误,我们就直接抛出异常,其余的显示
            //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
@@ -4304,7 +4299,7 @@
                    List<BaseModel> newCboList = new ArrayList<>();
                    newDataList.stream().forEach(stringStringMap -> {
                        BaseModel baseModel=new BaseModel();
                        DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,true);
                        DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,true,user);
                        baseModel.setData(stringStringMap);
                        newCboList.add(baseModel);
                    });
@@ -4530,7 +4525,7 @@
        List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
        oldDataMap.stream().forEach(dataMap->{
            ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
            DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,true);
            DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
            for (String key:dataMap.keySet()){
                Object value= dataMap.getOrDefault(key,"");
                clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
@@ -4993,8 +4988,8 @@
        ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
        createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//组织数据
        if(CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){
            throw new VciBaseException("集团属性映射未配置");
        if(!CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){
            throw new ServiceException("集团属性映射未配置");
        }
        fieldList=execGroupCodePortDataDTO.getFieldList();
        List<Map<String,String>>dataList=new ArrayList<>();
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -36,8 +36,10 @@
import com.vci.ubcs.starter.web.util.VciDateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -45,6 +47,7 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -96,7 +99,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception {
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList,BladeUser user) throws Exception {
        dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
        List<String> codeList = new ArrayList<>();
        final CodeRuleVO finalRuleVO = ruleVO;
@@ -201,7 +204,7 @@
                    });
                }
                CodeAllCode allCodeDO = new CodeAllCode();
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE);
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE,user);
                allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
                allCodeDO.setCodeRuleOid(finalRuleVO.getOid());
                allCodeDO.setId(cbo.getId());
@@ -234,13 +237,13 @@
                        log.info("oldmaxSerial--->"+serialValueDO.getMaxSerial()+"---- newmaxSerial---->"+maxSerial);
                        if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<VciBaseUtil.getDouble(maxSerial)){
                            serialValueDO.setMaxSerial(String.valueOf(maxSerial));
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO);
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO,user);
                            editSerialValueList.add(serialValueDO);
                        }
                    }else{
                        //没有
                        CodeSerialValue serialValueDO = new CodeSerialValue();
                        DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE);
                        DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE,user);
                        serialValueDO.setCodeRuleOid(finalRuleVO.getOid());
                        serialValueDO.setSerialUnit(serialUnit);
                        serialValueDO.setCodeSecOid(secOid);
@@ -261,7 +264,6 @@
            }
            //处理allCode
            if(!CollectionUtils.isEmpty(allCodeDOList)){
                // TODO åŽ†å²æ•°æ®å¯¼å…¥çš„æ—¶å€™è¿™å„¿å¶å°”ä¼šè§¦å‘ç©ºæŒ‡é’ˆå¼‚å¸¸
                Map<String,List<CodeAllCode>> ruleGroup = allCodeDOList.stream().collect(Collectors.groupingBy(s -> s.getCodeRuleOid()));
                Map<String, CodeAllCode> codeDOMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getCodeRuleOid() + "${SEP}" + s.getId(), t -> t));
                List<CodeAllCode> addCodeDOs = new CopyOnWriteArrayList<>();
@@ -417,7 +419,7 @@
            saveSerialValue( finalRuleVO, lastMaxSerialValueMap, maxSerialValueMap);
            allCodeDOList.stream().forEach(
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode",user);allCode.setLctid("codeAllCodeLC");}
            );
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -281,9 +281,7 @@
            UserVO userVo = interParameterVO.getData().getUser();
            //免密登录申请token,request中添加用户信息
            //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest());
            AuthUtil.getUser();
            List<ClassfyVO> classVOList = classfysVO.getClassify();
            InterParameterVO finalInterParameterVO = interParameterVO;
            //这是账号信息
@@ -2322,7 +2320,7 @@
    /***
     * æ ¹æ®ç©¿å…¥çš„参数信息校验码段规则
     * æ ¹æ®ä¼ å…¥çš„参数信息校验码段规则
     */
    private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
        List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2372,7 +2370,7 @@
                    CodeOrderSecDTO.setSecValue(sectypeValue);
                    codeOrderSecDTOList.add(CodeOrderSecDTO);
                } else {
                    message="传入的码段规则缺少" + name + "码段";
                    message="传入的码段规则缺少" + name;
                    errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                }
            }