ludc
2023-04-26 7f0570d20aac189f1b170942bd7100b281a1c824
代码整合,新增codefixedcontroller
已修改80个文件
已删除3个文件
已重命名2个文件
已复制2个文件
已添加8个文件
4978 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/code/codeClassifyValue.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/code/codeFixedValue.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/classifyTreeOptionDialog.js 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/classisyValueTreeDialog.js 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/codebasic.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/fixedValueMgrDialog.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/mdmrule.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/parentClassifyParentOptionDialog.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/plCodeKeyattrrepeat.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/referBtmDialog.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/selectAttrOptionDialog.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/addbasiccode.vue 567 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 1865 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/TreeWrapperOptions.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeFixedValueDTO.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingDataDTO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/PreApplyCodeOrderDTO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/BaseModelDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/BaseModel.java 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeAllCode.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstemplateEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsattributeEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsbtmtypeEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSerialValue.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingDataVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/TreeQueryObject.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/TreeWrapperOptions.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyValueController.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeButtonUseEnum.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyProcessUseEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeCutTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeGetValueTypeEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeLevelTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeMapRuleTypeEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecLengthTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeUseButtonPositionTypeEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationAuthorityTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestMethodEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeFixedValueMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstempattrServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeFixedValueWrapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeFixedValueMapper.xml 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/ddl/DdlMsMapperProcessor.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/ddl/DdlMySqlMapperProcessor.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMsMapperProcessor.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMySqlMapperProcessor.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllOracleMapperProcessor.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/code/codeClassifyValue.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import request from '@/router/axios';
export const treeCodeClassifyValue = (params) => {
  return request({
    url: '/api/ubcs-code/codeClassifyValueController/treeCodeClassifyValue',
    method: 'get',
    params: {
      ...params,
    }
  })
}
Source/UBCS-WEB/src/api/code/codeFixedValue.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/router/axios';
export const gridCodeFixedValue = (current, size, params) => {
  return request({
    url: '/api/ubcs-code/codeFixedValueController/gridCodeFixedValue',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const addSaveCodeFixedValue = (codeFixedValueDTO) => {
  return request({
    url: '/api/ubcs-code/codeFixedValueController/addSave',
    method: 'post',
    data: codeFixedValueDTO,
  })
}
export const editCodeFixedValue = (codeFixedValueDTO) => {
  return request({
    url: '/api/ubcs-code/codeFixedValueController/editSave',
    method: 'put',
    data: codeFixedValueDTO,
  })
}
export const deleteCodeFixedValue = (codeFixedValueDTO) => {
  return request({
    url: '/api/ubcs-code/codeFixedValueController/deleteData',
    method: 'delete',
    data: codeFixedValueDTO,
  })
}
export const saveOrder = (data) => {
  return request({
    url: '/api/ubcs-code/codeFixedValueController/saveOrder',
    method: 'post',
    data: data,
  })
}
Source/UBCS-WEB/src/const/code/classifyTreeOptionDialog.js
Source/UBCS-WEB/src/const/code/classisyValueTreeDialog.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
import { treeCodeClassifyValue } from "@/api/code/codeClassifyValue";
export default {
    nodeKey: 'oid',
    border: true,
    lazy: true,
    treeLoad: function (node, resolve) {
      // const parentId = (node.level === 0) ? 0 : node.data.id;
      let condtionData = {
        "queryAllLevel": true,
        "loadType": "all",
        "multipleSelect": false,
        "isMuti": false,
        "isQueryAllColumn": true,
        'conditionMap[codeclassifysecoid]':this.currentSelectTreeData.oid}
      treeCodeClassifyValue().then( res=> {
        console.log(res);
        resolve(res.data.map(classifyitem => {
          let item = {
            "hasChildren": false,
            "oid": classifyitem.oid,
            "key": classifyitem.oid,
            "parentId": 0,
            "title": classifyitem.text,
            "value": classifyitem.oid,
          }
          return {
            ...item,
            leaf: !item.hasChildren
          }
        }))
      });
    },
    addBtn: false,
    menu: false,
    size: 'small',
    props: {
      labelText: '标题',
      label: 'title',
      value: 'value',
      children: 'children'
    }
}
Source/UBCS-WEB/src/const/code/codebasic.js
@@ -13,6 +13,7 @@
    viewBtn: false,
    selection: true,
    dialogClickModal: false,
    highlightCurrentRow: true, //行选中时高亮
    column: [
      {
        label: "码段编号",
Source/UBCS-WEB/src/const/code/fixedValueMgrDialog.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
export default {
    with: '70%',
    height: '55vh',
    calcHeight: 30,
    tip: false,
    editBtn: false,
    addBtn: false,
    delBtn: false,
    searchShow: false,
    searchMenuSpan: 5,
    border: true,
    disablePage: false,
    index: true,
    viewBtn: false,
    selection: false,
    menu: true,
    refreshBtn: false,
    columnBtn: false,
    dialogClickModal: false,
    highlightCurrentRow: true,
    column: [
      {
        label: "码值",
        prop: "id",
        search: false,
        searchLabelWidth: 100,
        searchSpan: 7,
      },
      {
        label: "描述",
        prop: "description",
        search: false,
        searchLabelWidth: 100,
        searchSpan: 7,
      },
    ]
}
Source/UBCS-WEB/src/const/code/mdmrule.js
@@ -10,6 +10,7 @@
  viewBtn: true,
  selection: true,
  dialogClickModal: false,
  highlightCurrentRow: true,
  column: [
    {
      label: "编号",
Source/UBCS-WEB/src/const/code/parentClassifyParentOptionDialog.js
copy from Source/UBCS-WEB/src/const/code/selectattroption.js copy to Source/UBCS-WEB/src/const/code/parentClassifyParentOptionDialog.js
Îļþ´Ó Source/UBCS-WEB/src/const/code/selectattroption.js ¸´ÖÆ
@@ -1,43 +1,39 @@
export default {
    with: '60%',
    height: '40vh',
    calcHeight: 30,
    tip: false,
    editBtn: false,
    addBtn: false,
    searchShow: true,
    searchMenuSpan: 5,
    disablePage: false,
    border: true,
    disablePage: false,
    index: true,
    viewBtn: false,
    selection: true,
    menu: false,
    dialogClickModal: false,
    highlightCurrentRow: true,
    column: [
      {
        label: "属性英文名称",
        label: "英文名称",
        prop: "id",
        search: true,
        searchLabelWidth: 100,
        searchSpan: 7,
      },
      {
        label: "属性中文名称",
        label: "中文名称",
        prop: "name",
        search: true,
        searchLabelWidth: 100,
        searchSpan: 7,
      },
      {
        label: "属性长度",
        label: "描述",
        prop: "description",
        search: false,
      },
      {
        label: "属性类型",
        prop: "attributeDataTypeText",
        search: false,
      }
    ]
}
Source/UBCS-WEB/src/const/code/plCodeKeyattrrepeat.js
@@ -9,6 +9,7 @@
  viewBtn: true,
  selection: true,
  dialogClickModal: false,
  highlightCurrentRow: true,
  column: [
    {
      label: "",
Source/UBCS-WEB/src/const/code/referBtmDialog.js
copy from Source/UBCS-WEB/src/const/code/selectattroption.js copy to Source/UBCS-WEB/src/const/code/referBtmDialog.js
Îļþ´Ó Source/UBCS-WEB/src/const/code/selectattroption.js ¸´ÖÆ
@@ -1,43 +1,39 @@
export default {
    with: '60%',
    height: '40vh',
    calcHeight: 30,
    tip: false,
    editBtn: false,
    addBtn: false,
    searchShow: true,
    searchMenuSpan: 5,
    disablePage: false,
    border: true,
    disablePage: false,
    index: true,
    viewBtn: false,
    selection: true,
    menu: false,
    dialogClickModal: false,
    highlightCurrentRow: true,
    column: [
      {
        label: "属性英文名称",
        label: "业务类型编号",
        prop: "id",
        search: true,
        searchLabelWidth: 100,
        searchSpan: 7,
      },
      {
        label: "属性中文名称",
        label: "业务类型名称",
        prop: "name",
        search: true,
        searchLabelWidth: 100,
        searchSpan: 7,
      },
      {
        label: "属性长度",
        label: "描述",
        prop: "description",
        search: false,
      },
      {
        label: "属性类型",
        prop: "attributeDataTypeText",
        search: false,
      }
    ]
}
Source/UBCS-WEB/src/const/code/selectAttrOptionDialog.js
ÎļþÃû´Ó Source/UBCS-WEB/src/const/code/selectattroption.js ÐÞ¸Ä
@@ -13,7 +13,7 @@
    selection: true,
    menu: false,
    dialogClickModal: false,
    highlightCurrentRow: true,
    column: [
      {
        label: "属性英文名称",
@@ -31,7 +31,7 @@
      },
      {
        label: "属性长度",
        prop: "description",
        prop: "attrLength",
        search: false,
      },
      {
Source/UBCS-WEB/src/views/code/addbasiccode.vue
@@ -1,248 +1,268 @@
<template>
  <div class="total">
    <span class="left">
      <el-form :model="form">
          <el-form-item label="码段编号:" :label-width="leftFormLabelWidth">
            <el-input v-model="form.id" ></el-input>
          </el-form-item>
          <el-form-item label="码段名称:" :label-width="leftFormLabelWidth">
            <el-input v-model="form.name"></el-input>
          </el-form-item>
          <el-form-item label="码段类型" :label-width="leftFormLabelWidth" prop="codefixedsec">
            <el-select v-model="form.sectype" placeholder="请选择" @change="changeSectypeFormItems">
              <el-option
                v-for="item in sectypeList"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="描述:" :label-width="leftFormLabelWidth">
            <el-input type="textarea" v-model="form.description"></el-input>
          </el-form-item>
          <el-form-item label="是否流水依赖:" :label-width="leftFormLabelWidth"  prop="serialDependFlag">
            <el-switch v-model="form.serialDependFlag"></el-switch>
            <el-input-number v-show="form.serialDependFlag" v-model="form.serialDependOrder" controls-position="right"></el-input-number>
          </el-form-item>
          <el-form-item label="是否为空:" :label-width="leftFormLabelWidth">
            <el-switch v-model="form.nullableFlag"></el-switch>
          </el-form-item>
      </el-form>
    </span>
    <el-divider direction="vertical"></el-divider>
    <span class="right">
      <!-- å›ºå®šç æ®µ -->
      <el-form v-show="form.sectype==='codefixedsec' ? true:false">
        <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth">
            <el-select v-model="form.codeSecLengthType" placeholder="请选择">
              <el-option
              v-for="item in codeSecLengthType"
              :key="item.dictValue"
              :label="item.dictValue"
              :value="item.dictKey">
            </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth">
            <el-input v-model="form.codeSecLength"></el-input>
          </el-form-item>
      </el-form>
      <!-- å±žæ€§ç æ®µ -->
      <el-form v-show="form.sectype==='codeattrsec' ? true:false">
        <el-form-item label="属性:" :label-width="rightFormLabelWidth">
          <el-input
            placeholder="请选择"
            suffix-icon="el-icon-search"
            readonly="true"
            v-model="form.referAttributeName"
            @focus="openAttrSelectOrGetValue('attr')">
            <span slot="suffix">
              <i class="el-icon-circle-close" @click="clearAttrDataByIcon('attr')" style="margin-right: 5px;cursor: pointer;"></i>
            </span>
          </el-input>
  <div class="total" style="overflow-y: auto; height: 70vh">
    <el-form :model="form" :rules="formRules" ref="form" >
      <span class="left">
        <el-form-item label="码段编号:" :label-width="leftFormLabelWidth" required prop="id">
          <el-input v-model="form.id" ></el-input>
        </el-form-item>
        <el-form-item label="属性所在分类:" :label-width="rightFormLabelWidth">
          <el-input
          v-model="form.referCodeClassifyOidName"
          disabled>
        </el-input>
        </el-form-item>
        <el-form-item label="取值规则:" :label-width="rightFormLabelWidth">
          <el-input
            placeholder="请选择"
            suffix-icon="el-icon-search"
            readonly="true"
            v-model="form.getValueClass"
            @focus="openAttrSelectOrGetValue('value')">
            <span slot="suffix">
              <i class="el-icon-circle-close" @click="clearAttrDataByIcon('value')" style="margin-right: 5px;cursor: pointer;"></i>
            </span>
          </el-input>
        </el-form-item>
      </el-form>
      <!-- æµæ°´ç æ®µ -->
      <el-form v-show="form.sectype==='codeserialsec' ? true:false">
        <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeSecLength"></el-input>
        <el-form-item label="码段名称:" :label-width="leftFormLabelWidth" required prop="name">
          <el-input v-model="form.name"></el-input>
        </el-form-item>
        <el-form-item label="流水号的起始值:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.serialStart"></el-input>
        </el-form-item>
        <el-form-item label="流水的步长:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.serialStep"></el-input>
        </el-form-item>
        <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeFillType" placeholder="请选择">
            <el-option label="左补位" value="codeattrsec"
                v-for="item in codeFillType"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeFillSeparatorSelect" filterable placeholder="请选择">
        <el-form-item label="码段类型" :label-width="leftFormLabelWidth" required prop="sectype">
          <el-select v-model="form.sectype" placeholder="请选择" @change="changeSectypeFormItems">
            <el-option
                v-for="item in codeFillSeparator"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="填充长度:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeFillLength"></el-input>
        </el-form-item>
        <el-form-item label="流水上限:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeFillLimit"></el-input>
        </el-form-item>
        <el-form-item label="流水是否补码:" :label-width="rightFormLabelWidth">
          <el-switch v-model="form.codeFillFlag"></el-switch>
        </el-form-item>
        <el-form-item label="自定义的流水算法:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.customCodeSerialClass"></el-input>
        </el-form-item>
      </el-form>
      <!-- å±‚级码段 -->
      <el-form v-show="form.sectype==='codelevelsec' ? true:false">
        <el-form-item label="层级类型:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeLevelType" placeholder="请选择">
            <el-option
                v-for="item in codeLevelType"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
              </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="层级的值:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeLevelValue"></el-input>
        </el-form-item>
        <el-form-item label="字符截取类型:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.valueCutType" placeholder="请选择">
            <el-option
              v-for="item in codeCutType"
              v-for="item in sectypeList"
              :key="item.dictValue"
              :label="item.dictValue"
              :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="取值类型:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeGetValueType" placeholder="请选择">
            <el-option
              v-for="item in codeGetValueType"
              :key="item.dictValue"
              :label="item.dictValue"
              :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <!-- å¼•用码段 -->
      <el-form v-show="form.sectype==='coderefersec' ? true:false">
        <el-form-item label="参照引用的业务类型:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.referBtmId"></el-input>
        <el-form-item label="描述:" :label-width="leftFormLabelWidth">
          <el-input type="textarea" v-model="form.description"></el-input>
        </el-form-item>
        <el-form-item label="参照配置:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.referConfig"></el-input>
        </el-form-item>
      </el-form>
      <!-- æ—¥æœŸç æ®µ -->
      <el-form v-show="form.sectype==='codedatesec' ? true:false">
        <el-form-item label="日期格式:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeDateFormatStr"></el-input>
        <el-form-item label="是否流水依赖:" :label-width="leftFormLabelWidth">
          <el-switch v-model="form.serialDependFlag"></el-switch>
          <el-input-number v-show="form.serialDependFlag" v-model="form.serialDependOrder" controls-position="right"></el-input-number>
        </el-form-item>
      </el-form>
      <!-- åˆ†ç±»ç æ®µ -->
      <el-form v-show="form.sectype==='codeclassifysec' ? true:false">
        <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeSecLengthType" placeholder="请选择">
            <el-option
        <el-form-item label="是否为空:" :label-width="leftFormLabelWidth">
          <el-switch v-model="form.nullableFlag"></el-switch>
        </el-form-item>
      </span>
      <el-divider direction="vertical"></el-divider>
      <span class="right">
        <!-- å›ºå®šç æ®µ -->
        <div v-show="form.sectype==='codefixedsec' ? true:false">
          <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required prop="codeSecLengthType">
              <el-select v-model="form.codeSecLengthType" placeholder="请选择">
                <el-option
                v-for="item in codeSecLengthType"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeSecLength"></el-input>
        </el-form-item>
        <el-form-item label="是否自动分配分类值:" :label-width="rightFormLabelWidth">
          <el-switch v-model="form.matchClassifyValueFlag"></el-switch>
        </el-form-item>
        <el-form-item label="父分类码段:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.parentClassifySecOid"></el-input>
        </el-form-item>
      </el-form>
              </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
              <el-input v-model="form.codeSecLength"></el-input>
            </el-form-item>
        </div>
      <!-- å¯å˜ç æ®µ -->
      <el-form v-show="form.sectype==='codevariablesec' ? true:false">
        <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth">
          <el-input v-model="form.codeSecLength"></el-input>
        </el-form-item>
        <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeFillType" placeholder="请选择">
            <el-option
                v-for="item in codeFillType"
        <!-- å±žæ€§ç æ®µ -->
        <div v-show="form.sectype==='codeattrsec' ? true:false">
          <el-form-item label="属性:" :label-width="rightFormLabelWidth" required prop="referAttributeName">
            <el-input
              placeholder="请选择"
              prefix-icon="el-icon-search"
              readonly="true"
              v-model="form.referAttributeName"
              @focus="openAttrSelectOrGetValue('attr')">
              <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('attr')" style="cursor: pointer;"></i>
            </el-input>
          </el-form-item>
          <el-form-item label="属性所在分类:" :label-width="rightFormLabelWidth">
            <el-input
              v-model="form.referCodeClassifyOidName"
              disabled>
          </el-input>
          </el-form-item>
          <el-form-item label="取值规则:" :label-width="rightFormLabelWidth">
            <el-input
              placeholder="请选择"
              prefix-icon="el-icon-search"
              readonly="true"
              v-model="form.getValueClass"
              @focus="openAttrSelectOrGetValue('value')">
              <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('value')" style="margin-right: 5px;cursor: pointer;"></i>
            </el-input>
          </el-form-item>
        </div>
        <!-- æµæ°´ç æ®µ -->
        <div v-show="form.sectype==='codeserialsec' ? true:false">
          <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
            <el-input v-model="form.codeSecLength"></el-input>
          </el-form-item>
          <el-form-item label="流水号的起始值:" :label-width="rightFormLabelWidth" prop="serialStart">
            <el-input v-model="form.serialStart"></el-input>
          </el-form-item>
          <el-form-item label="流水的步长:" :label-width="rightFormLabelWidth" prop="serialStep">
            <el-input v-model="form.serialStep"></el-input>
          </el-form-item>
          <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required prop="codeFillType">
            <el-select v-model="form.codeFillType" placeholder="请选择">
              <el-option label="左补位" value="codeattrsec"
                  v-for="item in codeFillType"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth" prop="codeFillSeparatorSelect">
            <el-select v-model="form.codeFillSeparatorSelect" filterable placeholder="请选择">
              <el-option
                  v-for="item in codeFillSeparator"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="填充长度:" :label-width="rightFormLabelWidth" required prop="codeFillLength">
            <el-input v-model="form.codeFillLength"></el-input>
          </el-form-item>
          <el-form-item label="流水上限:" :label-width="rightFormLabelWidth" required prop="codeFillLimit">
            <el-input v-model="form.codeFillLimit"></el-input>
          </el-form-item>
          <el-form-item label="流水是否补码:" :label-width="rightFormLabelWidth" required>
            <el-switch v-model="form.codeFillFlag"></el-switch>
          </el-form-item>
          <el-form-item label="自定义的流水算法:" :label-width="rightFormLabelWidth">
            <el-input v-model="form.customCodeSerialClass"></el-input>
          </el-form-item>
        </div>
        <!-- å±‚级码段 -->
        <div v-show="form.sectype==='codelevelsec' ? true:false">
          <el-form-item label="层级类型:" :label-width="rightFormLabelWidth" required prop="codeLevelType">
            <el-select v-model="form.codeLevelType" placeholder="请选择">
              <el-option
                  v-for="item in codeLevelType"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
                </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="层级的值:" :label-width="rightFormLabelWidth" prop="codeLevelValue">
            <el-input v-model="form.codeLevelValue"></el-input>
          </el-form-item>
          <el-form-item label="字符截取类型:" :label-width="rightFormLabelWidth" required prop="valueCutType">
            <el-select v-model="form.valueCutType" placeholder="请选择">
              <el-option
                v-for="item in codeCutType"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
          <el-select v-model="form.codeFillSeparatorSelect" placeholder="请选择">
            <el-option
                v-for="item in codeFillSeparator"
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="取值类型:" :label-width="rightFormLabelWidth">
            <el-select v-model="form.codeGetValueType" placeholder="请选择">
              <el-option
                v-for="item in codeGetValueType"
                :key="item.dictValue"
                :label="item.dictValue"
                :value="item.dictKey">
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
              </el-option>
            </el-select>
          </el-form-item>
        </div>
    </span>
        <!-- å¼•用码段 -->
        <div v-show="form.sectype==='coderefersec' ? true:false">
          <el-form-item label="参照引用的业务类型:" label-width="152px" required prop="referBtmId">
            <el-input
              placeholder="请选择"
              prefix-icon="el-icon-search"
              readonly="true"
              v-model="form.referBtmId"
              @focus="openAttrSelectOrGetValue('referBtmId')">
              <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referBtmId')" style="margin-right: 5px;cursor: pointer;"></i>
            </el-input>
          </el-form-item>
          <el-form-item label="参照配置:" label-width="152px" required prop="referConfig">
            <el-input
              placeholder="请选择"
              prefix-icon="el-icon-search"
              readonly="true"
              v-model="form.referConfig"
              @focus="openAttrSelectOrGetValue('referConfig')">
              <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referConfig')" style="margin-right: 5px;cursor: pointer;"></i>
            </el-input>
          </el-form-item>
        </div>
        <!-- æ—¥æœŸç æ®µ -->
        <div v-show="form.sectype==='codedatesec' ? true:false">
          <el-form-item label="日期格式:" :label-width="rightFormLabelWidth" required prop="codeDateFormatStr">
            <el-input v-model="form.codeDateFormatStr"></el-input>
          </el-form-item>
        </div>
        <!-- åˆ†ç±»ç æ®µ -->
        <div v-show="form.sectype==='codeclassifysec' ? true:false">
          <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required prop="codeSecLengthType">
            <el-select v-model="form.codeSecLengthType" placeholder="请选择">
              <el-option
                  v-for="item in codeSecLengthType"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
            <el-input v-model="form.codeSecLength "></el-input>
          </el-form-item>
          <el-form-item label="是否自动分配分类值:" :label-width="rightFormLabelWidth">
            <el-switch v-model="form.matchClassifyValueFlag"></el-switch>
          </el-form-item>
          <el-form-item label="父分类码段:" :label-width="rightFormLabelWidth">
            <el-input
              placeholder="请选择"
              prefix-icon="el-icon-search"
              readonly="true"
              v-model="form.parentClassifySecOid"
              @focus="openAttrSelectOrGetValue('parentClassifySecOid')">
              <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('parentClassifySecOid')" style="margin-right: 5px;cursor: pointer;"></i>
            </el-input>
          </el-form-item>
        </div>
        <!-- å¯å˜ç æ®µ -->
        <div v-show="form.sectype==='codevariablesec' ? true:false">
          <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
            <el-input v-model="form.codeSecLength"></el-input>
          </el-form-item>
          <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required prop="codeFillType">
            <el-select v-model="form.codeFillType" placeholder="请选择">
              <el-option
                  v-for="item in codeFillType"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
            <el-select v-model="form.codeFillSeparatorSelect" placeholder="请选择">
              <el-option
                  v-for="item in codeFillSeparator"
                  :key="item.dictValue"
                  :label="item.dictValue"
                  :value="item.dictKey">
              </el-option>
            </el-select>
          </el-form-item>
        </div>
      </span>
    </el-form>
  </div>
</template>
@@ -266,6 +286,69 @@
        componentCodeFlag: false, //是否参与编码
        pkCodeRule: '', //所属编码规则
      },
      formRules: {
        id: [
          { required: true, message: '请输入码段编号', trigger: 'blur' },
        ],
        name: [
          { required: true, message: '请输入码段名称', trigger: 'blur' },
        ],
        sectype: [
          { required: true, message: '请输入码段名称', trigger: 'blur' },
        ],
        codeSecLengthType: [
          { required: true, message: '请选择码段长度类型', trigger: 'change' },
        ],
        codeSecLength: [
          { required: true, message: '请输入码段的长度', trigger: 'blur' },
          { type: 'number', message: '码段的长度必须为数字值'}
        ],
        referAttributeName: [
          { required: true, message: '请选择属性', trigger: 'blur' },
        ],
        serialStart: [
          { type: 'number', message: '码段的长度必须为数字值'}
        ],
        serialStep: [
          { type: 'number', message: '码段的长度必须为数字值'}
        ],
        codeFillType: [
          { required: true, message: '请选择编码补位方式', trigger: 'blur' },
        ],
        // è®¾ç½®è¡¥ä½æ—¶çš„字符,需要自定义方法来做判断
        codeFillSeparatorSelect: [
          { required: true, message: '请输入补位时的字符', trigger: 'blur' },
        ],
        codeFillLength: [
          { required: true, message: '请输入填充长度', trigger: 'blur' },
          { type: 'number', message: '填充长度必须为数字值'}
        ],
        codeFillLimit: [
          { required: true, message: '请输入流水上限', trigger: 'blur' },
          { type: 'number', message: '流水上限必须为数字值'}
        ],
        codeLevelType: [
          { required: true, message: '请选择层级类型', trigger: 'change' },
        ],
        codeLevelValue: [
          { type: 'number', message: '层级的值必须为数字值'}
        ],
        valueCutType: [
          { required: true, message: '请选择字符截取类型', trigger: 'change' },
        ],
        referBtmId: [
          { required: true, message: '请选参照应用的业务类型', trigger: 'change' },
        ],
        referConfig: [
          { required: true, message: '请选择参照配置', trigger: 'change' },
        ],
        codeDateFormatStr: [
          { required: true, message: '请输入日期格式', trigger: 'blur' },
        ],
      },
      //枚举和可输可选查询
      sectypeList:[],    //码段类型
      codeSecLengthType:[],  //码段长度类型
      codeFillType:[],   //编码补位方式
@@ -286,9 +369,25 @@
  },
  methods: {
    //编辑和查看数据回显
    showFormData(row){
      //this.form.sectype = row.sectype;
      console.log(row);
      //this.changeSectypeFormItems();
      //this.form = Object.assign({},this.form,row);
      this.$emit("showFormData")
    },
    // ä¸ºçˆ¶åˆ†ç±»ç æ®µå–值,内容回显
    selectedParentClassify(data){
      //console.log(data);
      this.form.parentClassifySecOid = data.parentClassifySecOid;
      this.form.parentClassifySecText = data.parentClassifySecText;
    },
    //公式内容回调到子组件进行回显
    saveFormulaContent(data){
      console.log(data);
      //console.log(data);
      this.form.getValueClass = data;
    },
@@ -303,15 +402,20 @@
      })
    },
    // æ‰“开为属性选取值或者取值规则窗口
    // æ‰“开为属性选取值或者取值规则等窗口
    openAttrSelectOrGetValue(condition){
      if(condition === 'attr'){
        //console.log('attr');
        //调用父组件的方法
        this.$emit('openAttrSelectOrGetValue')
      }else if(condition === 'value'){
        //console.log('value');
        this.$emit('openformulaEdit')
      }else if(condition === 'parentClassifySecOid'){
        this.$emit('openSelectParentClassify')
      }else if(condition === 'referBtmId'){
        this.$emit('openSelectReferBtm')
      }else if(condition === 'referConfig'){
        this.$emit('openSelectreferConfig')
      }
    },
@@ -324,6 +428,12 @@
        this.form.referCodeClassifyOidName = '';
      }else if(condition === 'value'){
        this.form.getValueClass = '';
      }else if(condition === 'parentClassifySecOid'){
        this.form.parentClassifySecOid = '';
      }else if(condition === 'referBtmId'){
        this.form.referBtmId = '';
      }else if(condition === 'referConfig'){
        this.form.referBtmId = '';
      }
    },
@@ -381,7 +491,7 @@
    loadCodeGetValueType(){
      getDictionary({code: "codeGetValueType"}).then(res=>{
        this.codeGetValueType = res.data.data;
        console.log(this.codeGetValueType);
        //console.log(this.codeGetValueType);
      })
    },
@@ -473,9 +583,8 @@
<style>
  .total{
    height: 420px;
    height: 500px;
    width: 100%;
  }
  .total .el-input__inner,.total .el-textarea__inner {
@@ -483,26 +592,24 @@
  }
  .el-divider--vertical {
      width: 2px;
      height: 31.5em;
      margin: 0 5px;
    width: 2px;
    height: 72vh;
    margin: 0 5px;
    position: fixed;
  }
 .left {
    float: left;
    width: 49%;
    /* border-right: 2px rgb(0, 0, 0); */
 }
 .right {
    float: right;
    width: 49%;
    /* border-left: 2px rgb(0, 0, 0); */
    margin-right: 2.5vw;
    /* width: 40%; */
 }
 .right > .el-form > .el-form-item{
    margin-bottom: 8px;
 }
 .el-input-number > .el-input > .el-input__inner{
    width: 180px;
 }
</style>
Source/UBCS-WEB/src/views/code/code.vue
@@ -5,52 +5,52 @@
    <basic-container>
      <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">编码规则</p>
      <avue-crud :option="optionRule"
                :table-loading="loading"
                :data="data"
                :page.sync="page"
                :permission="permissionList"
                v-model="form"
                ref="crud"
                :before-open="beforeOpen"
                @cell-click="loadBasic"
                @row-update="rowUpdate"
                @row-save="rowSave"
                @search-change="searchChange"
                @search-reset="searchReset"
                @selection-change="selectionChange"
                @current-change="currentChange"
                @size-change="sizeChange"
                @refresh-change="refreshChange"
                @on-load="onLoad">
        :table-loading="loading"
        :data="data"
        :page.sync="page"
        :permission="permissionList"
        v-model="ruleForm"
        ref="crud"
        :before-open="beforeOpen"
        @row-click="codeRuleRowClick"
        @row-update="rowUpdate"
        @row-save="rowSave"
        @search-change="searchChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @refresh-change="refreshChange"
        @on-load="onLoad">
        <!-- è¡¨æ ¼å†…操作按钮 -->
        <template slot="menu" slot-scope="scope">
          <el-button type="text"
                    size="small"
                    icon="el-icon-edit"
                    v-show="scope.row.lcStatus=='Editing' ? true:false"
                    plain
                    @click="openEdit(scope.row)">编 è¾‘
              size="small"
              icon="el-icon-edit"
              v-show="scope.row.lcStatus=='Editing' ? true:false"
              plain
              @click="openEdit(scope.row)">编 è¾‘
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="el-icon-position"
                    v-show="scope.row.lcStatus=='Editing' ? true:false"
                    plain
                    @click="enableOrDeactivatse(scope.row.oid,'release')">发 å¸ƒ
            size="small"
            icon="el-icon-position"
            v-show="scope.row.lcStatus=='Editing' ? true:false"
            plain
            @click="enableOrDeactivatse(scope.row.oid,'release')">发 å¸ƒ
          </el-button>
          <el-button type="text"
                    size="small"
                    v-show="scope.row.lcStatus=='Released' ? true:false"
                    icon="el-icon-video-pause"
                    plain
                    @click="enableOrDeactivatse(scope.row.oid,'disable')">停 ç”¨
            size="small"
            v-show="scope.row.lcStatus=='Released' ? true:false"
            icon="el-icon-video-pause"
            plain
            @click="enableOrDeactivatse(scope.row.oid,'disable')">停 ç”¨
          </el-button>
          <el-button type="text"
                    size="small"
                    v-show="scope.row.lcStatus=='Disabled' ? true:false"
                    icon="el-icon-video-play"
                    plain
                    @click="enableOrDeactivatse(scope.row.oid,'enable')">启 ç”¨
            size="small"
            v-show="scope.row.lcStatus=='Disabled' ? true:false"
            icon="el-icon-video-play"
            plain
            @click="enableOrDeactivatse(scope.row.oid,'enable')">启 ç”¨
          </el-button>
        </template>
        <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
@@ -86,7 +86,7 @@
      </avue-crud>
    </basic-container>
    <!-- å¯¹è¯æ¡† -->
    <!-- ç¼–码规则相关对话框 -->
    <el-dialog title="编码规则使用范围"
        append-to-body
        :visible.sync="codeRangeSettingBox"
@@ -98,96 +98,460 @@
        @refresh-change="refreshUseRangeChange">
      </avue-crud>
    </el-dialog>
    <!-- å…‹éš†å¯¹è¯æ¡† -->
    <!--  ç¼–码规则相关克隆对话框 -->
    <el-dialog title="克隆编码规则"
        append-to-body
        :visible.sync="cloneSettingBox"
        width="800px">
      append-to-body
      :visible.sync="cloneSettingBox"
      width="800px">
      <clone-code></clone-code>
    </el-dialog>
    <!-- åŸºç¡€ç æ®µå±•示区域 -->
    <basic-container>
        <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">码段管理</p>
        <avue-crud :option="optionBasic"
      <p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">码段管理</p>
      <avue-crud :option="optionBasic"
        ref="crudBasic"
        :table-loading="loadingBasic"
        :data="basicData"
        :permission="permissionList"
        @selection-change="selectionBasicChange"
        @refresh-change="refreshChangeBasicSec">
        <!-- åŸºç¡€ç æ®µè¡¨æ ¼å†…操作按钮 -->
        <template slot="menu" slot-scope="scope">
      <!-- åŸºç¡€ç æ®µè¡¨æ ¼å†…操作按钮 -->
      <template slot="menu" slot-scope="scope">
        <el-button
          type="text"
          size="small"
          icon="el-icon-view"
          v-show="currentRuleLcStatus != 'Editing'"
          plain
          @click="openBasicDialog('view',scope.row)">查看
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-edit"
          v-show="currentRuleLcStatus === 'Editing'"
          plain
          @click="openBasicDialog('edit',scope.row)">编辑
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-setting"
          v-show="scope.row.secType === 'codeclassifysec' || scope.row.secType == 'codefixedsec'"
          plain
          @click="openBasicSecCodeValueMgr(scope.row)">码值管理
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-arrow-up"
          v-show="scope.row.orderNum > 1"
          plain
          @click="upOrderNum(scope.row)">上移
        </el-button>
        <el-button
          type="text"
          size="small"
          icon="el-icon-arrow-down"
          plain
          @click="downOrderNum(scope.row)">下移
        </el-button>
      </template>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.lcStatus != 'Editing' ? true:false"
                    plain
                    @click="openEdit(scope.row)">查 çœ‹
          </el-button>
      <!-- åŸºç¡€ç æ®µè¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
      <template slot="menuLeft" slot-scope="scope">
        <el-button type="primary"
                  size="small"
                  icon="el-icon-plus"
                  @click="addBasicCodeSec">新 å¢ž
        </el-button>
        <el-button type="danger"
                  size="small"
                  icon="el-icon-delete"
                  plain
                  @click="deleteBasicCode(scope.row)">删 é™¤
        </el-button>
      </template>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.lcStatus == 'Editing' ? true:false"
                    plain
                    @click="openEdit(scope.row)">编 è¾‘
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.secType == 'codeclassifysec' || scope.row.secType == 'codefixedsec' ? true:false"
                    plain
                    @click="openEdit(scope.row)">码值管理
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="icon-shangyi"
                    v-show="scope.row.orderNum > 1 ? true:false"
                    plain
                    @click="upOrderNum(scope.row)">上 ç§»
          </el-button>
          <el-button type="text"
                    size="small"
                    icon="icon-xiayi"
                    plain
                    @click="downOrderNum(scope.row)">下 ç§»
          </el-button>
        </template>
        <!-- åŸºç¡€ç æ®µè¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
        <template slot="menuLeft" slot-scope="scope">
          <el-button type="primary"
                    size="small"
                    icon="el-icon-plus"
                    @click="addBasicCodeSec">新 å¢ž
          </el-button>
          <el-button type="danger"
                    size="small"
                    icon="el-icon-delete"
                    plain
                    @click="deleteBasicCode(scope.row)">删 é™¤
          </el-button>
        </template>
    </avue-crud>
      </avue-crud>
    </basic-container>
     <!-- åŸºç¡€ç¼–码规则对话框 -->
     <el-dialog title="添加码段信息"
        :visible.sync="addBasicCodeSettingBox"
        width="780px"
      <!-- ç æ®µç å€¼ç®¡ç†å¯¹è¯æ¡† -->
      <el-dialog title="码段码值管理"
        :visible.sync="isShowBasicSecCodeValueMgr"
        :width="isShowFixedForm ? '68vw':'50vw'"
        append-to-body
        style="margin-top: -8vh;"
        style="height: 116vh; margin-top: -10vh;"
        @close="clearFixedOrClassifyForm('close')"
        destroy-on-close>
        <!-- åˆ†ç±»ç æ®µç å€¼ç®¡ç† -->
        <el-row v-show="!isShowFixedForm">
          <el-col :span="11">
            <basic-container>
              <div class="box" style="height:65vh; margin-bottom:-40px">
                <el-scrollbar style="border-bottom-right-radius:8px ">
                  <basic-container>
                    <div class="abox" style="height:54vh">
                      <avue-tree
                        :data="attrClassifyTreeData"
                        :option="treeOption"
                        @node-click="nodeClick"
                        style="overflow-y: auto; height: 54vh"/>
                    </div>
                  </basic-container>
                </el-scrollbar>
              </div>
              <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
                <el-button size="mini" type="primary" icon="el-icon-arrow-up" class="button">上移</el-button>
                <el-button size="mini" type="primary" icon="el-icon-arrow-down" class="button">下移</el-button>
              </div>
            </basic-container>
          </el-col>
          <el-col :span="13">
            <basic-container>
              <div class="box" style="height:65vh; margin-bottom:-40px">
                <el-form>
                  <el-form-item label="码值:" :label-width="50" required>
                    <el-input style="width: 18vw" v-model="codeClassifyForm.id"></el-input>
                  </el-form-item >
                  <el-form-item label="名称:" :label-width="50" required>
                    <el-input style="width: 18vw" v-model="codeClassifyForm.name"></el-input>
                  </el-form-item>
                </el-form>
              </div>
              <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
                <el-button size="mini" type="primary" icon="el-icon-circle-plus" class="button">添加</el-button>
                <el-button size="mini" type="success" plain icon="el-icon-edit-outline" class="button">修改</el-button>
                <el-button size="mini" type="danger" icon="el-icon-close" class="button">删除</el-button>
                <el-button size="mini" type="warning" plain icon="el-icon-close" class="button">取消</el-button>
              </div>
            </basic-container>
          </el-col>
        </el-row>
        <!-- å›ºå®šç æ®µç å€¼ç®¡ç† -->
        <el-row v-show="isShowFixedForm">
          <el-col :span="15">
            <basic-container>
              <div class="box fixedbox" style="height:65vh; margin-bottom:-40px">
                <avue-crud
                  ref="crudFixedValue"
                  :data="fixedValueData"
                  :option="fixedValueOption"
                  :table-loading="fixedValueOptionLoading"
                  @row-click="selectedCodeValueRow">
                  <!-- è¡¨æ ¼å†…按钮配置 -->
                  <template slot="menu" slot-scope="scope">
                    <el-button size="mini" type="text" icon="el-icon-arrow-up" @click="codeFixedValueOpetion('up',scope.row)">上移</el-button>
                    <el-button size="mini" type="text" icon="el-icon-arrow-down" @click="codeFixedValueOpetion('down',scope.row)">下移</el-button>
                    <el-button size="mini" type="text"icon="el-icon-minus" @click="codeFixedValueOpetion('remove',scope.row)">移除</el-button>
                  </template>
                </avue-crud>
              </div>
              <div style="margin-top:20px;">
                <el-button size="mini" type="primary" icon="el-icon-success" class="button" @click="saveCodeFixedValueOption">保存</el-button>
              </div>
            </basic-container>
          </el-col>
          <el-col :span="9">
            <basic-container>
              <div class="box" style="height: 65vh; margin-bottom:-40px; overflow:hidden;" >
                <div style="overflow-y:auto;height: 60vh;">
                  <el-form>
                    <el-form-item label="码值:" label-width="54px" required>
                      <el-input style="width: 19.5vw" v-model="codeFixdForm.id"></el-input>
                    </el-form-item >
                    <el-form-item label="描述:">
                      <el-input type="textarea" style="width: 20vw; "v-model="codeFixdForm.description"></el-input>
                    </el-form-item>
                  </el-form>
                </div>
              </div>
              <div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
                <el-button :disabled="selectedFixedOrCodeclassifyValue!=''" size="mini" type="primary" icon="el-icon-circle-plus" class="button" @click="addCodeSecValue('codefixedsec')">添加</el-button>
                <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="success" plain plain icon="el-icon-edit-outline" class="button" @click="editCodeSecValue('codefixedsec')">修改</el-button>
                <el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="danger" icon="el-icon-close" class="button"  @click="delCodeSecValue('codefixedsec')">删除</el-button>
                <el-button size="mini" type="warning" plain icon="el-icon-close" class="button" @click = "clearFixedOrClassifyForm('codefixedsec')">取消</el-button>
              </div>
            </basic-container>
          </el-col>
        </el-row>
      </el-dialog>
        <!-- å±žæ€§ç æ®µï¼Œå±žæ€§é€‰æ‹©å¼¹çª— -->
        <el-dialog title="为[属性]选取值"
     <!-- åŸºç¡€ç æ®µæ–°å¢žç›¸å…³å¯¹è¯æ¡† -->
     <el-dialog :title="basicSecDialogTitle"
        :visible.sync="addBasicCodeSettingBox"
        width="60vw"
        append-to-body
        style="height: 115vh; margin-top: -13vh; overflow: hidden"
        destroy-on-close
        @close="clearBasicAddForm">
        <!--  ç¬¬ä¸€å±‚对话框,添加码段信息对话框中的内容 -->
        <div class="total" style="overflow-y: auto; height: 70vh">
          <el-form :model="form" :rules="formRules" ref="form" >
            <span class="left">
              <el-form-item label="码段编号:" :label-width="leftFormLabelWidth" required prop="id">
                <el-input v-model="form.id" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="码段名称:" :label-width="leftFormLabelWidth" required prop="name">
                <el-input v-model="form.name" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="码段类型" :label-width="leftFormLabelWidth" required prop="secType">
                <el-select v-model="form.secType" placeholder="请选择" @change="changeSectypeFormItems(null)" :disabled="basicSecOnlyRead">
                  <el-option
                    v-for="item in sectypeList"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="描述:" :label-width="leftFormLabelWidth">
                <el-input type="textarea" v-model="form.description" :readonly="basicSecOnlyRead"></el-input>
              </el-form-item>
              <el-form-item label="是否流水依赖:" :label-width="leftFormLabelWidth">
                <el-switch v-model="form.serialDependFlag" :disabled="basicSecOnlyRead"></el-switch>
                <el-input-number v-show="form.serialDependFlag" v-model="form.serialDependOrder" controls-position="right" :readonly="basicSecOnlyRead"></el-input-number>
              </el-form-item>
              <el-form-item label="是否为空:" :label-width="leftFormLabelWidth">
                <el-switch v-model="form.nullableFlag"  :disabled="basicSecOnlyRead"></el-switch>
              </el-form-item>
            </span>
            <el-divider direction="vertical"></el-divider>
            <span class="right">
              <!-- å›ºå®šç æ®µ -->
              <div v-show="form.secType==='codefixedsec' ? true:false">
                <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required prop="codeSecLengthType">
                  <el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                    v-for="item in codeSecLengthType"
                    :key="item.dictValue"
                    :label="item.dictValue"
                    :value="item.dictKey">
                  </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
                  <el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
              </div>
              <!-- å±žæ€§ç æ®µ -->
              <div v-show="form.secType==='codeattrsec' ? true:false">
                <el-form-item label="属性:" :label-width="rightFormLabelWidth" required prop="referAttributeName">
                  <el-input
                    placeholder="请选择"
                    prefix-icon="el-icon-search"
                    readonly="true"
                    v-model="form.referAttributeName"
                    @focus="openAttrSelectOrGetValue('attr')"
                    :disabled="basicSecOnlyRead">
                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('attr')" style="cursor: pointer;"></i>
                  </el-input>
                </el-form-item>
                <el-form-item label="属性所在分类:" :label-width="rightFormLabelWidth">
                  <el-input
                    v-model="form.referCodeClassifyOidName"
                    disabled>
                </el-input>
                </el-form-item>
                <el-form-item label="取值规则:" :label-width="rightFormLabelWidth">
                  <el-input
                    placeholder="请选择"
                    prefix-icon="el-icon-search"
                    readonly="true"
                    v-model="form.getValueClass"
                    :disabled="basicSecOnlyRead"
                    @focus="openAttrSelectOrGetValue('value')">
                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('value')" style="margin-right: 5px;cursor: pointer;"></i>
                  </el-input>
                </el-form-item>
              </div>
              <!-- æµæ°´ç æ®µ -->
              <div v-show="form.secType==='codeserialsec' ? true:false">
                <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
                  <el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="流水号的起始值:" :label-width="rightFormLabelWidth" prop="serialStart">
                  <el-input v-model="form.serialStart" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="流水的步长:" :label-width="rightFormLabelWidth" prop="serialStep">
                  <el-input v-model="form.serialStep" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required prop="codeFillType">
                  <el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option label="左补位" value="codeattrsec"
                        v-for="item in codeFillType"
                        :key="item.dictValue"
                        :label="item.dictValue"
                        :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth" prop="codeFillSeparatorSelect">
                  <el-select v-model="form.codeFillSeparatorSelect" filterable placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                        v-for="item in codeFillSeparator"
                        :key="item.dictValue"
                        :label="item.dictValue"
                        :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="填充长度:" :label-width="rightFormLabelWidth" required prop="codeFillLength">
                  <el-input v-model="form.codeFillLength" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="流水上限:" :label-width="rightFormLabelWidth" required prop="codeFillLimit">
                  <el-input v-model="form.codeFillLimit" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="流水是否补码:" :label-width="rightFormLabelWidth" required>
                  <el-switch v-model="form.codeFillFlag" :disabled="basicSecOnlyRead"></el-switch>
                </el-form-item>
                <el-form-item label="自定义的流水算法:" :label-width="rightFormLabelWidth">
                  <el-input v-model="form.customCodeSerialClass" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
              </div>
              <!-- å±‚级码段 -->
              <div v-show="form.secType==='codelevelsec' ? true:false">
                <el-form-item label="层级类型:" :label-width="rightFormLabelWidth" required prop="codeLevelType">
                  <el-select v-model="form.codeLevelType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                        v-for="item in codeLevelType"
                        :key="item.dictValue"
                        :label="item.dictValue"
                        :value="item.dictKey">
                      </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="层级的值:" :label-width="rightFormLabelWidth" prop="codeLevelValue">
                  <el-input v-model="form.codeLevelValue" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="字符截取类型:" :label-width="rightFormLabelWidth" required prop="valueCutType">
                  <el-select v-model="form.valueCutType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                      v-for="item in codeCutType"
                      :key="item.dictValue"
                      :label="item.dictValue"
                      :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="取值类型:" :label-width="rightFormLabelWidth">
                  <el-select v-model="form.codeGetValueType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                      v-for="item in codeGetValueType"
                      :key="item.dictValue"
                      :label="item.dictValue"
                      :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
              </div>
              <!-- å¼•用码段 -->
              <div v-show="form.secType==='coderefersec' ? true:false">
                <el-form-item label="参照引用的业务类型:" label-width="152px" required prop="referBtmId">
                  <el-input
                    placeholder="请选择"
                    prefix-icon="el-icon-search"
                    readonly="true"
                    v-model="form.referBtmId"
                    @focus="openAttrSelectOrGetValue('referBtmId')"
                    :disabled="basicSecOnlyRead">
                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referBtmId')" style="margin-right: 5px;cursor: pointer;"></i>
                  </el-input>
                </el-form-item>
                <el-form-item label="参照配置:" label-width="152px" required prop="referConfig">
                  <el-input
                    placeholder="请选择"
                    prefix-icon="el-icon-search"
                    readonly="true"
                    v-model="form.referConfig"
                    @focus="openAttrSelectOrGetValue('referConfig')"
                    :disabled="basicSecOnlyRead">
                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referConfig')" style="margin-right: 5px;cursor: pointer;"></i>
                  </el-input>
                </el-form-item>
              </div>
              <!-- æ—¥æœŸç æ®µ -->
              <div v-show="form.secType==='codedatesec' ? true:false">
                <el-form-item label="日期格式:" :label-width="rightFormLabelWidth" required prop="codeDateFormatStr">
                  <el-input v-model="form.codeDateFormatStr" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
              </div>
              <!-- åˆ†ç±»ç æ®µ -->
              <div v-show="form.secType==='codeclassifysec' ? true:false">
                <el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required prop="codeSecLengthType">
                  <el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                        v-for="item in codeSecLengthType"
                        :key="item.dictValue"
                        :label="item.dictValue"
                        :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
                  <el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="是否自动分配分类值:" :label-width="rightFormLabelWidth">
                  <el-switch v-model="form.matchClassifyValueFlag" :disabled="basicSecOnlyRead"></el-switch>
                </el-form-item>
                <el-form-item label="父分类码段:" :label-width="rightFormLabelWidth">
                  <el-input
                    placeholder="请选择"
                    prefix-icon="el-icon-search"
                    readonly="true"
                    v-model="form.parentClassifySecOid"
                    @focus="openAttrSelectOrGetValue('parentClassifySecOid')"
                    :disabled="basicSecOnlyRead">
                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('parentClassifySecOid')" style="margin-right: 5px;cursor: pointer;"></i>
                  </el-input>
                </el-form-item>
              </div>
              <!-- å¯å˜ç æ®µ -->
              <div v-show="form.secType==='codevariablesec' ? true:false">
                <el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
                  <el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
                </el-form-item>
                <el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required prop="codeFillType">
                  <el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                        v-for="item in codeFillType"
                        :key="item.dictValue"
                        :label="item.dictValue"
                        :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
                <el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
                  <el-select v-model="form.codeFillSeparatorSelect" placeholder="请选择" :disabled="basicSecOnlyRead">
                    <el-option
                        v-for="item in codeFillSeparator"
                        :key="item.dictValue"
                        :label="item.dictValue"
                        :value="item.dictKey">
                    </el-option>
                  </el-select>
                </el-form-item>
              </div>
            </span>
          </el-form>
        </div>
        <!-- ç¬¬ä¸€å±‚对话框的按钮和,线条 -->
        <el-divider direction="horizontal"></el-divider>
        <div slot="footer" class="dialog-footer">
          <el-button @click="addBasicCodeSettingBox = false" v-show="showbtn">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveOrEditBasicCode" v-show="showbtn">保 å­˜</el-button>
        </div>
        <!--  ç¬¬äºŒå±‚对话框,属性码段,属性选择弹窗 -->
        <el-dialog title="为【属性】选取值"
          append-to-body
          :visible.sync="isShowSelectAttrOption"
          width="78%"
@@ -211,15 +575,13 @@
              <el-col span="19">
                <basic-container>
                  <div class="bbox">
                  <avue-crud ref="crud"
                      v-model="form"
                      :data="selectattrData"
                      :option="attrOption"
                      :permission="permissionList"
                      :table-loading="selectAttrOptionLoading"
                      @search-change="selectAttrOptionSearchChange"
                      @search-reset="searchAttrReset"
                      @selection-change="selectionChangeAttr">
                  <avue-crud
                    :data="selectattrData"
                    :option="attrOption"
                    :table-loading="selectAttrOptionLoading"
                    @search-change="selectAttrOptionSearchChange"
                    @search-reset="searchAttrReset"
                    @selection-change="selectionChangeAttr">
                  </avue-crud>
                  </div>
                </basic-container>
@@ -230,12 +592,12 @@
          <div slot="footer" class="dialog-footer">
            <el-button @click="isShowSelectAttrOption = false">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="savelistClassifyLinkAttr">ç¡® å®š</el-button>
            <el-button type="primary" @click="selectedListClassifyLinkAttr">ç¡® å®š</el-button>
          </div>
          
        </el-dialog>
         <!-- å±žæ€§ç æ®µï¼Œå…¬å¼ç¼–辑框弹窗 -->
         <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗 -->
        <el-dialog title="公式编辑框"
          append-to-body
          :visible.sync="isShowformulaEdit"
@@ -249,9 +611,9 @@
              <el-col :span="14" style="overflow: hidden">
                <el-card class="box-card" style="height: 33vh; overflow-y: auto; overflow-x: auto;">
                    <div slot="header" class="clearfix">
                      <span style="font-size: medium;">公式内容</span>
                      <span style="font-size: medium;" >公式内容</span>
                      <el-button type="primary" size="mini" style="float: right;" @click="saveFormulaContent">确定</el-button>
                      <el-button type="warning" size="mini" style="margin-right: 10px; float: right;" @click="resetformulaContent">清空内容</el-button>
                      <el-button type="warning" size="mini" style="margin-right: 10px; float: right;" @click="resetFormulaContent">清空内容</el-button>
                    </div>
                    <div class="text item">
                      <el-input type="textarea" :rows="5" style="width: 560px;" v-model="formulaContent"></el-input>
@@ -259,39 +621,50 @@
                </el-card>
              </el-col>
              <!-- å³ä¾§è¿ç®—符 -->
              <el-col :span="10">
                <el-card class="box-card" style="height: 33vh;">
                <el-card class="box-card" style="height: 33vh; overflow-y: auto; overflow-x: auto;">
                  <div slot="header" class="clearfix">
                    <span style="font-size: medium;">运算符</span>
                  </div>
                  <div class="text item">
                    <div class="formula-editor">
                      <div class="one">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'7'})">7</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'8'})">8</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'9'})">9</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'/'})">/</button><br/>
                      </div>
                      <div class="one">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'4'})">4</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'5'})">5</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'6'})">6</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'*'})">*</button><br/>
                      </div>
                      <div class="one">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'1'})">1</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'2'})">2</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'3'})">3</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>'})">-</button><br/>
                      </div>
                      <div class="one">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'0'})">0</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'00'})">00</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'.'})">.</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'+'})">+</button><br/>
                      </div>
                      <div class="one">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'->'})">-></button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'=='})">==</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'('})">(</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':')'})">)</button><br/>
                      </div>
                      <div class="one">
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'<'})">&lt;</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>'})">&gt;</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'<='})">&lt;=</button>
                        <button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>='})">&gt;=</button>
                      </div>
                    </div>
                  </div>
                </el-card>
