ludc
2023-06-02 f39675fad28f66dd32aee1d3ee805ad99007bce5
代码整合
已修改60个文件
已删除3个文件
已重命名3个文件
已添加33个文件
34385 ■■■■ 文件已修改
.idea/workspace.xml 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package-lock.json 16657 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/formTemplate.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/integration/integration.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/linkType.js 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/refer/tree.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FindLike.vue 636 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue 791 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 787 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referSelectBtmAttrDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebRefer.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/router/axios.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/flow/model.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/integration/integrationIndex.vue 469 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/LinkType.vue 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/service-start.sh 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/service-stop.sh 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemConfigDTO.java 675 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoBseDTO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoDTO.java 664 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplateAttr.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystem.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingSystemConfigVO.java 672 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingSystemVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntInfoVO.java 746 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/LinkTypeDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeClient.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeFallback.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/GroupBaseModel.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreClassifyDTO.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreClassify.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreMetaAttr.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreApplyFormVO.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreClassifyVO.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/collection/DockingPreAttrMappingVOList.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingSystemConfigMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingSystemMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingManagement.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingLogeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingSystemConfigWrapper.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingSystemWrapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingSystemConfigMapper.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingSystemMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LinkTypeController.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LinkTypeMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILinkTypeService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/Dockerfile 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/controller/DockingPreApplyCodeController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/feigh/MdmInterJtClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreAttrMappingService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreClassifyServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/GroupMdmInterServiceImpl.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreClassifyMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-admin.log 8407 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-admin.log.2023-05-30.zip 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log 521 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log.2023-05-30.zip 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml
@@ -1,294 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="16f0b01c-a58c-44dd-9719-cb51eacd47bf" name="Default Changelist" comment="">
      <change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.browserslistrc" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.editorconfig" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.eslintrc.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.gitignore" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.postcssrc.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.project" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.settings/.jsdtscope" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.settings/org.eclipse.wst.jsdt.ui.superType.container" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/.settings/org.eclipse.wst.jsdt.ui.superType.name" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/LICENSE" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/README.md" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/babel.config.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/build.sh" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/package-lock.json" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/package.json" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/animate/3.5.2/animate.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/avue/2.9.12/avue.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/avue/2.9.12/index.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/axios/1.0.0/axios.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/element-ui/2.15.6/index.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/element-ui/2.15.6/theme-chalk/fonts/element-icons.ttf" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/element-ui/2.15.6/theme-chalk/fonts/element-icons.woff" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/element-ui/2.15.6/theme-chalk/index.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.eot" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.json" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.ttf" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.woff" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/avue/iconfont.woff2" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/index.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.eot" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.json" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.ttf" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.woff" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/iconfont/saber/iconfont.woff2" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/bpmn.08b5f281.eot" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/bpmn.3c4c9f45.woff2" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/bpmn.acbc6cbd.woff" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/bpmn.f922519e.ttf" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/codicon.22349029.ttf" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/fontawesome-webfont.674f50d2.eot" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/fontawesome-webfont.af7ae505.woff2" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/fontawesome-webfont.b06871f2.ttf" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/fonts/fontawesome-webfont.fee66e71.woff" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/img/bpmn.1381b44e.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/img/fontawesome-webfont.912ec66d.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/nutflow/wf-design-base/index.umd.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/vue-router/3.0.1/vue-router.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/vue/2.6.10/vue.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/vuex/3.1.1/vuex.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/xlsx/FileSaver.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/cdn/xlsx/xlsx.full.min.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/favicon.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/403.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/404.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/500.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/bg.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/bg1.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/bg2.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/bg3.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/bg4.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/cloud.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/img-logo.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/login.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/logo.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/star-squashed.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/vip1.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/vip2.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/vip3.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/bg/vip4.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/logo.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/card/card-1.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/card/card-2.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/card/card-3.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/card/card-4.jpg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/cli/1.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/cli/2.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/cli/3.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/img/mock/iconfont.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/index.html" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/svg/loading-spin.svg" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/util/aes.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/util/screen/guge.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/util/screen/huohu.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/util/screen/screen.css" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/public/util/screen/screen.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/App.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/base/region.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/common.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/desk/notice.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/flow/flow.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/logs.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/report/report.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/resource/attach.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/resource/oss.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/resource/sms.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/client.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/dept.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/dict.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/dictbiz.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/menu.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/param.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/passwordresultant.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/passwords.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/passwordvalue.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/post.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/role.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/scope.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/tenant.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/tenantpackage.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/topmenu.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/system/user.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/tool/code.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/tool/datasource.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/tool/model.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/user.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/work/process.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/api/work/work.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/cache.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/basic-block/main.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/basic-container/main.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/error-page/403.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/error-page/404.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/error-page/500.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/error-page/style.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/flow-design/main.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/iframe/main.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/components/third-register/main.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/config/env.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/config/iconList.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/config/website.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/const/tool/model.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/docker/Dockerfile" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/error.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/lang/en.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/lang/index.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/lang/zh.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/main.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mixins/color.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mixins/crud.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mock/index.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mock/menu.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mock/oauth.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mock/param.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/mock/user.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/option/system/dict.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/option/system/dictbiz.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/option/system/param.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/option/user/info.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/favicon.png" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/layout.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/logo.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/search.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/sidebar/config.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/sidebar/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/sidebar/sidebarItem.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/tags.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-color.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-lang.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-lock.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-logs.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-menu.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-notice.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-search.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/index/top/top-theme.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/lock/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/login/authredirect.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/login/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/login/thirdlogin.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/login/userlogin.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/page/logs/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/permission.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/router/avue-router.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/router/axios.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/router/page/index.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/router/router.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/router/views/index.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/getters.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/index.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/modules/common.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/modules/dict.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/modules/logs.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/modules/tags.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/store/modules/user.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/animate/vue-transition.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/common.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/element-ui.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/login.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/media.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/mixin.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/normalize.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/sidebar.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/tags.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/bule.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/cool.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/d2.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/dark.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/hey.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/index.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/iview.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/lte.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/star.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/vip.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/theme/white.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/top.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/styles/variables.scss" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/admin.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/auth.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/crypto.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/date.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/flow.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/func.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/store.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/util.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/util/validate.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/authority/apiscope.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/authority/datascope.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/authority/role.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/base/region.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/desk/notice.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/flow/deploy.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/flow/follow.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/flow/manager.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/flow/model.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/monitor/log/api.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/monitor/log/error.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/monitor/log/usual.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/report/reportlist.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/resource/attach.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/resource/oss.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/resource/sms.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/PasswordManagement/Passwordresultant.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/PasswordManagement/Passwordvalue.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/PasswordManagement/passwords.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/client.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/dept.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/dict.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/dictbiz.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/menu.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/param.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/post.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/tenant.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/tenantpackage.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/topmenu.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/user.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/system/userinfo.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/test.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/tool/code.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/tool/datasource.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/tool/model.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/affix.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/cache.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/crud-form.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/data.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/demo/dict-classic.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/demo/dict-horizontal.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/demo/dict-vertical.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/demo/dict.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/demo/dictbiz.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/form-detail.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/form.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/logs.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/permission.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/store.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/table.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/tags.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/test.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/util/top.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/wel/dashboard.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/wel/index.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/claim.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/done.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/process/leave/detail.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/process/leave/form.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/process/leave/handle.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/send.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/start.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/src/views/work/todo.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/public/vue.config.js" afterDir="false" />
    <list default="true" id="16f0b01c-a58c-44dd-9719-cb51eacd47bf" name="Default Changelist" comment="增加树参照组件">
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/src/api/refer/tree.js" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/Source/UBCS-WEB/src/components/FormTemplate/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/Source/UBCS-WEB/src/components/FormTemplate/index.vue" afterDir="false" />
    </list>
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -322,4 +39,8 @@
    </task>
    <servers />
  </component>
  <component name="VcsManagerConfiguration">
    <MESSAGE value="增加树参照组件" />
    <option name="LAST_COMMIT_MESSAGE" value="增加树参照组件" />
  </component>
</project>
Source/UBCS-WEB/package-lock.json
ÎļþÌ«´ó
Source/UBCS-WEB/src/api/formTemplate.js
@@ -20,8 +20,17 @@
// ç›¸ä¼¼é¡¹æŸ¥è¯¢
export const findLike = (data) => {
  return request({
    url: 'api/mdmEngineController/resembleQuery',
    url: 'api/ubcs-code/ubcs-code/mdmEngineController/resembleQuery',
    method: 'post',
    data
  })
}
// èŽ·å–æ•°æ®
export const getCodeRule = (params) => {
  return request({
    url: 'api/ubcs-code/ubcs-code/mdmEngineController/getCodeRuleByClassifyOid',
    method: 'get',
    params
  })
}
Source/UBCS-WEB/src/api/integration/integration.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
import request from '@/router/axios';
// ä¸»æ•°æ®åˆ†ç±»æ ‘
export const referCodeClassifyTree = (params) => {
    return request({
      url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/referCodeClassifyTree',
      method: 'get',
      params: params
    })
  }
  // ä¸»æ•°æ®åˆ†ç±»å±žæ€§ä¿¡æ¯
export const listCodeAttributeByClassId = (params) => {
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/listCodeAttributeByClassId',
    method: 'get',
    params: params
  })
}
// é›†å›¢åˆ†ç±»æ ‘
export const referTree = (params) => {
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/referTree',
    method: 'get',
    params: params
  })
}
// é›†å›¢åˆ†ç±»æ ‘(查询集团分类属性接口)
export const referTreeByClassId = (params) => {
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/listViewModelAttributeByClassId',
    method: 'get',
    params: params
  })
}
// å±žæ€§æ˜ å°„
export const gridAttrMapping = (params) => {
  return request({
    url: '/api//ubcs-applyjtcodeservice/DockingPreApplyCode/gridAttrMapping',
    method: 'get',
    params: params
  })
}
// å±žæ€§å–值范围映射
export const gridAttrRanges = (params) => {
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/gridAttrRanges',
    method: 'get',
    params: params
  })
}
// å±žæ€§æ˜ å°„保存方法
export const batchAddSave = (params) => {
  console.log(params)
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/batchAddSave',
    method: 'post',
    data: params
  })
}
//  åŒæ­¥é›†å›¢å±žæ€§æ¨¡åž‹è§†å›¾
export const syncClassifyModel = (params) => {
  console.log(params)
  return request({
    url: '/api/ubcs-applyjtcodeservice/DockingPreApplyCode/syncClassifyModel',
    method: 'post',
    data: params
  })
}
Source/UBCS-WEB/src/api/omd/linkType.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
import request from '@/router/axios';
export const initTree = () => {
    return request({
        url: '/api/ubcs-omd/link-type/tree-domain',
        method: 'get',
    })
}
export const refOnLoad = (domain) => {
    return request({
        url: '/api/ubcs-omd/link-type/get-from-table',
        method: 'get',
        params: {
            domain: domain
        }
    })
}
export const getDomain = () => {
    return request({
        url: '/api/ubcs-omd/link-type/domain',
        method: 'get'
    })
}
export const saveFromTable = (list,domain) => {
    return request({
        url: '/api/ubcs-omd/link-type/save-from-table/' + domain,
        method: 'post',
        data: list
    })
}
export const getDetail = (oid) => {
    return request({
        url: '/api/ubcs-omd/link-type/detail',
        method: 'get',
        params: {
            oid: oid
        }
    })
}
export const add = (linkType,auto) => {
    return request({
        url: '/api/ubcs-omd/link-type/submit/' + auto,
        method: 'post',
        data: linkType
    })
}
export const update = (linkType) => {
    return request({
        url: '/api/ubcs-omd/link-type/submit/' + auto,
        method: 'post',
        data: linkType
    })
}
export const btmPage = (current,size,params) => {
    return request ({
        url: '/api/ubcs-omd/link-type/page',
        method: 'get',
        params: {
            current,
            size,
            ...params
        }
    })
}
Source/UBCS-WEB/src/api/refer/tree.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
import request from "@/router/axios";
export const getTree = (params,url) => {
  return request({
    url: url || '/api/ubcs-code/codeClassify/treeCodeClassify',
    method: 'get',
    params: {
      ...params
    }
  })
}
export const getLazyTree = (params,url) => {
  return request({
    url: url||'/api/ubcs-system/dept/lazy-tree',
    method: 'get',
    params: {
      ...params
    }
  })
}
Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
<template>
  <FormTempalte
    ref="FormTempalte"
    :visible="visible"
    :selfColumnType="selfColumnType"
    :selfColumnConfig="selfColumnConfig"
    :columnList="columnList"
  ></FormTempalte>
</template>
<script>
import { getCodeRule } from "@/api/formTemplate.js";
import FormTempalte from "./FormTempalte.vue";
export default {
  name: "CodeApply",
  components: { FormTempalte },
  props: {
    visible: {
      type: Boolean,
      default: false
    },
    codeClassifyOid: {
      type: String,
      default: "",
    },
  },
  data() {
    return {
      secVOList: [],
      formItems: [],
      trendsSpan: 8,
      selfColumnType: {
        codefixedsec: "combox",
        codeclassifysec: "refer",
        codevariablesec: "text",
        coderefersec: "refer",
      },
      selfColumnConfig: {
        function: {
          required: this.isRequired,
          dicData: this.getOptionList,
          type: this.getType,
        },
        exchange: {
          text: "name",
          field: "oid",
          prop: "oid",
          showField: "name",
          parentClassifySecOid: "parentClassifySecOid",
          label: "name",
          maxlength: "codeSecLength",
          data: "fixedValueVOList",
        },
        directVoluation: {
          search: true,
          props: {
            label: "id",
            value: "id",
          },
        },
      },
      columnList: [],
    };
  },
  created() {
    this.handleResize();
  },
  mounted() {},
  methods: {
    getType(item) {
      return this.selfColumnType[item.sectype];
    },
    getCodeRule() {
      getCodeRule({ codeClassifyOid: this.codeClassifyOid }).then((res) => {
        if (res.data && res.data.code === 200) {
          this.defaultValue = res.data.data;
          this.columnList = res.data.data.secVOList || [];
          console.log(res.data.data.secVOList, 'res.data.data.secVOList');
          this.codeRuleOid = res.data.data.oid;
          this.$nextTick(() => {
            this.$refs.FormTempalte.init(res.data.data.secVOList)
          })
        }
      });
    },
    handleResize() {
      let windowWidth = document.body.clientWidth;
      this.trendsSpan = 24 / Math.floor(windowWidth / 500);
    },
    isRequired(item) {
      return item.nullableFlag != "true";
    },
    getOptionList(item) {
      if (
        Array.isArray(item.fixedValueVOList) &&
        item.fixedValueVOList.length > 0
      ) {
        const configAttr = {
          key: "id",
          value: "id",
        };
        const optionList = item.fixedValueVOList.map((item) => {
          for (const key in configAttr) {
            if (Object.hasOwnProperty.call(configAttr, key)) {
              const element = configAttr[key];
              item[key] = item[element];
            }
          }
          return item;
        });
        return optionList;
      } else {
        return [];
      }
    },
  },
  watch: {
  },
};
</script>
<style lang="less" scoped></style>
Source/UBCS-WEB/src/components/FormTemplate/FindLike.vue
ÎļþÒÑɾ³ý
Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,791 @@
<template>
  <div>
  <avue-form v-model="form" :option="option" v-loading="loading" ref="form"  :style="{minHeight: loading ? '300px' : ''}">
    <template :slot="item.prop + 'Label'" v-for="item in slotColumnList">
      <span>
        <span>{{ item.label }} </span>
        <el-tooltip
          v-if="item.keyAttr"
          class="item"
          effect="dark"
          content="该属性为关键属性"
          placement="top-start"
        >
          <i class="el-icon-star-on key_attr_icon"></i>
        </el-tooltip>
      </span>
    </template>
    <template :slot="item.prop + ''" v-for="item in slotColumnList">
      <vciWebRefer v-if="item.type=='refer'" :value="item.value" :options="item.referConfig"></vciWebRefer>
    </template>
  </avue-form>
  </div>
</template>
<script>
import { getFormTemplate } from "@/api/formTemplate";
import { getDictionary } from "../../api/system/dict";
import vciWebRefer from "../refer/vciWebRefer.vue";
export default {
  name: "FormTemplate",
  components: { vciWebRefer},
  props: {
    // é»˜è®¤ç¦ç”¨å…ƒç´ 
    disabledProp: {
      type: Array,
      default: () => ["id"],
    },
    templateOid: {
      type: String,
      default: "",
    },
    codeClassifyOid: {
      type: String,
      default: "",
    },
    // ä¿®æ”¹å›žæ˜¾çš„æ•°æ®
    editForm: {
      type: Object,
      default: () => ({}),
    },
    // è¡¨å•类型(add, edit, detail)
    type: {
      type: String,
      default: "add",
    },
    // è‡ªå®šä¹‰è¡¨å•类型
    selfColumnType: {
      type: Object,
      default: () => ({}),
    },
    // è‡ªå®šä¹‰è¡¨å•属性
    selfColumnConfig: {
      type: Object,
      default: () => ({}),
    },
  },
  data() {
    return {
      formIndex: 0,
      form: {},
      option: {
        emptyBtn: false,
        submitBtn: false,
        labelWidth: "130",
        column: [],
        group: [],
      },
      loading: true,
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        textarea: "textarea",
        datetime: "datetime",
        date: "date",
        refer:"refer"
      },
      // å‡æ•°æ®
      // testItems: [
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "id",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "传值禁用功能",
      //     tooltips: "",
      //     type: "combox",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "state",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: true,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "接口禁用功能",
      //     tooltips: "",
      //     type: "combox",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "oldcode",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "el-icon-search",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "文本后缀测试",
      //     text: "前后缀功能",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "materialname",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: true,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "正则校验功能",
      //     tooltips: "请输入数字",
      //     type: "text",
      //     unique: false,
      //     verify: "/[0-9]/",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: [
      //       {
      //         attributes: {},
      //         key: "model_type",
      //         value: "模型",
      //       },
      //       {
      //         attributes: {},
      //         key: "part_type",
      //         value: "零件",
      //       },
      //     ],
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "dataSelect",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "直接返回下拉",
      //     tooltips: "",
      //     type: "combox",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: "formTemplateTest",
      //     customClass: null,
      //     data: [],
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "dictSelect",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "字典返回下拉",
      //     tooltips: "",
      //     type: "combox",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "firstfl",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "数字输入框",
      //     tooltips: "",
      //     type: "number",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "yyyy-MM-dd HH:mm:ss",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "datetime",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "日期时间选择器",
      //     tooltips: "",
      //     type: "datetime",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "time",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "时间选择器",
      //     tooltips: "",
      //     type: "date",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "false",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "xiaoshouwl",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "开关",
      //     tooltips: "",
      //     type: "truefalse",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "我是默认值",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "tuhao",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "默认值功能",
      //     tooltips: "提示",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "xinghaoguige",
      //     hidden: false,
      //     keyAttr: true,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "属性关键值",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "jiliangdw",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     tip: "我是提示功能",
      //     required: false,
      //     selectLibFlag: "",
      //     showField: "jiliangdwname",
      //     suffix: "",
      //     text: "提示功能",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "fun1",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "参数1测试js",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "fun2",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: "hesuanfenleiname",
      //     suffix: "",
      //     text: "参数2测试js",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: "",
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "sum",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: true,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: "",
      //     suffix: "",
      //     text: "参数1参数2求和",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "textarea",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: false,
      //     referConfig: null,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: null,
      //     suffix: "",
      //     text: "文本域",
      //     tooltips: "",
      //     type: "textarea",
      //     unique: false,
      //     verify: "",
      //   },
      //   {
      //     comboxKey: null,
      //     customClass: null,
      //     data: null,
      //     dateFormate: "",
      //     defaultValue: "",
      //     displayExtension: null,
      //     extendAttrMap: null,
      //     extendAttrString: null,
      //     field: "cz",
      //     hidden: false,
      //     keyAttr: false,
      //     prefix: "",
      //     readOnly: true,
      //     referConfig: true,
      //     required: false,
      //     selectLibFlag: "",
      //     showField: "depId",
      //     suffix: "",
      //     text: "参照",
      //     tooltips: "",
      //     type: "text",
      //     unique: false,
      //     verify: "",
      //   },
      // ],
      trendsSpan: 8,
      defaultValue: {},
      // è¡¨å•属性
      attributes: [],
      slotColumnList: []
    };
  },
  mounted() {
    this.handleResize();
  },
  methods: {
    init(columnList) {
      if (Array.isArray(columnList)) {
        this.templateRender(columnList);
      } else {
        this.getFormTemplate();
      }
    },
    getFormTemplate() {
      getFormTemplate({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
      })
        .then((res) => {
          if (res.status === 200) {
            this.templateRender(res.data.formDefineVO.items);
            this.$emit("getFormTemplateEnd", res.data);
          }
        })
        .catch((err) => {
          this.loading = false;
          console.log(err);
        });
    },
    templateRender(formItemList) {
      // æ— éœ€åˆ†ç»„数据
      let column = [];
      let group = [];
      let dictKeys = [];
      let slotColumnList = []
      formItemList.forEach((formItem) => {
        formItem = this.resetFormConfig(formItem);
        if (formItem.type === "line") {
          group.push({
            label: formItem.text,
            prop: formItem.text,
            collapse: true,
            column: [],
          });
        }
        if (
          formItem.type === "combox" &&
          formItem.comboxKey &&
          (!Array.isArray(formItem.dicData) || formItem.dicData.length === 0)
        ) {
          dictKeys.push({ dictKey: formItem.comboxKey, field: formItem.field });
        }
        // ç¦ç”¨éƒ¨åˆ†å±žæ€§ï¼ˆå¤–部传值禁用和参照禁用)
        if (
          this.disabledProp.includes(formItem.field) //||
          //this.$utilFunc.isValuableObj(formItem.referConfig)
        ) {
          formItem.readOnly = true;
        }
        // è®¾ç½®è¡¨å•校验的规则,文本
        let message = "请选择";
        let trigger = "change";
        if (formItem.type === "text") {
          message = "请输入";
          trigger = "blur";
        }
        let columnItem = {
          label: formItem.text,
          labelslot: true,
          prop: this.$utilFunc.isValuableObj(formItem.referConfig)
            ? formItem.showField || formItem.field
            : formItem.field,
          field: formItem.field,
          type: this.columnType[formItem.type],
          dicData: this.getDataList(formItem.type, formItem.data),
          disabled: this.type === "detail" ? true : formItem.readOnly,
          prepend: this.preOrSufFixShow("text", formItem.prefix),
          append: this.preOrSufFixShow("text", formItem.suffix),
          prefixIcon: this.preOrSufFixShow("icon", formItem.prefix),
          suffixIcon: this.preOrSufFixShow("icon", formItem.suffix),
          valueFormat: formItem.dateFormate,
          format: formItem.dateFormate,
          keyAttr: formItem.keyAttr,
          value: formItem.defaultValue,
          tip: formItem.tooltips,
          tipPlacement: "right",
          comboxKey: formItem.comboxKey,
          display: !formItem.hidden,
          maxlength: formItem.maxlength,
          filterable: true,
          referConfig:formItem.referConfig,
          change: () => {
            this.changeFun(formItem.displayExtension, formItem.prop);
          },
          span: formItem.type === "textarea" ? 24 : this.trendsSpan,
          click: () => {
            this.clickFun(formItem.referConfig)
          },
          rules: [
            {
              required: formItem.required,
              message: `请${message}${formItem.text}`,
              trigger,
            },
            {
              // å¦‚果没有正则则匹配任何字符
              pattern: formItem.verify ? formItem.verify : /[\s\S.]*/g,
              message: formItem.tooltips,
              trigger,
            },
          ],
          props: {
            label: "value",
            value: "key",
          },
        };
        slotColumnList.push(columnItem)
        if (group.length === 0) {
          column.push(columnItem);
        } else {
          group[group.length - 1]["column"].push(columnItem);
        }
      });
      this.slotColumnList = slotColumnList;
      this.$set(this.option, "column", column);
      this.$set(this.option, "group", group);
      this.formIndex++;
      this.loading = false
      this.geDictData(dictKeys);
    },
    // ä½¿ç”¨ä¼ å…¥çš„表单数据配置
    resetFormConfig(formItem) {
      for (const configType in this.selfColumnConfig) {
        if (Object.hasOwnProperty.call(this.selfColumnConfig, configType)) {
          const element = this.selfColumnConfig[configType];
          if (configType === "function") {
            for (const attr in element) {
              if (Object.hasOwnProperty.call(element, attr)) {
                const fun = element[attr];
                formItem[attr] = fun(formItem);
              }
            }
          } else if (configType === "exchange") {
            for (const newAttr in element) {
              if (Object.hasOwnProperty.call(element, newAttr)) {
                const oldAttr = element[newAttr];
                formItem[newAttr] = formItem[oldAttr];
              }
            }
          } else if (configType === "directVoluation") {
            for (const attr in element) {
              if (Object.hasOwnProperty.call(element, attr)) {
                const value = element[attr];
                formItem[attr] = value;
              }
            }
          }
        }
      }
      return formItem;
    },
    handleResize() {
      let windowWidth = document.body.clientWidth;
      this.trendsSpan = 24 / Math.floor(windowWidth / 500);
      this.formIndex++;
    },
    // å‰åŽç¼€
    preOrSufFixShow(type, val) {
      if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
      const isIcon = val.slice(0, 8) === "el-icon-";
      if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
        return val;
      }
    },
    changeFun(displayExtension, prop) {
      // executeCode({displayExtension, data: this.form}).then(res => {
      //   this.form[prop] = res.data.data
      // })
    },
    clickFun(referConfig) {
      console.log(123123);
      if (this.type === "detail") {
        return;
      }
    },
    // èŽ·å–swich和已拿到的下拉数据
    getDataList(type, dicData) {
      if (type === "truefalse") {
        return [
          {
            key: false,
            value: "否",
          },
          {
            key: true,
            value: "是",
          },
        ];
      } else if (type === "combox") {
        return dicData;
      }
      return [];
    },
    // èŽ·å–å­—å…¸æ•°æ®
    geDictData(dictKeys) {
      dictKeys.forEach((dictObj) => {
        getDictionary({ code: dictObj.dictKey }).then((res) => {
          if (res.data && res.data.code === 200) {
            this.option.column = this.option.column.map((item) => {
              if (item.field === dictObj.field) {
                let dictData = (res.data.data || []).map((itm) => {
                  itm.value = itm.dictValue;
                  itm.key = itm.dictKey;
                  return itm;
                });
                item.dicData = dictData;
              }
              return item;
            });
          }
        });
      });
    },
  },
  watch: {
    form: {
      deep: true,
      immediate: true,
      handler(newV) {
        this.$emit("getFormData", newV);
      },
    },
  },
};
</script>
<style lang="less" scoped></style>
Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
<template>
  <div>
    <el-table :data="tableData" v-loading="loading" height="250" :border="true">
      <el-table-column
        type="index"
        width="60"
        label="序号"
        align="center"
      ></el-table-column>
      <el-table-column
        v-for="item in column[0]"
        :key="item.field"
        :prop="item.field"
        :label="item.title"
        :min-width="item.width"
        align="center"
      >
        <template #default="{ row }" v-if="item.field === 'id'">
          <el-button type="text" @click="openFormTemlpate(row)">{{
            row.id
          }}</el-button>
        </template>
        <template #default="{ row }" v-else>
          <span>{{ row[item.field] }}</span>
        </template>
      </el-table-column>
    </el-table>
    <FormTemplateDialog
      ref="FormTemplateDialog"
      type="detail"
      :visible.sync="formTemplateVisible"
      :templateOid="this.resembleTemplateOid"
      :codeClassifyOid="this.resembleCodeClassifyOid"
    ></FormTemplateDialog>
  </div>
</template>
<script>
import { findLike } from "@/api/formTemplate.js";
import FormTemplateDialog from "./index.vue";
export default {
  name: "ResembleQuery",
  components: { FormTemplateDialog },
  props: {
    column: {
      type: Array,
      default: () => [],
    },
    codeClassifyOid: {
      type: String,
      default: "",
    },
    templateOid: {
      type: String,
      default: "",
    },
    type: {
      type: String,
      default: "add",
    },
    form: {
      type: Object,
      default: () => ({}),
    },
    codeRuleOid: {
      type: String,
      default: "",
    },
  },
  data() {
    return {
      tableVisible: true,
      formTemplateVisible: false,
      activeName: "findlike",
      tableData: [],
      loading: false,
      resembleTemplateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
      resembleCodeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
      defaultValue: {},
      secVOList: [],
      defaultKeys: [
        "oid",
        "id",
        "name",
        "description",
        "revisionoid",
        "nameoid",
        "btmname",
        "lastr",
        "firstr",
        "lastv",
        "firstv",
        "creator",
        "createtime",
        "lastModifier",
        "lastmodifytime",
        "revisionrule",
        "revisionseq",
        "revisionvalue",
        "versionrule",
        "versionseq",
        "versionvalue",
        "lcstatus",
        "ts",
        "owner",
        "checkinby",
        "checkintime",
        "checkoutby",
        "checkouttime",
        "copyfromversion",
        "secretgrade",
      ],
      formItems: [],
    };
  },
  created() {},
  computed: {},
  methods: {
    // ç›¸ä¼¼é¡¹æŸ¥è¯¢
    resembleQuery(form) {
      this.loading = true;
      this.activeName = "findlike";
      const { defaultValue, formValue } =
        this.getDefaultValueAndFormValues(form);
      let params = {
        codeClassifyOid: this.codeClassifyOid,
        codeRuleOid: this.codeRuleOid,
        templateOid: this.templateOid,
        data: formValue
      };
      params = Object.assign(params, defaultValue);
      this.tableVisible = true;
      findLike(params).then((res) => {
        this.loading = false;
        this.tableData = res.data.data || [];
      });
    },
    openFormTemlpate(row) {
      this.codetemplateoid = row.codetemplateoid;
      this.formTemplateVisible = true;
    },
    getDefaultValueAndFormValues(form) {
      let defaultValue = {};
      let formValue = {};
      for (const key in form) {
        if (Object.hasOwnProperty.call(form, key)) {
          const element = form[key];
          if (this.defaultKeys.includes(key)) {
            defaultValue[key] = element;
          } else {
            formValue[key] = element;
          }
        }
      }
      return {
        defaultValue,
        formValue,
      };
    },
  },
};
</script>
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -5,569 +5,88 @@
    top="0vh"
    :title="title"
    class="avue-dialog avue-dialog--top"
    :width="dialogOptions.width"
    :width="width"
    append-to-body
    v-if="dialogVisible"
    @opened="openDialog"
  >
    <avue-form
      v-model="form"
      :option="option"
      v-loading="loading"
      ref="form"
      :key="index"
    >
      <template :slot="item.prop + 'Label'" v-for="item in option.column">
        <span>
          <span>{{ item.label }} </span>
          <el-tooltip
            v-if="item.keyAttr"
            class="item"
            effect="dark"
            content="该属性为关键属性"
            placement="top-start"
          >
            <i class="el-icon-star-on key_attr_icon"></i>
          </el-tooltip>
          <el-tooltip
            v-if="item.tip"
            class="item"
            effect="dark"
            :content="item.tip"
            placement="top-start"
          >
            <i class="el-icon-warning"></i>
          </el-tooltip>
        </span>
      </template>
    </avue-form>
    <FindLike ref="findLike"></FindLike>
    <FormTempalte
      v-bind="$attrs"
      :visible="visible"
      :type="type"
      v-if="dialogVisible"
      ref="FormTempalte"
      @getFormTemplateEnd="getFormTemplate"
      @getFormData="getFormData"
    ></FormTempalte>
    <div class="tab_box" v-if="type !== 'detail' && dialogVisible">
      <el-tabs v-model="activeName" type="card">
        <el-tab-pane label="码值申请" name="codeApply" v-if="showCodeApply">
          <CodeApply ref="CodeApply" v-bind="$attrs" @getCodeRuleOid="getCodeRuleOid"></CodeApply>
        </el-tab-pane>
        <el-tab-pane
          label="相似项查询"
          name="resembleQuery"
          v-if="showResembleQuery"
        >
          <ResembleQuery
            v-bind="$attrs"
            ref="resembleQueryRef"
            :hasResemble="this.hasResemble"
            :column="this.resembleTableColumn"
            :form="this.form"
            :codeRuleOid="codeRuleOid"
          ></ResembleQuery>
        </el-tab-pane>
      </el-tabs>
    </div>
    <div class="avue-dialog__footer" v-if="type !== 'detail'">
      <el-button @click="close()">取 æ¶ˆ</el-button>
      <el-button @click="close()" type="primary" :loading="submitBtnLoading">ç¡® å®š</el-button>
      <el-button @click="findLinkSubmit" type="primary">相似像查询</el-button>
      <el-button @click="close()" type="primary" :loading="submitBtnLoading"
        >ç¡® å®š</el-button
      >
      <el-button @click="resembleQuerySubmit" type="primary" v-if="hasResemble"
        >相似像查询</el-button
      >
    </div>
  </el-dialog>
</template>
<script>
import { getFormTemplate, executeCode, findLike } from "@/api/formTemplate";
import { getDictionary } from "../../api/system/dict";
import FindLike from "./FindLike.vue";
import FormTempalte from "./FormTempalte";
import ResembleQuery from "./ResembleQuery";
import CodeApply from "./CodeApply";
export default {
  name: "FormTemplate",
  components: { FindLike },
  name: "FormTemplateDialog",
  components: { ResembleQuery, FormTempalte, CodeApply },
  props: {
    visible: {
      type: Boolean,
      default: false,
    },
    disabledProp: {
      type: Array,
      default: () => ["id"],
    },
    templateOid: {
      type: String,
      default: "",
    },
    codeClassifyOid: {
      type: String,
      default: "",
    },
    type: {
      type: String,
      default: 'add'
      default: "add",
    },
    title: {
      type: String,
      default: '表单模板'
    }
      default: "表单模板",
    },
    width: {
      type: String,
      default: "80%",
    },
  },
  data() {
    return {
      index: 0,
      form: {},
      loading: false,
      dialogOptions: {
        width: "60%",
      },
      option: {
        emptyBtn: false,
        submitBtn: false,
        labelWidth: "120",
        column: [],
      },
      templateData: {},
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        textarea: "textarea",
        datetime: "datetime",
        date: "date"
      },
      // å‡æ•°æ®
      testItems: [
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "id",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "传值禁用功能",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "state",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "接口禁用功能",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "oldcode",
          hidden: false,
          keyAttr: false,
          prefix: "el-icon-search",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "文本后缀测试",
          text: "前后缀功能",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "materialname",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: true,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "正则校验功能",
          tooltips: "请输入数字",
          type: "text",
          unique: false,
          verify: "/[0-9]/",
        },
        {
          comboxKey: null,
          customClass: null,
          data: [
            {
              attributes: {},
              key: "model_type",
              value: "模型",
            },
            {
              attributes: {},
              key: "part_type",
              value: "零件",
            },
          ],
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "dataSelect",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "直接返回下拉",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: "formTemplateTest",
          customClass: null,
          data: [],
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "dictSelect",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "字典返回下拉",
          tooltips: "",
          type: "combox",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "firstfl",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "数字输入框",
          tooltips: "",
          type: "number",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "yyyy-MM-dd HH:mm:ss",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "datetime",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "日期时间选择器",
          tooltips: "",
          type: "datetime",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "time",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "时间选择器",
          tooltips: "",
          type: "date",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "false",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "xiaoshouwl",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "开关",
          tooltips: "",
          type: "truefalse",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "我是默认值",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "tuhao",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "默认值功能",
          tooltips: "提示",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "xinghaoguige",
          hidden: false,
          keyAttr: true,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "属性关键值",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "jiliangdw",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          tip: "我是提示功能",
          required: false,
          selectLibFlag: "",
          showField: "jiliangdwname",
          suffix: "",
          text: "提示功能",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
          extendAttrMap: null,
          extendAttrString: null,
          field: "fun1",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "参数1测试js",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
          extendAttrMap: null,
          extendAttrString: null,
          field: "fun2",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          required: false,
          selectLibFlag: "",
          showField: "hesuanfenleiname",
          suffix: "",
          text: "参数2测试js",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "sum",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          required: false,
          selectLibFlag: "",
          showField: "",
          suffix: "",
          text: "参数1参数2求和",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "textarea",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: "",
          showField: null,
          suffix: "",
          text: "文本域",
          tooltips: "",
          type: "textarea",
          unique: false,
          verify: "",
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "",
          defaultValue: "",
          displayExtension: null,
          extendAttrMap: null,
          extendAttrString: null,
          field: "cz",
          hidden: false,
          keyAttr: false,
          prefix: "",
          readOnly: true,
          referConfig: true,
          required: false,
          selectLibFlag: "",
          showField: "depId",
          suffix: "",
          text: "参照",
          tooltips: "",
          type: "text",
          unique: false,
          verify: "",
        },
      ],
      submitBtnLoading: false
      submitBtnLoading: false,
      hasResemble: false,
      resembleTableColumn: [],
      secVOList: [],
      activeName: "resembleQuery",
      codeRuleOid: '',
      form: {}
    };
  },
  created() {},