@@ -299,7 +672,6 @@
            </el-row>
            <el-row>
              <!-- å·¦ä¾§å…¬å¼é€‰æ‹©åŒºåŸŸ -->
              <el-col :span="14" style="overflow: hidden">
                <el-card class="box-card" style="height: 40vh; overflow-y: auto; overflow-x: auto;">
@@ -399,7 +771,6 @@
                  </div>
                </el-card>
              </el-col>
              <!-- å³ä¾§å˜é‡é€‰æ‹©åŒºåŸŸ -->
              <el-col :span="10" style="overflow: hidden">
                <el-card class="box-card" style="height: 40vh; overflow-y: auto; overflow-x: auto;">
@@ -449,16 +820,64 @@
          
        </el-dialog>
        <!-- æ·»åŠ ç æ®µä¿¡æ¯çš„è‡ªå®šä¹‰ç»„ä»¶ -->
        <add-basic-code ref='addBasicChild' @openAttrSelectOrGetValue="openAttrSelectOrGetValue" @openformulaEdit="openformulaEdit"></add-basic-code>
        <!-- ç¬¬äºŒå±‚对话框,为【父分类码段】选取值弹窗 -->
        <el-dialog title="为【父分类码段】选取值"
          append-to-body
          :visible.sync="isShowParentClassifyOption"
          width="65%"
          style="height: 150vh; margin-top: -13vh;"
          destroy-on-close>
        <!-- ç¬¬ä¸€å±‚对话框的按钮和,线条 -->
        <el-divider direction="horizontal"></el-divider>
        <div slot="footer" class="dialog-footer">
          <el-button @click="addBasicCodeSettingBox = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="saveBasicCode">保 å­˜</el-button>
        </div>
          <avue-crud
            :page.sync="parentClassifyDataPage"
            ref="crudParentClassify"
            :option="parentClassifyParentOption"
            :table-loading="classifyDialogLoading"
            :data="parentClassifyData"
            @refresh-change="refreshParentClassifyDataChange"
            @search-change="parentClassifySearchChange"
            @search-reset="parentClassifySearchReset"
            @selection-change="parentClassifySelectionChange"
            @current-change="parentClassifyCurrentChange"
            @size-change="parentClassifySizeChange"
            @on-load="parentClassifyOnLoad">
          </avue-crud>
          <div slot="footer" class="dialog-footer">
            <el-button @click="isShowParentClassifyOption = false">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="saveSelectedParentClassify">保 å­˜</el-button>
          </div>
        </el-dialog>
        <!-- ç¬¬äºŒå±‚对话框,为【参照引用的业务类型】选取值弹窗 -->
        <el-dialog title="为【参照引用的业务类型】选取值"
          append-to-body
          :visible.sync="isShowSelectReferBtmOption"
          width="65%"
          style="height: 150vh; margin-top: -13vh;"
          destroy-on-close>
          <avue-crud
            :page.sync="referBtmDataPage"
            ref="crudReferBtm"
            :option="referBtmOption"
            :table-loading="referBtmDialogLoading"
            :data="referBtmData"
            @refresh-change="referBtmDataChange"
            @search-change="referBtmSearchChange"
            @search-reset="referBtmSearchReset"
            @selection-change="referBtmSelectionChange"
            @current-change="referBtmCurrentChange"
            @size-change="referBtmSizeChange"
            @on-load="referBtmOnLoad">
          </avue-crud>
          <div slot="footer" class="dialog-footer">
            <el-button @click="isShowSelectReferBtmOption = false">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="saveSelectedreferBtm">保 å­˜</el-button>
          </div>
        </el-dialog>
      </el-dialog>
  </basic-container>
@@ -467,18 +886,35 @@
<script>
  import { gridCodeRule, getDetail, add, update, remove, listUseRange, updateStatus } from "@/api/code/mdmrule";
  import { gridCodeBasicSec, downOrderNum, upOrderNum, deleteData, editSave, getObjectByOid, listDataByOids, refDataGrid} from "@/api/code/codebasic";
  import {
    gridCodeBasicSec,
    downOrderNum,
    upOrderNum,
    deleteData,
    editSave,
    getObjectByOid,
    listDataByOids,
    refDataGrid,
    addSave,
    refDataGridClassifySec,
  } from "@/api/code/codebasic";
  import { treeTopCodeClassify, listClassifyLinkAttr } from "@/api/code/codeclassify";
  import { gridCodeFixedValue,addSaveCodeFixedValue,deleteCodeFixedValue,editCodeFixedValue,saveOrder } from "@/api/code/codeFixedValue";
  import { treeCodeClassifyValue } from "@/api/code/codeClassifyValue";
  import optionBasic from "@/const/code/codebasic";
  import optionRule from "@/const/code/mdmrule";
  import attrOption from "@/const/code/selectattroption";
  import treeOption from "@/const/code/classifytreeoption";
  import attrOption from "@/const/code/selectAttrOptionDialog";
  import treeOption from "@/const/code/classifyTreeOptionDialog";
  import parentClassifyParentOption from "@/const/code/parentClassifyParentOptionDialog";
  import referBtmOption from "@/const/code/referBtmDialog";
  import fixedValueOption from "@/const/code/fixedValueMgrDialog";
  import { getDictionary } from "@/api/omd/dict";
  import {mapGetters} from "vuex";