@@ -580,170 +99,48 @@
        this.$emit("update:visible", val);
      },
    },
    showCodeApply() {
      if (this.type === "add") {
        if (this.hasResemble && this.secVOList.length === 0) {
          return false;
        }
      } else {
        if (this.hasResemble) {
          return false;
        }
      }
      return true;
    },
    showResembleQuery() {
      return this.hasResemble;
    },
  },
  methods: {
    getFormTemplate() {
      this.loading = true;
      getFormTemplate({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
    openDialog() {
      this.$nextTick(() => {
        this.$refs.FormTempalte.init()
        this.$refs.CodeApply.getCodeRule()
      })
        .then((res) => {
          if (res.status === 200) {
            this.templateData = res.data;
            this.templateRender();
          }
          this.loading = false;
          console.log(res.data);
        })
        .catch((err) => {
          this.loading = false;
          console.log(err);
        });
    },
    templateRender() {
      const items = this.templateData.formDefineVO.items;
      let column = [];
      let dictKeys = [];
      items.forEach((item) => {
        // éšè—è¡¨å•元素
        if (item.hide) {
          return;
        }
        if (
          item.type === "combox" &&
          item.comboxKey &&
          (!Array.isArray(item.dicData) || item.dicData.length === 0)
        ) {
          dictKeys.push({ dictKey: item.comboxKey, field: item.field });
        }
        // ç¦ç”¨éƒ¨åˆ†å±žæ€§ï¼ˆå¤–部传值禁用和参照禁用)
        if (this.disabledProp.includes(item.field) || this.$utilFunc.isValuableObj(item.referConfig)) {
          item.readOnly = true;
        }
        // è®¾ç½®è¡¨å•校验的规则,文本
        let message = "请选择";
        let trigger = "change";
        if (item.type === "text") {
          message = "请输入";
          trigger = "blur";
        } else if (item.type === "file") {
          message = "请上传";
        }
        let columnItem = {
          label: item.text,
          labelslot: true,
          prop: this.$utilFunc.isValuableObj(item.referConfig) ? (item.showField || item.field) : item.field,
          type: this.columnType[item.type],
          dicData: this.getDataList(item.type, item.data),
          disabled: this.type === 'detail' ? true : item.readOnly,
          prepend: this.preOrSufFixShow("text", item.prefix),
          append: this.preOrSufFixShow("text", item.suffix),
          prefixIcon: this.preOrSufFixShow("icon", item.prefix),
          suffixIcon: this.preOrSufFixShow("icon", item.suffix),
          valueFormat: item.dateFormate,
          format: item.dateFormate,
          keyAttr: item.keyAttr,
          value: item.defaultValue,
          tip: item.tip,
          comboxKey: item.comboxKey,
          change: () => {
            this.changeFun(item.displayExtension, item.prop);
          },
          span: item.type === "file" || item.type === "textarea" ? 24 : null,
          click: this.clickFun(item.referConfig),
          rules: [
            {
              required: item.required,
              message: `请${message}${item.text}`,
              trigger,
            },
            {
              // å¦‚果没有正则则匹配任何字符
              pattern: item.verify ? item.verify : /[\s\S.]*/g,
              message: item.tooltips,
              trigger,
            },
          ],
          props: {
            label: "value",
            value: "key",
          },
        };
        column.push(columnItem);
        this.$set(this.option, "column", column);
      });
      this.index++;
      this.geDictData(dictKeys);
    close() {
      this.dialogVisible = false;
    },
    changeFun(displayExtension, prop) {
      // executeCode({displayExtension, data: this.form}).then(res => {
      //   this.form[prop] = res.data.data
      // })
    getCodeRuleOid(data) {
      this.codeRuleOid = data.oid
      this.secVOList = data.secVOList
    },
    clickFun(referConfig) {
      if (this.type === 'detail') {
        return
      }
    getFormTemplate(data) {
      this.hasResemble =
        data.resembleTableVO &&
        data.resembleTableVO.cols &&
        data.resembleTableVO.cols.length > 0;
      this.resembleTableColumn = data.resembleTableVO.cols || [];
    },
    // å‰åŽç¼€
    preOrSufFixShow(type, val) {
      if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
      const isIcon = val.slice(0, 8) === "el-icon-";
      if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
        return val;
      }
    getFormData(form) {
      this.form = form
    },
    // èŽ·å–swich和已拿到的下拉数据
    getDataList(type, dicData) {
      if (type === "truefalse") {
        return [
          {
            key: false,
            value: "否",
          },
          {
            key: true,
            value: "是",
          },
        ];
      } else if (type === "combox") {
        return dicData;
      }
      return [];
    },
    // èŽ·å–å­—å…¸æ•°æ®
    geDictData(dictKeys) {
      dictKeys.forEach((dictObj) => {
        getDictionary({ code: dictObj.dictKey }).then((res) => {
          if (res.data && res.data.code === 200) {
            this.option.column = this.option.column.map((item) => {
              if (item.field === dictObj.field) {
                let dictData = (res.data.data || []).map((itm) => {
                  itm.value = itm.dictValue;
                  itm.key = itm.dictKey;
                  return itm;
                });
                item.dicData = dictData;
              }
              return item;
            });
          }
        });
      });
    },
    findLinkSubmit() {
      this.templateData.templateVO.data = this.form
      console.log(this.$refs.findLike, 'this.$refs.findLike');
      this.$refs.findLike.findLinkClick(this.templateData.templateVO)
    }
  },
  watch: {
    visible(newV) {
      if (newV) {
        this.getFormTemplate();
        // this.templateRender()
      }
    resembleQuerySubmit() {
      this.$refs.resembleQueryRef.resembleQuery(this.form);
    },
  },
};
Source/UBCS-WEB/src/components/code-dialog-page/referSelectBtmAttrDialog.vue
@@ -130,7 +130,7 @@
            }
            let param = {};
            // å¤šä¸ªconditionMap这样传参
            if(crudParams.crudQuery){
            if(this.crudParams.crudQuery){
                Object.keys(crudParams.crudQuery).forEach(key=>{
                    param['conditionMap['+key+']'] = crudParams.crudQuery[key];
                });
Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
<template>
  <vciWebReferTree v-if="refertype=='tree'" :value="value" :options="options"></vciWebReferTree>
  <vciWebReferTable v-else-if="refertype=='table'" :value="value" :options="options"></vciWebReferTable>
  <vciWebReferDefalut v-else :value="value" :options="options"></vciWebReferDefalut>
</template>
<script>
import vciWebReferTree from "./vciWebReferTree.vue";
import vciWebReferTable from "./vciWebReferTable.vue";
import vciWebReferDefalut from "./vciWebReferTable.vue";
export default {
  name: "vciWebRefer",
  props:["options","value"],
  components: { vciWebReferTree,vciWebReferTable,vciWebReferDefalut},
  data() {
    return {
      refertype:this.options.type
    };
  },
  created() {
    if(this.refertype=='tree'){
      console.log('referConfig:')
      console.log(this.options)
    }
  },
  mounted() {
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
<template>
  <avue-input-table :props="props"  :column="column" :on-load="onLoad" v-model="value"  :placeholder="placeholder" ></avue-input-table>
</template>
<script>
export default {
  name: "vciWebReferTable",
  props:["options","value"],
  data() {
    return {
      placeholder:'请选择数据',
      column:{
        children:{
          border: true,
          column: [{
            label: '姓名',
            width: 120,
            search:true,
            prop: 'name'
          }, {
            label: '性别',
            search:true,
            prop: 'sex'
          }],
        },
      },
      props: {
        label: 'name',
        value: 'oid'
      }
    };
  },
  methods: {
    onLoad({page, value, data}, callback) {
      //首次加载去查询对应的值
      if (value) {
        this.$message.success('首次查询' + value)
        callback({
          id: '0',
          name: '张三',
          sex: '男'
        })
        return
      }
      if (data) {
        this.$message.success('搜索查询参数' + JSON.stringify(data))
      }
      if (page) {
        this.$message.success('分页参数' + JSON.stringify(page))
      }
      //分页查询信息
      callback({
        total: 2,
        data: [{
          id: '0',
          name: '张三',
          sex: '男'
        }, {
          id: '1',
          name: '李四',
          sex: '女'
        }]
      })
    }
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
<template>
  <avue-input-tree :props="props" :lazy="lazy" :tree-load="treeLoad" :leaf-only="!options.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="placeholder" :dic="treeData"></avue-input-tree>
</template>
<script>
import {getTree,getLazyTree} from "@/api/refer/tree";
export default {
  name: "vciWebReferTree",
  props:["options","value"],
  data() {
    return {
      lazy:this.options.loadType == 'node',
      isMuti:this.options.muti,
      placeholder:'请选择内容',
      props: {
        value:this.options.valueField || 'oid',
        label:this.options.textField || "name"
        //value:"value",
        //label:"title"
      },
      treeData:[],
      params:{}
    };
  },
  created() {
    this.getParams();
  },
  mounted() {
    if(!this.lazy){
      this.getTree()
    }
  },
  methods: {
    getParams:function (){
    },
    getTree(){
      getTree(this.params,this.options.url).then(res => {
          this.treeData=res.data
        })
    },
    treeLoad: function (treeNode, resolve) {
      const parentId = (treeNode.level === 0) ? 0 : treeNode.data.id;
      getLazyTree({...this.params,parentId:parentId}).then(res => {
        resolve(res.data.data.map(item => {
          return {
            ...item,
            leaf: !item.hasChildren
          }
        }))
      });
    }
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/main.js
@@ -45,6 +45,7 @@
import businessAdd from "@/views/modeling/BusinessAdd"
import TableCrud from "@/components/Crud/Crud"
import originalAdd from "@/views/modeling/originalAdd"
import FormTemplateDialog from "@/components/FormTemplate/index"
// å°†å·¥å…·å‡½æ•°æ·»åŠ åˆ°å…¨å±€
import utilFunc from './util/func'
@@ -91,6 +92,7 @@
Vue.component('originalAdd',originalAdd)
Vue.component('referBtmTypeCrudDialog',referBtmTypeCrudDialog)
Vue.component('referSelectBtmAttrDialog',referSelectBtmAttrDialog)
Vue.component('FormTemplateDialog',FormTemplateDialog)
// åŠ è½½ç›¸å…³url地址
Object.keys(urls).forEach(key => {
Source/UBCS-WEB/src/router/axios.js
@@ -17,7 +17,7 @@
import 'nprogress/nprogress.css';
//默认超时时间
axios.defaults.timeout = 10000;
axios.defaults.timeout = 20000;
//返回其他状态码
axios.defaults.validateStatus = function (status) {
  return status >= 200 && status <= 500;
Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue
@@ -1,18 +1,33 @@
<template>
  <div>
    <el-button @click="visible = true">测试</el-button>
    <FormTemplate :visible.sync="visible" templateOid="78B8C7C5-A042-0B96-FE6D-65421451782A" codeClassifyOid="4524E801-6CC6-92E8-1AC3-2AB9604E8F96"></FormTemplate>
    <FormTemplateDialog
      :visible.sync="visible"
      :FormTemplateProp="FormTemplateProp"
      :type="this.type"
      :editForm="editForm"
      :templateOid="this.templateOid"
      :codeClassifyOid="this.codeClassifyOid"
      :disabledProp="disabledProp"
    ></FormTemplateDialog>
  </div>
</template>codeClassifyOid
</template>
codeClassifyOid
<script>
import FormTemplate from "../../components/FormTemplate/index";
export default {
  name: "FormTempalteTest",
  components: { FormTemplate },
  data() {
    return {
      visible: false,
      // é»˜è®¤ç¦ç”¨çš„表元素
      disabledProp: ["id"],
      // ä¿®æ”¹å›žæ˜¾çš„æ•°æ®
      editForm: {},
      // è¡¨å•类型
      type: "add",
      templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
      codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
    };
  },
};
Source/UBCS-WEB/src/views/flow/model.vue
@@ -349,7 +349,7 @@
      deployModel({
        modelId: this.selectionId,
        category: flowCategory(form.categoryValue),
        tenantIds: form.tenantId.join(",")
        tenantIds: form.tenantId?form.tenantId.join(","):""
      }).then(res => {
        const data = res.data;
        if (data.success) {
Source/UBCS-WEB/src/views/integration/integrationIndex.vue
@@ -6,53 +6,69 @@
                    <el-input placeholder="输入关键字进行过滤" v-model="filterText">
                    </el-input>
                    <el-menu :default-openeds="['1', '3']">
                        <el-tree class="filter-tree" :data="treeData" :props="defaultProps" default-expand-all
                            :filter-node-method="filterNode" ref="tree">
                        <el-tree class="filter-tree" :data="treeData" accordion :props="defaultProps"
                            :filter-node-method="filterNode" empty-text="暂无数据" ref="tree" @node-click="handelTreeCell">
                        </el-tree>
                    </el-menu>
                </el-aside>
            </el-card>
            <el-main>
                <el-card>
                    <avue-crud :data="tableData" :option="option" ref="crud" @row-update="addUpdate" @row-save="rowSave"
                        @row-click="handleRowClick">
                        <template slot="menuLeft">
                            <el-button icon="el-icon-plus" size="small" type="primary" @click="dialogPush = true">新 å¢ž
                            </el-button>
                            <el-button icon="el-icon-check" size="small" type="primary" @click="handleSave">保 å­˜
                            </el-button>
                            <el-button icon="el-icon-connection" size="small" type="primary" @click="handleSync">同步模型
                            </el-button>
                        </template>
                    </avue-crud>
                    <el-form :model="form">
                        <el-form-item label="集团分类" label-width="70px" size="small">
                            <el-select clearable ref="selectTree" v-model="form.groupValue" placeholder="请选择"
                                popper-class="popperTreeSelect">
                                <el-option :value="groupVal" :label="groupVal">
                                    <el-tree ref="groupTree" :data="groupTreeData" empty-text="暂无数据" :props="defaultProps"
                                        @node-click="handleNodeClick">
                                    </el-tree>
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-form>
                    <el-card>
                        <avue-crud :table-loading="loading" :data="mappingData" :option="optionMapping" ref="crudMapping"
                            @row-update="handleUpdate" @row-click="handleMapingRowClick">
                            <template slot="menuLeft">
                                <el-button icon="el-icon-plus" size="small" type="primary" @click="dialogPush = true">新 å¢ž
                                </el-button>
                                <el-button icon="el-icon-check" size="small" type="primary" @click="handleSave">保 å­˜
                                </el-button>
                                <el-button icon="el-icon-connection" size="small" type="primary" @click="handleSync">同步模型
                                </el-button>
                            </template>
                        </avue-crud>
                    </el-card>
                    <el-card :style="{ marginTop: '20px' }">
                        <avue-crud :data="tableData" :option="optinos" ref="crud" @row-update="addUpdate"
                            @row-save="rowSave" @row-click="handleRowClick">
                        <avue-crud :data="rangeData" :option="optinoRange" ref="crudRange" @row-update="handleUpdate"
                            @row-dblclick="handleRowClick">
                        </avue-crud>
                    </el-card>
                </el-card>
                <el-dialog title="编码属性" :visible.sync="dialogPush" destroy-on-close append-to-body="true" width="30%"
                    :before-close="handleClose">
                    <el-form :model="form">
                        <el-form-item label="查询条件" label-width="70px" size="small">
                            <el-input v-model="form.name" autocomplete="off" @change="handleQuery"></el-input>
                        </el-form-item>
                    </el-form>
                    <p class="text_tip">*选择分类进行属性过滤, æˆ–者输入属性的全拼或者简拼进行查询! å¦‚: å§“名 (可输入xm或xinming )</p>
                    <transfer v-model="transferValue" :data="transferData" :filter-method="filterMethod"
                        filter-placeholder="请输入属性拼音全拼或者拼音缩写" @left-check-change="handelLeftCheck"></transfer>
                    <span slot="footer" class="dialog-footer">
                        <el-button @click="dialogPush = false">取 æ¶ˆ</el-button>
                        <el-button type="primary" @click="dialogVisible = false">保 å­˜</el-button>
                    </span>
                </el-dialog>
            </el-main>
        </el-container>
        <el-dialog title="编码属性" :visible.sync="dialogPush" append-to-body="true" destroy-on-close width="30%"
            :before-close="handleClose">
            <el-form :model="form">
                <el-form-item label="查询条件" label-width="70px" size="small">
                    <el-input v-model="form.name" autocomplete="off" @change="handleQuery"></el-input>
                </el-form-item>
            </el-form>
            <p class="text_tip">*选择分类进行属性过滤, æˆ–者输入属性的全拼或者简拼进行查询! å¦‚: å§“名 (可输入xm或xinming )</p>
            <transfer v-model="transferValue" :data="transferData" :filter-method="filterMethod"
                filter-placeholder="请输入拼音全拼或者拼音缩写" @left-check-change="handelLeftCheck"></transfer>
            <span slot="footer" class="dialog-footer">
                <el-button @click="dialogPush = false">取 æ¶ˆ</el-button>
                <el-button type="primary" @click="dialogPush = false">保 å­˜</el-button>
            </span>
        </el-dialog>
    </div>
</template>
<script>
import transfer from '@/components/transfer/index'
import pinyin from 'js-pinyin'
import { referCodeClassifyTree, referTree, gridAttrMapping, gridAttrRanges, batchAddSave, listCodeAttributeByClassId, syncClassifyModel } from '@/api/integration/integration.js'
export default {
    components: {
        transfer
@@ -72,245 +88,240 @@
            });
            return data;
        };
        const options = {
            menu: false,
            delBtn: false,
            addBtn: false,
            index: true,
            columnBtn: false,
            searchShow: true,
            emptyBtn: false,
            searchBtn: false,
            searchShowBtn: false,
            cellBtn: true,
            border: true,
            searchMenuSpan: 8,
        }
        return {
            form: {
                name: '',
                groupValue: ''
            },
            loading: false,
            ishowTree: false,
            search: '',
            transferData: generateData(),
            transferValue: [],
            dialogPush: false,
            tableData: [
                {
                    id: 1,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 2,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                },
                {
                    id: 3,
                    groupTypeName: '人员',
                    codeView: '编码视图',
                    sex: '性别',
                    typeName: '螺栓',
                    attributeName: '',
                    defaultValue: '',
                }
            ],
            mappingData: [],
            rangeData: [],
            filterText: '',
            optinos: {
            tableRowIndex: null,
            tableColumnIndex: null,
            optinoRange: {
                title: '集团属性',
                maxHeight: '300px',
                menu: true,
                delBtn: false,
                addBtn: false,
                index: true,
                header: false,
                columnBtn: false,
                searchShow: true,
                emptyBtn: false,
                searchBtn: false,
                searchShowBtn: false,
                cellBtn: true,
                border: true,
                searchMenuSpan: 8,
                rowKey: 'oid',
                column: [
                    { label: '属性集团枚举值', prop: 'groupTypeName', minWidth: 80, },
                    { label: '集团属性枚举显示名称', prop: 'codeView', minWidth: 80 },
                    { label: 'MDM枚举值', prop: 'sex', minWidth: 80 },
                    { label: 'MDM枚举显示名称', prop: 'typeName', minWidth: 80, overHidden: true },
                ]
                    { label: '属性集团枚举值', prop: 'numTextValue', minWidth: 80 },
                    { label: '集团属性枚举显示名称', prop: 'numText', minWidth: 80 },
                    { label: 'MDM枚举值', prop: 'targetNumTextValue', minWidth: 80, cell: true, blur: (value) => window.handleBlur(value, 'range') },
                    { label: 'MDM枚举显示名称', prop: 'targetNumText', minWidth: 80, cell: true, blur: (value) => window.handleBlur(value, 'range') },
                ],
                ...options
            },
            option: {
            optionMapping: {
                maxHeight: '500px',
                menu: true,
                delBtn: false,
                addBtn: false,
                index: true,
                header: true,
                columnBtn: false,
                searchShow: true,
                emptyBtn: false,
                searchBtn: false,
                searchShowBtn: false,
                cellBtn: true,
                border: true,
                searchMenuSpan: 8,
                rowKey: 'oid',
                column: [
                    {
                        label: '集团分类',
                        prop: 'groupTypeName',
                        minWidth: 80,
                        type: "select",
                        dicUrl: "/api/ubcs-system/dict/dictionary?code=org_category",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        slot: true,
                        search: true,
                        rules: [{
                            message: "请输入集团分类名称"
                        }]
                    },
                    { label: '所属视图', prop: 'codeView', minWidth: 80 },
                    { label: '集团属性', prop: 'sex', minWidth: 80 },
                    { label: '分类名称', prop: 'typeName', minWidth: 80, overHidden: true },
                    { label: '属性名称', prop: 'attributeName', minWidth: 80, cell: true },
                    { label: '默认值', prop: 'defaultValue', minWidth: 140, cell: true },
                ]
                    { label: '集团分类', prop: 'sourceClassifyName', minWidth: 80 },
                    { label: '所属视图', prop: 'viewName', minWidth: 80 },
                    { label: '集团属性', prop: 'sourceAttrName', minWidth: 80 },
                    { label: '分类名称', prop: 'targetClassifyName', minWidth: 80 },
                    { label: '属性名称', prop: 'targetAttrName', minWidth: 80 },
                    { label: '默认值', prop: 'defaultValue', minWidth: 140, cell: true, blur: (value) => window.handleBlur(value, 'mapping') },
                ],
                ...options
            },
            treeData: [{
                id: 1,
                label: '一级 1',
                children: [{
                    id: 4,
                    label: '二级 1-1',
                    children: [{
                        id: 9,
                        label: '三级 1-1-1'
                    }, {
                        id: 10,
                        label: '三级 1-1-2'
                    }]
                }]
            }, {
                id: 2,
                label: '一级 2',
                children: [{
                    id: 5,
                    label: '二级 2-1'
                }, {
                    id: 6,
                    label: '二级 2-2'
                }]
            }, {
                id: 3,
                label: '一级 3',
                children: [{
                    id: 7,
                    label: '二级 3-1'
                }, {
                    id: 8,
                    label: '二级 3-2'
                }]
            }],
            treeData: [],
            groupTreeData: [],
            defaultProps: {
                children: 'children',
                label: 'label'
            }
                label: 'name',
                id: 'oid',
                isLeaf: ''
            },
            groupVal: '',
            treeParam: {},
            rangeForm: {},
            mappingForm: {},
        }
    },
    watch: {
        filterText(val) {
            console.log(this.$refs.tree)
            this.$refs.tree.filter(val);
        }
    },
    created() {
        this.getReferCodeClassifyTree()
        pinyin.setOptions({ checkPolyphone: false, charCase: 1 });
        console.log(pinyin.getFullChars('管理员'))
        console.log(pinyin.getCamelChars('管理员'))
    },
    mounted() {
        window.handleBlur = this.handleBlur
    },
    methods: {
        // æŽ¥å£å·¦ä¾§æ ‘
        async getReferCodeClassifyTree() {
            const param = {
                parentBtmName: "jclass",
                valueField: "oid",
                textField: "name",
                parentFieldName: "id"
            }
            const response = await referCodeClassifyTree(param)
            console.log(response)
            if (response.status === 200) {
                let data = response.data;
                this.treeData = data.map(item => item.children ? { ...item, ...{ isLeaf: false } } : { ...item, ...{ isLeaf: true } })
            }
        },
        // æŽ¥å£èŽ·å–å±žæ€§æ˜ å°„
        async getGridAttrMapping(oid) {
            this.loading = true
            console.log(this.treeParam)
            const response = await gridAttrMapping({ sourceClassifyId: oid, ...this.treeParam })
            console.log(response)
            if (response.status === 200) {
                this.loading = false
                this.mappingData = response.data.data
            }
        },
        // æŽ¥å£èŽ·å–å±žæ€§æ˜ å°„å–å€¼èŒƒå›´
        async getGridAttrRanges(oid) {
            this.tablesData = []
            const response = await gridAttrRanges({ meatId: oid })
            console.log(response)
            if (response.status === 200) {
                this.rangeData = response.data
            }
        },
        // æŽ¥å£èŽ·å–ä¸»æ•°æ®åˆ†ç±»å±žæ€§ä¿¡æ¯
        async getListCodeByClassId(oid) {
            // this.tablesData = []
            const response = await listCodeAttributeByClassId({ codeClassifyId: oid })
            console.log(response)
        },
        // æŽ¥å£èŽ·å–é›†å›¢åˆ†ç±»æ ‘
        async referTree(oid, checked) {
            this.groupTreeData = []
            const response = await referTree({ 'conditionMap[codeclsfid]': oid, parentOid: null })
            console.log(response)
            if (response.status === 200) {
                if (checked) {
                    let items = response.data.map(item => {
                        let obj = {}
                        if (item.checked) obj = { ...item }
                        else obj = null
                        return obj
                    })
                    var r = items.filter(s => { return s && s.trim() });
                    this.groupTreeData = r
                } else {
                    this.groupTreeData = response.data
                }
            }
        },
        // å·¦ä¾§æ ‘过滤搜索
        filterNode(value, data) {
            if (!value) return true;
            return data.label.indexOf(value) !== -1;
            return data.name.indexOf(value) !== -1;
        },
        handleSave() {
        // ä¿å­˜æŒ‰é’®
        async handleSave() {
            console.log(this.mappingData)
            // const response = await batchAddSave({ dockingPreAttrMappingVOList: this.tableData })
            // console.log(response)
        },
        handlePush() {
        // åŒæ­¥æ•°æ®
        async handleSync() {
            const response = await syncClassifyModel({ dockingPreAttrMappingVOList: this.tableData })
            console.log(response)
        },
        handelLeftCheck(event) {
            console.log(event)
        },
        addUpdate(event, done) {
            console.log(event)
            done()
        },
        rowSave(event, done) {
            console.log(event)
            done()
        },
        handleRowClick(row, event, column) {
            console.log(row)
            console.log(event)
            console.log(column)
        },
        // æ–°å¢žå¼¹çª—查询按钮
        handleQuery(event) {
            console.log(event)
            this.form.name = event
        },
        filterMethod(query, item) {
        filterMethod(item) {
            return item.pinyins.indexOf(this.form.name) > -1;
        },
        // å·¦ä¾§æ ‘点击
        handelTreeCell(event) {
            if (event.leaf) {
                this.treeParam.codeClassifyId = event.oid
                this.form.groupValue = ''
                this.groupVal = ''
                this.tableData = []
                this.referTree(event.oid, event.checked)
                this.getListCodeByClassId(event.oid)
            }
        },
        // é›†å›¢åˆ†ç±»æ ‘点击
        handleNodeClick(data) {
            console.log(data)
            this.form.groupValue = data.name
            this.groupVal = data.name
            this.$refs.selectTree.blur()
            this.getGridAttrMapping(data.oid)
        },
        inputBlur() {
            this.tableColumnIndex = ''
            this.tableRowIndex = null
        },
        // å±žæ€§æ˜ å°„点击每行
        handleCellClick(event) {
            console.log('单击', event)
            // this.tableRowIndex = row.index
            // this.tableColumnIndex = column.index
            // this.getGridAttrRanges(event.metaListId)
        },
        handleBlur(value, event) {
            console.log(value)
            if (event === 'range') this.$refs.crudRange.rowCell(this.rangeForm, this.rangeForm.$index)
            if (event === 'mapping') this.$refs.crudMapping.rowCell(this.mappingForm, this.mappingForm.$index)
        },
        // å±žæ€§å–值范围单元格编辑
        handleMapingRowClick(row, column, cell, event) {
            this.mappingForm = row
            if (column.label === '默认值') this.$refs.crudMapping.rowCell(row, row.$index)
            else this.getGridAttrRanges(row.metaListId)
        },
        // å±žæ€§å–值范围单元格编辑
        handleRowClick(row, column, cell, event) {
            this.rangeForm = row
            console.log('单击', row)
            this.$refs.crudRange.rowCell(row, row.$index)
        },
        // å±žæ€§å–值范围单元格编辑
        handleUpdate(row, index, done, loading) {
            const findRow = this.mappingData.findIndex(item => item.metaListId === row.metaListId)
            console.log(findRow)
            this.mappingData[0].dockingPreAttrRangeVoList = [row]
            console.log('修改后', row)
            this.$message({
                showClose: true,
                message: "修改成功",
                type: "success",
            });
            done();
        }
    }
}
</script>
@@ -320,6 +331,14 @@
    color: #F56C6C;
}
.setstyle {
    min-height: 200px;
    padding: 0 !important;
    margin: 0;
    overflow: auto;
    cursor: default !important;
}
/deep/ .el-transfer-panel__list {
    width: 100%;
}
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -1,13 +1,16 @@
<template>
  <el-container>
    <el-header class="businessHeader" style="height: 40px;">
      <el-button type="primary" @click="businessAdd" size="small">新增</el-button>
      <el-button type="primary" @click="businessEdit" size="small">修改</el-button>
      <el-button type="primary" @click="selectFromTable" size="small">从已有中获取</el-button>
      <el-button-group>
        <el-button type="primary" @click="businessAdd" size="small"> <i class="el-icon-plus"></i>&nbsp; æ–°å¢ž</el-button>
        <el-button type="primary" @click="businessEdit" size="small"><i class="el-icon-edit"></i>&nbsp; ä¿®æ”¹</el-button>
        <el-button type="primary" @click="selectFromTable" size="small"><i class="el-icon-thumb"></i>&nbsp; ä»Žå·²æœ‰ä¸­èŽ·å–</el-button>
      </el-button-group>
    </el-header>
    <el-container>
      <el-aside width="240px">
        <basic-container class="businessTreeContainer">
          <p style="margin-top: 10px;font-weight: 570;font-size: 19px">{{ treeOption.title }}</p>
          <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick" class="businessTree">
            <span class="el-tree-node__label" slot-scope="{ node, data }">
              <span>
@@ -161,6 +164,7 @@
      treeOption: {
        defaultExpandAll: true,
        title: '业务类型树',
        addBtn: false,
        props: {
          labelText: '',
          label: 'name',
Source/UBCS-WEB/src/views/modeling/LinkType.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,263 @@
<template>
    <el-container>
        <!-- é¡¶ç«¯æŒ‰é’® -->
        <el-header class="businessHeader" style="height: 40px;">
            <el-button-group>
                <el-button type="primary" @click="linkTypeAdd" size="small">
                    <i class="el-icon-plus"></i>&nbsp;
                    æ–°å¢ž
                </el-button>
                <el-button type="primary" @click="linkTypeEdit" size="small">
                    <i class="el-icon-edit"></i>&nbsp;
                    ä¿®æ”¹
                </el-button>
                <el-button type="primary" @click="selectFromTable" size="small">
                    <i class="el-icon-thumb"></i>&nbsp;
                    ä»Žå·²æœ‰ä¸­èŽ·å–
                </el-button>
            </el-button-group>
        </el-header>
        <!-- ä¾§è¾¹æ æ ‘ -->
        <el-container>
            <el-aside width="240px">
                <basic-container class="businessTreeContainer">
                    <p style="margin-top: 10px;font-weight: 570;font-size: 19px">{{ treeOption.title }}</p>
                    <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick"
                        class="businessTree">
                        <span class="el-tree-node__label" slot-scope="{ node, data }">
                            <span>
                                <i class="el-icon-star-on"></i>
                                {{ (node || {}).label }}
                            </span>
                        </span>
                    </avue-tree>
                </basic-container>
            </el-aside>
            <el-container>
                <el-main>
                    <basic-container>
                        <p style="margin-top: 10px;font-weight: 570;font-size: 19px">基本信息</p>
                        <el-descriptions class="margin-top" :column="2" size="medium" border>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-finished"></i>
                                    è‹±æ–‡åç§°
                                </template>
                                {{ obj.id }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-info"></i>
                                    ä¸­æ–‡åç§°
                                </template>
                                {{ obj.name }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-date"></i>
                                    æ•°æ®åº“表名
                                </template>
                                {{ obj.tableName }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-folder-opened"></i>
                                    æ‰€å±žé¢†åŸŸ
                                </template>
                                <el-tag size="small">
                                    {{ obj.domainText }}
                                </el-tag>
                            </el-descriptions-item>
                        </el-descriptions>
                        <el-descriptions class="margin-top" direction="vertical" :column="2" border>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-sort-down"></i>
                                    From端类型
                                </template>
                                <span v-for="item in obj.fromBtmTypes" style="margin-left:2px;">
                                    <el-tag size="small" effect="plain" style="width:130px;margin-top: 2px;">
                                        {{ item.id + '(' + item.name + ')' }}
                                    </el-tag>
                                </span>
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-sort-up"></i>
                                    To段类型
                                </template>
                                <span v-for="item in obj.toBtmTypes" style="height:26px;width:140px;margin-left:2px">
                                    <el-tag size="small" effect="plain" style="width:130px;margin-top: 2px;">
                                        {{ item.id + '(' + item.name + ')' }}
                                    </el-tag>
                                </span>
                            </el-descriptions-item>
                        </el-descriptions>
                        <el-descriptions class="margin-top" :column="2" size="medium" border>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-info"></i>
                                    ä¸»ç±»åž‹
                                </template>
                                {{ obj.fromBtmTypeName }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-info"></i>
                                    ä¸»ç±»åž‹
                                </template>
                                {{ obj.toBtmTypeName }}
                            </el-descriptions-item>
                            <el-descriptions-item span='2' labelStyle="text-align:center;width:120px">
                                <template slot="label">
                                    <i class="el-icon-chat-line-square"></i>
                                    æè¿°
                                </template>
                                {{ obj.description }}
                            </el-descriptions-item>
                        </el-descriptions>
                    </basic-container>
                    <!-- å±žæ€§åˆ—表-->
                    <basic-container>
                        <p style="margin-top: 10px;font-weight: 570;font-size: 19px">属性列表</p>
                        <avue-crud class="attributeCrud" v-model="obj" :data="obj.attributes" :option="loadOption">
                            <template slot="attrDataType" slot-scope="{row}">
                                <el-tag>{{ row.attrDataType }}</el-tag>
                            </template>
                        </avue-crud>
                    </basic-container>
                </el-main>
            </el-container>
        </el-container>
    </el-container>
</template>
<script>
import {
    initTree,
    refOnLoad,
    getDomain,
    saveFromTable,
    getDetail
} from "@/api/omd/linkType"
export default {
    name: "LinkType",
    data() {
        return {
            treeData: [
                { id: "1", name: "2", label: "label" },
                { id: "a", name: "b", label: "c" }
            ],
            loadOption: {
                border: true,
                height: 360,
                editBtn: false,
                addBtn: false,
                menu: false,
                highlightCurrentRow: true,
                refreshBtn: false,
                columnBtn: false,
                column: [
                    {
                        label: '英文名称',
                        prop: 'id',
                        align: 'center'
                    }, {
                        label: '中文名称',
                        prop: 'name',
                        align: 'center'
                    },
                    {
                        label: '类型',
                        prop: 'attrDataType',
                        align: 'center',
                        slot: true
                    },
                    {
                        label: '默认值',
                        prop: 'defaultValue',
                        align: 'center'
                    },
                    {
                        label: '说明',
                        prop: 'description',
                        align: 'center'
                    }
                ]
            },
            obj: {
                id: 'linkType',
                name: '链接类型',
                tableName: 'PLLT_OMD_LINKTYPE',
                domain: 'ubcs-omd',
                domainText: '对象建模',
                fromBtmTypes: [
                    { id: 'btm', name: '业务类型' },
                    { id: 'btm2', name: '业务类型2' }
                ],
                toBtmTypes: [{ id: 'btm', name: '业务类型' }, { id: 'btm2', name: '业务类型2' }],
                fromBtmTypeName: '',
                toBtmTypeName: '',
            },
            treeOption: {
                defaultExpandAll: true,
                title: '链接类型树',
                addBtn: false,
                props: {
                    labelText: '',
                    label: 'name',
                    value: 'oid',
                    children: 'childList',
                }
            },
        }
    },
    created() {
        this.initTreeOnLoad();
        // this.initDomainOption();
    },
    methods: {
        // æ ‘点击
        nodeClick(data) {
            console.log(data);
        },
        // æ·»åŠ æŒ‰é’®ç‚¹å‡»äº‹ä»¶
        linkTypeAdd() {
        },
        // ç¼–辑按钮点击事件
        linkTypeEdit() {
        },
        // ä»Žå·²æœ‰ä¸­èŽ·å–æŒ‰é’®ç‚¹å‡»äº‹ä»¶
        selectFromTable() {
        },
        initTreeOnLoad() {
            initTree().then(res => {
                this.treeData = res.data.data;
            });
        }
    }
}
</script>
<style lang="scss">
.attributeCrud>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
    display: none !important;
}
</style>
Source/UBCS-WEB/vue.config.js
@@ -26,9 +26,10 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://localhost:37000',
         target: 'http://localhost:37000',
        // target: 'http://192.168.1.63:37000',
        //target: 'http://192.168.3.7:37000',
        //target: 'http://dev.vci-tech.com:37000',
        // target: 'http://dev.vci-tech.com:37000',
        //target: 'http://192.168.1.51:37000/',
        //远程演示服务地址,可用于直接启动项目
        // target: 'https://saber.bladex.vip/api',
Source/UBCS/service-start.sh
@@ -65,13 +65,15 @@
 docker build -f ./ubcs-service/ubcs-code/Dockerfile -t vci-ubcs/ubcs-code .
 docker run -d -p 36014:36014 --name ubcs-code vci-ubcs/ubcs-code:latest
 #启动omdy服务
 #启动omd服务
 docker build -f ./ubcs-service/ubcs-omd/Dockerfile -t vci-ubcs/ubcs-omd .
 docker run -d -p 36015:36015 --name ubcs-omd vci-ubcs/ubcs-omd:latest
 #启动applyjtcodeservice服务
 docker build -f ./ubcs-service/ubcs-webservice/Dockerfile -t vci-ubcs/ubcs-applyjtcodeservice .
 docker run -d -p 36015:36015 --name ubcs-applyjtcodeservice vci-ubcs/ubcs-applyjtcodeservice:latest
 #其他服务请自行添加
}
Source/UBCS/service-stop.sh
@@ -191,8 +191,18 @@
             echo $containerName" is not up!!!"
    fi
    #其他服务需要,请自行添加
    imagesName=vci-ubcs/ubcs-applyjtcodeservice
    containerName=ubcs-applyjtcodeservice
    if [[ -n $(docker ps -q -f "name=$containerName") ]];then
             echo $containerName"is up,we will stop and remove it !!!"
             docker stop $containerName
             docker rm $containerName
             docker rmi $imagesName
        else
             echo $containerName" is not up!!!"
    fi
    #其他服务需要,请自行添加
}
stop
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemConfigDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,675 @@
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.SysIntHeaderVO;
import com.vci.ubcs.code.vo.pagemodel.SysIntParamVO;
import java.util.List;
/**
 * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
 *
 * @author lihang
 * @date 2022-03-07
 */
public class DockingSystemConfigDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707120053955466L;
    /**
     * è®¤è¯æ–¹å¼
     */
    private String authorityOid;
    /**
     * è®¤è¯æ–¹å¼æ˜¾ç¤ºæ–‡æœ¬
     */
    private String authorityOidName;
    /**
     * è®¤è¯æ–¹å¼
     */
    private String authorityType;
    /**
     * è®¤è¯æ–¹å¼æ˜¾ç¤ºæ–‡æœ¬
     */
    private String authorityTypeText;
    /**
     * éªŒè¯ç”¨æˆ·
     */
    private String userAccount;
    /**
     * éªŒè¯å¯†ç 
     */
    private String userCode;
    /**
     * éªŒè¯ä»¤ç‰Œ
     */
    private String token;
    /**
     * æŽ¥å£å‡½æ•°
     */
    private String interfaceFunction;
    /**
     * æŽ¥å£æè¿°
     */
    private String description;
    /**
     * æŽ¥å£ç±»åž‹
     */
    private String interfaceType;
    /**
     * æŽ¥å£ç±»åž‹æ˜¾ç¤ºæ–‡æœ¬
     */
    private String interfaceTypeText;
    /**
     * å‚数类型
     */
    private String paramType;
    /**
     * å‚数类型显示文本
     */
    private String paramTypeText;
    /**
     * è¯·æ±‚方式
     */
    private String requestMethod;
    /**
     * è¯·æ±‚方式显示文本
     */
    private String requestMethodText;
    /**
     * åˆ†ç±»oid
     */
    private String classifyOid;
    /**
     * å¯ç”¨ã€åœç”¨true/false,不用平台的枚举,减少对平台的耦合
     */
    private String usedFlag;
    /**
     * æŽ¨é€ç³»ç»Ÿoid
     */
    private String sysBaseOid;
    /**
     * æŽ¨é€ç³»ç»Ÿç¼–号
     */
    private String sysBaseId;
    /**
     * æŽ¨é€ç³»ç»Ÿåç§°
     */
    private String sysBaseName;
    /**
     * è¯·æ±‚地址
     */
    private String requestUrl;
    /**
     * è¿”回值类型
     */
    private String returnType;
    /**
     * è¿”回值类型显示文本
     */
    private String returnTypeText;
    /**
     * æ¥æºç³»ç»Ÿä¸»é”®
     */
    private String sourceSystemOid;
    /**
     * æ¥æºç³»ç»Ÿåç§°
     */
    private String sourceSysName;
    /**
     * æ¥æºç³»ç»Ÿæ ‡è¯†
     */
    private String sourceSysId;
    /**
     * æ¥æºç³»ç»Ÿä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    private String sourceSystemOidName;
    /**
     * ç›®æ ‡ç³»ç»Ÿä¸»é”®
     */
    private String targetSystemOid;
    /**
     * ç›®æ ‡ç³»ç»Ÿåç§°
     */
    private String targetSysName;
    /**
     * ç›®æ ‡ç³»ç»Ÿæ ‡è¯†
     */
    private String targetSysId;
    /**
     * ç›®æ ‡ç³»ç»Ÿä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    private String targetSystemOidName;
    /**
     * ç±»è·¯å¾„
     */
    private String classPath;
    /**
     * æ•°æ®æµå‘方式
     */
    private String dataFlowType;
    /**
     * æ•°æ®æµå‘方式的显示字段
     */
    private String dataFlowTypeText;
    /**
     * å­˜å‚¨çš„业务类型
     */
    private String btmTypeId;
    /**
     * å­˜å‚¨çš„业务类型的中文名称
     */
    private String btmTypeName;
    /**
     * å‘½åç©ºé—´
     */
    private String namespace;
    /**
     * soapAction
     */
    private String soapAction;
    /**
     * cxfaxis
     */
    private String cxfAxis;
    /**
     * å‚数名称
     */
    private String targetName;
    /***
     * æŽ¨é€ç±»åž‹ 1:数据推送/2分类推送,默认数据推送
     */
    private String pushType;
    /***
     * æŽ¨é€ç±»åž‹æ˜¾ç¤ºå€¼
     */
    private String pushTypeText;
    /**
     * åˆ†ç±»id
     */
    private String classifyId;
    /**
     * åˆ†ç±»åç§°
     */
    private String classifyName;
    /***
     * å‚数信息对象
     */
    private List<SysIntParamVO> sysIntParamVOs;
    /***
     * header信息对象
     */
    private List<SysIntHeaderVO> sysIntHeaderVOs;
    public String getAuthorityOid() {
        return authorityOid;
    }
    public void setAuthorityOid(String authorityOid) {
        this.authorityOid = authorityOid;
    }
    public String getAuthorityOidName() {
        return authorityOidName;
    }
    public void setAuthorityOidName(String authorityOidName) {
        this.authorityOidName = authorityOidName;
    }
    public String getAuthorityType() {
        return authorityType;
    }
    public void setAuthorityType(String authorityType) {
        this.authorityType = authorityType;
    }
    public String getAuthorityTypeText() {
        return authorityTypeText;
    }
    public void setAuthorityTypeText(String authorityTypeText) {
        this.authorityTypeText = authorityTypeText;
    }
    public String getUserAccount() {
        return userAccount;
    }
    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public String getInterfaceFunction() {
        return interfaceFunction;
    }
    public void setInterfaceFunction(String interfaceFunction) {
        this.interfaceFunction = interfaceFunction;
    }
    @Override
    public String getDescription() {
        return description;
    }
    @Override
    public void setDescription(String description) {
        this.description = description;
    }
    public String getInterfaceType() {
        return interfaceType;
    }
    public void setInterfaceType(String interfaceType) {
        this.interfaceType = interfaceType;
    }
    public String getInterfaceTypeText() {
        return interfaceTypeText;
    }
    public void setInterfaceTypeText(String interfaceTypeText) {
        this.interfaceTypeText = interfaceTypeText;
    }
    public String getParamType() {
        return paramType;
    }
    public void setParamType(String paramType) {
        this.paramType = paramType;
    }
    public String getParamTypeText() {
        return paramTypeText;
    }
    public void setParamTypeText(String paramTypeText) {
        this.paramTypeText = paramTypeText;
    }
    public String getRequestMethod() {
        return requestMethod;
    }
    public void setRequestMethod(String requestMethod) {
        this.requestMethod = requestMethod;
    }
    public String getRequestMethodText() {
        return requestMethodText;
    }
    public void setRequestMethodText(String requestMethodText) {
        this.requestMethodText = requestMethodText;
    }
    public String getClassifyOid() {
        return classifyOid;
    }
    public void setClassifyOid(String classifyOid) {
        this.classifyOid = classifyOid;
    }
    public String getUsedFlag() {
        return usedFlag;
    }
    public void setUsedFlag(String usedFlag) {
        this.usedFlag = usedFlag;
    }
    public String getSysBaseOid() {
        return sysBaseOid;
    }
    public void setSysBaseOid(String sysBaseOid) {
        this.sysBaseOid = sysBaseOid;
    }
    public String getSysBaseId() {
        return sysBaseId;
    }
    public void setSysBaseId(String sysBaseId) {
        this.sysBaseId = sysBaseId;
    }
    public String getSysBaseName() {
        return sysBaseName;
    }
    public void setSysBaseName(String sysBaseName) {
        this.sysBaseName = sysBaseName;
    }
    public String getRequestUrl() {
        return requestUrl;
    }
    public void setRequestUrl(String requestUrl) {
        this.requestUrl = requestUrl;
    }
    public String getReturnType() {
        return returnType;
    }
    public void setReturnType(String returnType) {
        this.returnType = returnType;
    }
    public String getReturnTypeText() {
        return returnTypeText;
    }
    public void setReturnTypeText(String returnTypeText) {
        this.returnTypeText = returnTypeText;
    }
    public String getSourceSystemOid() {
        return sourceSystemOid;
    }
    public void setSourceSystemOid(String sourceSystemOid) {
        this.sourceSystemOid = sourceSystemOid;
    }
    public String getSourceSysName() {
        return sourceSysName;
    }
    public void setSourceSysName(String sourceSysName) {
        this.sourceSysName = sourceSysName;
    }
    public String getSourceSysId() {
        return sourceSysId;
    }
    public void setSourceSysId(String sourceSysId) {
        this.sourceSysId = sourceSysId;
    }
    public String getSourceSystemOidName() {
        return sourceSystemOidName;
    }
    public void setSourceSystemOidName(String sourceSystemOidName) {
        this.sourceSystemOidName = sourceSystemOidName;
    }
    public String getTargetSystemOid() {
        return targetSystemOid;
    }
    public void setTargetSystemOid(String targetSystemOid) {
        this.targetSystemOid = targetSystemOid;
    }
    public String getTargetSysName() {
        return targetSysName;
    }
    public void setTargetSysName(String targetSysName) {
        this.targetSysName = targetSysName;
    }
    public String getTargetSysId() {
        return targetSysId;
    }
    public void setTargetSysId(String targetSysId) {
        this.targetSysId = targetSysId;
    }
    public String getTargetSystemOidName() {
        return targetSystemOidName;
    }
    public void setTargetSystemOidName(String targetSystemOidName) {
        this.targetSystemOidName = targetSystemOidName;
    }
    public String getClassPath() {
        return classPath;
    }
    public void setClassPath(String classPath) {
        this.classPath = classPath;
    }
    public String getDataFlowType() {
        return dataFlowType;
    }
    public void setDataFlowType(String dataFlowType) {
        this.dataFlowType = dataFlowType;
    }
    public String getDataFlowTypeText() {
        return dataFlowTypeText;
    }
    public void setDataFlowTypeText(String dataFlowTypeText) {
        this.dataFlowTypeText = dataFlowTypeText;
    }
    public String getBtmTypeId() {
        return btmTypeId;
    }
    public void setBtmTypeId(String btmTypeId) {
        this.btmTypeId = btmTypeId;
    }
    public String getBtmTypeName() {
        return btmTypeName;
    }
    public void setBtmTypeName(String btmTypeName) {
        this.btmTypeName = btmTypeName;
    }
    public String getNamespace() {
        return namespace;
    }
    public void setNamespace(String namespace) {
        this.namespace = namespace;
    }
    public String getSoapAction() {
        return soapAction;
    }
    public void setSoapAction(String soapAction) {
        this.soapAction = soapAction;
    }
    public String getCxfAxis() {
        return cxfAxis;
    }
    public void setCxfAxis(String cxfAxis) {
        this.cxfAxis = cxfAxis;
    }
    public String getTargetName() {
        return targetName;
    }
    public void setTargetName(String targetName) {
        this.targetName = targetName;
    }
    public String getPushType() {
        return pushType;
    }
    public void setPushType(String pushType) {
        this.pushType = pushType;
    }
    public String getPushTypeText() {
        return pushTypeText;
    }
    public void setPushTypeText(String pushTypeText) {
        this.pushTypeText = pushTypeText;
    }
    public String getClassifyId() {
        return classifyId;
    }
    public void setClassifyId(String classifyId) {
        this.classifyId = classifyId;
    }
    public String getClassifyName() {
        return classifyName;
    }
    public void setClassifyName(String classifyName) {
        this.classifyName = classifyName;
    }
    public List<SysIntParamVO> getSysIntParamVOs() {
        return sysIntParamVOs;
    }
    public void setSysIntParamVOs(List<SysIntParamVO> sysIntParamVOs) {
        this.sysIntParamVOs = sysIntParamVOs;
    }
    public List<SysIntHeaderVO> getSysIntHeaderVOs() {
        return sysIntHeaderVOs;
    }
    public void setSysIntHeaderVOs(List<SysIntHeaderVO> sysIntHeaderVOs) {
        this.sysIntHeaderVOs = sysIntHeaderVOs;
    }
    @Override
    public String toString() {
        return "SysIntInfoDTO{" +
            "authorityOid='" + authorityOid + '\'' +
            ", authorityOidName='" + authorityOidName + '\'' +
            ", authorityType='" + authorityType + '\'' +
            ", authorityTypeText='" + authorityTypeText + '\'' +
            ", userAccount='" + userAccount + '\'' +
            ", userCode='" + userCode + '\'' +
            ", token='" + token + '\'' +
            ", interfaceFunction='" + interfaceFunction + '\'' +
            ", description='" + description + '\'' +
            ", interfaceType='" + interfaceType + '\'' +
            ", interfaceTypeText='" + interfaceTypeText + '\'' +
            ", paramType='" + paramType + '\'' +
            ", paramTypeText='" + paramTypeText + '\'' +
            ", requestMethod='" + requestMethod + '\'' +
            ", requestMethodText='" + requestMethodText + '\'' +
            ", classifyOid='" + classifyOid + '\'' +
            ", usedFlag='" + usedFlag + '\'' +
            ", sysBaseOid='" + sysBaseOid + '\'' +
            ", sysBaseId='" + sysBaseId + '\'' +
            ", sysBaseName='" + sysBaseName + '\'' +
            ", requestUrl='" + requestUrl + '\'' +
            ", returnType='" + returnType + '\'' +
            ", returnTypeText='" + returnTypeText + '\'' +
            ", sourceSystemOid='" + sourceSystemOid + '\'' +
            ", sourceSysName='" + sourceSysName + '\'' +
            ", sourceSysId='" + sourceSysId + '\'' +
            ", sourceSystemOidName='" + sourceSystemOidName + '\'' +
            ", targetSystemOid='" + targetSystemOid + '\'' +
            ", targetSysName='" + targetSysName + '\'' +
            ", targetSysId='" + targetSysId + '\'' +
            ", targetSystemOidName='" + targetSystemOidName + '\'' +
            ", classPath='" + classPath + '\'' +
            ", dataFlowType='" + dataFlowType + '\'' +
            ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
            ", btmTypeId='" + btmTypeId + '\'' +
            ", btmTypeName='" + btmTypeName + '\'' +
            ", namespace='" + namespace + '\'' +
            ", soapAction='" + soapAction + '\'' +
            ", cxfAxis='" + cxfAxis + '\'' +
            ", targetName='" + targetName + '\'' +
            ", pushType='" + pushType + '\'' +
            ", pushTypeText='" + pushTypeText + '\'' +
            ", classifyId='" + classifyId + '\'' +
            ", classifyName='" + classifyName + '\'' +
            ", sysIntParamVOs=" + sysIntParamVOs +
            ", sysIntHeaderVOs=" + sysIntHeaderVOs +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntBaseDTO.java ÐÞ¸Ä
@@ -9,7 +9,7 @@
 * @author lihang
 * @date 2022-03-07
 */
public class SysIntBaseDTO extends BaseModelVO {
public class DockingSystemDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoBseDTO.java
@@ -5,17 +5,17 @@
import java.util.List;
public class SysIntInfoBseDTO extends BaseModelVO {
    private SysIntInfoDTO sysIntInfoDTO;
    private DockingSystemConfigDTO sysIntInfoDTO;
    private List<SysIntParamDTO> sysIntParamDTO;
    private List<SysIntHeaderDTO> sysIntHeaderDTOS;
    public SysIntInfoDTO getSysIntInfoDTO() {
    public DockingSystemConfigDTO getSysIntInfoDTO() {
        return sysIntInfoDTO;
    }
    public void setSysIntInfoDTO(SysIntInfoDTO sysIntInfoDTO) {
    public void setSysIntInfoDTO(DockingSystemConfigDTO sysIntInfoDTO) {
        this.sysIntInfoDTO = sysIntInfoDTO;
    }
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoDTO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplateAttr.java
@@ -158,6 +158,11 @@
     */
    //@Column(columnDefinition = "所属属性分组")
    private String attributeGroup;
    /**
     * è¾“入显示
     */
    //@Column(columnDefinition = "输入显示")
    private String inputTip;
    /**
     * ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystem.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
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;
/****
 * é›†æˆç®¡ç†æŽ¥å£-集成系统维护对象
 * @author xiejun
 * @date 2023-06-01
 */
@Data
@TableName("PL_CODE_SYSINTBASE")
@ApiModel(value = "DockingSystem", description = "集成管理接口-集成系统维护对象")
@EqualsAndHashCode(callSuper = true)
public class DockingSystem extends BaseModel {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707117716142023L;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,312 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.code.vo.pagemodel.SysIntHeaderVO;
import com.vci.ubcs.code.vo.pagemodel.SysIntParamVO;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/***
 * é›†æˆæŽ¥å£-集成接口管理对象
 * @author xiejun
 * @date 2023-06-01
 */
@Data
@TableName("PL_CODE_SYSINTINFO")
@ApiModel(value = "DockingSystemConfig", description = "集成接口-集成接口管理对象")
@EqualsAndHashCode(callSuper = true)
public class DockingSystemConfig extends BaseModel{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707117716142069L;
    /**
     * è®¤è¯æ–¹å¼
     */
    /***
     * é›†å›¢åˆ†ç±»oid
     */
    @ApiModelProperty(value = "认证方式")
    //@TableField(value = "authorityOid")
    private String authorityOid;
    /**
     * è®¤è¯æ–¹å¼æ˜¾ç¤ºæ–‡æœ¬
     */
    @ApiModelProperty(value = "认证方式显示文本")
    @TableField(exist = false)
    private String authorityOidName;
    /**
     * è®¤è¯æ–¹å¼
     */
    @ApiModelProperty(value = "认证方式")
    @TableField(exist = false)
    private String authorityType;
    /**
     * è®¤è¯æ–¹å¼æ˜¾ç¤ºæ–‡æœ¬
     */
    @ApiModelProperty(value = "认证方式显示文本")
    @TableField(exist = false)
    private String authorityTypeText;
    /**
     * éªŒè¯ç”¨æˆ·
     */
    @ApiModelProperty(value = "验证用户")
    @TableField(exist = false)
    private String userAccount;
    /**
     * éªŒè¯å¯†ç 
     */
    @ApiModelProperty(value = "验证密码")
    @TableField(exist = false)
    private String userCode;
    /**
     * éªŒè¯ä»¤ç‰Œ
     */
    @ApiModelProperty(value = "验证令牌")
    @TableField(exist = false)
    private String token;
    /**
     * æŽ¥å£å‡½æ•°
     */
    @ApiModelProperty(value = "接口函数")
    private String interfaceFunction;
    /**
     * æŽ¥å£æè¿°
     *//*
    @ApiModelProperty(value = "接口描述")
    private String description;*/
    /**
     * æŽ¥å£ç±»åž‹
     */
    @ApiModelProperty(value = "接口类型")
    private String interfaceType;
    /**
     * æŽ¥å£ç±»åž‹æ˜¾ç¤ºæ–‡æœ¬
     */
    @ApiModelProperty(value = "接口类型显示文本")
    @TableField(exist = false)
    private String interfaceTypeText;
    /**
     * å‚数类型
     */
    @ApiModelProperty(value = "参数类型")
    private String paramType;
    /**
     * å‚数类型显示文本
     */
    @ApiModelProperty(value = "参数类型显示文本")
    @TableField(exist = false)
    private String paramTypeText;
    /**
     * è¯·æ±‚方式
     */
    @ApiModelProperty(value = "请求方式")
    private String requestMethod;
    /**
     * è¯·æ±‚方式显示文本
     */
    @ApiModelProperty(value = "请求方式显示文本")
    @TableField(exist = false)
    private String requestMethodText;
    /**
     * åˆ†ç±»oid
     */
    @ApiModelProperty(value = "分类oid")
    private String classifyOid;
    /**
     * å¯ç”¨ã€åœç”¨true/false,不用平台的枚举,减少对平台的耦合
     */
    @ApiModelProperty(value = "启用、停用true/false,不用平台的枚举,减少对平台的耦合")
    private String usedFlag;
    /**
     * æŽ¨é€ç³»ç»Ÿoid
     */
    @ApiModelProperty(value = "推送系统oid")
    private String sysBaseOid;
    /**
     * æŽ¨é€ç³»ç»Ÿç¼–号
     */
    @ApiModelProperty(value = "推送系统编号")
    private String sysBaseId;
    /**
     * æŽ¨é€ç³»ç»Ÿåç§°
     */
    @ApiModelProperty(value = "推送系统名称")
    private String sysBaseName;
    /**
     * è¯·æ±‚地址
     */
    @ApiModelProperty(value = "请求地址")
    private String requestUrl;
    /**
     * è¿”回值类型
     */
    @ApiModelProperty(value = "返回值类型")
    private String returnType;
    /**
     * è¿”回值类型显示文本
     */
    @ApiModelProperty(value = "返回值类型显示文本")
    @TableField(exist = false)
    private String returnTypeText;
    /**
     * æ¥æºç³»ç»Ÿä¸»é”®
     */
    @ApiModelProperty(value = "来源系统主键")
    private String sourceSystemOid;
    /**
     * æ¥æºç³»ç»Ÿåç§°
     */
    @ApiModelProperty(value = "来源系统名称")
    private String sourceSysName;
    /**
     * æ¥æºç³»ç»Ÿæ ‡è¯†
     */
    @ApiModelProperty(value = "来源系统标识")
    private String sourceSysId;
    /**
     * æ¥æºç³»ç»Ÿä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    @ApiModelProperty(value = "来源系统主键显示文本")
    @TableField(exist = false)
    private String sourceSystemOidName;
    /**
     * ç›®æ ‡ç³»ç»Ÿä¸»é”®
     */
    @ApiModelProperty(value = "目标系统主键")
    private String targetSystemOid;
    /**
     * ç›®æ ‡ç³»ç»Ÿåç§°
     */
    @ApiModelProperty(value = "目标系统名称")
    private String targetSysName;
    /**
     * ç›®æ ‡ç³»ç»Ÿæ ‡è¯†
     */
    @ApiModelProperty(value = "目标系统标识")
    private String targetSysId;
    /**
     * ç›®æ ‡ç³»ç»Ÿä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    @ApiModelProperty(value = "目标系统主键显示文本")
    @TableField(exist = false)
    private String targetSystemOidName;
    /**
     * ç±»è·¯å¾„
     */
    @ApiModelProperty(value = "类路径")
    private String classPath;
    /**
     * æ•°æ®æµå‘方式
     */
    @ApiModelProperty(value = "认证方式显示文本")
    private String dataFlowType;
    /**
     * æ•°æ®æµå‘方式的显示字段
     */
    @ApiModelProperty(value = "数据流向方式的显示字段")
    @TableField(exist = false)
    private String dataFlowTypeText;
    /**
     * å­˜å‚¨çš„业务类型
     */
    @ApiModelProperty(value = "存储的业务类型")
    private String btmTypeId;
    /**
     * å­˜å‚¨çš„业务类型的中文名称
     */
    @ApiModelProperty(value = "存储的业务类型的中文名称")
    private String btmTypeName;
    /**
     * å‘½åç©ºé—´
     */
    @ApiModelProperty(value = "命名空间")
    private String namespace;
    /**
     * soapAction
     */
    @ApiModelProperty(value = "soapAction")
    private String soapAction;
    /**
     * cxfaxis
     */
    @ApiModelProperty(value = "cxfaxis")
    private String cxfAxis;
    /**
     * å‚数名称
     */
    @ApiModelProperty(value = "参数名称")
    @TableField(value = "targname")
    private String targetName;
    /***
     * æŽ¨é€ç±»åž‹ 1:数据推送/2分类推送,默认数据推送
     */
    @ApiModelProperty(value = "推送类型 1:数据推送/2分类推送,默认数据推送")
    private String pushType;
    /***
     * æŽ¨é€ç±»åž‹æ˜¾ç¤ºå€¼
     */
    @ApiModelProperty(value = "推送类型显示值")
    @TableField(exist = false)
    private String pushTypeText;
    /**
     * åˆ†ç±»id
     */
    @ApiModelProperty(value = "分类id")
    private String classifyId;
    /**
     * åˆ†ç±»åç§°
     */
    @ApiModelProperty(value = "分类名称")
    private String classifyName;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java
@@ -17,10 +17,18 @@
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.mp.support.BladePage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * ä¸»é¢˜åº“定义表 Feign接口类
@@ -35,7 +43,9 @@
    String API_PREFIX = "/codeClass";
    String TOP = API_PREFIX + "/top";
    String CODE_CLASSIFY_TREE=API_PREFIX+"/referCodeClassifyTree";
    String CODE_ATTRIBUTE_LIST=API_PREFIX+"/listCodeAttributeByClassId";
    String CODE_GETBYID="/getById";
    /**
     * èŽ·å–ä¸»é¢˜åº“å®šä¹‰è¡¨åˆ—è¡¨
     *
@@ -46,4 +56,27 @@
    @GetMapping(TOP)
    BladePage<CodeClassify> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
    /***
     * èŽ·å–ä¸»é¢˜åº“åˆ†ç±»å±‚çº§æ ‘
     * @param treeQueryObject
     * @return ä¸»é¢˜åº“分类
     */
    @PostMapping(CODE_CLASSIFY_TREE)
    public List<Tree> referCodeClassifyTree(@RequestBody TreeQueryObject treeQueryObject);
    /***
     * èŽ·å–ä¸»æ•°æ®æ¨¡æ¿å±žæ€§ä¿¡æ¯
     * @param codeClassifyId
     * reutn è¿”回主数据模板属性信息
     */
    @GetMapping(CODE_ATTRIBUTE_LIST)
    public List<CodeClassifyTemplateAttrVO> listCodeAttributeByClassId(@RequestParam("codeClassifyId") String codeClassifyId);
    /***
     * æ ¹æ®åˆ†ç±»id差爱心分类信息
     * @param classifyId
     * @return
     */
    @GetMapping(CODE_GETBYID)
     CodeClassify getById(@RequestParam("classifyId")String classifyId);
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java
@@ -16,18 +16,12 @@
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;
/**
@@ -45,6 +39,7 @@
    String API_PREFIX = "/mdmEngineClient";
    String SELECT_BY_TYPE_OID = API_PREFIX + "/selectByTypeAndOid";
    String INSERT_BATCH_BY_TYPE = API_PREFIX + "/insertBatchByType";
    String UPDATE_BATCH_BY_TYPE = API_PREFIX + "/updateBatchByType";
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸oid集合查询数据进行返回
@@ -54,7 +49,7 @@
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    @GetMapping(SELECT_BY_TYPE_OID)
    R<List<BaseModel>> selectByTypeAndOid(@RequestParam("btmType") String btmType, @RequestParam("oids") String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException;
    R<List<BaseModel>> selectByTypeAndOid(@RequestParam("btmType") String btmType, @RequestParam("oids") String oids);
    /**
@@ -64,6 +59,15 @@
     * @param baseModels      å¤„理数据
     * @return å¤„理成功数据条数
     */
    @GetMapping(INSERT_BATCH_BY_TYPE)
    R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception;
    @PostMapping(INSERT_BATCH_BY_TYPE)
    R<Integer> insertBatchByType(@RequestParam("btmType")String btmType,@RequestBody List<BaseModel> baseModels);
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ›´æ–°æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理状态
     */
    @PostMapping(UPDATE_BATCH_BY_TYPE)
    R<Integer> updateBatchByType(@RequestParam("btmType")String btmType,@RequestBody List<BaseModel> baseModels);
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java
@@ -19,10 +19,6 @@
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;
/**
@@ -34,12 +30,17 @@
public class IMdmEngineFallback implements IMdmEngineClient {
    @Override
    public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException {
    public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
        return R.fail("获取数据失败");
    public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels){
        return R.fail("插入数据失败");
    }
    @Override
    public R<Integer> updateBatchByType(String btmType, List<BaseModel> baseModels) {
        return R.fail("更新数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
@@ -290,6 +290,10 @@
     * çº§è”查询属性
     */
    private String parentQueryAttr;
    /**
     * è¾“入提示
     */
    private String inputTip;
    @Override
    public String toString() {
@@ -348,6 +352,7 @@
            ", libraryIdentification='" + libraryIdentification + '\'' +
            ", parentCode='" + parentCode + '\'' +
            ", parentName='" + parentName + '\'' +
            ", inputTip='" + inputTip + '\'' +
            ", parentQueryAttr='" + parentQueryAttr + '\'' +
            '}';
    }
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingSystemConfigVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,672 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import java.util.List;
/**
 * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡
 *
 * @author lihang
 * @date 2022-03-07
 */
public class DockingSystemConfigVO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707117716142069L;
    /**
     * è®¤è¯æ–¹å¼
     */
    private String authorityOid;
    /**
     * è®¤è¯æ–¹å¼æ˜¾ç¤ºæ–‡æœ¬
     */
    private String authorityOidName;
    /**
     * è®¤è¯æ–¹å¼
     */
    private String authorityType;
    /**
     * è®¤è¯æ–¹å¼æ˜¾ç¤ºæ–‡æœ¬
     */
    private String authorityTypeText;
    /**
     * éªŒè¯ç”¨æˆ·
     */
    private String userAccount;
    /**
     * éªŒè¯å¯†ç 
     */
    private String userCode;
    /**
     * éªŒè¯ä»¤ç‰Œ
     */
    private String token;
    /**
     * æŽ¥å£å‡½æ•°
     */
    private String interfaceFunction;
    /**
     * æŽ¥å£æè¿°
     */
    private String description;
    /**
     * æŽ¥å£ç±»åž‹
     */
    private String interfaceType;
    /**
     * æŽ¥å£ç±»åž‹æ˜¾ç¤ºæ–‡æœ¬
     */
    private String interfaceTypeText;
    /**
     * å‚数类型
     */
    private String paramType;
    /**
     * å‚数类型显示文本
     */
    private String paramTypeText;
    /**
     * è¯·æ±‚方式
     */
    private String requestMethod;
    /**
     * è¯·æ±‚方式显示文本
     */
    private String requestMethodText;
    /**
     * åˆ†ç±»oid
     */
    private String classifyOid;
    /**
     * å¯ç”¨ã€åœç”¨true/false,不用平台的枚举,减少对平台的耦合
     */
    private String usedFlag;
    /**
     * æŽ¨é€ç³»ç»Ÿoid
     */
    private String sysBaseOid;
    /**
     * æŽ¨é€ç³»ç»Ÿç¼–号
     */
    private String sysBaseId;
    /**
     * æŽ¨é€ç³»ç»Ÿåç§°
     */
    private String sysBaseName;
    /**
     * è¯·æ±‚地址
     */
    private String requestUrl;
    /**
     * è¿”回值类型
     */
    private String returnType;
    /**
     * è¿”回值类型显示文本
     */
    private String returnTypeText;
    /**
     * æ¥æºç³»ç»Ÿä¸»é”®
     */
    private String sourceSystemOid;
    /**
     * æ¥æºç³»ç»Ÿåç§°
     */
    private String sourceSysName;
    /**
     * æ¥æºç³»ç»Ÿæ ‡è¯†
     */
    private String sourceSysId;
    /**
     * æ¥æºç³»ç»Ÿä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    private String sourceSystemOidName;
    /**
     * ç›®æ ‡ç³»ç»Ÿä¸»é”®
     */
    private String targetSystemOid;
    /**
     * ç›®æ ‡ç³»ç»Ÿåç§°
     */
    private String targetSysName;
    /**
     * ç›®æ ‡ç³»ç»Ÿæ ‡è¯†
     */
    private String targetSysId;
    /**
     * ç›®æ ‡ç³»ç»Ÿä¸»é”®æ˜¾ç¤ºæ–‡æœ¬
     */
    private String targetSystemOidName;
    /**
     * ç±»è·¯å¾„
     */
    private String classPath;
    /**
     * æ•°æ®æµå‘方式
     */
    private String dataFlowType;
    /**
     * æ•°æ®æµå‘方式的显示字段
     */
    private String dataFlowTypeText;
    /**
     * å­˜å‚¨çš„业务类型
     */
    private String btmTypeId;
    /**
     * å­˜å‚¨çš„业务类型的中文名称
     */
    private String btmTypeName;
    /**
     * å‘½åç©ºé—´
     */
    private String namespace;
    /**
     * soapAction
     */
    private String soapAction;
    /**
     * cxfaxis
     */
    private String cxfAxis;
    /**
     * å‚数名称
     */
    private String targetName;
    /***
     * æŽ¨é€ç±»åž‹ 1:数据推送/2分类推送,默认数据推送
     */
    private String pushType;
    /***
     * æŽ¨é€ç±»åž‹æ˜¾ç¤ºå€¼
     */
    private String pushTypeText;
    /**
     * åˆ†ç±»id
     */
    private String classifyId;
    /**
     * åˆ†ç±»åç§°
     */
    private String classifyName;
    /***
     * å‚数信息对象
     */
    private List<SysIntParamVO> sysIntParamVOs;
    /***
     * header信息对象
     */
    private List<SysIntHeaderVO> sysIntHeaderVOs;
    public String getAuthorityOid() {
        return authorityOid;
    }
    public void setAuthorityOid(String authorityOid) {
        this.authorityOid = authorityOid;
    }
    public String getAuthorityOidName() {
        return authorityOidName;
    }
    public void setAuthorityOidName(String authorityOidName) {
        this.authorityOidName = authorityOidName;
    }
    public String getAuthorityType() {
        return authorityType;
    }
    public void setAuthorityType(String authorityType) {
        this.authorityType = authorityType;
    }
    public String getAuthorityTypeText() {
        return authorityTypeText;
    }
    public void setAuthorityTypeText(String authorityTypeText) {
        this.authorityTypeText = authorityTypeText;
    }
    public String getUserAccount() {
        return userAccount;
    }
    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public String getInterfaceFunction() {
        return interfaceFunction;
    }
    public void setInterfaceFunction(String interfaceFunction) {
        this.interfaceFunction = interfaceFunction;
    }
    @Override
    public String getDescription() {
        return description;
    }
    @Override
    public void setDescription(String description) {
        this.description = description;
    }
    public String getInterfaceType() {
        return interfaceType;
    }
    public void setInterfaceType(String interfaceType) {
        this.interfaceType = interfaceType;
    }
    public String getInterfaceTypeText() {
        return interfaceTypeText;
    }
    public void setInterfaceTypeText(String interfaceTypeText) {
        this.interfaceTypeText = interfaceTypeText;
    }
    public String getParamType() {
        return paramType;
    }
    public void setParamType(String paramType) {
        this.paramType = paramType;
    }
    public String getParamTypeText() {
        return paramTypeText;
    }
    public void setParamTypeText(String paramTypeText) {
        this.paramTypeText = paramTypeText;
    }
    public String getRequestMethod() {
        return requestMethod;
    }
    public void setRequestMethod(String requestMethod) {
        this.requestMethod = requestMethod;
    }
    public String getRequestMethodText() {
        return requestMethodText;
    }
    public void setRequestMethodText(String requestMethodText) {
        this.requestMethodText = requestMethodText;
    }
    public String getClassifyOid() {
        return classifyOid;
    }
    public void setClassifyOid(String classifyOid) {
        this.classifyOid = classifyOid;
    }
    public String getUsedFlag() {
        return usedFlag;
    }
    public void setUsedFlag(String usedFlag) {
        this.usedFlag = usedFlag;
    }
    public String getSysBaseOid() {
        return sysBaseOid;
    }
    public void setSysBaseOid(String sysBaseOid) {
        this.sysBaseOid = sysBaseOid;
    }
    public String getSysBaseId() {
        return sysBaseId;
    }
    public void setSysBaseId(String sysBaseId) {
        this.sysBaseId = sysBaseId;
    }
    public String getSysBaseName() {
        return sysBaseName;
    }
    public void setSysBaseName(String sysBaseName) {
        this.sysBaseName = sysBaseName;
    }
    public String getRequestUrl() {
        return requestUrl;
    }
    public void setRequestUrl(String requestUrl) {
        this.requestUrl = requestUrl;
    }
    public String getReturnType() {
        return returnType;
    }
    public void setReturnType(String returnType) {
        this.returnType = returnType;
    }
    public String getReturnTypeText() {
        return returnTypeText;
    }
    public void setReturnTypeText(String returnTypeText) {
        this.returnTypeText = returnTypeText;
    }
    public String getSourceSystemOid() {
        return sourceSystemOid;
    }
    public void setSourceSystemOid(String sourceSystemOid) {
        this.sourceSystemOid = sourceSystemOid;
    }
    public String getSourceSysName() {
        return sourceSysName;
    }
    public void setSourceSysName(String sourceSysName) {
        this.sourceSysName = sourceSysName;
    }
    public String getSourceSysId() {
        return sourceSysId;
    }
    public void setSourceSysId(String sourceSysId) {
        this.sourceSysId = sourceSysId;
    }
    public String getSourceSystemOidName() {
        return sourceSystemOidName;
    }
    public void setSourceSystemOidName(String sourceSystemOidName) {
        this.sourceSystemOidName = sourceSystemOidName;
    }
    public String getTargetSystemOid() {
        return targetSystemOid;
    }
    public void setTargetSystemOid(String targetSystemOid) {
        this.targetSystemOid = targetSystemOid;
    }
    public String getTargetSysName() {
        return targetSysName;
    }
    public void setTargetSysName(String targetSysName) {
        this.targetSysName = targetSysName;
    }
    public String getTargetSysId() {
        return targetSysId;
    }
    public void setTargetSysId(String targetSysId) {
        this.targetSysId = targetSysId;
    }
    public String getTargetSystemOidName() {
        return targetSystemOidName;
    }
    public void setTargetSystemOidName(String targetSystemOidName) {
        this.targetSystemOidName = targetSystemOidName;
    }
    public String getClassPath() {
        return classPath;
    }
    public void setClassPath(String classPath) {
        this.classPath = classPath;
    }
    public String getDataFlowType() {
        return dataFlowType;
    }
    public void setDataFlowType(String dataFlowType) {
        this.dataFlowType = dataFlowType;
    }
    public String getDataFlowTypeText() {
        return dataFlowTypeText;
    }
    public void setDataFlowTypeText(String dataFlowTypeText) {
        this.dataFlowTypeText = dataFlowTypeText;
    }
    public String getBtmTypeId() {
        return btmTypeId;
    }
    public void setBtmTypeId(String btmTypeId) {
        this.btmTypeId = btmTypeId;
    }
    public String getBtmTypeName() {
        return btmTypeName;
    }
    public void setBtmTypeName(String btmTypeName) {
        this.btmTypeName = btmTypeName;
    }
    public String getNamespace() {
        return namespace;
    }
    public void setNamespace(String namespace) {
        this.namespace = namespace;
    }
    public String getSoapAction() {
        return soapAction;
    }
    public void setSoapAction(String soapAction) {
        this.soapAction = soapAction;
    }
    public String getCxfAxis() {
        return cxfAxis;
    }
    public void setCxfAxis(String cxfAxis) {
        this.cxfAxis = cxfAxis;
    }
    public String getTargetName() {
        return targetName;
    }
    public void setTargetName(String targetName) {
        this.targetName = targetName;
    }
    public String getPushType() {
        return pushType;
    }
    public void setPushType(String pushType) {
        this.pushType = pushType;
    }
    public String getPushTypeText() {
        return pushTypeText;
    }
    public void setPushTypeText(String pushTypeText) {
        this.pushTypeText = pushTypeText;
    }
    public String getClassifyId() {
        return classifyId;
    }
    public void setClassifyId(String classifyId) {
        this.classifyId = classifyId;
    }
    public String getClassifyName() {
        return classifyName;
    }
    public void setClassifyName(String classifyName) {
        this.classifyName = classifyName;
    }
    public List<SysIntParamVO> getSysIntParamVOs() {
        return sysIntParamVOs;
    }
    public void setSysIntParamVOs(List<SysIntParamVO> sysIntParamVOs) {
        this.sysIntParamVOs = sysIntParamVOs;
    }
    public List<SysIntHeaderVO> getSysIntHeaderVOs() {
        return sysIntHeaderVOs;
    }
    public void setSysIntHeaderVOs(List<SysIntHeaderVO> sysIntHeaderVOs) {
        this.sysIntHeaderVOs = sysIntHeaderVOs;
    }
    @Override
    public String toString() {
        return "SysIntInfoVO{" +
            "authorityOid='" + authorityOid + '\'' +
            ", authorityOidName='" + authorityOidName + '\'' +
            ", authorityType='" + authorityType + '\'' +
            ", authorityTypeText='" + authorityTypeText + '\'' +
            ", userAccount='" + userAccount + '\'' +
            ", userCode='" + userCode + '\'' +
            ", token='" + token + '\'' +
            ", interfaceFunction='" + interfaceFunction + '\'' +
            ", description='" + description + '\'' +
            ", interfaceType='" + interfaceType + '\'' +
            ", interfaceTypeText='" + interfaceTypeText + '\'' +
            ", paramType='" + paramType + '\'' +
            ", paramTypeText='" + paramTypeText + '\'' +
            ", requestMethod='" + requestMethod + '\'' +
            ", requestMethodText='" + requestMethodText + '\'' +
            ", classifyOid='" + classifyOid + '\'' +
            ", usedFlag='" + usedFlag + '\'' +
            ", sysBaseOid='" + sysBaseOid + '\'' +
            ", sysBaseId='" + sysBaseId + '\'' +
            ", sysBaseName='" + sysBaseName + '\'' +
            ", requestUrl='" + requestUrl + '\'' +
            ", returnType='" + returnType + '\'' +
            ", returnTypeText='" + returnTypeText + '\'' +
            ", sourceSystemOid='" + sourceSystemOid + '\'' +
            ", sourceSysName='" + sourceSysName + '\'' +
            ", sourceSysId='" + sourceSysId + '\'' +
            ", sourceSystemOidName='" + sourceSystemOidName + '\'' +
            ", targetSystemOid='" + targetSystemOid + '\'' +
            ", targetSysName='" + targetSysName + '\'' +
            ", targetSysId='" + targetSysId + '\'' +
            ", targetSystemOidName='" + targetSystemOidName + '\'' +
            ", classPath='" + classPath + '\'' +
            ", dataFlowType='" + dataFlowType + '\'' +
            ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
            ", btmTypeId='" + btmTypeId + '\'' +
            ", btmTypeName='" + btmTypeName + '\'' +
            ", namespace='" + namespace + '\'' +
            ", soapAction='" + soapAction + '\'' +
            ", cxfAxis='" + cxfAxis + '\'' +
            ", targetName='" + targetName + '\'' +
            ", pushType='" + pushType + '\'' +
            ", pushTypeText='" + pushTypeText + '\'' +
            ", classifyId='" + classifyId + '\'' +
            ", classifyName='" + classifyName + '\'' +
            ", sysIntParamVOs=" + sysIntParamVOs +
            ", sysIntHeaderVOs=" + sysIntHeaderVOs +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingSystemVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntBaseVO.java ÐÞ¸Ä
@@ -8,7 +8,7 @@
 * @author lihang
 * @date 2022-03-07
 */
public class SysIntBaseVO extends BaseModelVO {
public class DockingSystemVO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntInfoVO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java
@@ -133,6 +133,10 @@
     * åŽç¼€
     */
    private String suffix;
    /**
     * è¾“入提示
     */
    private String inputTip;
    public boolean isKeyAttr() {
        return keyAttr;
@@ -149,6 +153,13 @@
    public void setField(String field) {
        this.field = field;
    }
    public String getInputTip() {
        return inputTip;
    }
    public void setInputTip(String inputTip) {
        this.inputTip = inputTip;
    }
    public String getText() {
        return text;
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/LinkTypeDTO.java
@@ -48,6 +48,11 @@
     */
    private String implClass;
    /**
     * æ•°æ®è¡¨å
     */
    private String tableName;
    /**
     * from端业务类型
     */
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
@@ -53,6 +53,11 @@
     */
    private String implClass;
    /**
     * æ•°æ®è¡¨å
     */
    private String tableName;
    /**
     * from端业务类型
     */
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeClient.java
@@ -1,11 +1,9 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -13,9 +11,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * Description: ä¸šåŠ¡ç±»åž‹Feign接口类
@@ -54,6 +50,12 @@
     */
    String GET_BY_OIDS = API_PREFIX + "/btm-type/get-by-oids";
    String GET_DEFAULT_ATTR_BY_BTM_ID = API_PREFIX + "/btm-attribute/get-default-attr-by-btm-id";
    String GET_ALL_ATTR_BY_BTM_ID = API_PREFIX + "/btm-attribute/get-all-attr-by-btm-id";
    String GET_ALL_ATTR_BY_BTM_OID = API_PREFIX + "/btm-attribute/get-all-attr-by-btm-oid";
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹è¯¦æƒ…ä¿¡æ¯
     *
@@ -65,6 +67,7 @@
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
@@ -94,4 +97,31 @@
     */
    @PostMapping(GET_BY_OIDS)
    R<List<BtmTypeVO>> listBtmTypeByOidCollection(@RequestBody List<String> pkBtmTypeCollection);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œåªæœ‰é»˜è®¤å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return é»˜è®¤å­—段属性
     */
    @GetMapping(GET_DEFAULT_ATTR_BY_BTM_ID)
    R<BtmTypeVO> getDefaultAttrByBtmId(@RequestParam("btmTypeId") String btmTypeId);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return æ‰€æœ‰å­—段
     */
    @GetMapping(GET_ALL_ATTR_BY_BTM_ID)
    R<BtmTypeVO> getAllAttributeByBtmId(@RequestParam("btmTypeId") String btmTypeId);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æ‰€æœ‰å­—段
     */
    @GetMapping(GET_ALL_ATTR_BY_BTM_OID)
    R<BtmTypeVO> getAllAttributeByBtmOid(@RequestParam("btmTypeOid") String btmTypeOid);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeFallback.java
@@ -16,18 +16,13 @@
 */
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vci.ubcs.omd.entity.Attribute;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * Feign失败配置
@@ -48,11 +43,11 @@
    }
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public R<Page<BtmTypeVO>> getRefPage(BaseQueryObject baseQueryObject) {
        return R.fail("获取数据失败");
@@ -90,4 +85,37 @@
    public R<List<BtmTypeVO>> selectByIdCollection(List<String> ids) {
        return R.fail("获取数据失败");
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹èŽ·å–é»˜è®¤å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return é»˜è®¤å­—段属性
     */
    @Override
    public R<BtmTypeVO> getDefaultAttrByBtmId(String btmTypeId) {
        return R.fail("获取数据失败");
    }
    /**
     * æŒ‰ä¸šåŠ¡ç±»åž‹id获取所有的字段
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmId(String btmTypeId) {
        return R.fail("获取数据失败");
    }
    /**
     * æŒ‰ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmOid(String btmTypeOid) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java ÐÞ¸Ä
@@ -13,7 +13,7 @@
 * @date 2023/5/5
 */
@Data
public class BtmTypeTreeVO implements Serializable{
public class BtmTreeVO implements Serializable{
    /**
     * åºåˆ—化
     */
@@ -25,5 +25,7 @@
    private String oid;
    private List<BtmTypeTreeVO> childList;
    private String type;
    private List<BtmTreeVO> childList;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java
@@ -119,6 +119,11 @@
     */
    private Date ts;
    /**
     * é¢†åŸŸå€¼
     */
    private String domain;
    /**
     * åŒ…含属性
     */
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
@@ -27,10 +27,6 @@
    private String name;
    //集团码
    @TableField(exist = false)
    private String groupcode;
    private String description;
    private String revisionOid;
@@ -344,13 +340,13 @@
        this.lctid = lctid;
    }
    public String getGroupcode() {
/*    public String getGroupcode() {
        return this.groupcode;
    }
    public void setGroupcode(String groupcode) {
        this.groupcode = groupcode;
    }
    }*/
    public Map<String, String> getData() {
        return this.data;
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/GroupBaseModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.vci.ubcs.starter.revision.model;
/**
 * åŒ…含集团码的基础model
 * @author ludc
 * @date 2023/6/2 19:19
 */
public class GroupBaseModel extends BaseModel{
    //集团码
    private String groupCode;
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreClassifyDTO.java
@@ -26,7 +26,7 @@
    /****
     * åˆ†ç±»é“¾æŽ¥åç§°
     */
    private String getNodeLinkName;
    private String nodeLinkName;
    /***
     * çˆ¶çº§èŠ‚ç‚¹
     */
@@ -52,12 +52,12 @@
        this.nodeLink = nodeLink;
    }
    public String getGetNodeLinkName() {
        return getNodeLinkName;
    public String getNodeLinkName() {
        return nodeLinkName;
    }
    public void setGetNodeLinkName(String getNodeLinkName) {
        this.getNodeLinkName = getNodeLinkName;
    public void setNodeLinkName(String nodeLinkName) {
        this.nodeLinkName = nodeLinkName;
    }
    public String getPid() {
@@ -81,7 +81,7 @@
        return "DockingPreClassifyDTO{" +
            "className='" + className + '\'' +
            ", nodeLink='" + nodeLink + '\'' +
            ", getNodeLinkName='" + getNodeLinkName + '\'' +
            ", nodeLinkName='" + nodeLinkName + '\'' +
            ", pid='" + pid + '\'' +
            ", dockingPreViewModelDTOList=" + dockingPreViewModelDTOList +
            '}';
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreClassify.java
@@ -37,7 +37,7 @@
     * åˆ†ç±»é“¾æŽ¥åç§°
     */
    @ApiModelProperty(value = "链接名称")
    private String getNodeLinkName;
    private String nodeLinkName;
    /***
     * çˆ¶çº§èŠ‚ç‚¹
     */
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreMetaAttr.java
@@ -54,6 +54,7 @@
     * è§†å›¾æ¨¡åž‹id
     */
    @ApiModelProperty(value = "视图模型主键")
    @TableField(value = "viewModeId")
    private String viewModelId;
    /***
     * é»˜è®¤å€¼
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreApplyFormVO.java
@@ -36,7 +36,10 @@
     * æ¶ˆæ¯
     */
    private String msg;
    /***
     * æ“ä½œç±»åž‹1:申请 2:更改
     */
    private String operationType;
    public String getCode() {
        return code;
    }
@@ -77,14 +80,32 @@
        this.msg = msg;
    }
    public String getGroupCode() {
        return groupCode;
    }
    public void setGroupCode(String groupCode) {
        this.groupCode = groupCode;
    }
    public String getOperationType() {
        return operationType;
    }
    public void setOperationType(String operationType) {
        this.operationType = operationType;
    }
    @Override
    public String toString() {
        return "DockingPreApplyCodeFormVO{" +
            "code='" + code + '\'' +
        return "DockingPreApplyFormVO{" +
            "groupCode='" + groupCode + '\'' +
            ", code='" + code + '\'' +
            ", content='" + content + '\'' +
            ", dataOid='" + dataOid + '\'' +
            ", dataBtmName='" + dataBtmName + '\'' +
            ", msg='" + msg + '\'' +
            ", operationType='" + operationType + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreClassifyVO.java
@@ -24,7 +24,7 @@
    /****
     * åˆ†ç±»é“¾æŽ¥åç§°
     */
    private String getNodeLinkName;
    private String nodeLinkName;
    /***
     * çˆ¶çº§èŠ‚ç‚¹
     */
@@ -50,12 +50,12 @@
        this.nodeLink = nodeLink;
    }
    public String getGetNodeLinkName() {
        return getNodeLinkName;
    public String getNodeLinkName() {
        return nodeLinkName;
    }
    public void setGetNodeLinkName(String getNodeLinkName) {
        this.getNodeLinkName = getNodeLinkName;
    public void setNodeLinkName(String nodeLinkName) {
        this.nodeLinkName = nodeLinkName;
    }
    public String getPid() {
@@ -79,7 +79,7 @@
        return "DockingPreClassifyVO{" +
            "className='" + className + '\'' +
            ", nodeLink='" + nodeLink + '\'' +
            ", getNodeLinkName='" + getNodeLinkName + '\'' +
            ", nodeLinkName='" + nodeLinkName + '\'' +
            ", pid='" + pid + '\'' +
            ", dockingPreViewModelVOList=" + dockingPreViewModelVOList +
            '}';
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/collection/DockingPreAttrMappingVOList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.vci.ubcs.code.webservice.vo.collection;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrMappingVO;
import java.io.Serializable;
import java.util.List;
/***
 * å±žæ€§æ˜ å°„保存时候集合对象映射
 */
public class DockingPreAttrMappingVOList implements Serializable {
    private List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList;
    public List<DockingPreAttrMappingVO> getDockingPreAttrMappingVOList() {
        return dockingPreAttrMappingVOList;
    }
    public void setDockingPreAttrMappingVOList(List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList) {
        this.dockingPreAttrMappingVOList = dockingPreAttrMappingVOList;
    }
    @Override
    public String toString() {
        return "DockingPreAttrMappingVOList{" +
            "dockingPreAttrMappingVOList=" + dockingPreAttrMappingVOList +
            '}';
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import com.vci.ubcs.code.service.IDockingSystemService;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
/**
 * ç æ®µåŸºç¡€ä¿¡æ¯æŽ§åˆ¶å™¨
 *
 * @author xiejun
 * @date 2023-05-31
 */
@RestController
@AllArgsConstructor
@RequestMapping("/dockingManagement")
@Api(value = "接口管理", tags = "编码相关接口管理信息")
public class DockingManagementController {
    /***
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
    private  final IDockingSystemService dockingSystemService;
    /***
     * é›†æˆæŽ¥å£é…ç½®æœåŠ¡
     */
    private  final IDockingSystemConfigService dockingSystemConfigService;
    /**系统集成的系统信息列表
     * @param dockingSystem åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     *@return ç³»ç»Ÿé›†æˆçš„系统信息显示对象列表
     */
    @GetMapping("/gridSysIntBase")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "dockingSystem")
    public R<IPage<DockingSystemVO>> page(DockingSystem dockingSystem, Query query) {
        IPage<DockingSystem> pages = dockingSystemService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingSystem));
        return R.data(DockingSystemWrapper.build().pageVO(pages));
    }
    /**
     * å¢žåŠ  ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public  R<DockingSystemVO> addSave(@RequestBody DockingSystemDTO dockingSystemDTO){
        boolean res= dockingSystemService.addSave(dockingSystemDTO);
        return  R.status(res);
    }
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R<DockingSystemVO> editSave(@RequestBody DockingSystemDTO dockingSystemDTO){
        DockingSystemVO dockingSystemVO = dockingSystemService.editSave(dockingSystemDTO);
        return R.data(dockingSystemVO);
    }
    /**
     * åˆ é™¤ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delSystemData( DockingSystemDTO dockingSystemDTO) {
        return R.status(dockingSystemService.delSystemData(dockingSystemDTO));
    }
    /**
     * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯åˆ—表
     * @param DockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridSysIntInfo")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "DockingSystemConfig")
    public R<IPage<DockingSystemConfigVO>> gridSysIntInfo(DockingSystemConfig DockingSystemConfig, Query query){
        IPage<DockingSystemConfig> pages = dockingSystemConfigService.page(Condition.getPage(query), Condition.getQueryWrapper(DockingSystemConfig));
        return R.data(DockingSystemConfigWrapper.build().pageVO(pages));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java
@@ -19,15 +19,26 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.mapper.CodeClassifyMapper;
import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
import com.vci.ubcs.code.service.MdmEngineService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import com.vci.ubcs.code.service.ICodeClassifyService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
 * ä¸»é¢˜åº“定义表 Feign实现类
@@ -41,7 +52,9 @@
public class CodeClassifyClient implements ICodeClassifyClient {
    private final ICodeClassifyService plCodeClassifyService;
    private final ICodeClassifyTemplateAttrService codeClassifyTemplateAttrService;
    private final  MdmEngineService engineService;
    CodeClassifyMapper codeClassifyMapper;
    @Override
@@ -54,4 +67,35 @@
        return BladePage.of(page);
    }
    /***
     * èŽ·å–ä¸»é¢˜åº“åˆ†ç±»å±‚çº§æ ‘
     * @param treeQueryObject
     * @return ä¸»é¢˜åº“分类
     */
    @Override
    @PostMapping(CODE_CLASSIFY_TREE)
    public List<Tree> referCodeClassifyTree(TreeQueryObject treeQueryObject) {
        return plCodeClassifyService.treeCodeClassify(treeQueryObject);
    }
    @Override
    @GetMapping(CODE_ATTRIBUTE_LIST)
    public List<CodeClassifyTemplateAttrVO> listCodeAttributeByClassId(String codeClassifyId) {
        CodeClassifyTemplateVO codeClassifyTemplateVO=engineService.getUsedTemplateByClassifyOid(codeClassifyId,true);
        return codeClassifyTemplateVO.getAttributes();
    }
    /**
     * æ ¹æ®åˆ†ç±»id,获取分类
     * @param classifyId
     * @return
     */
    @Override
    @GetMapping(CODE_GETBYID)
    public CodeClassify getById(String classifyId) {
        return plCodeClassifyService.getById(classifyId);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java
@@ -20,8 +20,12 @@
import com.vci.ubcs.code.service.MdmEngineService;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@@ -41,7 +45,6 @@
@AllArgsConstructor
public class MdmEngineClient implements IMdmEngineClient {
    private final MdmEngineService mdmEngineService;
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸oid集合查询数据进行返回
     *
@@ -51,8 +54,12 @@
     */
    @Override
    @GetMapping(SELECT_BY_TYPE_OID)
    public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException {
        return R.data(mdmEngineService.selectByTypeAndOid(btmType,oids));
    public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) {
        try {
            return R.data(mdmEngineService.selectByTypeAndOid(btmType, oids));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
@@ -63,22 +70,29 @@
     * @return å¤„理成功数据条数
     */
    @Override
    @GetMapping(INSERT_BATCH_BY_TYPE)
    public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
        return R.data(mdmEngineService.insertBatchByType(btmType,baseModels));
    @PostMapping(INSERT_BATCH_BY_TYPE)
    public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) {
        try {
            return R.data(mdmEngineService.insertBatchByType(btmType,baseModels));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
//    private final CodeWupinMapper codeWupinMapper;
//    @Override
//    @GetMapping(TOP)
//    public BladePage<CodeWupin> top(Integer current, Integer size) {
//        Query query = new Query();
//        query.setCurrent(current);
//        query.setSize(size);
//        IPage<CodeWupin> page = codeWupinMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());//service.page(Condition.getPage(query));
//        return BladePage.of(page);
//    }
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ’å…¥æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理状态
     */
    @Override
    @PostMapping(UPDATE_BATCH_BY_TYPE)
    public R<Integer> updateBatchByType(String btmType, List<BaseModel> baseModels) {
        try {
            return mdmEngineService.updateBatchByBaseModel(btmType,baseModels);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
@@ -22,12 +23,19 @@
    List<Map> selectBySql(@Param("inSql") String inSql);
    /**
     * ä¼ å…¥è¡¨æ˜Žï¼Œmap,list<map>完成批量更新操作
     * ä¼ å…¥è¡¨åï¼Œmap,list<map>完成批量更新操作
     * @param tableName è¡¨å
     * @param columnMap å•条map用于获取key作为字段
     * @param mapList éœ€è¦æ’入的所有记录
     * @return æ’入成功的条数
     */
    Integer insertByBaseModel(String tableName,Map<String,String> columnMap,List<Map<String,String>> mapList);
    Integer insertByBaseModel(String tableName,Map<String,String> columnMap,List<Map<String,String>> mapList);/**
     * ä¼ å…¥è¡¨åï¼Œmap,list<map>完成批量更新操作
     * @param tableName è¡¨å
     * @param mapList éœ€è¦æ›´æ–°çš„æ‰€æœ‰è®°å½•
     * @return æ’入成功的条数
     */
    @InterceptorIgnore(tenantLine = "true")
    Integer updateBatchByBaseModel(String tableName,List<Map<String,String>> mapList);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingSystemConfigMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.DockingSystemConfig;
public interface DockingSystemConfigMapper extends BaseMapper<DockingSystemConfig> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingSystemMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.DockingSystem;
public interface DockingSystemMapper extends BaseMapper<DockingSystem> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingManagement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
package com.vci.ubcs.code.service;
public interface IDockingManagement {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-接口配置服务
 * @author xiejun
 * @date 2023-06-01
 */
public interface IDockingSystemConfigService extends IService<DockingSystemConfig> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import org.springblade.core.tool.api.R;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-集成系统服务
 * @author xiejun
 * @date 2023-06-01
 */
public interface IDockingSystemService extends IService<DockingSystem> {
    /**
     * å¢žåŠ  ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    public boolean addSave(DockingSystemDTO dockingSystemDTO);
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    DockingSystemVO editSave(DockingSystemDTO dockingSystemDTO);
    boolean delSystemData(DockingSystemDTO dockingSystemDTO);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.vci.ubcs.code.service;
/***
 * ç³»çµ±ç®¡ç†ç›¸å…³æœåŠ¡
 */
public interface IDokingSysManaentService {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -386,4 +386,13 @@
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException;
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ›´æ–°æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理状态
     */
    R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) throws Exception;
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -160,7 +160,11 @@
//            conditionMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOids.toArray(new String[0])) + ")");
//            PageHelper pageHelper = new PageHelper(-1);
//            pageHelper.addDefaultAsc("orderNum");
            List<CodeClassifyTemplateAttr> attrDOS = baseMapper.selectByClassifytemplateoid(VciBaseUtil.toInSql(templateOids.toArray(new String[0])));
            QueryWrapper<CodeClassifyTemplateAttr> wrapper = new QueryWrapper<>();
            wrapper.in("classifytemplateoid",templateOids);
            wrapper.orderByAsc("orderNum");
            List<CodeClassifyTemplateAttr> attrDOS = baseMapper.selectList(wrapper);
//                baseMapper.selectByClassifytemplateoid(VciBaseUtil.toInSql(templateOids.toArray(new String[0])));
            if(!CollectionUtils.isEmpty(attrDOS)){
                attrDOList.addAll(attrDOS);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingLogeServiceImpl.java
@@ -9,7 +9,7 @@
/**
    * ç¼–码信息 æœåŠ¡å®žçŽ°ç±»
    *
    * @author xiej
    * @author xiejun
    * @since 2023-05-17
    */
@Service
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Map;
import java.util.function.Function;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-接口配置服务
 * @author xiejun
 * @date 2023-06-01
 */
@Service
public class DockingSystemConfigServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDockingSystemConfigService{
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.mapper.DockingSystemMapper;
import com.vci.ubcs.code.service.IDockingSystemService;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING;
import static com.vci.ubcs.code.constant.MdmLifeCycleConstant.CODE_RULE_LC;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-集成系统服务
 * @author xiejun
 * @date 2023-06-01
 */
@Service
public class DockingSystemServiceImpl extends ServiceImpl<DockingSystemMapper, DockingSystem> implements IDockingSystemService {
    /***
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
    @Autowired(required = false)
    private  DockingSystemMapper dockingSystemMapper;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Autowired
    private RevisionModelUtil revisionModelUtil;
    @Override
    public boolean addSave(DockingSystemDTO dockingSystemDTO) {
        VciBaseUtil.alertNotNull(dockingSystemDTO, "需要添加的数据对象");
        //将DTO转换为DO
        DockingSystem dockingSystem = Objects.requireNonNull(BeanUtil.copy(dockingSystemDTO, DockingSystem.class));
        String userId = AuthUtil.getUserId().toString();
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystem, MdmBtmTypeConstant.SYS_INT_BASE);
        dockingSystem.setLctid(CODE_RULE_LC);
        dockingSystem.setLcStatus(FRAMEWORK_RELEASE_EDITING);
        return dockingSystemMapper.insert(dockingSystem)>0;
    }
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„系统信息
     * @param dockingSystemDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @Override
    public DockingSystemVO editSave(DockingSystemDTO dockingSystemDTO) {
        VciBaseUtil.alertNotNull(dockingSystemDTO,"数据对象",dockingSystemDTO.getOid(),"系统集成的系统信息主键");
        //将DTO转换为DO
        DockingSystem dockingSystem = dockingSystemMapper.selectById(dockingSystemDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(dockingSystemDTO,dockingSystem);
        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingSystem);
        dockingSystemMapper.updateById(dockingSystem);
        return DockingSystemWrapper.build().entityVO(dockingSystem);
    }
    @Override
    public boolean delSystemData(DockingSystemDTO dockingSystemDTO) {
        VciBaseUtil.alertNotNull(dockingSystemDTO,"系统集成的系统信息数据对象",dockingSystemDTO.getOid(),"系统集成的系统信息的主键");
        /*DockingSystem dockingSystem = dockingSystemMapper.selectById(dockingSystemDTO.getOid());
        BaseResult baseResult = checkIsCanDeleteForDO(sysIntBaseDTO,sysIntBaseDO);
        if(baseResult.isSuccess()) {
        }else{
            return baseResult;
        }
        //执行删除操作
        BatchCBO batchCBO = sysIntBaseMapper.deleteByPrimaryKey(sysIntBaseDO.getOid());
        return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
*/
        return false;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1067,6 +1067,7 @@
        itemVO.setPrefix(attrVO.getPrefixValue());
        itemVO.setSuffix(attrVO.getSuffixValue());
        itemVO.setTooltips(attrVO.getExplain());
        itemVO.setInputTip(attrVO.getInputTip());
        itemVO.setSelectLibFlag(attrVO.getLibraryIdentification());
        //看看是否有枚举
        if ((StringUtils.isNotBlank(attrVO.getEnumString())
@@ -2992,6 +2993,10 @@
                    }
                }
            }
            for (Object key : map.keySet()) {
                map.put(key,String.valueOf(map.get(key)));
            }
            ((BaseModel) obj).setData(map);
            baseModels.add((BaseModel) obj);
        }
@@ -3060,4 +3065,38 @@
        }
        return "";
    }
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ›´æ–°æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理状态
     */
    @Override
    public R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) throws Exception {
        //使用传入的业务类型查询表
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
        if(listR.getData().size() == 0){
            throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
        }
        //将bean转为map,mybatis统一处理
        List<Map<String,String>> maps = new ArrayList<>();
        baseModels.stream().forEach(model-> {
            try {
                maps.add(VciBaseUtil.convertBean2Map(model));
            } catch (Exception e) {
                throw new VciBaseException("类型转换错误:" + e.getMessage());
            }
        });
        try {
            //注意此处更新成功是返回的-1
            commonsMapper.updateBatchByBaseModel(listR.getData().get(0).getTableName(), maps);
        }catch (Exception e){
            return R.fail("更新失败!"+e.getMessage());
        }
        return R.success("更新成功!");
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingSystemConfigWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
public class DockingSystemConfigWrapper extends BaseEntityWrapper<DockingSystemConfig, DockingSystemConfigVO> {
    public static DockingSystemConfigWrapper build() {
        return new DockingSystemConfigWrapper();
    }
    @Override
    public DockingSystemConfigVO entityVO(DockingSystemConfig entity) {
        DockingSystemConfigVO vo = Objects.requireNonNull(BeanUtil.copy(entity, DockingSystemConfigVO.class));
        return vo;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingSystemConfigVO> entityVOs(Collection<DockingSystemConfig> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {
            return new ArrayList<>();
        }
        List<DockingSystemConfigVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(DockingSystem -> {
                vos.add(entityVO(DockingSystem));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingSystemConfig> voentitys(Collection<DockingSystemConfigVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingSystemConfig>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingSystemConfig voentity(DockingSystemConfigVO vo) {
        DockingSystemConfig entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingSystemConfig.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingSystemWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
public class DockingSystemWrapper extends BaseEntityWrapper<DockingSystem, DockingSystemVO> {
    public static DockingSystemWrapper build() {
        return new DockingSystemWrapper();
    }
    @Override
    public DockingSystemVO entityVO(DockingSystem entity) {
        DockingSystemVO vo = Objects.requireNonNull(BeanUtil.copy(entity, DockingSystemVO.class));
        return vo;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingSystemVO> entityVOs(Collection<DockingSystem> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {
            return new ArrayList<>();
        }
        List<DockingSystemVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(DockingSystem -> {
                vos.add(entityVO(DockingSystem));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingSystem> voentitys(Collection<DockingSystemVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingSystem>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingSystem voentity(DockingSystemVO vo) {
        DockingSystem entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingSystem.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -134,7 +134,7 @@
            <if test="oid != null ">
                codeclassify0.parentCodeClassifyOid = '${oid}'
            </if>
            <if test="oid = null ">
            <if test="oid == null ">
                codeclassify0.parentCodeClassifyOid is null
            </if>
        CONNECT BY PRIOR codeclassify0.OID = codeclassify0.parentCodeClassifyOid
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -37,4 +37,18 @@
        </foreach>
    </insert>
    <update  id="updateBatchByBaseModel"  parameterType="java.util.List" >
        BEGIN
        <foreach collection="mapList" item="columnMap" index="index" separator=";">
            update ${tableName}
                <set>
                    <foreach collection="columnMap" item="value" index="key" separator=",">
                     ${key} = #{value}
                    </foreach>
                </set>
            where oid = #{columnMap.oid}
        </foreach>;
        END;
    </update >
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingSystemConfigMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.DockingSystemConfigMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="plDockingLogResultMap" type="com.vci.ubcs.code.entity.DockingSystemConfig">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
        <result column="BTMNAME" property="btmname"/>
        <result column="LASTR" property="lastR"/>
        <result column="FIRSTR" property="firstR"/>
        <result column="LASTV" property="lastV"/>
        <result column="FIRSTV" property="firstV"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createTime"/>
        <result column="LASTMODIFIER" property="lastModifier"/>
        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
        <result column="REVISIONRULE" property="revisionRule"/>
        <result column="VERSIONRULE" property="versionRule"/>
        <result column="REVISIONSEQ" property="revisionSeq"/>
        <result column="REVISIONVALUE" property="revisionValue"/>
        <result column="VERSIONSEQ" property="versionSeq"/>
        <result column="VERSIONVALUE" property="versionValue"/>
        <result column="LCTID" property="lctid"/>
        <result column="LCSTATUS" property="lcStatus"/>
        <result column="TS" property="ts"/>
        <result column="ID" property="id"/>
        <result column="NAME" property="name"/>
        <result column="DESCRIPTION" property="description"/>
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="AUTHORITYOID" property="authorityOid"/>
        <result column="INTERFACEFUNCTION" property="interfaceFunction"/>
        <result column="INTERFACETYPE" property="interfaceType"/>
        <result column="PARAMTYPE" property="paramType"/>
        <result column="REQUESTMETHOD" property="requestMethod"/>
        <result column="TYPE" property="pushType"/>
        <result column="CLASSIFYID" property="classifyId"/>
        <result column="CLASSIFYNAME" property="classifyName"/>
        <result column="PUSHTYPE" property="pushType"/>
        <result column="USEDFLAG" property="usedFlag"/>
        <result column="SYSBASEOID" property="sysBaseOid"/>
        <result column="SYSBASEID" property="sysBaseId"/>
        <result column="SYSBASENAME" property="sysBaseName"/>
        <result column="RETURNTYPE" property="returnType"/>
        <result column="REQUESTURL" property="requestUrl"/>
        <result column="SOURCESYSTEMOID" property="sourceSystemOid"/>
        <result column="SOURCESYSNAME" property="sourceSysName"/>
        <result column="SOURCESYSID" property="sourceSysId"/>
        <result column="TARGETSYSTEMOID" property="targetSystemOid"/>
        <result column="TARGETSYSNAME" property="targetSysName"/>
        <result column="TARGETSYSID" property="targetSysId"/>
        <result column="CLASSPATH" property="classPath"/>
        <result column="DATAFLOWTYPE" property="dataFlowType"/>
        <result column="BTMTYPEID" property="btmTypeId"/>
        <result column="BTMTYPENAME" property="btmTypeName"/>
        <result column="NAMESPACE" property="namespace"/>
        <result column="SOAPACTION" property="soapAction"/>
        <result column="CXFAXIS" property="cxfAxis"/>
    </resultMap>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingSystemMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.DockingSystemMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="plDockingLogResultMap" type="com.vci.ubcs.code.entity.DockingSystem">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
        <result column="BTMNAME" property="btmname"/>
        <result column="LASTR" property="lastR"/>
        <result column="FIRSTR" property="firstR"/>
        <result column="LASTV" property="lastV"/>
        <result column="FIRSTV" property="firstV"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createTime"/>
        <result column="LASTMODIFIER" property="lastModifier"/>
        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
        <result column="REVISIONRULE" property="revisionRule"/>
        <result column="VERSIONRULE" property="versionRule"/>
        <result column="REVISIONSEQ" property="revisionSeq"/>
        <result column="REVISIONVALUE" property="revisionValue"/>
        <result column="VERSIONSEQ" property="versionSeq"/>
        <result column="VERSIONVALUE" property="versionValue"/>
        <result column="LCTID" property="lctid"/>
        <result column="LCSTATUS" property="lcStatus"/>
        <result column="TS" property="ts"/>
        <result column="ID" property="id"/>
        <result column="NAME" property="name"/>
        <result column="DESCRIPTION" property="description"/>
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
    </resultMap>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java
@@ -11,7 +11,7 @@
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.IBtmTypeService;
import com.vci.ubcs.omd.vo.BtmTypeTreeVO;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.DomainVO;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
@@ -160,7 +160,7 @@
    @GetMapping("/tree-domain")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "业务类型树形结构", notes = "业务类型树形结构")
    public R<List<BtmTypeTreeVO>> treeDomain(){
    public R<List<BtmTreeVO>> treeDomain(){
        return R.data(btmTypeService.treeDomain());
    }
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LinkTypeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,169 @@
package com.vci.ubcs.omd.controller;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.nacos.api.exception.NacosException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.omd.constant.OmdCacheConstant;
import com.vci.ubcs.omd.dto.LinkTypeDTO;
import com.vci.ubcs.omd.entity.LinkType;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.ILinkTypeService;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.omd.vo.DomainVO;
import com.vci.ubcs.omd.wrapper.LinkTypeWrapper;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Description:链接类型控制器
 *
 * @author LiHang
 * @date 2023/5/29
 */
@NonDS
@RestController
@AllArgsConstructor
@RequestMapping("/link-type")
@Api(value = "链接类型控制器", tags = "链接类型控制器")
public class LinkTypeController extends BladeController {
    /**
     * é“¾æŽ¥ç±»åž‹æœåŠ¡
     */
    private final ILinkTypeService linkTypeService;
    /**
     * æŸ¥çœ‹è¯¦æƒ…
     *
     * @param oid ä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "查看详情", notes = "传入主键")
    public R<LinkTypeVO> detail(String oid) {
        return R.data(linkTypeService.getLinkTypeByOid(oid));
    }
    /**
     * åˆ—表
     *
     * @param condition æŸ¥è¯¢æ¡ä»¶
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/list")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "oid", value = "主键", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "id", value = "链接类型英文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "name", value = "链接类型中文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "tableName", value = "链接类型数据库表名", paramType = "query", dataType = "string"),
    })
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<List<LinkTypeVO>> list(@ApiIgnore @RequestParam Map<String, Object> condition) {
        return R.data(LinkTypeWrapper.build().listEntityVO(linkTypeService.list(Condition.getQueryWrapper(condition, LinkType.class).lambda().orderByAsc(LinkType::getId))));
    }
    /**
     * åˆ†é¡µåˆ—表
     *
     * @param condition æŸ¥è¯¢æ¡ä»¶
     */
    @GetMapping("/page")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "oid", value = "主键", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "id", value = "链接类型英文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "name", value = "链接类型中文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "tableName", value = "链接类型数据库表名", paramType = "query", dataType = "string"),
    })
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<IPage<LinkTypeVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> condition, Query query) {
        IPage<LinkTypeVO> pageVO = new Page<>();
        IPage<LinkType> page = linkTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, LinkType.class).lambda().orderByAsc(LinkType::getId));
        BeanUtil.copy(page, pageVO);
        pageVO.setRecords(LinkTypeWrapper.build().listEntityVO(page.getRecords()));
        return R.data(pageVO);
    }
    /**
     * æ–°å¢žæˆ–修改
     *
     * @param dto å…ƒæ•°æ®é¡µé¢ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/submit/{auto}")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增或修改", notes = "传入链接类型对象")
    public R submit(@Valid @RequestBody LinkTypeVO dto, @PathVariable(value = "auto") boolean auto) {
        CacheUtil.clear(OmdCacheConstant.LINK_CACHE);
        if (StringUtils.isNotBlank(dto.getOid())){
            return R.data(linkTypeService.editSave(dto));
        }else {
            return R.data(linkTypeService.addSave(dto));
        }
    }
    /**
     * åˆ é™¤
     *
     * @param ids ä¸»é”®é›†åˆ
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "删除", notes = "主键集合")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        CacheUtil.clear(OmdCacheConstant.LINK_CACHE);
        List<String> oidList = new ArrayList<>();
        if (ids.contains(",")) {
            oidList.addAll(Func.toStrList(",", ids));
        } else {
            oidList.add(ids);
        }
        return R.status(linkTypeService.removeBatchByIds(oidList));
    }
    /**
     * èŽ·å–é¢†åŸŸå€¼
     */
    @GetMapping("/domain")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "获取领域值")
    public R<List<DomainVO>> getDomain(){
        try {
            return R.data(DomainRepeater.getDomain());
        } catch (NacosException e) {
            return R.fail(e.getErrMsg());
        }
    }
    /**
     * æŒ‰domain分组,查询链接类型的树形结构
     */
    @GetMapping("/tree-domain")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "链接类型树形结构", notes = "链接类型树形结构")
    public R<List<BtmTreeVO>> treeDomain(){
        return R.data(linkTypeService.treeDomain());
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
@@ -51,7 +51,7 @@
    @Override
    @GetMapping(GET_DETAIL)
    public R<BtmTypeVO> getDetail(String oid) {
        return R.data(btmTypeService.getBtmTypeByOid(oid));
        return R.data(btmTypeService.getAllAttributeByBtmOid(oid));
    }
    /**
@@ -152,4 +152,37 @@
        );
        return R.data(voList);
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œåªæœ‰é»˜è®¤å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return é»˜è®¤å­—段属性
     */
    @Override
    public R<BtmTypeVO> getDefaultAttrByBtmId(String btmTypeId) {
        return R.data(Optional.ofNullable(btmTypeService.getDefaultAttrByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new));
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmId(String btmTypeId) {
        return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new));
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmOid(String btmTypeOid) {
        return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmOid(btmTypeOid)).orElseGet(BtmTypeVO::new));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LinkTypeMapper.java
@@ -1,13 +1,22 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.entity.LinkType;
import java.util.List;
/**
 * Description:
 * Description: é“¾æŽ¥ç±»åž‹æ•°æ®å±‚
 *
 * @author LiHang
 * @date 2023/5/24
 */
public interface LinkTypeMapper extends BaseMapper<LinkType> {
    /**
     * æŸ¥è¯¢å…¨éƒ¨çš„链接
     * @return é“¾æŽ¥ç±»åž‹æ•°æ®å¯¹è±¡åˆ—表
     */
    List<LinkType> selectAll();
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java
@@ -3,6 +3,7 @@
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseService;
@@ -74,4 +75,18 @@
     * @return åŒ…含的属性
     */
    List<BtmTypeAttribute> selectByBtmTypeIds(List<String> idList);
    /**
     * èŽ·å–é»˜è®¤å­—æ®µ
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeAttributeVO> getDefaultAttribute(BtmTypeVO btmType);
    /**
     * èŽ·å–æ‰€æœ‰å­—æ®µ
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeAttributeVO> getAllAttribute(BtmTypeVO btmType);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java
@@ -1,11 +1,9 @@
package com.vci.ubcs.omd.service;
import com.vci.ubcs.omd.dto.BtmTypeDTO;
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
import com.vci.ubcs.omd.vo.BtmTypeTreeVO;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
@@ -14,7 +12,6 @@
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -216,7 +213,7 @@
     * æŒ‰domain分组,查询业务类型属性结构
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<BtmTypeTreeVO> treeDomain();
    List<BtmTreeVO> treeDomain();
    /**
     * ä»Žæ•°æ®åº“表中获取
@@ -232,4 +229,25 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeVO> saveFromTable(List<BtmTypeDTO> btmTypeDTOList,String domain);
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取默认属性
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    BtmTypeVO getDefaultAttrByBtmId(String btmTypeId);
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取所有的属性
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    BtmTypeVO getAllAttributeByBtmId(String btmTypeId);
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–æ‰€æœ‰çš„å±žæ€§
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return ä¸šåŠ¡ç±»åž‹
     */
    BtmTypeVO getAllAttributeByBtmOid(String btmTypeOid);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILinkTypeService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.omd.entity.LinkType;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.LinkTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -203,4 +204,9 @@
     * @return è‹±æ–‡åç§°è‹±æ–‡å°å†™
     */
    Set<String> listUsedBtmType();
    /**
     * æŒ‰domain分组,查询业务类型属性结构
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<BtmTreeVO> treeDomain();
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
@@ -1,15 +1,20 @@
package com.vci.ubcs.omd.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.vci.ubcs.omd.constant.BtmTypeFieldConstant;
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.mapper.BtmTypeAttributeMapper;
import com.vci.ubcs.omd.service.IAttributeService;
import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
@@ -169,4 +174,95 @@
    public List<BtmTypeAttribute> selectByBtmTypeIds(List<String> idList) {
        return baseMapper.selectByBtmTypeIds(idList);
    }
    /**
     * èŽ·å–é»˜è®¤å­—æ®µ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public List<BtmTypeAttributeVO> getDefaultAttribute(BtmTypeVO btmType) {
        List<BtmTypeAttributeVO> list = new ArrayList<>();
        // ä¸šåŠ¡ç±»åž‹çš„åŸºæœ¬å­—æ®µ
        BtmTypeFieldConstant.BASIC_FIELD_MAP.forEach((id,name) -> {
            BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
            vo.setId(id);
            vo.setName(name);
            vo.setPkBtmType(btmType.getOid());
            if (StringUtils.equals(id,"oid")){
                vo.setNullableFlag(false);
            }else {
                vo.setNullableFlag(true);
            }
            if (Arrays.asList("createtime","lastmodifytime","owner").contains(id)){
                vo.setAttrDataType(VciFieldTypeEnum.VTDateTime.name());
                vo.setAttributeLength(6);
            }else {
                vo.setAttrDataType(VciFieldTypeEnum.VTString.name());
                vo.setAttributeLength(150);
            }
            list.add(vo);
        });
        // ç‰ˆæœ¬è§„则字段
        if (StringUtils.isNotBlank(btmType.getRevisionRuleId())){
            BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP.forEach((id,name) -> {
                BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
                vo.setId(id);
                vo.setName(name);
                vo.setPkBtmType(btmType.getOid());
                if (Arrays.asList("lastr","firstr","lastv","firstv","revisionseq","versionseq","revisionvalue","versionvalue").contains(id)){
                    vo.setAttributeLength(5);
                    vo.setAttrDataType(VciFieldTypeEnum.VTInteger.name());
                }
                if (Arrays.asList("checkintime","checkouttime").contains(id)){
                    vo.setAttrDataType(VciFieldTypeEnum.VTDateTime.name());
                    vo.setAttributeLength(6);
                }
                list.add(vo);
            });
        }
        // ç”Ÿå‘½å‘¨æœŸå­—段
        if (StringUtils.isNotBlank(btmType.getLifeCycleId())){
            BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP.forEach((id,name) -> {
                BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
                vo.setId(id);
                vo.setName(name);
                vo.setPkBtmType(btmType.getOid());
                vo.setAttributeLength(50);
                vo.setAttrDataType(VciFieldTypeEnum.VTString.name());
                list.add(vo);
            });
        }
        // å¯†çº§å­—段
        if (btmType.isSecretFlag()){
            BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP.forEach((id,name) -> {
                BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
                vo.setId(id);
                vo.setName(name);
                vo.setPkBtmType(btmType.getOid());
                vo.setAttributeLength(5);
                vo.setAttrDataType(VciFieldTypeEnum.VTInteger.name());
                list.add(vo);
            });
        }
        return list;
    }
    /**
     * èŽ·å–æ‰€æœ‰å­—æ®µ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public List<BtmTypeAttributeVO> getAllAttribute(BtmTypeVO btmType) {
        List<BtmTypeAttributeVO> list = getAttributeByBtmTypeOid(btmType.getOid());
        list.addAll(getDefaultAttribute(btmType));
        return list;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -88,7 +88,7 @@
    /**
     * è¡¨åå‰ç¼€
     */
    public static final String PL = "PL";
    public static final String PL = "PLBT";
    /**
     * è®¾ç½®å¹³å°æœ¬èº«çš„业务类型
@@ -639,20 +639,20 @@
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public List<BtmTypeTreeVO> treeDomain() {
    public List<BtmTreeVO> treeDomain() {
        try {
            Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(s -> s.getValue(), t -> t.getLabel()));
            List<BtmTypeVO> vos = BtmTypeWrapper.build().listEntityVO(baseMapper.selectAll());
            Map<String, List<BtmTypeVO>> domainMap = vos.stream().collect(Collectors.groupingBy(BtmTypeVO::getDomain));
            List<BtmTypeTreeVO> treeList = new ArrayList<>();
            List<BtmTreeVO> treeList = new ArrayList<>();
            domainMap.forEach((k,v)-> {
                if (domain.containsKey(k)){
                    String label = domain.get(k);
                    BtmTypeTreeVO parent = new BtmTypeTreeVO();
                    BtmTreeVO parent = new BtmTreeVO();
                    parent.setName(label);
                    parent.setId(k);
                    parent.setChildList(v.stream().map(s -> {
                        BtmTypeTreeVO child = new BtmTypeTreeVO();
                        BtmTreeVO child = new BtmTreeVO();
                        child.setOid(s.getOid());
                        child.setName(s.getId() + " " + (s.getName() == null ? "" : s.getName()));
                        child.setId(s.getId());
@@ -810,4 +810,52 @@
        }
        return BtmTypeWrapper.build().listEntityVO(btmList);
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取默认属性
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    @Override
    public BtmTypeVO getDefaultAttrByBtmId(String btmTypeId) {
        BtmTypeVO btmType = getBtmTypeById(btmTypeId);
        if (btmType == null){
            return null;
        }
        btmType.setAttributes(btmTypeAttributeService.getDefaultAttribute(btmType));
        return btmType;
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取所有的属性
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    @Override
    public BtmTypeVO getAllAttributeByBtmId(String btmTypeId) {
        BtmTypeVO btmType = getBtmTypeById(btmTypeId);
        if (btmType == null){
            return null;
        }
        btmType.setAttributes(btmTypeAttributeService.getAllAttribute(btmType));
        return btmType;
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–æ‰€æœ‰çš„å±žæ€§
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return ä¸šåŠ¡ç±»åž‹
     */
    @Override
    public BtmTypeVO getAllAttributeByBtmOid(String btmTypeOid) {
        BtmTypeVO btmType = getBtmTypeByOid(btmTypeOid);
        if (btmType == null){
            return null;
        }
        btmType.setAttributes(btmTypeAttributeService.getAllAttribute(btmType));
        return btmType;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
@@ -26,8 +26,8 @@
import com.vci.ubcs.omd.mapper.LinkTypeMapper;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.*;
import com.vci.ubcs.omd.vo.LinkTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import com.vci.ubcs.omd.wrapper.LinkTypeAttributeWrapper;
import com.vci.ubcs.omd.wrapper.LinkTypeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -95,12 +95,10 @@
    @Autowired
    private IModifyAttributeService modifyAttributeService;
    public final String BTM_NAME = "linkType";
    /**
     * è¡¨åå‰ç¼€
     */
    public static final String PL = "PL";
    public static final String PL = "PLLT";
    /**
@@ -865,4 +863,38 @@
        }
        return btmTypeSet;
    }
    /**
     * æŒ‰domain分组,查询链接类型属性结构
     *
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public List<BtmTreeVO> treeDomain() {
        try {
            Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(DomainVO::getValue, DomainVO::getLabel));
            List<LinkTypeVO> vos = LinkTypeWrapper.build().listEntityVO(baseMapper.selectAll());
            Map<String, List<LinkTypeVO>> domainMap = vos.stream().collect(Collectors.groupingBy(LinkTypeVO::getDomain));
            List<BtmTreeVO> treeList = new ArrayList<>();
            domainMap.forEach((k,v)-> {
                if (domain.containsKey(k)){
                    String label = domain.get(k);
                    BtmTreeVO parent = new BtmTreeVO();
                    parent.setName(label);
                    parent.setId(k);
                    parent.setChildList(v.stream().map(s -> {
                        BtmTreeVO child = new BtmTreeVO();
                        child.setOid(s.getOid());
                        child.setName(s.getId() + " " + (s.getName() == null ? "" : s.getName()));
                        child.setId(s.getId());
                        return child;
                    }).collect(Collectors.toList()));
                    treeList.add(parent);
                }
            });
            return treeList;
        } catch (NacosException e) {
            throw new RuntimeException(e);
        }
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml
@@ -23,7 +23,7 @@
    </resultMap>
    <sql id="base_query_column">
        oid, id, name, descrption, shape, impl_class, from_btm_type, from_btm_type_name,
        oid, id, name, description, shape, impl_class, from_btm_type, from_btm_type_name,
            to_btm_type, to_btm_type_name, btm_name, owner, creator, create_time, last_modifier, last_modify_time,
            ts, domain
    </sql>
@@ -31,4 +31,10 @@
    <sql id="tableName">
        pl_omd_link_type
    </sql>
    <select id="selectAll" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" />
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-webservice/Dockerfile
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
FROM bladex/alpine-java:openjdk8-openj9_cn_slim
#=作者
MAINTAINER ubcsjava@qq.com
RUN mkdir -p /ubcs/applyjtcodeservice
WORKDIR /ubcs/applyjtcodeservice
#在容器中以多少端口运行
EXPOSE 36014
ADD ./target/ubcs-applyjtcodeservice.jar ./app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
CMD ["--spring.profiles.active=dev"]
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/controller/DockingPreApplyCodeController.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.feign.ICodeClassifyClient;
import com.vci.ubcs.code.webservice.service.*;
import com.vci.ubcs.code.webservice.vo.*;
import com.vci.ubcs.code.webservice.vo.collection.DockingPreAttrMappingVOList;
import com.vci.ubcs.code.webservice.wrapper.DockingPreApplyFormWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
@@ -17,7 +19,7 @@
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
@@ -60,7 +62,18 @@
    private final IDockingPreApplyFormService dockingPreApplyFormService;
    /***
     * å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final IDockingPreViewModelService dockingPreViewModelService;
    /***
     * å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final ICodeClassifyClient codeClassifyClient;
    /**
     * æ ¹æ®ä¸»æ•°æ®ç¼–码oid获取集团属性映射信息
@@ -106,10 +119,11 @@
    @PostMapping( "/batchAddSave")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "保存属性映射配置", notes = "dockingPreAttrMappingVOList")
    public R batchSave(@Valid @RequestBody List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList){
    public R batchSave(@RequestBody DockingPreAttrMappingVOList dockingPreAttrMappingVOList){
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOs = dockingPreAttrMappingVOList.getDockingPreAttrMappingVOList();
        List<DockingPreAttrMappingVO> dockingPreAttrRangeVOS=new ArrayList<>();
        try {
             dockingPreAttrRangeVOS = dockingPreAttrMappingService.batchAddSave(dockingPreAttrMappingVOList);
             dockingPreAttrRangeVOS = dockingPreAttrMappingService.batchAddSave(dockingPreAttrMappingVOs);
        }catch (Exception e){
            return R.fail("集团集成属性映射配置保存失败:"+e.getMessage());
        }
@@ -120,12 +134,44 @@
    /**
     * å‚ç…§æ ‘ é›†å›¢åˆ†ç±»ï¼ˆæ˜¯å¦åŒ…含属性)
     * @param treeQueryObject æ ‘形查询对象 conditionMap å­˜ä¸Š codeclsfid=主数据的分类oid
     * @return ä¸»é¢˜åº“分类显示树
     * @return é›†å›¢åˆ†ç±»æ˜¾ç¤ºæ ‘
     */
    @GetMapping("/referTree")
    public List<Tree> referTree(TreeQueryObject treeQueryObject)  {
        return dockingPreClassifyService.treeCompanyGroupClassify(treeQueryObject);
    }
    /**
     * å‚ç…§æ ‘ ä¸»æ•°æ®æ¨¡æ¿å±žæ€§ä¿¡æ¯
     * @param classifyId ä¸»æ•°æ®åˆ†ç±»ä¸»é”®
     * @return ä¸»é¢˜åº“分类模板属性
     */
    @GetMapping("/listViewModelAttributeByClassId")
    public R listViewModelAttributeByClassId(String classifyId)  {
        return R.data(dockingPreViewModelService.selectDockingPreViewModelByClassId(classifyId,true));
    }
    /**
     * å‚ç…§æ ‘ ä¸»æ•°æ®åˆ†ç±»
     * @param treeQueryObject æ ‘形查询对象 conditionMap å­˜ä¸Š codeclsfid=主数据的分类oid
     * @return ä¸»é¢˜åº“分类显示树
     */
    @GetMapping("/referCodeClassifyTree")
    public List<Tree> referCodeClassifyTree(TreeQueryObject treeQueryObject)  {
        return codeClassifyClient.referCodeClassifyTree(treeQueryObject);
    }
    /**
     * å‚ç…§æ ‘ ä¸»æ•°æ®æ¨¡æ¿å±žæ€§ä¿¡æ¯
     * @param codeClassifyId ä¸»æ•°æ®åˆ†ç±»ä¸»é”®
     * @return ä¸»é¢˜åº“分类模板属性
     */
    @GetMapping("/listCodeAttributeByClassId")
    public R listCodeAttributeByClassId(String codeClassifyId)  {
        return R.data(codeClassifyClient.listCodeAttributeByClassId(codeClassifyId));
    }
    /***
     * ç”³è¯·é›†å›¢ç¼–码
@@ -143,6 +189,7 @@
        }
    }
    /***
     * åŒæ­¥é›†å›¢æ¨¡åž‹è§†å›¾
     * @return è¿”回执行结果信息
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/feigh/MdmInterJtClient.java
@@ -205,7 +205,7 @@
                dockingPreClassify.setPid(pid);
                dockingPreClassify.setId(classNumber);
                dockingPreClassify.setNodeLink(nodeLink);
                dockingPreClassify.setGetNodeLinkName(nodeLinkName);
                dockingPreClassify.setNodeLinkName(nodeLinkName);
                dockingPreClassify.setClassName(className);
                dockingPreClassifyArrayList.add(dockingPreClassify);
                // èŽ·å–å¯¹åº”çš„åˆ†ç±»è§†å›¾æ¨¡åž‹
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreAttrMappingService.java
@@ -41,9 +41,10 @@
    /***
     *校验属性映射是否配置过
     * @param targetClassifyId
     *  @param sourceClassifyId
     * @return
     */
    boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId);
    boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId,String sourceClassifyId);
    /***
     * å±žæ€§æŸ¥è¯¢
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -4,10 +4,11 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.feign.ICodeClassifyClient;
import com.vci.ubcs.code.webservice.entity.*;
import com.vci.ubcs.code.webservice.mapper.DockingPreAttrMappingMapper;
import com.vci.ubcs.code.webservice.service.IDockingPreAttrMappingService;
import com.vci.ubcs.code.webservice.service.IDockingPreAttrRangeService;
import com.vci.ubcs.code.webservice.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.webservice.service.*;
import com.vci.ubcs.code.webservice.vo.DokingAttributeSerchVO;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrMappingWrapper;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrRangeWrapper;
@@ -15,14 +16,12 @@
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,6 +44,11 @@
     */
    @Autowired(required = false)
    private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
    /***
     * ä¸»æ•°æ®åˆ†ç±»æœåŠ¡
     */
    @Autowired(required = true)
    private      ICodeClassifyClient codeClassifyClient;
    /***
     * ä¸šåŠ¡æ•°æ®å±žæ€§æœåŠ¡
@@ -64,8 +68,19 @@
    private IDockingPreAttrRangeService dockingPreAttrRangeService;
    /***
     * é›†å›¢åˆ†ç±»è§†å›¾æ¨¡åž‹æœåŠ¡
     */
    @Autowired(required = false)
    private IDockingPreViewModelService dockingPreViewModelService;
    /***
     * é›†å›¢å±žæ€§æœåŠ¡
     */
    @Autowired(required = false)
    @Lazy
    private IDockingPreClassifyService dockingPreClassifyService;
    /***
     * æ ¹æ®ä¸»æ•°æ®åˆ†ç±»ä¸»é”®èŽ·å–åˆ†ç±»ä¿¡æ¯é…ç½®
@@ -77,31 +92,40 @@
        VciBaseUtil.alertNotNull(codeClassifyId,"主数据分类主键");
        VciBaseUtil.alertNotNull(sourceClassifyId,"集团分类主键");
        //首先获取分类模板属性,然后与属性配置坐比较,以防被有增删属性的可能
        DockingPreClassify dockingPreClassify=dockingPreClassifyService.getById(sourceClassifyId);
        List<DockingPreMetaAttr> dockingPreMetaAttrList=    dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId));
        List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, sourceClassifyId).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
        Map<String/**属性主键**/, DockingPreAttrMapping> dockingPreAttrMappingMap = dockingPreAttrMappings.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getMetaListId(), t -> t));
        List<DockingPreViewModel> dockingPreViewModelList= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,sourceClassifyId));
        Map<String,DockingPreViewModel> dockingPreViewModelMap=dockingPreViewModelList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
        CodeClassify codeClassify= codeClassifyClient.getById(codeClassifyId);
        List<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>();
        dockingPreMetaAttrList.stream().forEach(dockingPreMetaAttr -> {
            String attrOid=dockingPreMetaAttr.getOid();
            DockingPreAttrMapping dockingPreAttrMapping=new DockingPreAttrMapping();
            if(dockingPreAttrMappingMap.containsKey(attrOid)){
                dockingPreAttrMapping=    dockingPreAttrMappingMap.get(attrOid);
                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreAttrMapping);
            }else{
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
                dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//属性主键
                dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//英文名称
                dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//中文名称
                dockingPreAttrMapping.setSourceClassifyId(dockingPreMetaAttr.getSourceClassifyId());//集团分类oid
                dockingPreAttrMapping.setSourceClassifyName("");//分类名称
                DockingPreViewModel dockingPreViewModel=new DockingPreViewModel();
                if(dockingPreViewModelMap.containsKey(dockingPreMetaAttr.getViewModelId())){
                    dockingPreViewModel=dockingPreViewModelMap.get(dockingPreMetaAttr.getViewModelId());
                }
                dockingPreAttrMapping.setSourceClassifyName(dockingPreClassify.getClassName());//分类名称
                dockingPreAttrMapping.setViewModeId(dockingPreMetaAttr.getViewModelId());//模型视图id
                dockingPreAttrMapping.setViewModelName("");//分类模型名称
                dockingPreAttrMapping.setViewName("");//分类模型名称
                dockingPreAttrMapping.setViewModelName(dockingPreViewModel.getName());//分类模型名称
                dockingPreAttrMapping.setViewName(dockingPreViewModel.getViewName());//分类模型名称
                dockingPreAttrMapping.setTargetClassifyId(codeClassifyId);
                dockingPreAttrMapping.setTargetClassifyName(codeClassify.getName());
            }
            newDockingPreAttrMappingList.add(dockingPreAttrMapping);
        });
        return     dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,false);
        return     dockingPreAttrMappingDO2VOS(newDockingPreAttrMappingList,false);
    }
    /***
@@ -192,14 +216,15 @@
    /***
     * æ ¹æ®ä¸»æ•°æ®oid检测是否属性映射配置
     * @param targetClassifyId
     * @param sourceClassifyId
     * @return
     * @throws Exception
     */
    @Override
    public boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId){
    public boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId,String sourceClassifyId){
        Long count =0L;
        try {
            count = dockingPreAttrMappingMapper.selectCount(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, targetClassifyId));
            count = dockingPreAttrMappingMapper.selectCount(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, targetClassifyId).eq(DockingPreAttrMapping::getSourceClassifyId,sourceClassifyId));
        }catch (Throwable e){
            e.printStackTrace();;
        } finally {
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreClassifyServiceImpl.java
@@ -19,10 +19,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.*;
/**
@@ -36,7 +33,7 @@
    /**
     * ä¸Šçº§èŠ‚ç‚¹çš„å±žæ€§åç§°
     */
    public static  final String PARENT_FIELD_NAME = "parentCodeClassifyOid";
    public static  final String PARENT_FIELD_NAME = "pid";
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
@@ -70,35 +67,51 @@
    @Override
    public List<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject) {
        log.info("获取集团分类树start...");
        Map<String,String> conditionMap= treeQueryObject.getConditionMap();
        if(conditionMap==null){
            conditionMap=new HashMap<>();
        }
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
        List<DockingPreClassifyVO> dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),true);
        List<DockingPreClassifyVO> dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),false);
        List<Tree> tree= revisionModelUtil.doList2Trees(dockingPreClassifyVOS,treeWrapperOptions,(DockingPreClassifyVO s) ->{
            //可以在这里处理树节点的显示
            return s.getId() + " " + s.getName();//(FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s.getLcStatus()) ? (" ã€åœç”¨ã€‘ ") : "");
        });
        setTreeConig(tree,conditionMap);
        log.info("获取集团分类树end...");
        return tree;
    }
    private void setTreeConig(List<Tree> tree,Map<String,String >conditionMap){
        boolean checkHasChild=false;
        Iterator var6 =  tree.listIterator();
        while(var6.hasNext()){
            Tree trees = (Tree) var6.next();
            boolean checkHasChild=dockingPreClassifyMapper.checkHasChild(trees.getOid());
            List<Tree> childrenList=trees.getChildren();
            if(childrenList.size()>0){
                checkHasChild=true;
            }
            boolean checkHas=false;
            //如果与条件传过来的值匹配的上则设置为选中
            if(conditionMap.containsKey(MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD)){
                String codeClassifyId=conditionMap.get(MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD);
                boolean checkHas=dockingPreAttrMappingService.checkHasConfigByTragetCodeclassifyId(codeClassifyId);
                if(checkHas) {
                    trees.setChecked(true);
                }
                checkHas = dockingPreAttrMappingService.checkHasConfigByTragetCodeclassifyId(codeClassifyId, trees.getOid());
            }
            ;
            if (checkHas) {
                trees.setChecked(true);
            }
            if(checkHasChild){
                trees.setLeaf(false);
            }else{
                trees.setLeaf(true);
            }
            if(checkHasChild) {
                setTreeConig(childrenList,conditionMap);
            }
        }
        log.info("获取集团分类树end...");
        return tree;
    }
    /***
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/GroupMdmInterServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vci.ubcs.code.feign.IMdmEngineClient;
import com.vci.ubcs.code.webservice.entity.*;
import com.vci.ubcs.code.webservice.vo.*;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
@@ -12,7 +13,6 @@
import com.vci.ubcs.code.webservice.mapper.DockingPreAttrMappingMapper;
import com.vci.ubcs.code.webservice.service.*;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -23,7 +23,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vci.ubcs.starter.revision.model.BaseModel;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -88,6 +88,9 @@
     */
    @Autowired(required = false)
    private IDockingPreMetaAttrService dockingPreMetaAttrService;
    @Autowired(required = false)
    private IMdmEngineClient mdmEngineClient;
    /***
     * ä¸»æ•°æ®åƒé›†å›¢ç”³è¯·ç¼–码
     * @param oids éœ€è¦ç”³è¯·çš„æ•°æ®ä¸»é”®æ•°ç»„
@@ -100,20 +103,19 @@
    public R applyGroupCode(String oids, String btmName) throws VciBaseException {
        try {
            List<BaseModel> updateCbos = new ArrayList<BaseModel>();
            List<DockingPreApplyForm> dockingPreAttrMappings = new ArrayList<>();
            VciBaseUtil.alertNotNull(oids, "选择的数据");
            VciBaseUtil.alertNotNull(btmName, "业务类型");
            //List<BaseModelVO> codeWupins=mdmEngineService.listByIds(VciBaseUtil.str2List(oids));
            List<BaseModelVO> dataModelList = new ArrayList<>();
            R<List<BaseModel>> baseModelR =mdmEngineClient.selectByTypeAndOid(btmName,oids);
            List<BaseModel> dataModelList= baseModelR.getData();
            if (!CollectionUtils.isEmpty(dataModelList)) {
                DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
                //申请单和申请单对象关系
                Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
                Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
                Map<String, BaseModelVO> baseModelVOMap = new HashMap<String, BaseModelVO>();
                Map<String, BaseModel> baseModelMap = new HashMap<String, BaseModel>();
                //组织数据
                dockingGroupDataVO = queryApplycodeDataObjects(1, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
                dockingGroupDataVO = queryApplycodeDataObjects(1, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelMap);
                DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveAddApply(dockingGroupDataVO);
                code = resultDataObject.getCode();
                msg = resultDataObject.getMsg();
@@ -161,13 +163,13 @@
                        }
                        //如果有集团码则更新数据
                        if (isEditDatas) {
                            if (baseModelVOMap.containsKey(applyId)) {
                                BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
                                BaseModel baseModel = new BaseModel();
                                BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                            if (baseModelMap.containsKey(applyId)) {
                                BaseModel baseModel = baseModelMap.get(applyId);
                                BeanUtilForVCI.copyDeclaredIgnoreCase(baseModel, baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                baseModelVO.setId(customCoding);
                                //baseModel.setId(customCoding);
                                baseModel.getData().getOrDefault("groupCode",customCoding);
                                updateCbos.add(baseModel);//更新数据集团code
                            }
                        }
@@ -196,7 +198,7 @@
                }
                //保存表单数据
                dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
                //mdmEngineService.saveBatch(updateCbos);//保存数据
                mdmEngineClient.insertBatchByType(btmName,updateCbos);//保存数据
            }
            return R.success("申请接口调用成功");
        }catch (VciBaseException e){
@@ -219,16 +221,16 @@
        VciBaseUtil.alertNotNull(oids,"选择的数据");
        VciBaseUtil.alertNotNull(btmName,"业务类型");
        //List<BaseModelVO> codeWupins=mdmEngineService.listByIds(VciBaseUtil.str2List(oids));
        List<BaseModelVO> dataModelList = new ArrayList<>();
        List<BaseModel> dataModelList = new ArrayList<>();
        try {
            if (!CollectionUtils.isEmpty(dataModelList)) {
                DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
                //申请单和申请单对象关系
                Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
                Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
                Map<String, BaseModelVO> baseModelVOMap = new HashMap<String, BaseModelVO>();
                Map<String, BaseModel> baseModelMap = new HashMap<String, BaseModel>();
                //组织数据
                dockingGroupDataVO = queryApplycodeDataObjects(2, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
                dockingGroupDataVO = queryApplycodeDataObjects(2, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelMap);
                DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveEditApply(dockingGroupDataVO);
                code = resultDataObject.getCode();
                msg = resultDataObject.getMsg();
@@ -276,13 +278,12 @@
                        }
                        //如果有集团码则更新数据
                        if (isEditDatas) {
                            if (baseModelVOMap.containsKey(applyId)) {
                                BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
                                BaseModel baseModel = new BaseModel();
                                BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                            if (baseModelMap.containsKey(applyId)) {
                                BaseModel baseModel = baseModelMap.get(applyId);
                                //BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                baseModelVO.setId(customCoding);
                            //    baseModel.setId(customCoding);
                                baseModel.getData().getOrDefault("groupCode",customCoding);
                                updateCbos.add(baseModel);//更新数据集团code
                            }
                        }
@@ -311,7 +312,7 @@
                }
                //保存表单数据
                dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
                //mdmEngineService.saveBatch(updateCbos);//保存数据
                mdmEngineClient.insertBatchByType(btmName,updateCbos);//保存数据
            }
            return R.success("申请接口调用成功");
        }catch (VciBaseException e){
@@ -420,7 +421,7 @@
                        dockingPreClassify.setPid(pid);
                        dockingPreClassify.setId(classNumber);
                        dockingPreClassify.setNodeLink(nodeLink);
                        dockingPreClassify.setGetNodeLinkName(nodeLinkName);
                        dockingPreClassify.setNodeLinkName(nodeLinkName);
                        dockingPreClassify.setClassName(className);
                        dockingPreClassify.setVersionValue(version);
                        dockingPreClassifyList.add(dockingPreClassify);
@@ -503,44 +504,6 @@
        }
    }
//    /**
//     * åŒæ­¥ä¸»æ¨¡åž‹
//     * @return
//     */
//    private String  queryMdmModel() throws VciBaseException {
//        String message="执行成功!";
//        try {
//
//
//        }catch (VciBaseException e){
//            message=e.getMessage();
//            throw new VciBaseException(message);
//        }finally {
//            return message;
//        }
//
//
//    }
//
//    /***
//     * åŒæ­¥æ¨¡åž‹è¯¦ç»†ä¿¡æ¯
//     * @param classifyId
//     * @return
//     */
//    private String queryClassModel(String classifyId)throws VciBaseException{
//        String message="执行成功!";
//        try {
//
//        }catch (VciBaseException e){
//            message=e.getMessage();
//            throw new VciBaseException(message);
//        }finally {
//            return message;
//        }
//
//    }
    /***
     * ç»„织 ä¿å­˜æ•°æ®æ–¹æ³•
     *
@@ -582,7 +545,7 @@
                dockingPreClassify.setPid(pid);
                dockingPreClassify.setId(classNumber);
                dockingPreClassify.setNodeLink(nodeLink);
                dockingPreClassify.setGetNodeLinkName(nodeLinkName);
                dockingPreClassify.setNodeLinkName(nodeLinkName);
                dockingPreClassify.setClassName(className);
                dockingPreClassifyArrayList.add(dockingPreClassify);
                // èŽ·å–å¯¹åº”çš„åˆ†ç±»è§†å›¾æ¨¡åž‹
@@ -778,12 +741,12 @@
    /**
     * ç»„织数据
     * */
    private DockingGroupDataVO queryApplycodeDataObjects(int optationtype,List<BaseModelVO> codeWupins,Map<String,DockingPreApplyForm>   addDockingPreApplyFormMap,Map<String,DockingPreApplyForm>  editDockingPreApplyFormMap,Map<String,BaseModelVO>  codeWupinMap) throws VciBaseException{
    private DockingGroupDataVO queryApplycodeDataObjects(int optationtype,List<BaseModel>  codeWupins,Map<String,DockingPreApplyForm>   addDockingPreApplyFormMap,Map<String,DockingPreApplyForm>  editDockingPreApplyFormMap,Map<String,BaseModel>  codeWupinMap) throws VciBaseException{
        try {
            String curUserName = AuthUtil.getUser().getUserName();
            //申请的数据
            List<DockingMainData> mainDataList=new ArrayList<DockingMainData>();
            for (BaseModelVO dataBusinessObject : codeWupins) {
            for (BaseModel dataBusinessObject : codeWupins) {
                String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
                String codeclsfid = dataBusinessObject.getData().getOrDefault("codeclsfid","");
                String btmName = dataBusinessObject.getBtmname();
@@ -824,7 +787,7 @@
                DockingMainData mainData = new DockingMainData();
                mainData.setApplyEntId(dockingApplyUnitCode);//申请单位代码
                mainData.setApplyId(apllyCode);//申请单号
                mainData.setClassName(dockingPreClassify.getGetNodeLinkName());//分类名称
                mainData.setClassName(dockingPreClassify.getNodeLinkName());//分类名称
                mainData.setCreateBy(curUserName);//
                mainData.setSecretLevel("内部");//密级,默认为内部
                mainData.setViewInfos(getviewInfos(optationtype,dockingPreClassify, dataBusinessObject));//获取视图模型
@@ -847,7 +810,7 @@
     * @param dataBusinessObject
     * @throws VciBaseException
     */
    private List<DockingViewVO>getviewInfos(int type, DockingPreClassify dockingPreClassify, BaseModelVO dataBusinessObject) throws Throwable{
    private List<DockingViewVO>getviewInfos(int type, DockingPreClassify dockingPreClassify, BaseModel dataBusinessObject) throws Throwable{
        List<DockingViewVO> viewInfoList=new ArrayList<>();
        String jclassOid=    dockingPreClassify.getOid();
        List<DockingPreViewModel> dockingPreViewModels=new ArrayList<>();
@@ -876,16 +839,13 @@
     * @return
     * @throws VciBaseException
     */
    private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModelVO dataBusinessObject) throws Throwable{
    private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModel dataBusinessObject) throws Throwable{
        //构造模型视图数据
        List<Map<String, Object>> viewValueList=new ArrayList<Map<String,Object>>();
        String oid = dockingPreViewModel.getOid();
        Map<String,String> dataValueMap=dataBusinessObject.getData();
        String codeClassifyId=dataValueMap.get("codeclsfid");
        Map<String,String>conditionsMap=new HashMap<String, String>();
        List<DockingPreAttrMapping> dockingPreAttrMappingList = dockingPreAttrMappingMapper.selectList(Wrappers.<DockingPreAttrMapping>query().lambda()
            .eq(DockingPreAttrMapping::getSourceClassifyId, jclassOid).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
        if(CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreClassifyMapper.xml
@@ -31,7 +31,7 @@
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="CLASSNAME" property="className"/>
        <result column="NODELINK" property="nodeLink"/>
        <result column="NODELINKNAME" property="getNodeLinkName"/>
        <result column="NODELINKNAME" property="nodeLinkName"/>
        <result column="PID" property="pid"/>
    </resultMap>
    <select id="selectCompanyGroupClassifyVOByTree" resultMap="plDockingClassifyResultMap">
@@ -67,14 +67,16 @@
        codeclassify0.NODELINKNAME   as nodelinkname,
        codeclassify0.PID   as pid
        from PL_CODE_JCLASSIFY codeclassify0
        <where>
            <if test="oid != null and oid != ''">
                codeclassify0.pid = '${oid}'
        start with
        <!--<where>-->
            <if test="oid != null">
                    codeclassify0.pid = '${oid}'
            </if>
            <if test="oid = null">
             <if test="oid == null ">
                codeclassify0.pid is null
            </if>
        </where>
        <!--</where>-->
        connect by prior codeclassify0.oid =codeclassify0.pid
        order by id asc
    </select>
Source/data/applogs/xxl-job/xxl-job-admin.log
ÎļþÌ«´ó
Source/data/applogs/xxl-job/xxl-job-admin.log.2023-05-30.zip
Binary files differ
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log
@@ -1,93 +1,96 @@
2023-05-30 18:40:10,251 INFO [background-preinit] o.h.validator.internal.util.Version [Version.java : 21] HV000001: Hibernate Validator 6.2.3.Final
2023-05-30 18:40:11,223 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-05-30 18:40:11,224 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
2023-05-30 18:40:16,558 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob] & group[DEFAULT_GROUP]
2023-05-30 18:40:16,568 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob.yaml] & group[DEFAULT_GROUP]
2023-05-30 18:40:16,576 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob-dev.yaml] & group[DEFAULT_GROUP]
2023-05-30 18:40:16,579 INFO [main] o.s.c.b.c.PropertySourceBootstrapConfiguration [PropertySourceBootstrapConfiguration.java : 109] Located property source: [BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs.yaml,DEFAULT_GROUP'}]
2023-05-30 18:40:16,616 INFO [main] c.v.ubcs.job.executor.JobApplication [SpringApplication.java : 640] The following 1 profile is active: "dev"
2023-05-30 18:40:18,929 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate [RepositoryConfigurationDelegate.java : 262] Multiple Spring Data modules found, entering strict repository configuration mode
2023-05-30 18:40:18,932 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate [RepositoryConfigurationDelegate.java : 132] Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2023-05-30 18:40:18,971 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate [RepositoryConfigurationDelegate.java : 201] Finished Spring Data repository scanning in 11 ms. Found 0 Redis repository interfaces.
2023-05-30 18:40:19,425 INFO [main] o.s.cloud.context.scope.GenericScope [GenericScope.java : 283] BeanFactory id=8a87525c-4e09-336f-9e65-667cebc7cd92
2023-05-30 18:40:19,434 INFO [main] o.s.c.l.p.BladePropertySourcePostProcessor [BladePropertySourcePostProcessor.java : 150] BladePropertySourcePostProcessor init.
2023-05-30 18:40:19,459 INFO [main] o.s.c.l.p.BladePropertySourcePostProcessor [BladePropertySourcePostProcessor.java : 62] BladePropertySourcePostProcessor process @BladePropertySource bean.
2023-05-30 18:40:19,520 WARN [main] o.s.c.l.p.BladePropertySourcePostProcessor [BladePropertySourcePostProcessor.java : 67] Not found @BladePropertySource on spring bean class.
2023-05-30 18:40:19,888 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'org.springframework.cloud.commons.config.CommonsConfigAutoConfiguration' of type [org.springframework.cloud.commons.config.CommonsConfigAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-05-30 18:40:19,893 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration' of type [org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-05-30 18:40:19,895 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'loadBalancerClientsDefaultsMappingsProvider' of type [org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration$$Lambda$490/425842522] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-05-30 18:40:19,899 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'defaultsBindHandlerAdvisor' of type [org.springframework.cloud.commons.config.DefaultsBindHandlerAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-05-30 18:40:19,962 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'spring.cloud.sentinel-com.alibaba.cloud.sentinel.SentinelProperties' of type [com.alibaba.cloud.sentinel.SentinelProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-05-30 18:40:19,970 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration' of type [com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-05-30 18:40:20,334 WARN [main] io.undertow.websockets.jsr [Bootstrap.java : 68] UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2023-05-30 18:40:20,380 INFO [main] io.undertow.servlet [ServletContextImpl.java : 382] Initializing Spring embedded WebApplicationContext
2023-05-30 18:40:20,381 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext [ServletWebServerApplicationContext.java : 292] Root WebApplicationContext: initialization completed in 3723 ms
2023-05-30 18:40:20,880 INFO [main] c.v.u.j.executor.config.XxlJobConfig [XxlJobConfig.java : 43] >>>>>>>>>>> xxl-job config init.
2023-05-30 18:40:20,902 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@111a7973[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#demoJobHandler]
2023-05-30 18:40:20,903 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1a2773a8[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#httpJobHandler]
2023-05-30 18:40:20,903 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@78b0ec3a[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#demoJobHandler2]
2023-05-30 18:40:20,903 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@46612bfc[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#shardingJobHandler]
2023-05-30 18:40:20,903 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4f213a2[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#commandJobHandler]
2023-05-30 18:40:21,573 INFO [main] c.a.c.s.SentinelWebMvcConfigurer [SentinelWebMvcConfigurer.java : 52] [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
2023-05-30 18:40:21,682 INFO [main] o.s.c.c.v.BladeRequestMappingHandlerMapping [BladeRequestMappingHandlerMapping.java : 99] Mapped "{ [/error], produces [text/html]}" onto org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse)
2023-05-30 18:40:21,683 INFO [main] o.s.c.c.v.BladeRequestMappingHandlerMapping [BladeRequestMappingHandlerMapping.java : 99] Mapped "{ [/error]}" onto org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)
2023-05-30 18:40:21,684 INFO [main] o.s.c.c.v.BladeRequestMappingHandlerMapping [BladeRequestMappingHandlerMapping.java : 99] Mapped "{GET [/test/testRequest]}" onto com.vci.ubcs.job.executor.controller.TestController#testRequest(String)
2023-05-30 18:40:24,382 INFO [main] com.alibaba.nacos.client.naming [InitUtils.java : 62] initializer namespace from System Property : null
2023-05-30 18:40:24,385 INFO [main] com.alibaba.nacos.client.naming [InitUtils.java : 66] initializer namespace from System Environment :null
2023-05-30 18:40:24,388 INFO [main] com.alibaba.nacos.client.naming [InitUtils.java : 73] initializer namespace from System Property :null
2023-05-30 18:40:24,418 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-05-30 18:40:24,420 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
2023-05-30 18:40:24,440 INFO [main] c.alibaba.nacos.common.remote.client [RpcClientFactory.java : 95] [RpcClientFactory] create a new rpc client of 8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9
2023-05-30 18:40:24,441 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] RpcClient init label, labels = {module=naming, source=sdk}
2023-05-30 18:40:24,448 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
2023-05-30 18:40:24,449 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
2023-05-30 18:40:24,451 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
2023-05-30 18:40:24,452 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Try to connect to server on start up, server: {serverIp = '127.0.0.1', server main port = 8848}
2023-05-30 18:40:24,593 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Success to connect to server [127.0.0.1:8848] on start up, connectionId = 1685443224475_127.0.0.1_63184
2023-05-30 18:40:24,596 INFO [com.alibaba.nacos.client.remote.worker] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Notify connected event to listeners.
2023-05-30 18:40:24,596 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
2023-05-30 18:40:24,601 INFO [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.client.naming [NamingGrpcRedoService.java : 76] Grpc connection connect
2023-05-30 18:40:24,602 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$376/700837405
2023-05-30 18:40:25,034 INFO [main] o.s.b.a.e.web.EndpointLinksResolver [EndpointLinksResolver.java : 58] Exposing 20 endpoint(s) beneath base path '/actuator'
2023-05-30 18:40:27,551 INFO [main] o.s.b.f.a.AutowiredAnnotationBeanPostProcessor [AutowiredAnnotationBeanPostProcessor.java : 367] Inconsistent constructor declaration on bean with name 'org.springblade.core.launch.server.ServerInfo': single autowire-marked constructor flagged as optional - this constructor is effectively required since there is no default constructor to fall back to: public org.springblade.core.launch.server.ServerInfo(org.springframework.boot.autoconfigure.web.ServerProperties)
2023-05-30 18:40:29,465 WARN [main] o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger [LoadBalancerCacheAutoConfiguration.java : 82] Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
2023-05-30 18:40:29,562 INFO [main] c.x.r.r.p.XxlRpcProviderFactory [XxlRpcProviderFactory.java : 197] >>>>>>>>>>> xxl-rpc, provider factory add service success. serviceKey = com.xxl.job.core.biz.ExecutorBiz, serviceBean = class com.xxl.job.core.biz.impl.ExecutorBizImpl
2023-05-30 18:40:30,731 INFO [main] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 141] [SUBSCRIBE-SERVICE] service:ubcs-xxljob, group:DEFAULT_GROUP, clusters:DEFAULT
2023-05-30 18:40:30,761 INFO [main] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 181] init new ips(0) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> []
2023-05-30 18:40:30,784 INFO [main] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 166] current ips:(0) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> []
2023-05-30 18:40:30,794 INFO [Thread-51] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 66] >>>>>>>>>>> xxl-rpc remoting server start success, nettype = com.xxl.rpc.remoting.net.impl.netty_http.server.NettyHttpServer, port = 7018
2023-05-30 18:40:30,822 INFO [main] io.undertow [Undertow.java : 120] starting server: Undertow - 2.2.18.Final
2023-05-30 18:40:30,844 INFO [main] org.xnio [Xnio.java : 95] XNIO version 3.8.7.Final
2023-05-30 18:40:30,881 INFO [main] org.xnio.nio [NioXnio.java : 58] XNIO NIO Implementation Version 3.8.7.Final
2023-05-30 18:40:31,028 INFO [main] org.jboss.threads [Version.java : 52] JBoss Threads version 3.1.0.Final
2023-05-30 18:40:31,159 INFO [main] o.s.b.w.e.undertow.UndertowWebServer [UndertowWebServer.java : 119] Undertow started on port(s) 36009 (http)
2023-05-30 18:40:31,170 INFO [main] com.alibaba.nacos.client.naming [NamingGrpcClientProxy.java : 111] [REGISTER-SERVICE] public registering service ubcs-xxljob with instance Instance{instanceId='null', ip='192.168.237.1', port=36009, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='DEFAULT', serviceName='null', metadata={preserved.register.source=SPRING_CLOUD}}
2023-05-30 18:40:31,187 INFO [main] c.a.c.n.r.NacosServiceRegistry [NacosServiceRegistry.java : 75] nacos registry, DEFAULT_GROUP ubcs-xxljob 192.168.237.1:36009 register finished
2023-05-30 18:40:31,336 INFO [nacos-grpc-client-executor-127.0.0.1-10] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Receive server push request, request = NotifySubscriberRequest, requestId = 1587
2023-05-30 18:40:31,343 INFO [nacos-grpc-client-executor-127.0.0.1-10] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 181] init new ips(1) service: DEFAULT_GROUP@@ubcs-xxljob -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000,"ipDeleteTimeout":30000}]
2023-05-30 18:40:31,344 INFO [nacos-grpc-client-executor-127.0.0.1-10] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 166] current ips:(1) service: DEFAULT_GROUP@@ubcs-xxljob -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000,"ipDeleteTimeout":30000}]
2023-05-30 18:40:31,346 INFO [nacos-grpc-client-executor-127.0.0.1-10] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [8db2c736-5dfa-4c32-b8c9-fa6c3ddacbb9] Ack server push request, request = NotifySubscriberRequest, requestId = 1587
2023-05-30 18:40:31,760 INFO [com.alibaba.nacos.client.naming.updater.0] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 234] new ips(1) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000,"ipDeleteTimeout":30000}]
2023-05-30 18:40:31,762 INFO [com.alibaba.nacos.client.naming.updater.0] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 166] current ips:(1) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000,"ipDeleteTimeout":30000}]
2023-05-30 18:40:32,070 INFO [main] o.s.core.launch.StartEventListener [StartEventListener.java : 45] ---[UBCS-XXLJOB]---启动完成,当前使用的端口:[36009],环境变量:[dev]---
2023-05-30 18:40:32,098 INFO [main] c.v.ubcs.job.executor.JobApplication [StartupInfoLogger.java : 61] Started JobApplication in 23.74 seconds (JVM running for 26.324)
2023-05-30 18:40:32,110 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 65] nacos.cache.data.init.snapshot = true
2023-05-30 18:40:32,113 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-dev.yaml+DEFAULT_GROUP
2023-05-30 18:40:32,115 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-dev.yaml, group=DEFAULT_GROUP, cnt=1
2023-05-30 18:40:32,116 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-dev.yaml, group=DEFAULT_GROUP
2023-05-30 18:40:32,117 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-xxljob+DEFAULT_GROUP
2023-05-30 18:40:32,117 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-xxljob, group=DEFAULT_GROUP, cnt=1
2023-05-30 18:40:32,118 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-xxljob, group=DEFAULT_GROUP
2023-05-30 18:40:32,120 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs.yaml+DEFAULT_GROUP
2023-05-30 18:40:32,120 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs.yaml, group=DEFAULT_GROUP, cnt=1
2023-05-30 18:40:32,121 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs.yaml, group=DEFAULT_GROUP
2023-05-30 18:40:32,122 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-xxljob.yaml+DEFAULT_GROUP
2023-05-30 18:40:32,122 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-xxljob.yaml, group=DEFAULT_GROUP, cnt=1
2023-05-30 18:40:32,122 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-xxljob.yaml, group=DEFAULT_GROUP
2023-05-30 18:40:32,123 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-xxljob-dev.yaml+DEFAULT_GROUP
2023-05-30 18:40:32,124 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-xxljob-dev.yaml, group=DEFAULT_GROUP, cnt=1
2023-05-30 18:40:32,124 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-xxljob-dev.yaml, group=DEFAULT_GROUP
2023-05-30 18:40:32,857 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 20:59:58,404 INFO [background-preinit] o.h.validator.internal.util.Version [Version.java : 21] HV000001: Hibernate Validator 6.2.3.Final
2023-06-02 20:59:59,739 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-06-02 20:59:59,740 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
2023-06-02 21:00:03,747 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob] & group[DEFAULT_GROUP]
2023-06-02 21:00:03,755 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob.yaml] & group[DEFAULT_GROUP]
2023-06-02 21:00:03,761 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob-dev.yaml] & group[DEFAULT_GROUP]
2023-06-02 21:00:03,763 INFO [main] o.s.c.b.c.PropertySourceBootstrapConfiguration [PropertySourceBootstrapConfiguration.java : 109] Located property source: [BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs.yaml,DEFAULT_GROUP'}]
2023-06-02 21:00:03,793 INFO [main] c.v.ubcs.job.executor.JobApplication [SpringApplication.java : 640] The following 1 profile is active: "dev"
2023-06-02 21:00:05,925 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate [RepositoryConfigurationDelegate.java : 262] Multiple Spring Data modules found, entering strict repository configuration mode
2023-06-02 21:00:05,931 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate [RepositoryConfigurationDelegate.java : 132] Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2023-06-02 21:00:05,985 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate [RepositoryConfigurationDelegate.java : 201] Finished Spring Data repository scanning in 15 ms. Found 0 Redis repository interfaces.
2023-06-02 21:00:06,274 INFO [main] o.s.cloud.context.scope.GenericScope [GenericScope.java : 283] BeanFactory id=8a87525c-4e09-336f-9e65-667cebc7cd92
2023-06-02 21:00:06,278 INFO [main] o.s.c.l.p.BladePropertySourcePostProcessor [BladePropertySourcePostProcessor.java : 150] BladePropertySourcePostProcessor init.
2023-06-02 21:00:06,290 INFO [main] o.s.c.l.p.BladePropertySourcePostProcessor [BladePropertySourcePostProcessor.java : 62] BladePropertySourcePostProcessor process @BladePropertySource bean.
2023-06-02 21:00:06,319 WARN [main] o.s.c.l.p.BladePropertySourcePostProcessor [BladePropertySourcePostProcessor.java : 67] Not found @BladePropertySource on spring bean class.
2023-06-02 21:00:06,755 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'org.springframework.cloud.commons.config.CommonsConfigAutoConfiguration' of type [org.springframework.cloud.commons.config.CommonsConfigAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-06-02 21:00:06,761 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration' of type [org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-06-02 21:00:06,763 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'loadBalancerClientsDefaultsMappingsProvider' of type [org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration$$Lambda$490/1366572224] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-06-02 21:00:06,768 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'defaultsBindHandlerAdvisor' of type [org.springframework.cloud.commons.config.DefaultsBindHandlerAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-06-02 21:00:06,866 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'spring.cloud.sentinel-com.alibaba.cloud.sentinel.SentinelProperties' of type [com.alibaba.cloud.sentinel.SentinelProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-06-02 21:00:06,878 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 376] Bean 'com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration' of type [com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-06-02 21:00:07,251 WARN [main] io.undertow.websockets.jsr [Bootstrap.java : 68] UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2023-06-02 21:00:07,316 INFO [main] io.undertow.servlet [ServletContextImpl.java : 382] Initializing Spring embedded WebApplicationContext
2023-06-02 21:00:07,317 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext [ServletWebServerApplicationContext.java : 292] Root WebApplicationContext: initialization completed in 3484 ms
2023-06-02 21:00:07,844 INFO [main] c.v.u.j.executor.config.XxlJobConfig [XxlJobConfig.java : 43] >>>>>>>>>>> xxl-job config init.
2023-06-02 21:00:07,875 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@35555145[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#httpJobHandler]
2023-06-02 21:00:07,876 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@70bc3a9c[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#demoJobHandler2]
2023-06-02 21:00:07,876 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@771cbd13[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#demoJobHandler]
2023-06-02 21:00:07,877 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@229749f0[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#shardingJobHandler]
2023-06-02 21:00:07,877 INFO [main] c.x.job.core.executor.XxlJobExecutor [XxlJobExecutor.java : 211] >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3d57fb9e[class com.vci.ubcs.job.executor.jobhandler.SampleXxlJob#commandJobHandler]
2023-06-02 21:00:08,289 INFO [main] c.a.c.s.SentinelWebMvcConfigurer [SentinelWebMvcConfigurer.java : 52] [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
2023-06-02 21:00:08,375 INFO [main] o.s.c.c.v.BladeRequestMappingHandlerMapping [BladeRequestMappingHandlerMapping.java : 99] Mapped "{ [/error], produces [text/html]}" onto org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse)
2023-06-02 21:00:08,376 INFO [main] o.s.c.c.v.BladeRequestMappingHandlerMapping [BladeRequestMappingHandlerMapping.java : 99] Mapped "{ [/error]}" onto org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)
2023-06-02 21:00:08,377 INFO [main] o.s.c.c.v.BladeRequestMappingHandlerMapping [BladeRequestMappingHandlerMapping.java : 99] Mapped "{GET [/test/testRequest]}" onto com.vci.ubcs.job.executor.controller.TestController#testRequest(String)
2023-06-02 21:00:10,025 INFO [main] com.alibaba.nacos.client.naming [InitUtils.java : 62] initializer namespace from System Property : null
2023-06-02 21:00:10,025 INFO [main] com.alibaba.nacos.client.naming [InitUtils.java : 66] initializer namespace from System Environment :null
2023-06-02 21:00:10,026 INFO [main] com.alibaba.nacos.client.naming [InitUtils.java : 73] initializer namespace from System Property :null
2023-06-02 21:00:10,046 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-06-02 21:00:10,047 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
2023-06-02 21:00:10,060 INFO [main] c.alibaba.nacos.common.remote.client [RpcClientFactory.java : 95] [RpcClientFactory] create a new rpc client of 971c8549-b6d1-463d-9f97-5c9c802a5776
2023-06-02 21:00:10,061 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] RpcClient init label, labels = {module=naming, source=sdk}
2023-06-02 21:00:10,064 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
2023-06-02 21:00:10,065 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
2023-06-02 21:00:10,066 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
2023-06-02 21:00:10,067 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Try to connect to server on start up, server: {serverIp = '127.0.0.1', server main port = 8848}
2023-06-02 21:00:10,187 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Success to connect to server [127.0.0.1:8848] on start up, connectionId = 1685710810072_127.0.0.1_63146
2023-06-02 21:00:10,188 INFO [com.alibaba.nacos.client.remote.worker] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Notify connected event to listeners.
2023-06-02 21:00:10,192 INFO [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.client.naming [NamingGrpcRedoService.java : 76] Grpc connection connect
2023-06-02 21:00:10,189 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
2023-06-02 21:00:10,192 INFO [main] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$376/1387556178
2023-06-02 21:00:10,977 INFO [main] o.s.b.a.e.web.EndpointLinksResolver [EndpointLinksResolver.java : 58] Exposing 20 endpoint(s) beneath base path '/actuator'
2023-06-02 21:00:13,347 INFO [main] o.s.b.f.a.AutowiredAnnotationBeanPostProcessor [AutowiredAnnotationBeanPostProcessor.java : 367] Inconsistent constructor declaration on bean with name 'org.springblade.core.launch.server.ServerInfo': single autowire-marked constructor flagged as optional - this constructor is effectively required since there is no default constructor to fall back to: public org.springblade.core.launch.server.ServerInfo(org.springframework.boot.autoconfigure.web.ServerProperties)
2023-06-02 21:00:14,604 WARN [main] o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger [LoadBalancerCacheAutoConfiguration.java : 82] Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
2023-06-02 21:00:14,653 INFO [main] c.x.r.r.p.XxlRpcProviderFactory [XxlRpcProviderFactory.java : 197] >>>>>>>>>>> xxl-rpc, provider factory add service success. serviceKey = com.xxl.job.core.biz.ExecutorBiz, serviceBean = class com.xxl.job.core.biz.impl.ExecutorBizImpl
2023-06-02 21:00:15,148 INFO [main] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 141] [SUBSCRIBE-SERVICE] service:ubcs-xxljob, group:DEFAULT_GROUP, clusters:DEFAULT
2023-06-02 21:00:15,166 INFO [main] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 181] init new ips(0) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> []
2023-06-02 21:00:15,179 INFO [main] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 166] current ips:(0) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> []
2023-06-02 21:00:15,183 INFO [Thread-47] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 66] >>>>>>>>>>> xxl-rpc remoting server start success, nettype = com.xxl.rpc.remoting.net.impl.netty_http.server.NettyHttpServer, port = 7018
2023-06-02 21:00:15,202 INFO [main] io.undertow [Undertow.java : 120] starting server: Undertow - 2.2.18.Final
2023-06-02 21:00:15,213 INFO [main] org.xnio [Xnio.java : 95] XNIO version 3.8.7.Final
2023-06-02 21:00:15,227 INFO [main] org.xnio.nio [NioXnio.java : 58] XNIO NIO Implementation Version 3.8.7.Final
2023-06-02 21:00:15,273 INFO [main] org.jboss.threads [Version.java : 52] JBoss Threads version 3.1.0.Final
2023-06-02 21:00:15,339 INFO [main] o.s.b.w.e.undertow.UndertowWebServer [UndertowWebServer.java : 119] Undertow started on port(s) 36009 (http)
2023-06-02 21:00:15,344 INFO [main] com.alibaba.nacos.client.naming [NamingGrpcClientProxy.java : 111] [REGISTER-SERVICE] public registering service ubcs-xxljob with instance Instance{instanceId='null', ip='192.168.237.1', port=36009, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='DEFAULT', serviceName='null', metadata={preserved.register.source=SPRING_CLOUD}}
2023-06-02 21:00:15,353 INFO [main] c.a.c.n.r.NacosServiceRegistry [NacosServiceRegistry.java : 75] nacos registry, DEFAULT_GROUP ubcs-xxljob 192.168.237.1:36009 register finished
2023-06-02 21:00:15,706 INFO [nacos-grpc-client-executor-127.0.0.1-10] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Receive server push request, request = NotifySubscriberRequest, requestId = 2169
2023-06-02 21:00:15,709 INFO [nacos-grpc-client-executor-127.0.0.1-10] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 181] init new ips(1) service: DEFAULT_GROUP@@ubcs-xxljob -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2023-06-02 21:00:15,710 INFO [nacos-grpc-client-executor-127.0.0.1-10] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 166] current ips:(1) service: DEFAULT_GROUP@@ubcs-xxljob -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2023-06-02 21:00:15,711 INFO [nacos-grpc-client-executor-127.0.0.1-10] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [971c8549-b6d1-463d-9f97-5c9c802a5776] Ack server push request, request = NotifySubscriberRequest, requestId = 2169
2023-06-02 21:00:15,737 INFO [main] o.s.core.launch.StartEventListener [StartEventListener.java : 45] ---[UBCS-XXLJOB]---启动完成,当前使用的端口:[36009],环境变量:[dev]---
2023-06-02 21:00:15,754 INFO [main] c.v.ubcs.job.executor.JobApplication [StartupInfoLogger.java : 61] Started JobApplication in 19.761 seconds (JVM running for 21.938)
2023-06-02 21:00:15,761 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 65] nacos.cache.data.init.snapshot = true
2023-06-02 21:00:15,762 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-dev.yaml+DEFAULT_GROUP
2023-06-02 21:00:15,764 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-dev.yaml, group=DEFAULT_GROUP, cnt=1
2023-06-02 21:00:15,764 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-dev.yaml, group=DEFAULT_GROUP
2023-06-02 21:00:15,765 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-xxljob+DEFAULT_GROUP
2023-06-02 21:00:15,765 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-xxljob, group=DEFAULT_GROUP, cnt=1
2023-06-02 21:00:15,765 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-xxljob, group=DEFAULT_GROUP
2023-06-02 21:00:15,766 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs.yaml+DEFAULT_GROUP
2023-06-02 21:00:15,766 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs.yaml, group=DEFAULT_GROUP, cnt=1
2023-06-02 21:00:15,766 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs.yaml, group=DEFAULT_GROUP
2023-06-02 21:00:15,767 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-xxljob.yaml+DEFAULT_GROUP
2023-06-02 21:00:15,767 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-xxljob.yaml, group=DEFAULT_GROUP, cnt=1
2023-06-02 21:00:15,767 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-xxljob.yaml, group=DEFAULT_GROUP
2023-06-02 21:00:15,768 INFO [main] c.a.n.c.config.impl.ClientWorker [ClientWorker.java : 373] [fixed-127.0.0.1_8848] [subscribe] ubcs-xxljob-dev.yaml+DEFAULT_GROUP
2023-06-02 21:00:15,768 INFO [main] c.a.n.client.config.impl.CacheData [CacheData.java : 180] [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=ubcs-xxljob-dev.yaml, group=DEFAULT_GROUP, cnt=1
2023-06-02 21:00:15,768 INFO [main] c.a.c.n.r.NacosContextRefresher [NacosContextRefresher.java : 105] listening config: dataId=ubcs-xxljob-dev.yaml, group=DEFAULT_GROUP
2023-06-02 21:00:16,173 INFO [com.alibaba.nacos.client.naming.updater.0] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 234] new ips(1) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2023-06-02 21:00:16,174 INFO [com.alibaba.nacos.client.naming.updater.0] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 166] current ips:(1) service: DEFAULT_GROUP@@ubcs-xxljob@@DEFAULT -> [{"ip":"192.168.237.1","port":36009,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@ubcs-xxljob","metadata":{"preserved.register.source":"SPRING_CLOUD"},"ipDeleteTimeout":30000,"instanceHeartBeatInterval":5000,"instanceHeartBeatTimeOut":15000}]
2023-06-02 21:00:16,350 INFO [RMI TCP Connection(13)-192.168.3.7] io.undertow.servlet [ServletContextImpl.java : 382] Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-06-02 21:00:16,350 INFO [RMI TCP Connection(13)-192.168.3.7] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 525] Initializing Servlet 'dispatcherServlet'
2023-06-02 21:00:16,354 INFO [RMI TCP Connection(13)-192.168.3.7] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 547] Completed initialization in 3 ms
2023-06-02 21:00:17,232 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -111,11 +114,8 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:40:32,858 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:40:32,936 INFO [RMI TCP Connection(5)-192.168.1.46] io.undertow.servlet [ServletContextImpl.java : 382] Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-05-30 18:40:32,936 INFO [RMI TCP Connection(5)-192.168.1.46] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 525] Initializing Servlet 'dispatcherServlet'
2023-05-30 18:40:32,940 INFO [RMI TCP Connection(5)-192.168.1.46] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 547] Completed initialization in 4 ms
2023-05-30 18:41:04,927 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:00:17,234 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:00:49,283 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -139,8 +139,8 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:41:04,928 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:41:36,978 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:00:49,283 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:01:21,322 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -164,8 +164,8 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:41:36,979 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:42:09,008 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:01:21,323 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:01:53,372 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -189,8 +189,8 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:42:09,008 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:42:41,038 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:01:53,372 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:02:25,393 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -214,8 +214,8 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:42:41,038 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:43:13,081 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:02:25,394 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:02:57,429 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -239,8 +239,8 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:43:13,179 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:43:45,242 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:02:57,430 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:03:29,473 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -264,239 +264,14 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:43:45,243 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:44:17,289 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:44:17,290 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:44:49,322 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:44:49,323 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:45:21,341 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:45:21,341 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:45:53,370 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:45:53,371 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:46:25,389 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:46:25,389 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:46:57,414 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:46:57,415 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:47:29,468 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:47:29,469 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:48:01,505 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:48:01,508 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:48:33,522 WARN [Thread-2] c.a.n.c.http.HttpClientBeanHolder [HttpClientBeanHolder.java : 108] [HttpClientBeanHolder] Start destroying common HttpClient
2023-05-30 18:48:33,523 WARN [Thread-8] c.a.nacos.common.notify.NotifyCenter [NotifyCenter.java : 136] [NotifyCenter] Start destroying Publisher
2023-05-30 18:48:33,524 WARN [Thread-8] c.a.nacos.common.notify.NotifyCenter [NotifyCenter.java : 153] [NotifyCenter] Destruction of the end
2023-05-30 18:48:33,549 WARN [Thread-2] c.a.n.c.http.HttpClientBeanHolder [HttpClientBeanHolder.java : 114] [HttpClientBeanHolder] Destruction of the end
2023-05-30 18:48:33,546 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
    at java.net.Socket.connect(Socket.java:606)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
    at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:94)
    at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:41)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:48:33,549 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-05-30 18:48:33,720 INFO [SpringApplicationShutdownHook] io.undertow [Undertow.java : 259] stopping server: Undertow - 2.2.18.Final
2023-05-30 18:48:33,775 INFO [SpringApplicationShutdownHook] io.undertow.servlet [ServletContextImpl.java : 382] Destroying Spring FrameworkServlet 'dispatcherServlet'
2023-05-30 18:48:33,788 ERROR [SpringApplicationShutdownHook] c.a.cloud.nacos.discovery.NacosWatch [NacosWatch.java : 180] namingService unsubscribe failed, properties:NacosDiscoveryProperties{serverAddr='127.0.0.1:8848', username='', password='', endpoint='', namespace='', watchDelay=30000, logName='', service='ubcs-xxljob', weight=1.0, clusterName='DEFAULT', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.237.1', networkInterface='', port=36009, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null, instanceEnabled=true, ephemeral=true, failureToleranceEnabled=false}, ipDeleteTimeout=null, failFast=true}
2023-06-02 21:03:29,474 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 54] >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registry, content=null]
2023-06-02 21:03:45,054 WARN [Thread-12] c.a.nacos.common.notify.NotifyCenter [NotifyCenter.java : 136] [NotifyCenter] Start destroying Publisher
2023-06-02 21:03:45,055 WARN [Thread-5] c.a.n.c.http.HttpClientBeanHolder [HttpClientBeanHolder.java : 108] [HttpClientBeanHolder] Start destroying common HttpClient
2023-06-02 21:03:45,056 WARN [Thread-12] c.a.nacos.common.notify.NotifyCenter [NotifyCenter.java : 153] [NotifyCenter] Destruction of the end
2023-06-02 21:03:45,057 WARN [Thread-5] c.a.n.c.http.HttpClientBeanHolder [HttpClientBeanHolder.java : 114] [HttpClientBeanHolder] Destruction of the end
2023-06-02 21:03:45,094 INFO [SpringApplicationShutdownHook] io.undertow [Undertow.java : 259] stopping server: Undertow - 2.2.18.Final
2023-06-02 21:03:45,109 INFO [SpringApplicationShutdownHook] io.undertow.servlet [ServletContextImpl.java : 382] Destroying Spring FrameworkServlet 'dispatcherServlet'
2023-06-02 21:03:45,115 ERROR [SpringApplicationShutdownHook] c.a.cloud.nacos.discovery.NacosWatch [NacosWatch.java : 180] namingService unsubscribe failed, properties:NacosDiscoveryProperties{serverAddr='127.0.0.1:8848', username='', password='', endpoint='', namespace='', watchDelay=30000, logName='', service='ubcs-xxljob', weight=1.0, clusterName='DEFAULT', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.237.1', networkInterface='', port=36009, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null, instanceEnabled=true, ephemeral=true, failureToleranceEnabled=false}, ipDeleteTimeout=null, failFast=true}
java.lang.IllegalStateException: UT015023: This Context has been already destroyed
    at io.undertow.servlet.spec.ServletContextImpl.getDeploymentInfo(ServletContextImpl.java:211)
    at io.undertow.servlet.spec.ServletContextImpl.getInitParameterNames(ServletContextImpl.java:449)
@@ -520,8 +295,8 @@
    at java.lang.Iterable.forEach(Iterable.java:75)
    at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:48:33,796 INFO [Thread-51] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 74] >>>>>>>>>>> xxl-rpc remoting server stop.
2023-05-30 18:48:35,829 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
2023-06-02 21:03:45,118 INFO [Thread-47] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 74] >>>>>>>>>>> xxl-rpc remoting server stop.
2023-06-02 21:03:47,157 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -545,36 +320,36 @@
    at com.xxl.job.core.biz.client.AdminBizClient.registryRemove(AdminBizClient.java:46)
    at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:84)
    at java.lang.Thread.run(Thread.java:748)
2023-05-30 18:48:35,831 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 90] >>>>>>>>>>> xxl-job registry-remove fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registryRemove, content=null]
2023-05-30 18:48:35,831 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 105] >>>>>>>>>>> xxl-job, executor registry thread destory.
2023-05-30 18:48:35,831 INFO [SpringApplicationShutdownHook] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 110] >>>>>>>>>>> xxl-rpc remoting server destroy success.
2023-05-30 18:48:35,832 INFO [xxl-job, executor TriggerCallbackThread] c.x.j.c.thread.TriggerCallbackThread [TriggerCallbackThread.java : 96] >>>>>>>>>>> xxl-job, executor callback thread destory.
2023-05-30 18:48:35,832 INFO [Thread-50] c.x.j.c.thread.TriggerCallbackThread [TriggerCallbackThread.java : 126] >>>>>>>>>>> xxl-job, executor retry callback thread destory.
2023-05-30 18:48:35,846 INFO [SpringApplicationShutdownHook] c.a.c.n.r.NacosServiceRegistry [NacosServiceRegistry.java : 94] De-registering from Nacos Server now...
2023-05-30 18:48:35,848 WARN [SpringApplicationShutdownHook] o.s.c.a.CommonAnnotationBeanPostProcessor [InitDestroyAnnotationBeanPostProcessor.java : 185] Destroy method on bean with name 'nacosAutoServiceRegistration' threw an exception: java.lang.IllegalStateException: UT015023: This Context has been already destroyed
2023-05-30 18:48:35,849 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 255] com.alibaba.nacos.client.naming.cache.ServiceInfoHolder do shutdown begin
2023-05-30 18:48:35,849 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [FailoverReactor.java : 140] com.alibaba.nacos.client.naming.backups.FailoverReactor do shutdown begin
2023-05-30 18:48:35,850 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [FailoverReactor.java : 142] com.alibaba.nacos.client.naming.backups.FailoverReactor do shutdown stop
2023-05-30 18:48:35,850 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 257] com.alibaba.nacos.client.naming.cache.ServiceInfoHolder do shutdown stop
2023-05-30 18:48:35,850 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 182] com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate do shutdown begin
2023-05-30 18:48:35,850 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoUpdateService.java : 130] com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService do shutdown begin
2023-05-30 18:48:36,172 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoUpdateService.java : 132] com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService do shutdown stop
2023-05-30 18:48:36,172 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServerListManager.java : 192] com.alibaba.nacos.client.naming.core.ServerListManager do shutdown begin
2023-05-30 18:48:36,173 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 74] [NamingHttpClientManager] Start destroying NacosRestTemplate
2023-05-30 18:48:36,173 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 81] [NamingHttpClientManager] Destruction of the end
2023-05-30 18:48:36,173 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServerListManager.java : 197] com.alibaba.nacos.client.naming.core.ServerListManager do shutdown stop
2023-05-30 18:48:36,173 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientProxy.java : 527] com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy do shutdown begin
2023-05-30 18:48:36,173 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [BeatReactor.java : 162] com.alibaba.nacos.client.naming.beat.BeatReactor do shutdown begin
2023-05-30 18:48:36,173 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [BeatReactor.java : 164] com.alibaba.nacos.client.naming.beat.BeatReactor do shutdown stop
2023-05-30 18:48:36,173 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 74] [NamingHttpClientManager] Start destroying NacosRestTemplate
2023-05-30 18:48:36,173 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 81] [NamingHttpClientManager] Destruction of the end
2023-05-30 18:48:36,174 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientProxy.java : 530] com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy do shutdown stop
2023-05-30 18:48:36,174 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 453] Shutdown rpc client, set status to shutdown
2023-05-30 18:48:36,175 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 455] Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@65207516[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
2023-05-30 18:48:36,175 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 592] Close current connection 1685443224475_127.0.0.1_63184
2023-05-30 18:48:36,176 INFO [nacos-grpc-client-executor-127.0.0.1-129] c.a.n.c.r.client.grpc.GrpcClient [LoggerUtils.java : 60] [1685443224475_127.0.0.1_63184]Ignore complete event,isRunning:false,isAbandon=false
2023-05-30 18:48:36,183 INFO [SpringApplicationShutdownHook] c.a.n.c.r.client.grpc.GrpcClient [GrpcClient.java : 129] Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@16633451[Running, pool size = 3, active threads = 0, queued tasks = 0, completed tasks = 130]
2023-05-30 18:48:36,183 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingGrpcRedoService.java : 267] Shutdown grpc redo service executor java.util.concurrent.ScheduledThreadPoolExecutor@427b75af[Running, pool size = 1, active threads = 0, queued tasks = 1, completed tasks = 163]
2023-05-30 18:48:36,184 INFO [SpringApplicationShutdownHook] c.a.n.c.a.r.i.CredentialWatcher [CredentialWatcher.java : 105] [null] CredentialWatcher is stopped
2023-05-30 18:48:36,184 INFO [SpringApplicationShutdownHook] c.a.n.c.a.r.i.CredentialService [CredentialService.java : 99] [null] CredentialService is freed
2023-05-30 18:48:36,184 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 189] com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate do shutdown stop
2023-06-02 21:03:47,157 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 90] >>>>>>>>>>> xxl-job registry-remove fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='blade-xxljob', registryValue='127.0.0.1:7018'}, registryResult:ReturnT [code=500, msg=xxl-rpc remoting error(Connection refused: connect), for url : http://127.0.0.1:37012/xxl-job-admin/api/registryRemove, content=null]
2023-06-02 21:03:47,158 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 105] >>>>>>>>>>> xxl-job, executor registry thread destory.
2023-06-02 21:03:47,159 INFO [SpringApplicationShutdownHook] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 110] >>>>>>>>>>> xxl-rpc remoting server destroy success.
2023-06-02 21:03:47,160 INFO [xxl-job, executor TriggerCallbackThread] c.x.j.c.thread.TriggerCallbackThread [TriggerCallbackThread.java : 96] >>>>>>>>>>> xxl-job, executor callback thread destory.
2023-06-02 21:03:47,161 INFO [Thread-46] c.x.j.c.thread.TriggerCallbackThread [TriggerCallbackThread.java : 126] >>>>>>>>>>> xxl-job, executor retry callback thread destory.
2023-06-02 21:03:47,176 INFO [SpringApplicationShutdownHook] c.a.c.n.r.NacosServiceRegistry [NacosServiceRegistry.java : 94] De-registering from Nacos Server now...
2023-06-02 21:03:47,179 WARN [SpringApplicationShutdownHook] o.s.c.a.CommonAnnotationBeanPostProcessor [InitDestroyAnnotationBeanPostProcessor.java : 185] Destroy method on bean with name 'nacosAutoServiceRegistration' threw an exception: java.lang.IllegalStateException: UT015023: This Context has been already destroyed
2023-06-02 21:03:47,181 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 255] com.alibaba.nacos.client.naming.cache.ServiceInfoHolder do shutdown begin
2023-06-02 21:03:47,181 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [FailoverReactor.java : 140] com.alibaba.nacos.client.naming.backups.FailoverReactor do shutdown begin
2023-06-02 21:03:47,182 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [FailoverReactor.java : 142] com.alibaba.nacos.client.naming.backups.FailoverReactor do shutdown stop
2023-06-02 21:03:47,182 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 257] com.alibaba.nacos.client.naming.cache.ServiceInfoHolder do shutdown stop
2023-06-02 21:03:47,183 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 182] com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate do shutdown begin
2023-06-02 21:03:47,183 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoUpdateService.java : 130] com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService do shutdown begin
2023-06-02 21:03:47,513 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoUpdateService.java : 132] com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService do shutdown stop
2023-06-02 21:03:47,514 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServerListManager.java : 192] com.alibaba.nacos.client.naming.core.ServerListManager do shutdown begin
2023-06-02 21:03:47,514 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 74] [NamingHttpClientManager] Start destroying NacosRestTemplate
2023-06-02 21:03:47,514 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 81] [NamingHttpClientManager] Destruction of the end
2023-06-02 21:03:47,515 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServerListManager.java : 197] com.alibaba.nacos.client.naming.core.ServerListManager do shutdown stop
2023-06-02 21:03:47,515 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientProxy.java : 527] com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy do shutdown begin
2023-06-02 21:03:47,515 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [BeatReactor.java : 162] com.alibaba.nacos.client.naming.beat.BeatReactor do shutdown begin
2023-06-02 21:03:47,515 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [BeatReactor.java : 164] com.alibaba.nacos.client.naming.beat.BeatReactor do shutdown stop
2023-06-02 21:03:47,516 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 74] [NamingHttpClientManager] Start destroying NacosRestTemplate
2023-06-02 21:03:47,516 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 81] [NamingHttpClientManager] Destruction of the end
2023-06-02 21:03:47,516 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientProxy.java : 530] com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy do shutdown stop
2023-06-02 21:03:47,516 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 453] Shutdown rpc client, set status to shutdown
2023-06-02 21:03:47,516 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 455] Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@63592bec[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
2023-06-02 21:03:47,517 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 592] Close current connection 1685710810072_127.0.0.1_63146
2023-06-02 21:03:47,518 INFO [nacos-grpc-client-executor-127.0.0.1-60] c.a.n.c.r.client.grpc.GrpcClient [LoggerUtils.java : 60] [1685710810072_127.0.0.1_63146]Ignore complete event,isRunning:false,isAbandon=false
2023-06-02 21:03:47,526 INFO [SpringApplicationShutdownHook] c.a.n.c.r.client.grpc.GrpcClient [GrpcClient.java : 129] Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@f3db5ef[Running, pool size = 3, active threads = 0, queued tasks = 0, completed tasks = 61]
2023-06-02 21:03:47,526 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingGrpcRedoService.java : 267] Shutdown grpc redo service executor java.util.concurrent.ScheduledThreadPoolExecutor@60545287[Running, pool size = 1, active threads = 0, queued tasks = 1, completed tasks = 72]
2023-06-02 21:03:47,526 INFO [SpringApplicationShutdownHook] c.a.n.c.a.r.i.CredentialWatcher [CredentialWatcher.java : 105] [null] CredentialWatcher is stopped
2023-06-02 21:03:47,527 INFO [SpringApplicationShutdownHook] c.a.n.c.a.r.i.CredentialService [CredentialService.java : 99] [null] CredentialService is freed
2023-06-02 21:03:47,527 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 189] com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate do shutdown stop
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log.2023-05-30.zip
Binary files differ