export default {
    data() {
      return {
        form: {},
        ruleForm: {},
        query: {},
        loading: true,
        currentCodeRuleOid: '',
@@ -490,18 +926,82 @@
        selectionList: [],
        /*编码规则表格配置*/
        optionRule: optionRule,
        data: [],
        currentRuleLcStatus: '',
        /*克隆按钮对话框控制*/
        cloneSettingBox: false,
        optionBasic: optionBasic,
        optionBasic: optionBasic,
        /*使用范围对话框显示控制*/
        codeRangeSettingBox: false,
        useRangeData: [],
        dialogLoading: true,
        /*使用范围对话框配置*/
        dialogeOption: {
          height: 'auto',
          calcHeight: 30,
          tip: false,
          searchShow: false,
          searchMenuSpan: 6,
          border: true,
          index: true,
          disablePage:false,
          viewBtn: false,
          addBtn: false,
          menu: false,
          selection: false,
          dialogClickModal: false,
          align: 'center',
          dialogWidth: 400,
          column: [
            {
              label: "分类编号",
              prop: "id",
              span: 24
            },
            {
              label: "分类名称",
              prop: "name",
              span: 24,
            }
          ]
        },
        /*基础码段相关数据*/
        basicData:[],
        loadingBasic: true,
        selectionBasicList: [],
        addBasicCodeSettingBox: false,
        showbtn: false, //基础码段新增是否显示基础码段
        basicSecDialogTitle: '', //基础码段第一层对话框标题
        basicSecOnlyRead: false, //新增基础码段表单是否只读
        /** ç å€¼ç®¡ç†ç›¸å…³æ•°æ® */
        isShowBasicSecCodeValueMgr: false, //码段码值管理对话框
        codefixedsecOrCodeclassifysecOid: '', //存放基础码段点击码值管理时的当前行id,用于保存码值时使用
        selectedFixedOrCodeclassifyValue: '', //当前选中的码值数据
        //固定码段码值表单
        codeFixdForm: {
          codeFixedSecOid: "",
          description: "",
          id: "",
        },
        isShowFixedForm: true, //true显示固定码段码值管理界面,false显示分类码段码值管理界面
        fixedValueData: [], //固定码段码值表格数据
        fixedValueOption: fixedValueOption, //表格配置
        fixedValueOptionLoading: false,  //加载表格的动态效果
        fixedValueSelectList: [],  //固定码段码值当前选中的行
        //分类码段码值表单
        codeClassifyForm: {
          codeclassifysecoid: "",
          id: "",
          name: "",
          oid: "",
          parentclassifyvalueoid: "",
        },
        /* ä¸ºå±žæ€§é€‰å–值窗口显示打开控制变量 */
        isShowSelectAttrOption: false,
        /* ä¸ºå±žæ€§é€‰å€¼å·¦ä¾§æ ‘数据 */
@@ -513,111 +1013,110 @@
        selectattrData: [],
        selectAttrOptionLoading: false,
        selectionChangeAttrList: [],
        /*公式编辑框对话框*/
        /*公式编辑框对话框相关数据*/
        isShowformulaEdit: false, //公式编辑框对话框显示控制
        formulaContent: '', //公式编辑框内容
        activeName: 'first', //当前活动的tab
        activeNameAttr: 'first', //变量中的当前活动tab
        //常用公式
        commonFormulaTableData: [{
          "formula": 'if(compare,trueResult,falseResult)',
          "desc": '如果compare的表达式为true,则执行trueResult的表达式,否则执行flaseResult.例如if(3>2,2*(3+2),3/(2-4)),值等于10',
        },
        {
          "formula": 'sum(douber1,douber2)',
          "desc": '两个格式为douber的参数求和',
        },
        {
          "formula": 'sub(douber1,douber2)',
          "desc": '格式为douber的参数douber1减去格式为douber的参数douber2',
        },
        {
          "formula": 'mul(douber1,douber2)',
          "desc": '两个格式为douber的参数相乘',
        },
        {
          "formula": 'div(douber1,douber2)',
          "desc": '格式为douber的参数douber1除以格式为douber的参数douber2.当douber2等于0的时候,返回0;如果除不尽的时候保留10位小数',
        },
        {
          "formula": 'mod(int,int)',
          "desc": '求余数',
        },
        {
          "formula": 'toInt(string)',
          "desc": '转换为int格式',
        },
        {
          "formula": 'doubleRound(string,count)',
          "desc": '处理douber的小数位数,count表示小数位数',
        },
        {
          "formula": 'zeroIfNull(value)',
          "desc": '如果参数的值为null或者"",将返回0',
        },
        {
          "formula": 'endsWith(string,str1)',
          "desc": '字符串string是不是以str1结尾',
        },
        {
          "formula": 'startsWith(string,str1)',
          "desc": '字符串string是否以str1开头',
        },
        {
          "formula": 'charAt(string,index)',
          "desc": '获取字符串string中第index位置的字符,如果长度小于index,则返回',
        },
        {
          "formula": 'equalsIgnoreCase(str1,str2)',
          "desc": '字符串str1和字符串str2是否相等',
        },
        {
          "formula": 'indexOf(str1,str2)',
          "desc": '字符串str2在字符串str1中首次出现的位置',
        },
        {
          "formula": 'isEmpty(str1)',
          "desc": '参数str1是否为空,其中null这个字符串也表示为空',
        },
        {
          "formula": 'lastIndexOf(str1,str2)',
          "desc": '字符串str2在字符串str1中最后出现的位置',
        },
        {
          "formula": 'leftStr(str1,index)',
          "desc": '获取index位置左侧的所有字符',
        },
        {
          "formula": 'rightStr(str1,str2)',
          "desc": '获取index位置右侧的所有字符',
        },
        {
          "formula": 'length(str1)',
          "desc": '参数str1的长度',
        },
        {
          "formula": 'mid(str1,start,end)',
          "desc": '获取str1的从start到end直接的字符串,出现异常时返回',
        },
        {
          "formula": 'tolowercase(str1)',
          "desc": '将字符串str1转为小写',
        },
        {
          "formula": 'touppercase(str1)',
          "desc": '将字符串str1转为大写',
        },
        {
          "formula": 'trimzero(str1)',
          "desc": '去除字符串str1中的0',
        },
        {
          "formula": 'MD5(str1)',
          "desc": '将字符串进行MD5加密',
        },
       ],
            "formula": 'if(compare,trueResult,falseResult)',
            "desc": '如果compare的表达式为true,则执行trueResult的表达式,否则执行flaseResult.例如if(3>2,2*(3+2),3/(2-4)),值等于10',
          },
          {
            "formula": 'sum(douber1,douber2)',
            "desc": '两个格式为douber的参数求和',
          },
          {
            "formula": 'sub(douber1,douber2)',
            "desc": '格式为douber的参数douber1减去格式为douber的参数douber2',
          },
          {
            "formula": 'mul(douber1,douber2)',
            "desc": '两个格式为douber的参数相乘',
          },
          {
            "formula": 'div(douber1,douber2)',
            "desc": '格式为douber的参数douber1除以格式为douber的参数douber2.当douber2等于0的时候,返回0;如果除不尽的时候保留10位小数',
          },
          {
            "formula": 'mod(int,int)',
            "desc": '求余数',
          },
          {
            "formula": 'toInt(string)',
            "desc": '转换为int格式',
          },
          {
            "formula": 'doubleRound(string,count)',
            "desc": '处理douber的小数位数,count表示小数位数',
          },
          {
            "formula": 'zeroIfNull(value)',
            "desc": '如果参数的值为null或者"",将返回0',
          },
          {
            "formula": 'endsWith(string,str1)',
            "desc": '字符串string是不是以str1结尾',
          },
          {
            "formula": 'startsWith(string,str1)',
            "desc": '字符串string是否以str1开头',
          },
          {
            "formula": 'charAt(string,index)',
            "desc": '获取字符串string中第index位置的字符,如果长度小于index,则返回',
          },
          {
            "formula": 'equalsIgnoreCase(str1,str2)',
            "desc": '字符串str1和字符串str2是否相等',
          },
          {
            "formula": 'indexOf(str1,str2)',
            "desc": '字符串str2在字符串str1中首次出现的位置',
          },
          {
            "formula": 'isEmpty(str1)',
            "desc": '参数str1是否为空,其中null这个字符串也表示为空',
          },
          {
            "formula": 'lastIndexOf(str1,str2)',
            "desc": '字符串str2在字符串str1中最后出现的位置',
          },
          {
            "formula": 'leftStr(str1,index)',
            "desc": '获取index位置左侧的所有字符',
          },
          {
            "formula": 'rightStr(str1,str2)',
            "desc": '获取index位置右侧的所有字符',
          },
          {
            "formula": 'length(str1)',
            "desc": '参数str1的长度',
          },
          {
            "formula": 'mid(str1,start,end)',
            "desc": '获取str1的从start到end直接的字符串,出现异常时返回',
          },
          {
            "formula": 'tolowercase(str1)',
            "desc": '将字符串str1转为小写',
          },
          {
            "formula": 'touppercase(str1)',
            "desc": '将字符串str1转为大写',
          },
          {
            "formula": 'trimzero(str1)',
            "desc": '去除字符串str1中的0',
          },
          {
            "formula": 'MD5(str1)',
            "desc": '将字符串进行MD5加密',
          },
        ],
       //财务公式
        financialFormulaTableData: [{
            "formula": 'toChinese(value)',
@@ -794,7 +1293,6 @@
            "desc": '查询servername中tablename数据库表中fieldname字段的值,pkfield表示主键的字段名称,pkValue表示主键的值,serverName现在默认为localServer'
          },
        ],
        //本场景变量
        thisSceneTableData: [{
            "formula": '${}',
@@ -860,40 +1358,122 @@
          }
        ],
        /*使用范围对话框显示控制*/
        codeRangeSettingBox: false,
        useRangeData: [],
        dialogLoading: true,
        /*使用范围对话框配置*/
        dialogeOption: {
        height: 'auto',
        calcHeight: 30,
        tip: false,
        searchShow: false,
        searchMenuSpan: 6,
        border: true,
        index: true,
        disablePage:false,
        viewBtn: false,
        addBtn: false,
        menu: false,
        selection: false,
        dialogClickModal: false,
        align: 'center',
        dialogWidth: 400,
        column: [
          {
            label: "分类编号",
            prop: "id",
            span: 24
          },
          {
            label: "分类名称",
            prop: "name",
            span: 24,
          }
        ]
      },
        /* çˆ¶åˆ†ç±»ç æ®µå¯¹è¯æ¡† */
        isShowParentClassifyOption: false, //父分类码段对话框显示控制
        classifyDialogLoading: true, //表格数据加载提示
        parentClassifyParentOption: parentClassifyParentOption,  //表格配置
        parentClassifyData: [], //表格数据
        //分页参数配置
        parentClassifyDataPage: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        parentClassifyQuery: {}, //查询条件
        parentClassifySelectionList: [], //当前选中行
        /** å‚照引用的业务类型对话框相关数据 */
        isShowSelectReferBtmOption: false,   //对话框显示控制
        referBtmDialogLoading: true,   //表格数据加载提示
        referBtmDataPage: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        referBtmOption: referBtmOption, //表格配置
        referBtmData: [], //表格数据
        referBtmQuery: {}, //查询条件
        referBtmSelectionList: [], //当前选中行
        /** åŸºç¡€ç æ®µæ–°å¢žè¡¨å• */
        form: {
          id: '', //编号
          name: '', //名称
          secType: 'codefixedsec', //码段类型
          description: '', //描述
          serialDependFlag: false, //是否流水依赖
          serialDependOrder: '', //流水依赖顺序
          nullableFlag: false, //是否为空
          displayFlag: false, //
          componentCodeFlag: false, //是否参与编码
          pkCodeRule: '', //所属编码规则
        },
        formRules: {
          id: [
            { required: true, message: '请输入码段编号', trigger: 'blur' },
          ],
          name: [
            { required: true, message: '请输入码段名称', trigger: 'blur' },
          ],
          secType: [
            { required: true, message: '请输入码段名称', trigger: 'blur' },
          ],
          codeSecLengthType: [
            { required: true, message: '请选择码段长度类型', trigger: 'change' },
          ],
          codeSecLength: [
            { required: true, message: '请输入码段的长度', trigger: 'blur' },
            { type: 'number', message: '码段的长度必须为数字值'}
          ],
          referAttributeName: [
            { required: true, message: '请选择属性', trigger: 'blur' },
          ],
          serialStart: [
            { type: 'number', message: '码段的长度必须为数字值'}
          ],
          serialStep: [
            { type: 'number', message: '码段的长度必须为数字值'}
          ],
          codeFillType: [
            { required: true, message: '请选择编码补位方式', trigger: 'blur' },
          ],
          // è®¾ç½®è¡¥ä½æ—¶çš„字符,需要自定义方法来做判断
          codeFillSeparatorSelect: [
            { required: true, message: '请输入补位时的字符', trigger: 'blur' },
          ],
          codeFillLength: [
            { required: true, message: '请输入填充长度', trigger: 'blur' },
            { type: 'number', message: '填充长度必须为数字值'}
          ],
          codeFillLimit: [
            { required: true, message: '请输入流水上限', trigger: 'blur' },
            { type: 'number', message: '流水上限必须为数字值'}
          ],
          codeLevelType: [
            { required: true, message: '请选择层级类型', trigger: 'change' },
          ],
          codeLevelValue: [
            { type: 'number', message: '层级的值必须为数字值'}
          ],
          valueCutType: [
            { required: true, message: '请选择字符截取类型', trigger: 'change' },
          ],
          referBtmId: [
            { required: true, message: '请选参照应用的业务类型', trigger: 'change' },
          ],
          referConfig: [
            { required: true, message: '请选择参照配置', trigger: 'change' },
          ],
          codeDateFormatStr: [
            { required: true, message: '请输入日期格式', trigger: 'blur' },
          ],
        },
        //枚举和可输可选查询
        sectypeList:[],    //码段类型
        codeSecLengthType:[],  //码段长度类型
        codeFillType:[],   //编码补位方式
        codeFillSeparator:[], //补位时的字符,可输可选内容
        codeLevelType:[],     //层级类型
        codeCutType:[],       //字符截取类型
        codeGetValueType:[],  //取值类型
        //表单元素标签宽度
        leftFormLabelWidth: '110px',
        rightFormLabelWidth: '150px',
      };
    },
    computed: {
@@ -909,50 +1489,155 @@
    },
    methods: {
      
      // æ‰“开公式编辑框,第二层嵌套对话框
      /** é€‰ä¸­å‚照引用的业务类型,第二层嵌套对话框,及其相关方法  */
      saveSelectedreferBtm(){
        if(this.referBtmSelectionList.length != 1){
          this.$message.warning("只能选择一条数据!");
          return false;
        }
        //调用子组件并传递当前选中的参数值,实现回显
        this.form.referBtmId = this.referBtmSelectionList[0].id;
        this.form.referBtmName = this.referBtmSelectionList[0].name;
        //清空当前选中的行
        this.referBtmSelectionClear();
        this.isShowSelectReferBtmOption = false;
      },
      referBtmSearchReset() {
        this.referBtmQuery = {};
        this.referBtmOnLoad(this.referBtmDataPage);
      },
      referBtmSearchChange(params, done) {
        this.referBtmQuery = params;
        this.referBtmDataPage.currentPage = 1;
        this.referBtmOnLoad(this.page, params);
        done();
      },
      referBtmSelectionChange(list) {
        //console.log(list);
        this.referBtmSelectionList = list;
      },
      referBtmSelectionClear() {
        this.referBtmSelectionList = [];
        this.$refs.crudReferBtm.toggleSelection();
      },
      referBtmCurrentChange(currentPage){
        this.referBtmDataPage.currentPage = currentPage;
      },
      referBtmSizeChange(pageSize){
        this.referBtmDataPage.pageSize = pageSize;
      },
      refreshReferBtmDataChange() {
        this.referBtmOnLoad(this.referBtmDataPage, this.referBtmQuery);
      },
      //加载中参照引用的业务类型的数据
      referBtmOnLoad(page, params = {}) {
        this.referBtmDialogLoading = true;
        let oid = this.selectionList.length==0 ?  this.form.pkCodeRule:this.selectionList[0].oid;
        Object.assign(params,{pkCodeRule:oid})
        //接口还未提供,待更改
        refDataGridClassifySec(page.currentPage, page.pageSize, Object.assign(params, this.parentClassifyQuery)).then(res => {
          //console.log(res.data);
          const data = res.data.data;
          this.referBtmDataPage.total = data.total;
          this.referBtmData = data.records;
          this.referBtmDialogLoading = false;
          this.referBtmSelectionClear();
        });
      },
      /** çˆ¶åˆ†ç±»é€‰æ‹©å¯¹è¯æ¡†ï¼Œç¬¬äºŒå±‚嵌套对话框,及其相关方法 */
      // ä¿å­˜å½“前父分类码段的选中行,并进行子组件回显
      saveSelectedParentClassify(){
        //console.log(this.parentClassifySelectionList.length);
        if(this.parentClassifySelectionList.length != 1){
          this.$message.warning("只能选择一条数据!");
          return false;
        }
        //调用子组件并传递当前选中的参数值,实现回显
        this.form.parentClassifySecOid = this.parentClassifySelectionList[0].id;
        this.form.parentClassifySecText = this.parentClassifySelectionList[0].name;
        //清空当前选中的行
        this.parentClassifySelectionClear();
        this.isShowParentClassifyOption = false;
      },
      parentClassifySearchReset() {
        this.parentClassifyQuery = {};
        this.parentClassifyOnLoad(this.parentClassifyDataPage);
      },
      parentClassifySearchChange(params, done) {
        this.parentClassifyQuery = params;
        this.parentClassifyDataPage.currentPage = 1;
        this.parentClassifyOnLoad(this.page, params);
        done();
      },
      parentClassifySelectionChange(list) {
        //console.log(this.parentClassifyCurrentChange);
        this.parentClassifySelectionList = list;
      },
      parentClassifySelectionClear() {
        this.parentClassifySelectionList = [];
        this.$refs.crudParentClassify.toggleSelection();
      },
      parentClassifyCurrentChange(currentPage){
        this.parentClassifyDataPage.currentPage = currentPage;
      },
      parentClassifySizeChange(pageSize){
        this.parentClassifyDataPage.pageSize = pageSize;
      },
      refreshParentClassifyDataChange() {
        this.parentClassifyOnLoad(this.parentClassifyDataPage, this.parentClassifyQuery);
      },
      parentClassifyOnLoad(page, params = {}) {
        this.classifyDialogLoading = true;
        let oid = this.selectionList.length==0 ? this.form.pkCodeRule:this.selectionList[0].oid;
        Object.assign(params,{pkCodeRule:oid})
        refDataGridClassifySec(page.currentPage, page.pageSize, Object.assign(params, this.parentClassifyQuery)).then(res => {
          //console.log(res.data);
          const data = res.data.data;
          this.parentClassifyDataPage.total = data.total;
          this.parentClassifyData = data.records;
          this.classifyDialogLoading = false;
          this.parentClassifySelectionClear();
        });
      },
      /** æ‰“开公式编辑框,第二层嵌套对话框,及其相关方法 */
      openformulaEdit(){
        this.isShowformulaEdit = true;
      },
      //双击添加公式内容
      dbClickAddContent(row){
        //console.log(row.formula);
        this.formulaContent = this.formulaContent + row.formula;
      },
      //清空公式内容
      resetformulaContent(){
      resetFormulaContent(){
        this.formulaContent = '';
      },
      //关闭时清空上次公式内容
      closeFormulaEdit(){
        this.resetformulaContent();
        this.resetFormulaContent();
      },
      //编辑完成公式内容回调到子组件进行回显
      //编辑完成公式内容并回显
      saveFormulaContent(){
        console.log(this.formulaContent);
        if(this.formulaContent.trim == null){
        //console.log(this.formulaContent);
        if(this.formulaContent.trim == null || this.formulaContent.trim == ''){
          this.$message.warning("公式内容不能为空!");
          return;
        }
        this.$refs.addBasicChild.saveFormulaContent(this.formulaContent);
        //公式内容回显
        this.form.getValueClass = this.formulaContent;
        this.isShowformulaEdit = false;  
      },
      // æ‰“开属性选取值,第二层嵌套对话框
      openAttrSelectOrGetValue(){
        //console.log(111);
        this.isShowSelectAttrOption = true;
      },
      /** æ‰“开属性选取值,第二层嵌套对话框,及其相关方法 */
      // èŽ·å–å½“å‰è¢«é€‰ä¸­æ ‘èŠ‚ç‚¹çš„oid
      nodeClick(data) {
        this.currentSelectTreeData = data;
        this.loadlistClassifyLinkAttr()
      },
      // åŠ è½½åˆ†ç±»è¿žæŽ¥å±žæ€§è¡¨æ ¼æ•°æ®
      loadlistClassifyLinkAttr(){
        this.selectAttrOptionLoading = true;
@@ -968,7 +1653,6 @@
        this.selectAttrOptionLoading = false;
        })
      },
      // ç‚¹å‡»æœç´¢åŽè§¦å‘该事件
      selectAttrOptionSearchChange(params, done) {
        this.query = params;
@@ -976,44 +1660,216 @@
        this.loadlistClassifyLinkAttr({"page":1,"limit":-1 ,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid});
        done();
      },
      // å±žæ€§å–值当前选中行发生变化时触发
      selectionChangeAttr(list){
        this.selectionChangeAttrList = list;
      },
      //重置位属性选取值表格的搜索框之后的回调
      // é‡ç½®ä½å±žæ€§é€‰å–值表格的搜索框之后的回调
      searchAttrReset() {
        this.loadlistClassifyLinkAttr()
      },
      // å±žæ€§å–值选取成功保存之后触发
      savelistClassifyLinkAttr(){
      // ä¸ºå±žæ€§é€‰å–值之后的回显
      selectedListClassifyLinkAttr(){
        if(this.selectionChangeAttrList.length != 1){
          this.$message.warning("只能选择一条数据!");
          return false;
        }
        let data = {
          "referAttributeId":this.selectionChangeAttrList[0].id,
          "referAttributeName":this.selectionChangeAttrList[0].name,
          "referCodeClassifyOid": this.currentSelectTreeData.key,
          "referCodeClassifyOidName": this.currentSelectTreeData.title,
        }
        //console.log(data);
        //调用子组件并传递当前选中的参数值,实现回显
        this.$refs.addBasicChild.selectedListClassifyLinkAttr(data);
        this.form = Object.assign({}, this.form, {
          referAttributeId:this.selectionChangeAttrList[0].id,
          referAttributeName:this.selectionChangeAttrList[0].name,
          referCodeClassifyOid: this.currentSelectTreeData.key,
          referCodeClassifyOidName: this.currentSelectTreeData.title,
        })
        this.isShowSelectAttrOption = false;
      },
      // ç¼–码规则当前选中行变化的时候触发
      selectionChange(list) {
        this.selectionList = list;
        if(this.selectionList.length > 0){
          this.currentCodeRuleOid = this.selectionList [list.length-1];
          this.loadBasic(this.selectionList[list.length-1]);
      /** åŸºç¡€ç æ®µè¡¨ä¸­çš„码值管理的相关方法 */
      // ç å€¼ç®¡ç†å¼¹çª—控制
      openBasicSecCodeValueMgr(row){
        //当前为固定码段码值管理码值管理
        if(row.secType === "codefixedsec"){
          this.isShowFixedForm = true;
          this.loadFixedValueTableData(row);
        }else{
          //分类码段
          this.isShowFixedForm = false;
        }
        this.codefixedsecOrCodeclassifysecOid = row.oid;
        this.isShowBasicSecCodeValueMgr = true;
      },
      //加载固定码段码值表数据
      loadFixedValueTableData(row){
        this.fixedValueOptionLoading = true;
        gridCodeFixedValue(1, -1, {"codeFixedSecOid":row.oid}).then(res=>{
          this.fixedValueData = res.data.data.records;
          //console.log(this.fixedValueData);
          this.fixedValueOptionLoading = false;
        })
      },
      //加载分类码段码值管理页面tree数据
      //单击固定码段的码值表中行时触发的事件
      selectedCodeValueRow(row){
        //console.log(row);
        this.selectedFixedOrCodeclassifyValue = row;
        this.codeFixdForm.id = row.id;
        this.codeFixdForm.description = row.description;
        this.codeFixdForm.codeFixedSecOid = row.codefixedsecoid;
      },
      //新增码值
      addCodeSecValue(condition){
        if(condition === "codefixedsec"){
          if(this.codeFixdForm.id.trim() == ''){
            this.$message.warning("码值不能为空!");
            return;
          }
          this.codeFixdForm.codeFixedSecOid = this.codefixedsecOrCodeclassifysecOid;
          addSaveCodeFixedValue(this.codeFixdForm).then(() => {
            this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid});
            this.clearFixedOrClassifyForm('codefixedsec');
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          }, error => {
            window.console.log(error);
          });
        }else {
        }
      },
      // æ¸…空码值表单
      clearFixedOrClassifyForm(condition){
        //点击取消时清空表单与当前选中的码值,并禁用按钮
        this.selectedFixedOrCodeclassifyValue = '';
        if(condition === "close"){
          this.codeFixdForm.id = '';
        }
        if(condition === "codefixedsec" || condition === "close"){
          this.codeFixdForm.description = '';
          this.codeFixdForm.codeFixedSecOid = '';
        }else {
          this.codeClassifyForm = '';
        }
      },
      //修改码值
      editCodeSecValue(condition){
        if(condition=='codefixedsec'){
          //以前是直接把当前选中行的所有数据都进行提交,但其实只需要传输一些比要参数即可,这儿做了修改,需要穿其他参数的请自行添加
          let editData = {
           "oid": this.selectedFixedOrCodeclassifyValue.oid,
           "ts": new Date().getTime(),
           "description": this.codeFixdForm.description,
           "id": this.codeFixdForm.id,
           "codeFixedSecOid":  this.selectedFixedOrCodeclassifyValue.codefixedsecoid
          }
          editCodeFixedValue(editData).then(() => {
              this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
              this.$message({
                type: "success",
                message: "操作成功!"
              });
            }, error => {
              window.console.log(error);
          });
        }else {
        }
      },
      //删除码值
      delCodeSecValue(condition){
        //固定码段码值删除
        if(condition == 'codefixedsec'){
          console.log(this.selectedFixedOrCodeclassifyValue.oid);
          this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
          })
          .then(() => {
            let ts = new Date(this.selectedFixedOrCodeclassifyValue.ts).getTime();
            return deleteCodeFixedValue({"oid": this.selectedFixedOrCodeclassifyValue.oid,"ts": ts});
          })
          .then(() => {
            this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
            this.clearFixedOrClassifyForm('codefixedsec');
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          });
        }else{
          //分类码段码值删除
          this.selectedFixedOrCodeclassifyValue = '';
        }
      },
      //对码值表进行:上移、下移、移除操作
      codeFixedValueOpetion(condition,row){
        //console.log(this.fixedValueData[row.$index].orderNum);
        const index = row.$index;
        if(condition == 'up'){
          //对ordeNum排序字段进行调整
          this.fixedValueData[index].orderNum = this.fixedValueData[index].orderNum-1
          this.fixedValueData[index-1].orderNum = this.fixedValueData[index].orderNum+1
          //当下标减去1小于0或者orderNum字段减去1小于0的时候不执行上移操作
          if(index-1<0 || this.fixedValueData[row.$index].orderNum-1<0){
            return;
          }
          //调整数组值顺序
          let tempOption = this.fixedValueData[index-1];
          this.$set(this.fixedValueData, index - 1, this.fixedValueData[index])
          this.$set(this.fixedValueData, index , tempOption)
          //console.log(this.fixedValueData);
        }else if(condition == 'down'){
          //对ordeNum排序字段进行调整
          this.fixedValueData[index].orderNum = this.fixedValueData[index].orderNum+1
          this.fixedValueData[index+1].orderNum = this.fixedValueData[index].orderNum-1
          //调整数组值顺序
          let tempOption = this.fixedValueData[index+1];
          this.$set(this.fixedValueData, index + 1, this.fixedValueData[index]);
          this.$set(this.fixedValueData, index, tempOption)
        }else {
          for(let i=index+1; i<this.fixedValueData.length-1; i++){
            //console.log(this.fixedValueData[i].orderNum);
            this.fixedValueData[i].orderNum = this.fixedValueData[i].orderNum-1;
            //console.log(this.fixedValueData[i].orderNum);
          }
          this.$delete(this.fixedValueData, index);
        }
        //console.log(this.fixedValueData);
      },
      //保存对固定码段码值的操作
      saveCodeFixedValueOption(){
        let data = {
          "codeFixedSecOid": this.codefixedsecOrCodeclassifysecOid,
          "dtoList": JSON.stringify(this.fixedValueData),
        }
        saveOrder(data).then(() => {
          this.$message({
            type: "success",
            message: "保存成功!"
          });
          }, error => {
            window.console.log(error);
        });
      },
      /** åŸºç¡€ç æ®µç›¸å…³æ–¹æ³• */
      //防止打开过编辑窗口之后表单中存在值,所以需要清空之后初始化form表单
      clearBasicAddForm(){
        this.form = '';
        this.form = {
          secType:'codefixedsec'
        };
        this.changeSectypeFormItems(null);
      },
      // æ‰“开新增窗口
      addBasicCodeSec(){
        if(!this.tipsMessage(this.selectionList)){
@@ -1023,21 +1879,66 @@
          this.$message.warning('编码规则状态不是"编辑中",不允许编辑码段!');
          return;
        }
        this.openBasicDialog('add',null);
        this.loadCodeSecType();
      },
      //打开新增或编辑基础码段对话框
      openBasicDialog(condition,row){
        //console.log(row);
        if(condition == 'add') {
          this.basicSecDialogTitle = '添加码段信息';
          this.showbtn = true;
          this.basicSecOnlyRead = false;
        }else if(condition == 'edit'){
          if(this.selectionList.length!=1){
            this.$message.warning('请选择一条编码规则数据!');
            return;
          }
          this.basicSecDialogTitle = '修改码段信息';
          this.showbtn = true;
          this.basicSecOnlyRead = false;
          //为form绑定值
          this.changeSectypeFormItems(row);
        }else{
          this.basicSecDialogTitle = '查看码段信息';
          this.showbtn = false;
          this.basicSecOnlyRead = true;
          this.changeSectypeFormItems(row);
        }
        //console.log(this.form);
        this.addBasicCodeSettingBox = true;
        this.$nextTick(() => {
          this.$refs.addBasicChild.loadCodeSecType();
        })
      },
      // æ–°å¢žåŸºç¡€ç æ®µ
      saveBasicCode(){
        if(this.selectionList[0].oid == null){
      saveOrEditBasicCode(){
        if(this.selectionList[0].oid == null ||  this.selectionList[0].oid == ''){
          this.$message.warning('缺失必要参数,请重新选择编码规则后重试!');
          return;
        }
        this.form.pkCodeRule = this.selectionList[0].oid;
        //console.log(this.form);
        if(this.form.oid == '' || this.form.oid == null){
           addSave(this.form).then(() => {
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            }, error => {
              window.console.log(error);
          });
        }else{
          editSave(this.form).then(() => {
            this.$message({
              type: "success",
              message: "操作成功!"
            });
            }, error => {
              window.console.log(error);
          });
        }
        this.$refs.addBasicChild.addSave(this.selectionList[0].oid);
        // å…³é—­çª—口
        this.addBasicCodeSettingBox = false
        // ç‚¹å‡»æ–°å¢žåŸºç¡€ç æ®µä¹‹åŽå…³é—­çª—口之后触发重新加载
        // ç‚¹å‡»æ–°å¢žåŸºç¡€ç æ®µ,关闭窗口之后触发重新加载
        this.loadBasic(this.selectionList[0]);
      },
      // åˆ¤æ–­æ•°æ®æ˜¯å¦é€‰æ‹©ä»¥åŠåªèƒ½é€‰æ‹©å•条数据
@@ -1060,23 +1961,25 @@
          type: "warning"
        })
        .then(() => {
          let ts = this.selectionBasicList[0].ts;
          let ts = new Date(this.selectionBasicList[0].ts).getTime();
          return deleteData({"oid": oid,"ts": ts});
        })
        .then(() => {
          this.loadBasic({"oid":this.currentCodeRuleOid == null ? this.selectionList[0].oid:this.currentCodeRuleOid});
          this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          //this.$refs.crud.toggleSelection();
          this.$refs.crudBasic.toggleSelection();
        });
      },
      // ç‚¹å‡»è§¦å‘加载基础码段信息
      loadBasic(row){
        this.loadingBasic = true;
        //console.log(row.oid);
        //存储当前关联的编码规则相关信息
        this.currentCodeRuleOid = row.oid;
        this.currentRuleLcStatus = row.lcStatus;
        gridCodeBasicSec(1, -1, {"pkCodeRule":row.oid}).then(res => {
          const data = res.data.data;
          this.basicData = data.records;
@@ -1137,8 +2040,11 @@
      },
      //基础码段查询
      refreshChangeBasicSec(){
        this.loadBasic({"oid":this.currentCodeRuleOid == null ? this.selectionList[0].oid:this.currentCodeRuleOid});
        this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
      },
      /** ç¼–码规则相关方法 */
      // æŸ¥è¯¢ä½¿ç”¨èŒƒå›´
      handleRange(){
        if(!this.tipsMessage(this.selectionList)){
@@ -1147,6 +2053,7 @@
        this.codeRangeSettingBox = true;
        this.getRangeCodeList()
      },
      //加载使用范围列表
      getRangeCodeList(){        
        this.dialogLoading = true;
        if(this.selectionList[0].oid==null){
@@ -1159,8 +2066,15 @@
          this.dialogLoading = false;
        });
      },
      //刷新使用范围列表
      refreshUseRangeChange(){
        this.getRangeCodeList();
      },
      //单击编码规则实现行选择
      codeRuleRowClick (row) {
        //console.log(row);
        this.$refs.crud.toggleRowSelection(row);
        this.loadBasic(row);
      },
      // å¯ç”¨ä¸Žåœç”¨
      enableOrDeactivatse(oId,update){
@@ -1232,7 +2146,7 @@
          .then(() => {
            // åªæ”¯æŒæ¯æ¬¡å•条记录删除
            let oid = this.selectionList[0].oid;
            let ts = this.selectionList[0].ts;
            let ts = new Date(this.selectionList[0].ts).getTime();
            return remove({oid: oid,ts: ts});
          })
          .then(() => {
@@ -1247,8 +2161,8 @@
      // æ‰“开修改
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.oid).then(res => {
            this.form = res.data.data;
          getDetail(this.ruleForm.oid).then(res => {
            this.ruleForm = res.data.data;
          });
        }
        done();
@@ -1262,11 +2176,15 @@
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        done();
      },
      },
      // ç¼–码规则当前选中行变化的时候触发
      selectionChange(list) {
        this.selectionList = list;
        this.$refs.crud.setCurrentRow(this.selectionList [list.length-1]);
        if(this.selectionList.length > 0){
          this.currentCodeRuleOid = this.selectionList [list.length-1];
          this.currentCodeRuleOid = this.selectionList[list.length-1].oid;
          this.currentRuleLcStatus = this.selectionList [list.length-1].lcStatus;
          //console.log(this.currentRuleLcStatus);
          this.loadBasic(this.selectionList[list.length-1]);
        }
      },
@@ -1286,25 +2204,227 @@
      onLoad(page, params = {}) {
        this.loading = true;
        gridCodeRule(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
          //console.log(res);
          //console.log(res.data);
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.loadBasic(data.records[0])
          this.selectionClear();
          this.loadBasic(this.data[0])
          this.$nextTick(() => {
            this.$refs.crud.toggleRowSelection(this.data[0]);
            this.$refs.crud.setCurrentRow(this.data[0]);
          })
          this.selectionList = data.records[0];
          //this.selectionClear();
        });
      }
      },
      /** ç¬¬ä¸€å±‚对话框相关方法 */
      // æ‰“开二层弹窗方法
      openAttrSelectOrGetValue(condition){
        if(condition === 'attr'){
          this.isShowSelectAttrOption = true;
        }else if(condition === 'value'){
          this.isShowformulaEdit = true;
        }else if(condition === 'parentClassifySecOid'){
          this.isShowParentClassifyOption = true;
        }else if(condition === 'referBtmId'){
          this.isShowSelectReferBtmOption = true;
        }else if(condition === 'referConfig'){
          //this.$emit('openSelectreferConfig')
        }
      },
      // ç‚¹å‡»è¾“入框的×号,清空输入框中的内容
      clearAttrDataByIcon(condition){
        if(condition === 'attr'){
          this.form.referAttributeName = '';
          this.form.referAttributeId = '';
          this.form.referCodeClassifyOid = '';
          this.form.referCodeClassifyOidName = '';
        }else if(condition === 'value'){
          this.form.getValueClass = '';
        }else if(condition === 'parentClassifySecOid'){
          this.form.parentClassifySecOid = '';
        }else if(condition === 'referBtmId'){
          this.form.referBtmId = '';
        }else if(condition === 'referConfig'){
          this.form.referBtmId = '';
        }
      },
      // ç æ®µç±»åž‹æ”¹å˜æ—¶ï¼Œå¢žåŠ å¯¹åº”çš„form表单中的属性
      changeSectypeFormItems(row){
        console.log(row);
        if(this.sectypeList.length==0){
          this.loadCodeSecType();
        }
        if(row != null){
          this.form = {};
          this.form = Object.assign({},this.form,{
              oid: row.oid,
              id: row.id, //编号,
              name: row.name,//名称
              secType: row.secType,//码段类型
              description: row.description,//描述
              serialDependFlag: row.serialDependFlag=='true' ?  true:false,//是否流水依赖
              serialDependOrder: row.serialDependOrder,//流水依赖顺序
              nullableFlag: row.nullableFlag=='true' ?  true:false,//是否为空
              displayFlag: row.displayFlag=='true' ?  true:false,
              componentCodeFlag: row.componentCodeFlag=='true' ?  true:false,//是否参与编码
              pkCodeRule: row.pkCodeRule, //所属编码规则
            }
          );
        }else {
          this.form = {
            oid: this.form.oid,
            id: this.form.id, //编号
            name: this.form.name, //名称
            secType: this.form.secType, //码段类型
            description: this.form.description, //描述
            serialDependFlag:  this.form.serialDependFlag, //是否流水依赖
            serialDependOrder: this.form.serialDependOrder, //流水依赖顺序
            nullableFlag:  this.form.nullableFlag, //是否为空
            displayFlag:  this.form.displayFlag, //
            componentCodeFlag:  this.form.componentCodeFlag, //是否参与编码
            pkCodeRule: this.form.pkCodeRule, //所属编码规则
          };
          //console.log(this.form);
        }
        if(this.form.secType==='codefixedsec'){
          //固定码段
          this.form = Object.assign({}, this.form,{
            codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',
            codeSecLengthType: row!=null&&row.codeSecLengthType != '' ? row.codeSecLengthType:'code_sec_length_variable'
          });
          this.loadCodeSecLength();
        }else if(this.form.secType==='codeattrsec'){
          //属性码段
          this.form = Object.assign({}, this.form, {
            referCodeClassifyOid: row!=null&&row.referCodeClassifyOid != '' ? row.referCodeClassifyOid:'',     //属性id
            referCodeClassifyOidName: row!=null&&row.referCodeClassifyOidName != '' ? row.referCodeClassifyOidName:'', //属性所在分类
            referAttributeId: row!=null&&row.referAttributeId != '' ? row.referAttributeId:'',    //属性编号
            referAttributeName: row!=null&&row.referAttributeName != '' ? row.referAttributeName:'',   //属性
            getValueClass: row!=null&&row.getValueClass != '' ? row.getValueClass:''         //取值规则
          });
        }else if(this.form.secType==='codeserialsec'){
          //流水码段
          this.form = Object.assign({}, this.form,{
            codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'', //码段的长度
            serialStart: row!=null&&row.serialStart != '' ? row.serialStart:'1',  //流水号起始值
            serialStep: row!=null&&row.serialStep != '' ? row.serialStep:'1',   //流水的步长
            codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码补位方式
            codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:'0',    //补位时的字符,选中的下拉框的下标
            codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:'0',          //补位时的字符
            codeFillLength: row!=null&&row.codeFillLength != '' ? row.codeFillLength:'',              //填充长度
            codeFillLimit: row!=null&&row.codeFillLimit != '' ? row.codeFillLimit:'',               //流水上限
            codeFillFlag: row!=null&&row.codeFillFlag != '' ? row.codeFillFlag=='true' ?  true:false :false,      //流水是否补码
            customCodeSerialClass: row!=null&&row.customCodeSerialClass != '' ? row.customCodeSerialClass:'',     //自定义流水算法
          });
          this.loadCodeFillType();
          this.loadCodeFillSeparator();
        }else if(this.form.secType==='codelevelsec'){
          //层级码段
          this.form = Object.assign({}, this.form,{
            codeLevelType: row!=null&&row.codeLevelType != '' ? row.codeLevelType:'code_level_min',     //层级类型  æžšä¸¾æŸ¥è¯¢
            codeLevelValue: row!=null&&row.codeLevelValue != '' ? row.codeLevelValue:'',    //层级的值
            valueCutType: row!=null&&row.valueCutType != '' ? row.valueCutType:'code_cut_none',      //字符截取类型 æžšä¸¾æŸ¥è¯¢
            valueCutLength: row!=null&&row.valueCutLength != '' ? row.valueCutLength:'',    //
            codeGetValueType: row!=null&&row.codeGetValueType != '' ? row.codeGetValueType:'code_get_value_all_up',  //取值类型 æžšä¸¾æŸ¥è¯¢
          });
          this.loadCodeLevelType();
          this.loadCodeCutType();
          this.loadCodeGetValueType();
        }else if(this.form.secType==='coderefersec'){
          //引用码段
          this.form = Object.assign({}, this.form,{
            referBtmId: row!=null&&row.referBtmId != '' ? row.referBtmId:'',   //参照引用的业务类型,的id
            referBtmName: row!=null&&row.referBtmName != '' ? row.referBtmName:'', //参照引用的业务类型
            referConfig: row!=null&&row.referConfig != '' ? row.referConfig:'',  //参照配置
          });
        }else if(this.form.secType==='codedatesec'){
          //日期码段
          this.form = Object.assign({}, this.form,{
            codeDateFormatStr:  row!=null&&row.codeDateFormatStr != '' ? row.codeDateFormatStr:'',   //日期格式
          });
        }else if(this.form.secType==='codeclassifysec'){
          //分类码段
          this.form = Object.assign({}, this.form,{
            codeSecLengthType: row!=null&&row.codeSecLengthType != '' ? row.codeSecLengthType:'code_sec_length_variable',    //码段长度类型
            codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',  //码段的长度
            matchClassifyValueFlag: row!=null&&row.matchClassifyValueFlag != '' ? row.matchClassifyValueFlag=='true' ?  true:false :false,  //是否自动匹配值
            parentClassifySecOid: row!=null&&row.parentClassifySecOid != '' ? row.parentClassifySecOid:'',    //父分类码段选中的id
            parentClassifySecText: row!=null&&row.parentClassifySecText != '' ? row.parentClassifySecText:'',  //父分类码段
          });
          this.loadCodeSecLength();
        }else if(this.form.secType==='codevariablesec'){
          //可变码段
          this.form = Object.assign({}, this.form,{
            codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',             //码段的长度
            codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码部位方式,枚举查询
            codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:'0',  //选中的补位时的字符的下标
            codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:'', //补位时的字符,可输可选查询
          });
          this.loadCodeFillType();
          this.loadCodeFillSeparator();
        }
        //console.log(this.form);
      },
      //枚举和可输可选内容查询
      loadCodeSecType(){
        getDictionary({code: "codeBasicSecType"}).then(res=>{
          this.sectypeList = res.data.data;
        })
        this.loadCodeSecLength();
        //console.log(this.sectypeList);
      },
      loadCodeSecLength(){
        getDictionary({code: "codeSecLength"}).then(res=>{
          this.codeSecLengthType = res.data.data;
        })
      },
      loadCodeFillType(){
        getDictionary({code: "codeFillType"}).then(res=>{
          this.codeFillType = res.data.data;
        })
      },
      loadCodeFillSeparator(){
        getDictionary({code: "codeFillSeparator"}).then(res=>{
          this.codeFillSeparator = res.data.data;
        })
      },
      loadCodeLevelType(){
        getDictionary({code: "codeLevelType"}).then(res=>{
          this.codeLevelType = res.data.data;
        })
      },
      loadCodeCutType(){
        getDictionary({code: "codeCutType"}).then(res=>{
          this.codeCutType = res.data.data;
        })
      },
      loadCodeGetValueType(){
        getDictionary({code: "codeGetValueType"}).then(res=>{
          this.codeGetValueType = res.data.data;
          //console.log(this.codeGetValueType);
        })
      },
    }
};
</script>
<style>
  .el-divider--horizontal {
      margin-top: 19px !important;
      margin-bottom: -20px !important;
      height: 2px;
      margin: 0;
      position: fixed;
      width: 57.5vw;
  }
  .el-card__body > .abox {
@@ -1319,8 +2439,79 @@
    width:60px;
  }
  .formula-editor{
  .el-input-number {
    width: 120px;
  }
  .el-input-number >.el-input > .el-input__inner {
    width:120px;
  }
  .formula-editor{
    margin-top: -15px;
    margin-left: 2vw;
    /*设置弹性盒子*/
    display: flex;
    /*子元素以竖列排列,一共有6列*/
    flex-direction:column;
    width: 360px;
    height: 285px;
    /*左右均匀排列*/
    justify-content: space-around;
    /*上下均匀排列*/
    align-items: center;
  }
  .one{
    display: flex;
    /*以行排列*/
    flex-direction: row;
    width: 296px;
    height: 60px;
    justify-content: space-between;
    align-items: center;
    }
  .formula-editor-btn-sm {
    width: 72px;
    height: 45px;
    background: rgb(153, 214, 240);
    border-radius: 10%;
  }
  .el-col>.el-card > .el-card__header {
    background: rgb(213 231 239);
    border-radius: inherit;
  }
  /** æ–°å¢žç æ®µ */
  .total{
    height: 500px;
    width: 100%;
  }
  .total .el-input__inner,.total .el-textarea__inner {
    width: 220px;
  }
  .el-divider--vertical {
    width: 2px;
    height: 72vh;
    margin: 0 5px;
    position: fixed;
  }
 .left {
    float: left;
    width: 49%;
 }
 .right {
    float: right;
    margin-right: 2.5vw;
    /* width: 40%; */
 }
 .right > .el-form > .el-form-item{
    margin-bottom: 8px;
 }
</style>
Source/UBCS-WEB/vue.config.js
@@ -26,8 +26,8 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        //target: 'http://localhost:37000',
        target: 'http://dev.vci-tech.com:37000',
        target: 'http://localhost:37000',
        //target: 'http://dev.vci-tech.com:37000',
        //远程演示服务地址,可用于直接启动项目
        //target: 'https://saber.bladex.vip/api',
        ws: true,
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,233 @@
/*
 *      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.common.constant;
import org.springblade.core.launch.constant.AppConstant;
import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
/**
 * å¯åŠ¨å¸¸é‡
 *
 * @author Chill
 */
public interface LauncherConstant {
    /**
     * xxljob
     */
    String APPLICATION_XXLJOB_NAME = APPLICATION_NAME_PREFIX + "xxljob";
    /**
     * xxljob
     */
    String APPLICATION_XXLJOB_ADMIN_NAME = APPLICATION_NAME_PREFIX + "xxljob-admin";
    /**
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "192.168.93.167:38848";
    /**
     * nacos prod åœ°å€
     */
    //String NACOS_PROD_ADDR = "dev.vci-tech.com:38848";
    String NACOS_PROD_ADDR = "192.168.93.129:38848";
    /**
     * nacos test åœ°å€
     */
    //String NACOS_TEST_ADDR = "dev.vci-tech.com:38848";
    String NACOS_TEST_ADDR = "192.168.93.133:38848";
    /**
     * sentinel dev åœ°å€
     */
    //String SENTINEL_DEV_ADDR = "127.0.0.1:8858";
    /**
     * sentinel prod åœ°å€
     */
    //String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
    /**
     * sentinel test åœ°å€
     */
    //String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
    /**
     * seata dev åœ°å€
     */
    String SEATA_DEV_ADDR = "127.0.0.1:8091";
    /**
     * seata prod åœ°å€
     */
    String SEATA_PROD_ADDR = "172.30.0.68:8091";
    /**
     * seata test åœ°å€
     */
    String SEATA_TEST_ADDR = "172.30.0.68:8091";
    /**
     * zipkin dev åœ°å€
     */
    String ZIPKIN_DEV_ADDR = "http://dev.vci-tech.com:38006";
    /**
     * zipkin prod åœ°å€
     */
    String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
    /**
     * zipkin test åœ°å€
     */
    String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
    /**
     * elk dev åœ°å€
     */
    String ELK_DEV_ADDR = "dev.vci-tech.com:38002";
    /**
     * elk prod åœ°å€
     */
    String ELK_PROD_ADDR = "dev.vci-tech.com:38002";
    /**
     * elk test åœ°å€
     */
    String ELK_TEST_ADDR = "dev.vci-tech.com:38002";
    /**
     * seata file模式
     */
    String FILE_MODE = "file";
    /**
     * seata nacos模式
     */
    String NACOS_MODE = "nacos";
    /**
     * seata default模式
     */
    String DEFAULT_MODE = "default";
    /**
     * seata group后缀
     */
    String GROUP_NAME = "-group";
    /**
     * seata æœåŠ¡ç»„æ ¼å¼
     *
     * @param appName æœåŠ¡å
     * @return group
     */
    static String seataServiceGroup(String appName) {
        return appName.concat(GROUP_NAME);
    }
    /**
     * åŠ¨æ€èŽ·å–nacos地址
     *
     * @param profile çŽ¯å¢ƒå˜é‡
     * @return addr
     */
    static String nacosAddr(String profile) {
        switch (profile) {
            case (AppConstant.PROD_CODE):
                return NACOS_PROD_ADDR;
            case (AppConstant.TEST_CODE):
                return NACOS_TEST_ADDR;
            default:
                return NACOS_DEV_ADDR;
        }
    }
    /**
     * åŠ¨æ€èŽ·å–sentinel地址
     *
     * @param profile çŽ¯å¢ƒå˜é‡
     * @return addr
     */
/*    static String sentinelAddr(String profile) {
        switch (profile) {
            case (AppConstant.PROD_CODE):
                return SENTINEL_PROD_ADDR;
            case (AppConstant.TEST_CODE):
                return SENTINEL_TEST_ADDR;
            default:
                return SENTINEL_DEV_ADDR;
        }
    }*/
    /**
     * åŠ¨æ€èŽ·å–seata地址
     *
     * @param profile çŽ¯å¢ƒå˜é‡
     * @return addr
     */
    static String seataAddr(String profile) {
        switch (profile) {
            case (AppConstant.PROD_CODE):
                return SEATA_PROD_ADDR;
            case (AppConstant.TEST_CODE):
                return SEATA_TEST_ADDR;
            default:
                return SEATA_DEV_ADDR;
        }
    }
    /**
     * åŠ¨æ€èŽ·å–zipkin地址
     *
     * @param profile çŽ¯å¢ƒå˜é‡
     * @return addr
     */
    static String zipkinAddr(String profile) {
        switch (profile) {
            case (AppConstant.PROD_CODE):
                return ZIPKIN_PROD_ADDR;
            case (AppConstant.TEST_CODE):
                return ZIPKIN_TEST_ADDR;
            default:
                return ZIPKIN_DEV_ADDR;
        }
    }
    /**
     * åŠ¨æ€èŽ·å–elk地址
     *
     * @param profile çŽ¯å¢ƒå˜é‡
     * @return addr
     */
    static String elkAddr(String profile) {
        switch (profile) {
            case (AppConstant.PROD_CODE):
                return ELK_PROD_ADDR;
            case (AppConstant.TEST_CODE):
                return ELK_TEST_ADDR;
            default:
                return ELK_DEV_ADDR;
        }
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
@@ -78,6 +78,13 @@
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <packaging>jar</packaging>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/TreeWrapperOptions.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
@@ -19,12 +19,12 @@
    /**
     * ç æ®µç±»åž‹
     */
    private String sectype;
    private String secType;
    /**
     * ç æ®µç±»åž‹æ˜¾ç¤ºæ–‡æœ¬
     */
    private String sectypeText;
    private String secTypeText;
    /**
     * ç¼–码规则主键
@@ -243,23 +243,23 @@
    /**
     * èŽ·å– ç æ®µç±»åž‹
     */
    public String getSectype (){
        return sectype;
    public String getSecType (){
        return secType;
    }
    /**
     * è®¾ç½® ç æ®µç±»åž‹
     */
    public void setSectype (String sectype){
        this.sectype = sectype;
    public void setSecType (String sectype){
        this.secType = sectype;
    }
    public String getSectypeText() {
        return sectypeText;
    public String getSecTypeText() {
        return secTypeText;
    }
    public void setSectypeText(String sectypeText) {
        this.sectypeText = sectypeText;
    public void setSecTypeText(String secTypeText) {
        this.secTypeText = secTypeText;
    }
    /**
@@ -620,8 +620,8 @@
    @Override
    public String toString() {
        return "CodeBasicSecDTO{" +
                "sectype='" + sectype + '\'' +
                ", sectypeText='" + sectypeText + '\'' +
                "sectype='" + secType + '\'' +
                ", secTypeText='" + secTypeText + '\'' +
                ", pkCodeRule='" + pkCodeRule + '\'' +
                ", orderNum=" + orderNum +
                ", referBtmId='" + referBtmId + '\'' +
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeFixedValueDTO.java
@@ -6,7 +6,7 @@
/**
 * å›ºå®šç æ®µçš„码值数据传输对象
 *
 * @author weidy
 * @author ludc
 * @date 2022-01-24
 */
public class CodeFixedValueDTO extends BaseModelVO {
@@ -19,7 +19,7 @@
    /**
     * å›ºå®šç æ®µä¸»é”®
     */
    private String codefixedsecoid;
    private String codeFixedSecOid;
    /**
     * å›ºå®šç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
@@ -28,21 +28,21 @@
    /**
     * ç å€¼åºå·
     */
    private Integer ordernum;
    private Integer orderNum;
    /**
     * èŽ·å– å›ºå®šç æ®µä¸»é”®
     */
    public String getCodefixedsecoid (){
        return codefixedsecoid;
    public String getCodeFixedSecOid (){
        return codeFixedSecOid;
    }
    /**
     * è®¾ç½® å›ºå®šç æ®µä¸»é”®
     */
    public void setCodefixedsecoid (String codefixedsecoid){
        this.codefixedsecoid = codefixedsecoid;
    public void setCodeFixedSecOid (String codeFixedSecOid){
        this.codeFixedSecOid = codeFixedSecOid;
    }
    /**
@@ -61,24 +61,24 @@
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    public Integer getOrderNum (){
        return orderNum;
    }
    /**
     * è®¾ç½® ç å€¼åºå·
     */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    public void setOrderNum (Integer ordernum){
        this.orderNum = ordernum;
    }
    @Override
    public String toString() {
        return "CodeFixedValueDTO{" +
        "codefixedsecoid='" + codefixedsecoid +"',"+
        "codeFixedSecOid='" + codeFixedSecOid +"',"+
        "codefixedsecoidName='" + codefixedsecoidName +"'," +
        "ordernum='" + ordernum +"',"+
        "orderNum='" + orderNum +"',"+
        "}" + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.dto;
import com.vci.web.dto.BaseModelDTO;
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
import java.util.List;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingDataDTO.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.entity.BaseModel;
import com.vci.ubcs.starter.revision.model.BaseModel;
/**
 * è¦æŽ¨é€å¾—数据
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/PreApplyCodeOrderDTO.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.dto;
import com.vci.web.dto.BaseModelDTO;
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
import java.util.List;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/BaseModelDTO.java
@@ -1,7 +1,7 @@
package com.vci.web.dto;
package com.vci.ubcs.code.dto.datapush;
import com.vci.ubcs.code.entity.BaseModel;
import com.vci.ubcs.starter.revision.model.BaseModel;
import java.util.ArrayList;
import java.util.HashMap;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/BaseModel.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeAllCode.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java
@@ -2,10 +2,9 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.com.vci.starter.annotation.Transient;
import com.vci.ubcs.com.vci.starter.web.annotation.VciUseEnum;
import com.vci.ubcs.com.vci.starter.web.constant.EnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.annotation.Transient;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -20,7 +19,7 @@
@TableName("PL_CODE_BASICSEC")
@ApiModel(value = "CodeBasicSec对象", description = "码段基础信息")
@EqualsAndHashCode(callSuper = true)
public class CodeBasicSec extends BaseModel{
public class CodeBasicSec extends BaseModel {
    /**
     * åºåˆ—化
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
@@ -2,7 +2,8 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.com.vci.starter.annotation.Transient;
import com.vci.ubcs.starter.annotation.Transient;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java
@@ -17,12 +17,12 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * ç¼–码库定义-模板流程 å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java
@@ -17,12 +17,11 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * ç¼–码库定义-模板属性 å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstemplateEntity.java
@@ -17,7 +17,8 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.com.vci.starter.annotation.Transient;
import com.vci.ubcs.starter.annotation.Transient;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsattributeEntity.java
@@ -17,12 +17,11 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * å±žæ€§æ˜¾ç¤ºå¯¹è±¡ å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsbtmtypeEntity.java
@@ -17,6 +17,7 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -32,7 +33,7 @@
@TableName("PL_CODE_OSBTMTYPE")
@ApiModel(value = "PLCodeOsbtmtype对象", description = "业务类型")
@EqualsAndHashCode(callSuper = true)
public class CodeOsbtmtypeEntity  extends BaseModel  {
public class CodeOsbtmtypeEntity  extends BaseModel {
    /**
     * åºåˆ—化
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java
@@ -17,12 +17,11 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * ç¼–码库定义-模板阶段-属性 å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java
@@ -17,6 +17,7 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSerialValue.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java
@@ -17,12 +17,11 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * ç¼–码库定义-模板按钮扩展 å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java
@@ -17,12 +17,11 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * ç¼–码库定义-模板阶段 å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java
@@ -1,6 +1,6 @@
package com.vci.ubcs.code.po;
import com.vci.ubcs.com.vci.starter.poi.annotation.ExcelColumn;
import com.vci.ubcs.starter.poi.annotation.ExcelColumn;
/**
 * ä¸»é¢˜åº“分类的导入导出对象
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
@@ -350,8 +350,8 @@
    /**
    * è®¾ç½® ç æ®µç±»åž‹
    */
    public void setSecType (String sectype){
        this.secType = sectype;
    public void setSecType (String secType){
        this.secType = secType;
    }
    public String getSecTypeText() {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java
@@ -18,7 +18,7 @@
    /**
    * å›ºå®šç æ®µä¸»é”®
    */
    private String codefixedsecoid;
    private String codeFixedSecOid;
    /**
    * å›ºå®šç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
@@ -28,22 +28,22 @@
    /**
    * ç å€¼åºå·
    */
    private Integer ordernum;
    private Integer orderNum;
    /**
     * èŽ·å– å›ºå®šç æ®µä¸»é”®
     */
    public String getCodefixedsecoid (){
        return codefixedsecoid;
    public String getCodeFixedSecOid (){
        return codeFixedSecOid;
    }
    /**
    * è®¾ç½® å›ºå®šç æ®µä¸»é”®
    */
    public void setCodefixedsecoid (String codefixedsecoid){
        this.codefixedsecoid = codefixedsecoid;
    public void setCodeFixedSecOid (String codefixedsecoid){
        this.codeFixedSecOid = codefixedsecoid;
    }
    /**
     * èŽ·å–å›ºå®šç æ®µä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
@@ -61,23 +61,23 @@
    /**
     * èŽ·å– ç å€¼åºå·
     */
    public Integer getOrdernum (){
        return ordernum;
    public Integer getOrderNum (){
        return orderNum;
    }
    /**
    * è®¾ç½® ç å€¼åºå·
    */
    public void setOrdernum (Integer ordernum){
        this.ordernum = ordernum;
    public void setOrderNum (Integer orderNum){
        this.orderNum = orderNum;
    }
    @Override
    public String toString() {
        return "CodeFixedValueVO{" +
        "codefixedsecoid='" + codefixedsecoid +"'," +
        "codeFixedSecOid='" + codeFixedSecOid +"'," +
        "codefixedsecoidName='" + codefixedsecoidName +"'," +
        "ordernum='" + ordernum +"'," +
        "orderNum='" + orderNum +"'," +
        "}" + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingDataVO.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.entity.BaseModel;
import com.vci.ubcs.starter.revision.model.BaseModel;
/**
 * è¦æŽ¨é€å¾—数据
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/TreeQueryObject.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/TreeWrapperOptions.java
@@ -115,6 +115,7 @@
        this.oidValueSep = oidValueSep;
    }
    @Override
    public String toString() {
        return "TreeWrapperOptions{textFieldName='" + this.textFieldName + '\'' + ", textValueSep='" + this.textValueSep + '\'' + ", parentFieldName='" + this.parentFieldName + '\'' + ", oidFieldName='" + this.oidFieldName + '\'' + ", oidValueSep='" + this.oidValueSep + '\'' + ", allAttributes=" + this.allAttributes + ", parentOid='" + this.parentOid + '\'' + ", multipleSelect=" + this.multipleSelect + ", showCheckBox=" + this.showCheckBox + '}';
    }
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
@@ -1,10 +1,4 @@
package com.vci.ubcs.starter.revision.service;
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
//package com.vci.starter.revision.service;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -23,11 +23,17 @@
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-ddl</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.vci.ubcs</groupId>-->
<!--            <artifactId>ubcs-ddl</artifactId>-->
<!--            <version>3.0.1.RELEASE</version>-->
<!--            <exclusions>-->
<!--                <exclusion>-->
<!--                    <groupId>com.vci</groupId>-->
<!--                    <artifactId>vci-starter-word</artifactId>-->
<!--                </exclusion>-->
<!--            </exclusions>-->
<!--        </dependency>-->
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-omd-api</artifactId>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
@@ -7,8 +7,8 @@
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.wrapper.CodeBasicSecWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.mp.support.Condition;
@@ -158,7 +158,7 @@
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "参数分类码段基础信息列表", notes = "codeBasicSecVO")
    public R<IPage<CodeBasicSecVO>> refDataGridClassifySec(CodeBasicSecVO codeBasicSecVO, Query query){
        return R.data(codeBasicSecService.refDataGridClassifySec(Condition.getPage(query), codeBasicSecVO));
        return R.data(codeBasicSecService.refDataGridClassifySec(Condition.getPage(query.setAscs("ordernum")), codeBasicSecVO));
    }
    /**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
@@ -24,15 +24,15 @@
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.vo.CodeOsattributeVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
import com.vci.ubcs.com.vci.starter.util.LocalFileUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.com.vci.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.util.ControllerUtil;
import com.vci.ubcs.com.vci.starter.web.util.LangBaseUtil;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.ControllerUtil;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyValueController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
package com.vci.ubcs.code.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.service.ICodeClassifyValueService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * åˆ†ç±»ç æ®µçš„码值控制器
 *
 * @author weidy
 * @date 2022-01-24
 */
@RestController
@RequestMapping("/codeClassifyValueController")
public class CodeClassifyValueController {
    /**
    * åˆ†ç±»ç æ®µçš„码值 æœåŠ¡
    */
    @Autowired
    private ICodeClassifyValueService codeClassifyValueService;
    /**
     * åˆ†ç±»ç æ®µçš„码值树
     * @param treeQueryObject æ ‘形查询对象
     * @return åˆ†ç±»ç æ®µçš„码值显示树
     */
    @GetMapping("/treeCodeClassifyValue")
    public List<Tree> treeCodeClassifyValue(TreeQueryObject treeQueryObject)  {
        return  codeClassifyValueService.treeCodeClassifyValue(treeQueryObject);
    }
    /**
     * å¢žåŠ  åˆ†ç±»ç æ®µçš„码值
     * @param codeClassifyValueDTO åˆ†ç±»ç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public R<CodeClassifyValueVO> addSave(@RequestBody CodeClassifyValueDTO codeClassifyValueDTO){
        return R.status(codeClassifyValueService.addSave(codeClassifyValueDTO));
    }
    /**
     * ä¿®æ”¹ åˆ†ç±»ç æ®µçš„码值
     * @param codeClassifyValueDTO åˆ†ç±»ç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R<CodeClassifyValueVO> editSave(@RequestBody CodeClassifyValueDTO codeClassifyValueDTO){
        return R.status(codeClassifyValueService.editSave(codeClassifyValueDTO));
    }
    /**
    * æ£€æŸ¥ åˆ†ç±»ç æ®µçš„码值是否删除
    * @param codeClassifyValueDTO åˆ†ç±»ç æ®µçš„码值数据传输对象,必须要有oid和ts属性
    * @return æ‰§è¡Œç»“æžœ success为true为可以删除,false表示有数据引用,obj为true表示有下级
    */
    @PostMapping( "/checkIsCanDelete")
    public R checkIsCanDelete( CodeClassifyValueDTO codeClassifyValueDTO)  {
        return codeClassifyValueService.checkIsCanDelete(codeClassifyValueDTO);
    }
    /**
     * åˆ é™¤åˆ†ç±»ç æ®µçš„码值
     * @param codeClassifyValueDTO åˆ†ç±»ç æ®µçš„码值数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delCodeClassifyValue( CodeClassifyValueDTO codeClassifyValueDTO) {
        return codeClassifyValueService.deleteCodeClassifyValue(codeClassifyValueDTO);
    }
    /**
    * ä¸»é”®èŽ·å–åˆ†ç±»ç æ®µçš„ç å€¼
    * @param oid ä¸»é”®
    * @return åˆ†ç±»ç æ®µçš„码值显示对象
    */
    @GetMapping("/getObjectByOid")
    public R<CodeClassifyValueVO> getObjectByOid(String oid){
        CodeClassifyValueVO codeClassifyValueVO = codeClassifyValueService.getObjectByOid(oid);
        return R.data(codeClassifyValueVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–åˆ†ç±»ç æ®µçš„ç å€¼
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return åˆ†ç±»ç æ®µçš„码值显示对象
     */
    @GetMapping("/listDataByOids")
    public R<Collection<CodeClassifyValueVO>> listCodeClassifyValueByOids(String oids){
        Collection<CodeClassifyValueVO> voCollection =  codeClassifyValueService.listCodeClassifyValueByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
    * å‚ç…§æ ‘ åˆ†ç±»ç æ®µçš„码值
    * @param treeQueryObject æ ‘形查询对象
    * @return åˆ†ç±»ç æ®µçš„码值显示树
    */
    @GetMapping("/referTree")
        public List<Tree> referTree(TreeQueryObject treeQueryObject)  {
        return codeClassifyValueService.referTree(treeQueryObject);
    }
    /**
     * ä¿å­˜é¡µé¢ä¸Šçš„分类码段码值,主要是保存序号用于排序。如果数据库中存在页面传输对象集合中不存在的值,则删除。
     * @param param å‚数,包括dtoList é¡µé¢ä¼ è¾“对象集合 å’Œcodeclassifysecoid åˆ†ç±»ç æ®µä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/saveOrder")
    public R saveOrder(@RequestBody Map<String,Object> param){
        JSONArray json = JSONArray.parseArray(String.valueOf(param.get("dtoList")));
        List<CodeClassifyValueDTO> dtoList = new ArrayList<>();
        for (int i = 0; i < json.size(); i++) {
            CodeClassifyValueDTO codeFixedValueDTO = JSONObject.toJavaObject(JSONObject.parseObject(JSONObject.toJSONString(json.get(i))), CodeClassifyValueDTO.class);
            dtoList.add(codeFixedValueDTO);
        }
        String codeclassifysecoid = (String) param.get("codeclassifysecoid");
        VciBaseUtil.alertNotNull(dtoList,"码值集合");
        if (CollectionUtils.isEmpty(dtoList)){
            return R.success("");
        }
        return codeClassifyValueService.batchSave4Order(dtoList,codeclassifysecoid);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java
@@ -25,10 +25,10 @@
import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
import com.vci.ubcs.code.service.ICodeClstemplateService;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.code.wrapper.PlCodeClstemplateWrapper;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -210,7 +210,7 @@
    /**
     * å¯ç”¨
     * @param codeClstemplateEntity oid
     * @param codeClstemplateDTO oid
     * @return
     */
    @PostMapping( "/enableData")
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
package com.vci.ubcs.code.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.CodeFixedValueDTO;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.service.ICodeFixedValueService;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * å›ºå®šç æ®µçš„码值控制器
 *
 * @author ludc
 * @date 2022-01-24
 */
@RestController
@RequestMapping("/codeFixedValueController")
@Api(value = "固定码段的码值控制器", tags = "固定码段的码值控制器")
public class CodeFixedValueController {
    /**
    * å›ºå®šç æ®µçš„码值 æœåŠ¡
    */
    @Autowired
    private ICodeFixedValueService codeFixedValueService;
    /**
     * å›ºå®šç æ®µçš„码值列表
     * @param codeFixedValueVO query åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return å›ºå®šç æ®µçš„码值显示对象列表
     */
    @GetMapping("/gridCodeFixedValue")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "分页 ç æ®µåŸºç¡€ä¿¡æ¯åˆ—表", notes = "CodeFixedValueVO")
    public R<IPage<CodeFixedValueVO>> gridCodeFixedValue(CodeFixedValueVO codeFixedValueVO, Query query){
        return R.data(codeFixedValueService.gridCodeFixedValue(codeFixedValueVO, Condition.getPage(query.setAscs("ordernum"))));
    }
    /**
     * å¢žåŠ  å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public R addSave(@RequestBody CodeFixedValueDTO codeFixedValueDTO){
         boolean resBoolean = codeFixedValueService.addSave(codeFixedValueDTO);
         return R.status(resBoolean);
    }
    /**
     * ä¿®æ”¹ å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R editSave(@RequestBody CodeFixedValueDTO codeFixedValueDTO){
        boolean resBoolean = codeFixedValueService.editSave(codeFixedValueDTO);
        return R.status(resBoolean);
    }
    /**
     * åˆ é™¤å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delCodeFixedValue(@RequestBody CodeFixedValueDTO codeFixedValueDTO) {
        return codeFixedValueService.deleteCodeFixedValue(codeFixedValueDTO);
    }
    /**
    * ä¸»é”®èŽ·å–å›ºå®šç æ®µçš„ç å€¼
    * @param oid ä¸»é”®
    * @return å›ºå®šç æ®µçš„码值显示对象
    */
    @GetMapping("/getObjectByOid")
    public R<CodeFixedValueVO> getObjectByOid(String oid){
        CodeFixedValueVO codeFixedValueVO = codeFixedValueService.getObjectByOid(oid);
        return R.data(codeFixedValueVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–å›ºå®šç æ®µçš„ç å€¼
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return å›ºå®šç æ®µçš„码值显示对象
     */
    @GetMapping("/listDataByOids")
    public R<Collection<CodeFixedValueVO>> listCodeFixedValueByOids(String oids){
        Collection<CodeFixedValueVO> voCollection =  codeFixedValueService.listCodeFixedValueByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
     * å‚照固定码段的码值列表
     * @param codeFixedValueVO query åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return å›ºå®šç æ®µçš„码值显示对象列表,生效的内容
     */
    @GetMapping("/refDataGrid")
    public R<IPage<CodeFixedValueVO>> refDataGridCodeFixedValue(CodeFixedValueVO codeFixedValueVO, Query query){
        return R.data(codeFixedValueService.refDataGridCodeFixedValue(codeFixedValueVO,Condition.getPage(query.setAscs("ordernum"))));
    }
    /**
     * æ‰¹é‡æ·»åŠ å›ºå®šç æ®µçš„ç å€¼ï¼Œå¦‚æžœä¿å­˜çš„é›†åˆä¸­ä¸å­˜åœ¨å·²åœ¨æ•°æ®åº“ä¸­çš„ç å€¼åˆ™åˆ é™¤ã€‚ä¸»è¦æ˜¯ä¿å­˜ç å€¼çš„åºå·
     * @param param å‚数,包括dtoList é¡µé¢ä¼ è¾“对象集合 codefixedsecoid å›ºå®šç æ®µä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/saveOrder")
    public R batchSave4Order(@RequestBody Map<String,Object> param){
        JSONArray json = JSONArray.parseArray(String.valueOf(param.get("dtoList")));
        List<CodeFixedValueDTO> dtoList = new ArrayList<>();
        for (int i = 0; i < json.size(); i++) {
            CodeFixedValueDTO codeFixedValueDTO = JSONObject.toJavaObject(JSONObject.parseObject(JSONObject.toJSONString(json.get(i))), CodeFixedValueDTO.class);
            dtoList.add(codeFixedValueDTO);
        }
        String codefixedsecoid = (String) param.get("codeFixedSecOid");
        VciBaseUtil.alertNotNull(dtoList,"码值对象集合",codefixedsecoid,"固定码段的主键");
        if (CollectionUtils.isEmpty(dtoList)){
            return R.status(codeFixedValueService.batchDeleteBySecOid(codefixedsecoid));
        }
        return codeFixedValueService.batchSave4Order(dtoList,codefixedsecoid);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
@@ -24,7 +24,8 @@
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeButtonUseEnum.java
@@ -1,9 +1,12 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * æ¨¡æ¿çš„æŒ‰é’®ç”¨é€”
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyProcessUseEnum.java
@@ -1,8 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * åˆ†ç±»çš„æµç¨‹çš„用途
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeCutTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * æˆªå–类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeGetValueTypeEnum.java
@@ -1,10 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * å–值类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeLevelTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * å±‚级码段的层级类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeMapRuleTypeEnum.java
@@ -1,10 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * æ˜ å°„规则类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecLengthTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * ç æ®µé•¿åº¦æŽ§åˆ¶ç±»åž‹
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java
@@ -1,8 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * ç æ®µçš„类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeUseButtonPositionTypeEnum.java
@@ -1,8 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * æŒ‰é’®ä½¿ç”¨ä½ç½®
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationAuthorityTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * Description: ç³»ç»Ÿé›†æˆéªŒè¯æ–¹å¼
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java
@@ -1,7 +1,7 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * Description:数据流向方式
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * Description: ç³»ç»Ÿé›†æˆæŽ¥å£å‚数与返回值类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestMethodEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * Description:系统集成接口请求方式类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * Description:系统集成接口的类型
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
import com.vci.ubcs.com.vci.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_PUSH_TYPE,text = "系统接口推送方式",description = "")
public enum sysIntegrationPushTypeEnum implements BaseEnum {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java
@@ -1,8 +1,9 @@
package com.vci.ubcs.code.lifecycle;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * ç¼–码规则的生命周期
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeFixedValueMapper.java
@@ -1,7 +1,14 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Page;
import java.util.Collection;
import java.util.List;
/**
 * å›ºå®šç æ®µçš„码值数据操作层
@@ -11,5 +18,20 @@
 */
public interface CodeFixedValueMapper extends BaseMapper<CodeFixedValue> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µæŸ¥è¯¢
     * @param codeFixedValueVO
     * @param page
     * @return
     */
    List<CodeFixedValue> selectByPage(@Param("codeFixedValueVO") CodeFixedValueVO codeFixedValueVO, IPage<CodeFixedValueVO> page);
    /**
     * å¤šæ¡codefixedsecoid的分页查询
     * @return
     */
    List<CodeFixedValue> selectByPageByCodeFixedSecOid(@Param("secOids") Collection<String> secOids, IPage<CodeFixedValueVO> page);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
@@ -5,8 +5,8 @@
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import org.springblade.core.tool.api.R;
import java.util.Collection;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -6,10 +6,10 @@
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.vo.CodeOsattributeVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.com.vci.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.tool.api.R;
import java.io.File;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java
@@ -2,14 +2,17 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
@@ -21,8 +21,8 @@
import com.vci.ubcs.code.dto.CodeClstemplateDTO;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.tool.api.R;
import java.util.Collection;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java
@@ -1,7 +1,17 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.CodeFixedValueDTO;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import org.springframework.data.domain.Page;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * å›ºå®šç æ®µçš„码值服务接口
@@ -11,5 +21,85 @@
 */
public interface ICodeFixedValueService extends IService<CodeFixedValue> {
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„固定码段的码值
     * @param codeFixedValueVO æŸ¥è¯¢æ¡ä»¶
     * @param page åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<CodeFixedValueVO> gridCodeFixedValue(CodeFixedValueVO codeFixedValueVO,IPage<CodeFixedValueVO> page) throws VciBaseException;
    /**
     * å¢žåŠ å›ºå®šç æ®µçš„ç å€¼
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    boolean addSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException;
    /**
     * ä¿®æ”¹å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    boolean editSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException;
    /**
     * åˆ é™¤å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    R deleteCodeFixedValue(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException;
    /**
     * ä¸»é”®èŽ·å–å›ºå®šç æ®µçš„ç å€¼
     * @param oid ä¸»é”®
     * @return å›ºå®šç æ®µçš„码值显示对象
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    CodeFixedValueVO getObjectByOid(String oid) throws VciBaseException;
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–å›ºå®šç æ®µçš„ç å€¼
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return å›ºå®šç æ®µçš„码值显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    Collection<CodeFixedValueVO> listCodeFixedValueByOids(Collection<String> oidCollections) throws VciBaseException;
    /**
     * å‚照固定码段的码值列表
     * @param codeFixedValueVO æŸ¥è¯¢æ¡ä»¶
     * @param page åˆ†é¡µå’ŒæŽ’序
     * @return å›ºå®šç æ®µçš„码值显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<CodeFixedValueVO> refDataGridCodeFixedValue(CodeFixedValueVO codeFixedValueVO, IPage<CodeFixedValueVO> page) throws VciBaseException;
    /**
     * ä½¿ç”¨ç æ®µçš„主键获取固定码的码值
     * @param secOidCollection ç æ®µçš„主键
     * @return ç å€¼æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢çš„æ—¶å€™å‡ºçŽ°äº†é”™è¯¯ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    Map<String,List<CodeFixedValueVO>> listCodeFixedValueBySecOids(Collection<String> secOidCollection) throws VciBaseException;
    /**
     * æ‰¹é‡æ·»åŠ å›ºå®šç æ®µçš„ç å€¼ï¼Œå¦‚æžœä¿å­˜çš„é›†åˆä¸­ä¸å­˜åœ¨å·²åœ¨æ•°æ®åº“ä¸­çš„ç å€¼åˆ™åˆ é™¤ã€‚ä¸»è¦æ˜¯ä¿å­˜ç å€¼çš„åºå·
     * @param dtoList å›ºå®šç æ®µçš„码值列表
     * @param codefixedsecoid å›ºå®šç æ®µçš„主键
     * @return æ‰§è¡Œç»“æžœ
     */
    R<CodeFixedValueVO> batchSave4Order(List<CodeFixedValueDTO> dtoList, String codefixedsecoid);
    /**
     * æ ¹æ®ç æ®µä¸»é”®åˆ é™¤å…¶å­˜åœ¨çš„码值对象
     * @param codefixedsecoid å›ºå®šç æ®µçš„主键
     * @return æ‰§è¡Œç»“æžœ
     */
    boolean batchDeleteBySecOid(String codefixedsecoid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java
@@ -22,7 +22,8 @@
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.util.Collection;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -11,7 +11,7 @@
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.lifecycle.CodeRuleLC;
import com.vci.ubcs.code.mapper.CodeBasicSecMapper;
import com.vci.ubcs.code.mapper.CodeClassifyValueMapper;
@@ -22,16 +22,17 @@
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.wrapper.CodeBasicSecWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.web.enumpck.OsCodeFillTypeEnum;
import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.com.vci.starter.web.pagemodel.UIFormReferVO;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.com.vci.starter.web.util.WebUtil;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.WebUtil;
import com.vci.ubcs.system.entity.DictBiz;
import com.vci.ubcs.system.feign.IDictBizClient;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.context.annotation.Lazy;
@@ -160,8 +161,8 @@
     */
    @Override
    public KeyValue checkAttrNullableBySecType(CodeBasicSecDTO codeBasicSecDTO) {
        VciBaseUtil.alertNotNull(codeBasicSecDTO.getSectype(), "码段分类");
        String secType = codeBasicSecDTO.getSectype();
        VciBaseUtil.alertNotNull(codeBasicSecDTO.getSecType(), "码段分类");
        String secType = codeBasicSecDTO.getSecType();
        HashMap<String, String> attrMap = JSONObject.parseObject(JSONObject.toJSONString(codeBasicSecDTO), HashMap.class);
        Map<String, String> notNullableAttr = getNotNullableAttr(secType);
        if (notNullableAttr == null) {
@@ -204,6 +205,22 @@
        //将DTO转换为DO
        CodeBasicSec codeBasicSecDO = new CodeBasicSec();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
        //text转换
        codeBasicSecDO.setSecTypeText(CodeSecTypeEnum.getTextByValue(codeBasicSecDTO.getSecType()));
        codeBasicSecDO.setCodeLevelTypeText(CodeLevelTypeEnum.getTextByValue(codeBasicSecDTO.getCodeLevelType()));
        codeBasicSecDO.setCodeSecLengthTypeText(CodeSecLengthTypeEnum.getTextByValue(codeBasicSecDTO.getCodeSecLengthType()));
        codeBasicSecDO.setValueCutTypeText(CodeCutTypeEnum.getValueByText(codeBasicSecDTO.getValueCutType()));
        codeBasicSecDO.setCodeGetValueTypeText(CodeGetValueTypeEnum.getValueByText(codeBasicSecDTO.getCodeGetValueType()));
        //填充一些默认值
        codeBasicSecDO.setOid(VciBaseUtil.getPk());
        codeBasicSecDO.setRevisionOid(VciBaseUtil.getPk());
        codeBasicSecDO.setNameOid(VciBaseUtil.getPk());
        codeBasicSecDO.setBtmname(MdmBtmTypeConstant.CODE_BASIC_SEC);
        codeBasicSecDO.setTs(new Date());
        codeBasicSecDO.setCreateTime(new Date());
        codeBasicSecDO.setCreator(AuthUtil.getUserId().toString());
        codeBasicSecDO.setLastModifier(AuthUtil.getUserId().toString());
        codeBasicSecDO.setLastModifyTime(new Date());
        //排序号,默认等于当前已有的数量加1
        Long total = codeBasicSecMapper.selectCount(Wrappers.<CodeBasicSec>query()
            .lambda()
@@ -288,6 +305,7 @@
            resBoolean = codeBasicSecMapper.updateById(codeBasicSecDO)>0;
            //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
            if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){
                //这儿目前需要改 2023/4/24
                DictBiz dictBiz = new DictBiz();
                dictBiz.setCode(MdmBtmTypeConstant.CODE_BASIC_SEC);
                dictBiz.setDictKey("codefileseparator");
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -5,7 +5,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.code.bo.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.entity.CodeOsbtmtypeEntity;
@@ -24,27 +25,26 @@
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.com.vci.starter.bo.WriteExcelData;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.poi.bo.ReadExcelOption;
import com.vci.ubcs.com.vci.starter.poi.bo.WriteExcelOption;
import com.vci.ubcs.com.vci.starter.poi.constant.ExcelLangCodeConstant;
import com.vci.ubcs.com.vci.starter.poi.util.ExcelUtil;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.util.LocalFileUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.com.vci.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.LangBaseUtil;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.bo.WriteExcelData;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
import com.vci.ubcs.starter.poi.bo.WriteExcelOption;
import com.vci.ubcs.starter.poi.constant.ExcelLangCodeConstant;
import com.vci.ubcs.starter.poi.util.ExcelUtil;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.log.exception.ServiceException;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.bo.TreeWrapperOptions;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
@@ -12,13 +11,14 @@
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.service.ICodeClassifyValueService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.code.wrapper.CodeClassifyValueWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.tool.api.R;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -251,7 +251,7 @@
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public List<Tree> referTree(TreeQueryObject treeQueryObject)  throws VciBaseException{
    public List<Tree> referTree(TreeQueryObject treeQueryObject)  throws VciBaseException {
        if(treeQueryObject == null){
            treeQueryObject = new TreeQueryObject();
        }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstempattrServiceImpl.java
@@ -22,9 +22,10 @@
import com.vci.ubcs.code.mapper.CodeClstempattrMapper;
import com.vci.ubcs.code.service.ICodeClstempattrService;
import com.vci.ubcs.code.vo.CodeClstempattrVO;
import com.vci.ubcs.com.vci.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -19,7 +19,6 @@
import com.alibaba.nacos.api.utils.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.bo.TreeWrapperOptions;
import com.vci.ubcs.code.dto.CodeClstemplateDTO;
import com.vci.ubcs.code.entity.CodeClstempattrEntity;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
@@ -30,12 +29,15 @@
import com.vci.ubcs.code.service.ICodeClstemplateService;
import com.vci.ubcs.code.vo.CodeClstempattrVO;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
@@ -1,19 +1,328 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeFixedValueDTO;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.mapper.CodeFixedValueMapper;
import com.vci.ubcs.code.service.ICodeFixedValueService;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import com.vci.ubcs.code.wrapper.CodeFixedValueWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_LINKED_NOT_DELETE;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
/**
 * å›ºå®šç æ®µçš„码值服务
 * @author weidy
 * @author ludc
 * @date 2022-01-24
 */
@Service
public class CodeFixedValueServiceImpl extends ServiceImpl<CodeFixedValueMapper, CodeFixedValue> implements ICodeFixedValueService {
    /**
     * æ•°æ®æ“ä½œå±‚
     */
    @Resource
    private CodeFixedValueMapper codeFixedValueMapper;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Resource
    private RevisionModelUtil revisionModelUtil;
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„固定码段的码值
     * @param codeFixedValueVO æŸ¥è¯¢æ¡ä»¶
     * @param page åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<CodeFixedValueVO> gridCodeFixedValue(CodeFixedValueVO codeFixedValueVO,IPage<CodeFixedValueVO> page) throws VciBaseException{
        String secOid = codeFixedValueVO.getCodeFixedSecOid();
        if(StringUtils.isBlank(secOid)){
            return null;
        }
        List<CodeFixedValue> doList = codeFixedValueMapper.selectByPage(codeFixedValueVO,page);
        return page.setRecords(CodeFixedValueWrapper.build().listVO(doList));
    }
    /**
     * å¢žåŠ å›ºå®šç æ®µçš„ç å€¼
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    public boolean addSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeFixedValueDTO,"需要添加的数据对象");
        //将DTO转换为DO
        CodeFixedValue codeFixedValueDO = new CodeFixedValue();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeFixedValueDTO,codeFixedValueDO);
        //填充一些默认值
        codeFixedValueDO.setOid(VciBaseUtil.getPk());
        codeFixedValueDO.setRevisionOid(VciBaseUtil.getPk());
        codeFixedValueDO.setNameOid(VciBaseUtil.getPk());
        codeFixedValueDO.setBtmname(MdmBtmTypeConstant.CODE_FIXED_VALUE);
        codeFixedValueDO.setCreateTime(new Date());
        codeFixedValueDO.setCreator(AuthUtil.getUserId().toString());
        codeFixedValueDO.setLastModifier(AuthUtil.getUserId().toString());
        codeFixedValueDO.setLastModifyTime(new Date());
        codeFixedValueDO.setTs(new Date());
        Long count = this.codeFixedValueMapper.selectCount(Wrappers.<CodeFixedValue>query()
            .lambda().eq(CodeFixedValue::getCodeFixedSecOid, codeFixedValueDO.getCodeFixedSecOid())
        )+1L;
        codeFixedValueDO.setOrderNum(count.intValue());
        boolean resBoolean = this.codeFixedValueMapper.insert(codeFixedValueDO) > 0;
        return resBoolean;
    }
    /**
     * ä¿®æ”¹å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean editSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeFixedValueDTO,"数据对象",codeFixedValueDTO.getOid(),"固定码段的码值主键");
        //将DTO转换为DO
        CodeFixedValue codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeFixedValueDTO,codeFixedValueDO);
        //填充一些默认值
        codeFixedValueDO.setLastModifier(AuthUtil.getUserId().toString());
        codeFixedValueDO.setLastModifyTime(new Date());
        codeFixedValueDO.setTs(new Date());
        boolean resBoolean = codeFixedValueMapper.updateById(codeFixedValueDO) > 0;
        return resBoolean;
    }
    /**
     * æ ¡éªŒæ˜¯å¦å¯ä»¥åˆ é™¤ï¼Œå¦‚果存在下级,并且下级有数据引用则不能删除
     * @param codeFixedValueDTO æ•°æ®ä¼ è¾“对象
     * @param codeFixedValueDO æ•°æ®åº“中的数据对象
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeFixedValueDTO codeFixedValueDTO, CodeFixedValue codeFixedValueDO) {
        //boService.checkTs(codeFixedValueDTO);
        if(!checkIsLinked(codeFixedValueDO.getOid())) {
            return R.status(true);
        }else{
            return R.fail(DATA_LINKED_NOT_DELETE);
        }
    }
    /**
     * æ ¡éªŒæ˜¯å¦è¢«å¼•用
     * @param oid ä¸»é”®
     * @throws VciBaseException è¢«å¼•用的时候会抛出异常
     */
    private boolean checkIsLinked(String oid) throws VciBaseException{
        //TODO æ·»åŠ éœ€è¦æ ¡éªŒå¼•ç”¨çš„åœ°æ–¹
        return false;
    }
    /**
     * åˆ é™¤å›ºå®šç æ®µçš„码值
     * @param codeFixedValueDTO å›ºå®šç æ®µçš„码值数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteCodeFixedValue(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException {
        VciBaseUtil.alertNotNull(codeFixedValueDTO,"固定码段的码值数据对象",codeFixedValueDTO.getOid(),"固定码段的码值的主键");
        CodeFixedValue codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid());
        R baseResult = checkIsCanDeleteForDO(codeFixedValueDTO,codeFixedValueDO);
        if(!baseResult.isSuccess()) {
            return baseResult;
        }
        //执行删除操作
        boolean resBoolean = codeFixedValueMapper.deleteById(codeFixedValueDO.getOid())>0;
        return R.status(resBoolean);
    }
    /**
     * ä¸»é”®èŽ·å–å›ºå®šç æ®µçš„ç å€¼
     * @param oid ä¸»é”®
     * @return å›ºå®šç æ®µçš„码值显示对象
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    @Override
    public CodeFixedValueVO getObjectByOid(String oid) throws VciBaseException{
        return CodeFixedValueWrapper.build().entityVO(selectByOid(oid));
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oid ä¸»é”®
     * @return  æ•°æ®å¯¹è±¡
     * @throws VciBaseException å‚数为空,并且数据不存在的时候会抛出异常
     */
    private CodeFixedValue selectByOid(String oid) throws VciBaseException{
        VciBaseUtil.alertNotNull(oid,"主键");
        CodeFixedValue codeFixedValueDO = codeFixedValueMapper.selectById(oid.trim());
        if(codeFixedValueDO == null || StringUtils.isBlank(codeFixedValueDO.getOid())){
            throw new VciBaseException(DATA_OID_NOT_EXIST);
        }
        return codeFixedValueDO;
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–å›ºå®šç æ®µçš„ç å€¼
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return å›ºå®šç æ®µçš„码值显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    @Override
    public Collection<CodeFixedValueVO> listCodeFixedValueByOids(Collection<String> oidCollections) throws VciBaseException {
        VciBaseUtil.alertNotNull(oidCollections,"数据对象主键集合");
        List<CodeFixedValue> codeFixedValueDOList = listCodeFixedValueDOByOidCollections(oidCollections);
        return CodeFixedValueWrapper.build().listVO(codeFixedValueDOList);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeFixedValue> listCodeFixedValueDOByOidCollections(Collection<String> oidCollections){
        List<CodeFixedValue> codeFixedValueDOList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(oidCollections)){
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
            for(Collection<String> oids: oidCollectionsList){
                List<CodeFixedValue> tempDOList =  codeFixedValueMapper.selectBatchIds(oids);
                if(!CollectionUtils.isEmpty(tempDOList)){
                    codeFixedValueDOList.addAll(tempDOList);
                }
            }
        }
        return  codeFixedValueDOList;
    }
    /**
     * å‚照固定码段的码值列表
     * @param codeFixedValueVO æŸ¥è¯¢æ¡ä»¶
     * @param page åˆ†é¡µå’ŒæŽ’序
     * @return å›ºå®šç æ®µçš„码值显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<CodeFixedValueVO> refDataGridCodeFixedValue(CodeFixedValueVO codeFixedValueVO,IPage<CodeFixedValueVO> page) throws VciBaseException{
        return gridCodeFixedValue(codeFixedValueVO,page);
    }
    /**
     * ä½¿ç”¨ç æ®µçš„主键获取固定码的码值
     *
     * @param secOidCollection ç æ®µçš„主键
     * @return ç å€¼æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢çš„æ—¶å€™å‡ºçŽ°äº†é”™è¯¯ä¼šæŠ›å‡ºå¼‚å¸¸
     */
    @Override
    public Map<String, List<CodeFixedValueVO>> listCodeFixedValueBySecOids(Collection<String> secOidCollection) throws VciBaseException {
        if(CollectionUtils.isEmpty(secOidCollection)){
            return  new HashMap<>();
        }
        List<CodeFixedValueVO> voList = new ArrayList<>();
        VciBaseUtil.switchCollectionForOracleIn(secOidCollection).forEach(secOids->{
            Query query = new Query();
            query.setDescs("orderNum");
            query.setSize(-1);
            query.setCurrent(1);
            List<CodeFixedValue> valueDOS = this.codeFixedValueMapper.selectByPageByCodeFixedSecOid(secOids,Condition.getPage(query));
            voList.addAll(CodeFixedValueWrapper.build().listVO(Optional.ofNullable(valueDOS).orElseGet(() -> new ArrayList<>())));
        });
        return voList.stream().collect(Collectors.groupingBy(CodeFixedValueVO::getCodeFixedSecOid));
    }
    /**
     * æ‰¹é‡æ·»åŠ å›ºå®šç æ®µçš„ç å€¼ï¼Œå¦‚æžœä¿å­˜çš„é›†åˆä¸­ä¸å­˜åœ¨å·²åœ¨æ•°æ®åº“ä¸­çš„ç å€¼åˆ™åˆ é™¤ã€‚ä¸»è¦æ˜¯ä¿å­˜ç å€¼çš„åºå·
     * @param dtoList å›ºå®šç æ®µçš„码值列表
     * @param codefixedsecoid å›ºå®šç æ®µçš„主键
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R<CodeFixedValueVO> batchSave4Order(List<CodeFixedValueDTO> dtoList, String codefixedsecoid) {
        VciBaseUtil.alertNotNull(codefixedsecoid,"固定码段主键");
        List<CodeFixedValue> doList = codeFixedValueMapper.selectList(Wrappers.<CodeFixedValue>query()
            .lambda().eq(CodeFixedValue::getCodeFixedSecOid,codefixedsecoid)
        );
        List<CodeFixedValue> updateList = new ArrayList<>();
        List<String> deleteOidList = new ArrayList<>();
        dtoList.forEach(dto -> {
            if (StringUtils.isNotBlank(dto.getOid())){
                List<CodeFixedValue> valueDOList = doList.stream().filter(value -> {
                    return value.getOid().equals(dto.getOid());
                }).collect(Collectors.toList());
                valueDOList.forEach(valueDO -> {
                    valueDO.setId(dto.getId());
                    valueDO.setName(dto.getName());
                    valueDO.setOrderNum(dto.getOrderNum());
                    updateList.add(valueDO);
                });
            }else{
                throw new VciBaseException("固定码段主键不能为空");
            }
        });
        if (doList.size() != dtoList.size()){
            List<String> oidList = dtoList.stream().map(CodeFixedValueDTO::getOid).collect(Collectors.toList());
            List<CodeFixedValue> deleteList = new ArrayList<>();
            for (CodeFixedValue value : doList) {
                if (!oidList.contains(value.getOid())){
                    deleteList.add(value);
                }
            }
            deleteOidList = deleteList.stream().map(CodeFixedValue::getOid).collect(Collectors.toList());
        }
        boolean resBooleanUpdate = this.updateBatchById(updateList);
        if (!CollectionUtils.isEmpty(deleteOidList)) {
            codeFixedValueMapper.deleteBatchIds(deleteOidList);
        }
        return R.status(resBooleanUpdate);
    }
    /**
     * æ ¹æ®ç æ®µä¸»é”®åˆ é™¤å…¶å­˜åœ¨çš„码值对象
     * @param codefixedsecoid å›ºå®šç æ®µçš„主键
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean batchDeleteBySecOid(String codefixedsecoid) {
        VciBaseUtil.alertNotNull(codefixedsecoid,"固定码段主键");
        List<CodeFixedValue> doList = codeFixedValueMapper.selectList(Wrappers.<CodeFixedValue>query()
            .lambda().eq(CodeFixedValue::getCodeFixedSecOid,codefixedsecoid)
        );
        boolean resBoolean = codeFixedValueMapper.deleteBatchIds(doList.stream().map(CodeFixedValue::getOid).collect(Collectors.toList())) > 0;
        return resBoolean;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java
@@ -22,8 +22,8 @@
import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -36,12 +36,12 @@
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.com.vci.starter.web.util.WebUtil;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.WebUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
@@ -113,12 +113,13 @@
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    public boolean addSave(CodeRuleDTO codeRuleDTO) throws VciBaseException{
    public boolean addSave(CodeRuleDTO codeRuleDTO) throws VciBaseException {
        VciBaseUtil.alertNotNull(codeRuleDTO, "需要添加的数据对象");
        //将DTO转换为DO
        CodeRule codeRule = Objects.requireNonNull(BeanUtil.copy(codeRuleDTO, CodeRule.class));
        String userId = AuthUtil.getUserId().toString();
        codeRule.setOid(VciBaseUtil.getPk());
        codeRule.setRevisionOid(VciBaseUtil.getPk());
        codeRule.setNameOid(VciBaseUtil.getPk());
        codeRule.setBtmname("coderule");
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java
@@ -34,7 +34,7 @@
 * @author ludc
 * @since 2023-04-03
 */
public class CodeBasicSecWrapper extends BaseEntityWrapper<CodeBasicSec, CodeBasicSecVO>  {
public class CodeBasicSecWrapper extends BaseEntityWrapper<CodeBasicSec, CodeBasicSecVO> {
    public static CodeBasicSecWrapper build() {
        return new CodeBasicSecWrapper();
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeFixedValueWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class CodeFixedValueWrapper extends BaseEntityWrapper<CodeFixedValue, CodeFixedValueVO> {
    public static CodeFixedValueWrapper build() {
        return new CodeFixedValueWrapper();
    }
    @Override
    public CodeFixedValueVO entityVO(CodeFixedValue codeFixedValue) {
        CodeFixedValueVO codeFixedValueVO = Objects.requireNonNull(BeanUtil.copy(codeFixedValue, CodeFixedValueVO.class));
        //codeFixedValueVO.setLcStatusText(CodeRuleLC.getTextByValue(codeBasicSec.getLcStatus()));
        return codeFixedValueVO;
    }
    @Override
    public List<CodeFixedValueVO> listVO(List<CodeFixedValue> list) {
        return (List)list.stream().map(this::entityVO).collect(Collectors.toList());
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -36,7 +36,7 @@
        <result property="getValueClass" column="GETVALUECLASS" jdbcType="VARCHAR"/>
        <result property="codeDateFormatStr" column="CODEDATEFORMATSTR" jdbcType="VARCHAR"/>
        <result property="codeSecLengthType" column="CODESECLENGTHTYPE" jdbcType="VARCHAR"/>
        <result property="codeFillLength" column="CODESECLENGTH" jdbcType="VARCHAR"/>
        <result property="codeSecLength" column="CODESECLENGTH" jdbcType="VARCHAR"/>
        <result property="codeLevelType" column="CODELEVELTYPE" jdbcType="VARCHAR"/>
        <result property="codeLevelValue" column="CODELEVELVALUE" jdbcType="INTEGER"/>
        <result property="valueCutLength" column="VALUECUTLENGTH" jdbcType="INTEGER"/>
@@ -66,6 +66,7 @@
        <result property="referAttributeId" column="REFERATTRIBUTEID" jdbcType="VARCHAR"/>
        <result property="referBtmName" column="REFERBTMNAME" jdbcType="VARCHAR"/>
        <result property="referBtmId" column="REFERBTMID" jdbcType="VARCHAR"/>
        <result property="referCodeClassifyOidName" column="c__name" jdbcType="VARCHAR"/>
    </resultMap>
    <select id="selectCodeBasicSecPage" resultMap="CodeBasicsecMap">
@@ -143,188 +144,24 @@
            <if test="codeBasicSec.oid != null and codeBasicSec.oid != ''">
                and PL_CODE_BASICSEC.OID = #{codeBasicSec.oid}
            </if>
            <if test="codeBasicSec.revisionOid != null and codeBasicSec.revisionOid != ''">
                and PL_CODE_BASICSEC.REVISIONOID = #{codeBasicSec.revisionOid}
            </if>
            <if test="codeBasicSec.nameOid != null and codeBasicSec.nameOid != ''">
                and PL_CODE_BASICSEC.NAMEOID = #{codeBasicSec.nameOid}
            </if>
            <if test="codeBasicSec.btmname != null and codeBasicSec.btmname != ''">
                and PL_CODE_BASICSEC.BTMNAME = #{codeBasicSec.btmname}
            </if>
            <if test="codeBasicSec.lastR != null and codeBasicSec.lastR != ''">
                and PL_CODE_BASICSEC.LASTR = #{codeBasicSec.lastR}
            </if>
            <if test="codeBasicSec.firstR != null and codeBasicSec.firstR != ''">
                and PL_CODE_BASICSEC.FIRSTR = #{codeBasicSec.firstR}
            </if>
            <if test="codeBasicSec.lastV != null and codeBasicSec.lastv != ''">
                and PL_CODE_BASICSEC.LASTV = #{codeBasicSec.lastV}
            </if>
            <if test="codeBasicSec.firstV != null and codeBasicSec.firstV != ''">
                and PL_CODE_BASICSEC.FIRSTV = #{codeBasicSec.firstV}
            </if>
            <if test="codeBasicSec.creator != null and codeBasicSec.creator != ''">
                and PL_CODE_BASICSEC.CREATOR = #{codeBasicSec.creator}
            </if>
            <if test="codeBasicSec.createTime != null and codeBasicSec.createTime != ''">
                and PL_CODE_BASICSEC.CREATETIME = #{codeBasicSec.createTime}
            </if>
            <if test="codeBasicSec.lastModifier != null and codeBasicSec.lastModifier != ''">
                and PL_CODE_BASICSEC.LASTMODIFIER = #{codeBasicSec.lastModifier}
            </if>
            <if test="codeBasicSec.lastModifyTime != null and codeBasicSec.lastModifyTime != ''">
                and PL_CODE_BASICSEC.LASTMODIFYTIME = #{codeBasicSec.lastModifyTime}
            </if>
            <if test="codeBasicSec.revisionRule != null and codeBasicSec.revisionRule != ''">
                and PL_CODE_BASICSEC.REVISIONRULE = #{codeBasicSec.revisionRule}
            </if>
            <if test="codeBasicSec.versionRule != null and codeBasicSec.versionRule != ''">
                and PL_CODE_BASICSEC.VERSIONRULE = #{codeBasicSec.versionRule}
            </if>
            <if test="codeBasicSec.revisionSeq != null">
                and PL_CODE_BASICSEC.REVISIONSEQ = #{codeBasicSec.revisionSeq}
            </if>
            <if test="codeBasicSec.revisionValue != null and codeBasicSec.revisionValue != ''">
                and PL_CODE_BASICSEC.REVISIONVALUE = #{codeBasicSec.revisionValue}
            </if>
            <if test="codeBasicSec.versionSeq != null">
                and PL_CODE_BASICSEC.VERSIONSEQ = #{codeBasicSec.versionSeq}
            </if>
            <if test="codeBasicSec.versionValue != null and codeBasicSec.versionValue != ''">
                and PL_CODE_BASICSEC.VERSIONVALUE = #{codeBasicSec.versionValue}
            </if>
            <if test="codeBasicSec.lctid != null and codeBasicSec.lctid != ''">
                and PL_CODE_BASICSEC.LCTID = #{codeBasicSec.lctid}
            </if>
            <if test="codeBasicSec.lcStatus != null and codeBasicSec.lcStatus != ''">
                and PL_CODE_BASICSEC.LCSTATUS = #{codeBasicSec.lcStatus}
            </if>
            <if test="codeBasicSec.ts != null and codeBasicSec.ts != ''">
                and PL_CODE_BASICSEC.TS = #{codeBasicSec.ts}
            </if>
            <if test="codeBasicSec.id != null and codeBasicSec.id != ''">
                and PL_CODE_BASICSEC.ID = #{codeBasicSec.id}
                and PL_CODE_BASICSEC.ID like CONCAT(CONCAT('%', #{codeBasicSec.id}), '%')
            </if>
            <if test="codeBasicSec.name != null and codeBasicSec.name != ''">
                and PL_CODE_BASICSEC.NAME = #{codeBasicSec.name}
                and PL_CODE_BASICSEC.NAME like CONCAT(CONCAT('%', #{codeBasicSec.name}), '%')
            </if>
            <if test="codeBasicSec.description != null and codeBasicSec.description != ''">
                and PL_CODE_BASICSEC.DESCRIPTION = #{codeBasicSec.description}
            </if>
            <if test="codeBasicSec.owner != null and codeBasicSec.owner != ''">
                and PL_CODE_BASICSEC.OWNER = #{codeBasicSec.owner}
            </if>
            <if test="codeBasicSec.copyFromVersion != null and codeBasicSec.copyFromVersion != ''">
                and PL_CODE_BASICSEC.COPYFROMVERSION = #{codeBasicSec.copyFromVersion}
                and PL_CODE_BASICSEC.DESCRIPTION like CONCAT(CONCAT('%', #{codeBasicSec.description}), '%')
            </if>
            <if test="codeBasicSec.secType != null and codeBasicSec.sectype != ''">
                and PL_CODE_BASICSEC.SECTYPE = #{codeBasicSec.sectype}
                and PL_CODE_BASICSEC.SECTYPE = #{codeBasicSec.secType}
            </if>
            <if test="codeBasicSec.pkCodeRule != null and codeBasicSec.pkCodeRule != ''">
                and PL_CODE_BASICSEC.PKCODERULE = #{codeBasicSec.pkCodeRule}
            </if>
            <if test="codeBasicSec.orderNum != null">
                and PL_CODE_BASICSEC.ORDERNUM = #{codeBasicSec.orderNum}
            </if>
            <if test="codeBasicSec.getValueClass != null and codeBasicSec.getValueClass != ''">
                and PL_CODE_BASICSEC.GETVALUECLASS = #{codeBasicSec.getValueClass}
            </if>
            <if test="codeBasicSec.codeDateFormatStr != null and codeBasicSec.codeDateFormatStr != ''">
                and PL_CODE_BASICSEC.CODEDATEFORMATSTR = #{codeBasicSec.codeDateFormatStr}
            </if>
            <if test="codeBasicSec.codeSecLengthType != null and codeBasicSec.codeSecLengthType != ''">
                and PL_CODE_BASICSEC.CODESECLENGTHTYPE = #{codeBasicSec.codeSecLengthType}
            </if>
            <if test="codeBasicSec.codeSecLength != null and codeBasicSec.codeSecLength != ''">
                and PL_CODE_BASICSEC.CODESECLENGTH = #{codeBasicSec.codeSecLength}
            </if>
            <if test="codeBasicSec.codeLevelType != null and codeBasicSec.codeLevelType != ''">
                and PL_CODE_BASICSEC.CODELEVELTYPE = #{codeBasicSec.codeLevelType}
            </if>
            <if test="codeBasicSec.codeLevelValue != null">
                and PL_CODE_BASICSEC.CODELEVELVALUE = #{codeBasicSec.codeLevelValue}
            </if>
            <if test="codeBasicSec.valueCutLength != null">
                and PL_CODE_BASICSEC.VALUECUTLENGTH = #{codeBasicSec.valueCutLength}
            </if>
            <if test="codeBasicSec.valueCutType != null and codeBasicSec.valueCutType != ''">
                and PL_CODE_BASICSEC.VALUECUTTYPE = #{codeBasicSec.valueCutType}
            </if>
            <if test="codeBasicSec.codeGetValueType != null and codeBasicSec.codeGetValueType != ''">
                and PL_CODE_BASICSEC.CODEGETVALUETYPE = #{codeBasicSec.codeGetValueType}
            </if>
            <if test="codeBasicSec.referCodeClassifyOid != null and codeBasicSec.referCodeClassifyOid != ''">
                and PL_CODE_BASICSEC.REFERCODECLASSIFYOID = #{codeBasicSec.referCodeClassifyOid}
            </if>
            <if test="codeBasicSec.referConfig != null and codeBasicSec.referConfig != ''">
                and PL_CODE_BASICSEC.REFERCONFIG = #{codeBasicSec.referConfig}
            </if>
            <if test="codeBasicSec.referValueInfo != null and codeBasicSec.referValueInfo != ''">
                and PL_CODE_BASICSEC.REFERVALUEINFO = #{codeBasicSec.referValueInfo}
            </if>
            <if test="codeBasicSec.filterSql != null and codeBasicSec.filterSql != ''">
                and PL_CODE_BASICSEC.FILTERSQL = #{codeBasicSec.filterSql}
            </if>
            <if test="codeBasicSec.serialStart != null and scodeBasicSec.serialStart != ''">
                and PL_CODE_BASICSEC.SERIALSTART = #{codeBasicSec.serialStart}
            </if>
            <if test="codeBasicSec.serialStep != null">
                and PL_CODE_BASICSEC.SERIALSTEP = #{codeBasicSec.serialStep}
            </if>
            <if test="codeBasicSec.codeFillType != null and codeBasicSec.codeFillType != ''">
                and PL_CODE_BASICSEC.CODEFILLTYPE = #{codeBasicSec.codeFillType}
            </if>
            <if test="codeBasicSec.codeFillTypeText != null and codeBasicSec.codeFillTypeText != ''">
                and PL_CODE_BASICSEC.CODEFILLTYPETEXT = #{codeBasicSec.codeFillTypeText}
            </if>
            <if test="codeBasicSec.codeFillSeparator != null and codeBasicSec.codeFillSeparator != ''">
                and PL_CODE_BASICSEC.CODEFILLSEPARATOR = #{codeBasicSec.codeFillSeparator}
            </if>
            <if test="codeBasicSec.codeFillLength != null and codeBasicSec.codeFillLength != ''">
                and PL_CODE_BASICSEC.CODEFILLLENGTH = #{codeBasicSec.codeFillLength}
            </if>
            <if test="codeBasicSec.codeFillLimit != null">
                and PL_CODE_BASICSEC.CODEFILLLIMIT = #{codeBasicSec.codeFillLimit}
            </if>
            <if test="codeBasicSec.codeFillFlag != null and codeBasicSec.codeFillFlag != ''">
                and PL_CODE_BASICSEC.CODEFILLFLAG = #{codeBasicSec.codeFillFlag}
            </if>
            <if test="codeBasicSec.customCodeSerialClass != null and codeBasicSec.customCodeSerialClass != ''">
                and PL_CODE_BASICSEC.CUSTOMCODESERIALCLASS = #{codeBasicSec.customCodeSerialClass}
            </if>
            <if test="codeBasicSec.matchClassifyValueFlag != null and codeBasicSec.matchClassifyValueFlag != ''">
                and PL_CODE_BASICSEC.MATCHCLASSIFYVALUEFLAG = #{codeBasicSec.matchClassifyValueFlag}
            </if>
            <if test="codeBasicSec.parentClassifySecOid != null and codeBasicSec.parentClassifySecOid != ''">
                and PL_CODE_BASICSEC.PARENTCLASSIFYSECOID = #{codeBasicSec.parentClassifySecOid}
            </if>
            <if test="codeBasicSec.nullableFlag != null and codeBasicSec.nullableFlag != ''">
                and PL_CODE_BASICSEC.NULLABLEFLAG = #{codeBasicSec.nullableFlag}
            </if>
            <if test="codeBasicSec.componentCodeFlag != null and codeBasicSec.componentCodeFlag != ''">
                and PL_CODE_BASICSEC.COMPONENTCODEFLAG = #{codeBasicSec.componentCodeFlag}
            </if>
            <if test="codeBasicSec.serialDependFlag != null and codeBasicSec.serialDependFlag != ''">
                and PL_CODE_BASICSEC.SERIALDEPENDFLAG = #{codeBasicSec.serialDependFlag}
            </if>
            <if test="codeBasicSec.displayFlag != null and codeBasicSec.displayFlag != ''">
                and PL_CODE_BASICSEC.DISPLAYFLAG = #{codeBasicSec.displayFlag}
            </if>
            <if test="codeBasicSec.serialDependOrder != null">
                and PL_CODE_BASICSEC.SERIALDEPENDORDER = #{codeBasicSec.serialDependOrder}
            </if>
            <if test="codeBasicSec.referAttributeName != null and codeBasicSec.referAttributeName != ''">
                and PL_CODE_BASICSEC.REFERATTRIBUTENAME = #{codeBasicSec.referAttributeName}
            </if>
            <if test="codeBasicSec.referAttributeId != null and codeBasicSec.referAttributeId != ''">
                and PL_CODE_BASICSEC.REFERATTRIBUTEID = #{codeBasicSec.referAttributeId}
            </if>
            <if test="codeBasicSec.referBtmName != null and codeBasicSec.referBtmName != ''">
                and PL_CODE_BASICSEC.REFERBTMNAME = #{codeBasicSec.referBtmName}
            </if>
            <if test="codeBasicSec.referBtmId != null and codeBasicSec.referBtmId != ''">
                and PL_CODE_BASICSEC.REFERBTMID = #{codeBasicSec.referBtmId}
            </if>
        </where>
@@ -360,18 +197,15 @@
        </foreach>
    </insert>
    <select id="countByCondition" resultType="java.lang.Long">
    </select>
    <select id="getOidByCodeclassifysecOid" resultType="java.lang.String">
        SELECT OID
        FROM PLATFORMBTM_CODEBASICSEC START WITH OID = #{codeClassifySecOid}
        CONNECT BY PRIOR PARENTCLASSIFYSECOID = OID
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeFixedValueMapper.xml
@@ -3,5 +3,114 @@
<mapper namespace="com.vci.ubcs.code.mapper.CodeFixedValueMapper">
    <resultMap type="com.vci.ubcs.code.entity.CodeFixedValue" id="CodeFixedvalueMap">
        <result property="oid" column="OID" jdbcType="VARCHAR"/>
        <result property="revisionOid" column="REVISIONOID" jdbcType="VARCHAR"/>
        <result property="nameOid" column="NAMEOID" jdbcType="VARCHAR"/>
        <result property="btmname" column="BTMNAME" jdbcType="VARCHAR"/>
        <result property="lastR" column="LASTR" jdbcType="VARCHAR"/>
        <result property="firstR" column="FIRSTR" jdbcType="VARCHAR"/>
        <result property="lastV" column="LASTV" jdbcType="VARCHAR"/>
        <result property="firstV" column="FIRSTV" jdbcType="VARCHAR"/>
        <result property="creator" column="CREATOR" jdbcType="VARCHAR"/>
        <result property="createTime" column="CREATETIME" jdbcType="VARCHAR"/>
        <result property="lastModifier" column="LASTMODIFIER" jdbcType="VARCHAR"/>
        <result property="lastModifyTime" column="LASTMODIFYTIME" jdbcType="VARCHAR"/>
        <result property="revisionRule" column="REVISIONRULE" jdbcType="VARCHAR"/>
        <result property="versionRule" column="VERSIONRULE" jdbcType="VARCHAR"/>
        <result property="revisionSeq" column="REVISIONSEQ" jdbcType="INTEGER"/>
        <result property="revisionValue" column="REVISIONVALUE" jdbcType="VARCHAR"/>
        <result property="versionSeq" column="VERSIONSEQ" jdbcType="INTEGER"/>
        <result property="versionValue" column="VERSIONVALUE" jdbcType="VARCHAR"/>
        <result property="lctid" column="LCTID" jdbcType="VARCHAR"/>
        <result property="lcStatus" column="LCSTATUS" jdbcType="VARCHAR"/>
        <result property="ts" column="TS" jdbcType="VARCHAR"/>
        <result property="id" column="ID" jdbcType="VARCHAR"/>
        <result property="name" column="NAME" jdbcType="VARCHAR"/>
        <result property="description" column="DESCRIPTION" jdbcType="VARCHAR"/>
        <result property="owner" column="OWNER" jdbcType="VARCHAR"/>
        <result property="copyFromVersion" column="COPYFROMVERSION" jdbcType="VARCHAR"/>
        <result property="codeFixedSecOid" column="CODEFIXEDSECOID" jdbcType="VARCHAR"/>
        <result property="orderNum" column="ORDERNUM" jdbcType="INTEGER"/>
    </resultMap>
    <select id="selectByPage" resultMap="CodeFixedvalueMap">
        SELECT
            PL_CODE_FIXEDVALUE.oid,
            PL_CODE_FIXEDVALUE.revisionoid,
            PL_CODE_FIXEDVALUE.nameoid,
            PL_CODE_FIXEDVALUE.btmname,
            PL_CODE_FIXEDVALUE.lastr,
            PL_CODE_FIXEDVALUE.firstr,
            PL_CODE_FIXEDVALUE.lastv,
            PL_CODE_FIXEDVALUE.firstv,
            PL_CODE_FIXEDVALUE.creator,
            PL_CODE_FIXEDVALUE.createtime,
            PL_CODE_FIXEDVALUE.lastmodifier,
            PL_CODE_FIXEDVALUE.lastmodifytime,
            PL_CODE_FIXEDVALUE.revisionrule,
            PL_CODE_FIXEDVALUE.versionrule,
            PL_CODE_FIXEDVALUE.revisionseq,
            PL_CODE_FIXEDVALUE.revisionvalue,
            PL_CODE_FIXEDVALUE.versionseq,
            PL_CODE_FIXEDVALUE.versionvalue,
            PL_CODE_FIXEDVALUE.lctid,
            PL_CODE_FIXEDVALUE.lcstatus,
            PL_CODE_FIXEDVALUE.ts,
            PL_CODE_FIXEDVALUE.id,
            PL_CODE_FIXEDVALUE.name,
            PL_CODE_FIXEDVALUE.description,
            PL_CODE_FIXEDVALUE.owner,
            PL_CODE_FIXEDVALUE.copyfromversion,
            PL_CODE_FIXEDVALUE.codefixedsecoid,
            PL_CODE_FIXEDVALUE.ordernum,
            COUNT( * ) OVER ( ) "##VCI_COUNT_VCI##"
        FROM
            PL_CODE_FIXEDVALUE
        WHERE
            PL_CODE_FIXEDVALUE.codefixedsecoid = #{codeFixedValueVO.codeFixedSecOid}
    </select>
    <select id="selectByPageByCodeFixedSecOid" resultMap="CodeFixedvalueMap">
        SELECT
            PL_CODE_FIXEDVALUE.oid,
            PL_CODE_FIXEDVALUE.revisionoid,
            PL_CODE_FIXEDVALUE.nameoid,
            PL_CODE_FIXEDVALUE.btmname,
            PL_CODE_FIXEDVALUE.lastr,
            PL_CODE_FIXEDVALUE.firstr,
            PL_CODE_FIXEDVALUE.lastv,
            PL_CODE_FIXEDVALUE.firstv,
            PL_CODE_FIXEDVALUE.creator,
            PL_CODE_FIXEDVALUE.createtime,
            PL_CODE_FIXEDVALUE.lastmodifier,
            PL_CODE_FIXEDVALUE.lastmodifytime,
            PL_CODE_FIXEDVALUE.revisionrule,
            PL_CODE_FIXEDVALUE.versionrule,
            PL_CODE_FIXEDVALUE.revisionseq,
            PL_CODE_FIXEDVALUE.revisionvalue,
            PL_CODE_FIXEDVALUE.versionseq,
            PL_CODE_FIXEDVALUE.versionvalue,
            PL_CODE_FIXEDVALUE.lctid,
            PL_CODE_FIXEDVALUE.lcstatus,
            PL_CODE_FIXEDVALUE.ts,
            PL_CODE_FIXEDVALUE.id,
            PL_CODE_FIXEDVALUE.name,
            PL_CODE_FIXEDVALUE.description,
            PL_CODE_FIXEDVALUE.owner,
            PL_CODE_FIXEDVALUE.copyfromversion,
            PL_CODE_FIXEDVALUE.codefixedsecoid,
            PL_CODE_FIXEDVALUE.ordernum,
            COUNT( * ) OVER ( ) "##VCI_COUNT_VCI##"
        FROM
            PL_CODE_FIXEDVALUE
        WHERE
            PL_CODE_FIXEDVALUE.codefixedsecoid in
        <foreach collection="secOids" index="index" item="item" open="(" close=")" separator=",">
            #{item}
        </foreach>
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-ddl/pom.xml
@@ -32,6 +32,12 @@
            <groupId>com.vci</groupId>
            <artifactId>vci-starter-word</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>com.vci</groupId>
                    <artifactId>vci-starter-web</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/ddl/DdlMsMapperProcessor.java
@@ -1,8 +1,9 @@
package com.vci.ubcs.ddl.processor.ddl;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.ddl.mapper.DdlMSMapper;
import com.vci.ubcs.ddl.mapper.DdlMapper;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct;
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/ddl/DdlMySqlMapperProcessor.java
@@ -1,8 +1,9 @@
package com.vci.ubcs.ddl.processor.ddl;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.ddl.mapper.DdlMapper;
import com.vci.ubcs.ddl.mapper.DdlMySqlMapper;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMsMapperProcessor.java
@@ -1,11 +1,12 @@
package com.vci.ubcs.ddl.processor.dll;
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.ddl.mapper.DllMapper;
import com.vci.ubcs.ddl.mapper.DllMsMapper;
import com.vci.ubcs.ddl.mapper.DllOracleMapper;
import com.vci.ubcs.omd.vo.OmdBtmTypeAttributeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import org.apache.commons.lang3.StringUtils;
import javax.annotation.PostConstruct;
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMySqlMapperProcessor.java
@@ -1,10 +1,11 @@
package com.vci.ubcs.ddl.processor.dll;
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.ddl.mapper.DllMapper;
import com.vci.ubcs.ddl.mapper.DllOracleMapper;
import com.vci.ubcs.omd.vo.OmdBtmTypeAttributeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import org.apache.commons.lang3.StringUtils;
import javax.annotation.PostConstruct;
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllOracleMapperProcessor.java
@@ -1,12 +1,10 @@
package com.vci.ubcs.ddl.processor.dll;
import com.vci.starter.web.enumpck.DataBaseEnum;
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.ddl.mapper.DllMapper;
import com.vci.ubcs.ddl.mapper.DllOracleMapper;
import com.vci.ubcs.omd.vo.OmdBtmTypeAttributeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -1,7 +1,7 @@
package com.vci.ubcs.ddl.service.impl;
import com.alibaba.nacos.client.naming.NacosNamingService;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.word.bo.WordMergeStartTableDataBO;
import com.vci.ubcs.ddl.bo.DdlTableBO;
import com.vci.ubcs.ddl.bo.DdlTableInDataBaseBO;
@@ -20,6 +20,7 @@
import com.vci.ubcs.omd.vo.OsLinkTypeAttributeVO;
import com.vci.ubcs.omd.vo.OsLinkTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
@@ -314,7 +315,7 @@
        btmTypeHasAttributeVOMap.forEach((k, v) -> {
            OmdBtmTypeVO btmTypeVO = OmdBtmTypeCache.getDetail(k);
            if (btmTypeVO == null || StringUtils.isBlank(btmTypeVO.getOid())) {
                throw new com.vci.starter.web.exception.VciBaseException("要修改属性列长度的业务类型不存在");
                throw new VciBaseException("要修改属性列长度的业务类型不存在");
            }
            if (!isCompatibilityTable(btmTypeVO.getId(), null)) {
                addColumnForTable(btmTypeVO.getTableName(), v);
@@ -327,9 +328,9 @@
     *
     * @param tableName       è¡¨æ ¼åç§°
     * @param attributeVOList å±žæ€§çš„æ˜¾ç¤ºå¯¹è±¡
     * @throws com.vci.starter.web.exception.VciBaseException æ‰§è¡Œæˆ–者获取sql语句的时候出现错误会抛出异常
     * @throws VciBaseException æ‰§è¡Œæˆ–者获取sql语句的时候出现错误会抛出异常
     */
    private void addColumnForTable(String tableName, List<OmdBtmTypeAttributeVO> attributeVOList) {
    private void addColumnForTable(String tableName, List<OmdBtmTypeAttributeVO> attributeVOList) throws VciBaseException{
        String attributeSql = dllMapper.getCreateSqlByAttributeForBtm(attributeVOList);
        //先判断表格是否存在
        if (!checkTableExistByTableName(tableName)) {