wang1
2023-05-31 db1c3c5b3670639fd1dfc5de0fe75ce6f02f732e
Merge remote-tracking branch 'origin/master'
已修改94个文件
已删除28个文件
已重命名43个文件
已添加96个文件
52030 ■■■■ 文件已修改
.idea/workspace.xml 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package-lock.json 16422 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/GetItem.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/code/codeReferConfig.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/common.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/formTemplate.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/btmType.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/refer/tree.js 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Crud/Crud.vue 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/FindLike.vue 636 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 811 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/attrCrud.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/advanced-query/advanced-query.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigCrudDialog.vue 522 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue 799 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/code-dialog-page/tableEdit.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebRefer.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/transfer/index.vue 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/transfer/transfer-panel.vue 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/selectAttrOptionDialog.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/const/code/selectattroption.js 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/util/func.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/MasterData/items.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/flow/flowPath.vue 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/integration/integrationIndex.vue 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/classifyTree.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 553 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/originalAdd.vue 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeReferConfigDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsattributeEntity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsbtmtypeattributeEntity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeReferConfig.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeShowFieldConfig.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSrchCondConfig.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyTemplateAttrClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeOsbtmtypeClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodePhaseAttrClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeSynonymClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeTempButtonClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeWupinClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/lCodeClassifyTemplateClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/lCodeKeyAttrRepeatClient.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeReferConfigVO.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeShowFieldConfigVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeSrchCondConfigVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/BtmTypeCache.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/EnumCache.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/EnumEnum.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MdmBtmTypeConstant.java 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreApplyFormDTO.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreAttrMappingDTO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreAttrRangeDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreClassifyDTO.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreMetaAttrDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreViewModelDTO.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreApplyForm.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreAttrMapping.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreAttrRange.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreClassify.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreMetaAttr.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreViewModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/feign/IMdmInterJtClient.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/feign/MdmApplyGroupCodeProvider.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/BaseModelVO.java 333 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingApplyFormStatusVO.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyMainVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyMetaAttrVO.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyModelAttrVO.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyVO.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyViewVO.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifysVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingDataVO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingGroupDataVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingMainData.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingMainDataVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingModelQueryVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreApplyFormVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreAttrMappingVO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreAttrRangeVO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreClassifyVO.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreMetaAttrVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreViewModelVO.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingQueryClassModelVO.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingQueryModelVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingResultDataVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingResultVO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingReturnStoreVO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingViewVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DokingAttributeSerchVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/MainData.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/data/data.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/data/pl_code_jconfig.json 1159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/data/pl_code_jrange.json 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeReferConfigController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeShowFieldConfigController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSrchCondConfigController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigFieldTypeEnum.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigFilterTypeEnum.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigFixedEnum.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigTypeEnum.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeBasicSecMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeReferConfigMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeShowFieldConfigMapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSrchCondConfigMapper.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreApplyFormMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrMappingMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrRangeMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreMetaAttrMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreViewModelMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeReferConfigService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeShowFieldConfigService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSrchCondConfigService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeOsattributeService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeReferConfigService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeShowFieldConfigService.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSrchCondConfigService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java 223 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyFormServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrRangeServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 338 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/gennerAttrMapUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/WsClientUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/annotation/VciWebservice.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/VciCxfPublishConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateAttrWrapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateWrapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeReferConfigWraper.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleWrapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeShowFieldConfigWraper.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeSrchCondConfigWraper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeReferConfigMapper.xml 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeShowFieldConfigMapper.xml 384 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSrchCondConfigMapper.xml 330 ●●●●● 补丁 | 查看 | 原始文档 | 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/DockingLogeMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/EnumitemWrapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/pom.xml 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/GroupCodeApplyApplication.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/controller/DockingPreApplyCodeController.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/feigh/MdmInterJtClient.java 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreApplyFormMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreAttrMappingMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreAttrRangeMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreClassifyMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreMetaAttrMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreViewModelMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreApplyFormService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreAttrMappingService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreAttrRangeService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreClassifyService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreMetaAttrService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreViewModelService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IGroupMdmInterService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreApplyFormServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrRangeServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreClassifyServiceImpl.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreMetaAttrServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreViewModelServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/GroupMdmInterServiceImpl.java 1011 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreApplyFormWrapper.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreAttrMappingWrapper.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreAttrRangeWrapper.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreClassifyWrapper.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreMetaAttrWrapper.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreViewWrapper.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/application-dev.yml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/application-prod.yml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/application-test.yml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreApplyFormMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreAttrMappingMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreAttrRangeMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreClassifyMapper.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreMetaAttrMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreViewMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-admin.log 17712 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-admin.log.2023-05-20.zip 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-admin.log.2023-05-26.zip 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log 574 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log.2023-05-20.zip 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log.2023-05-26.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/package.json
@@ -20,6 +20,7 @@
    "js-base64": "^2.5.1",
    "js-cookie": "^2.2.0",
    "js-md5": "^0.7.3",
    "js-pinyin": "^0.2.4",
    "mockjs": "^1.0.1-beta3",
    "node-gyp": "^5.0.6",
    "nprogress": "^0.2.0",
Source/UBCS-WEB/src/api/GetItem.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
import request from "@/router/axios";
export const MasterTable =(params)=>{
  return request({
    url: 'api/ubcs-code/ubcs-code//mdmEngineController/getUIInfoByClassifyOid',
    method: 'get',
    params:{
      ...params
    }
  })
}
export const TableData =(params)=>{
  return request({
    url: 'api/ubcs-code/ubcs-code/mdmEngineController/gridTableDataByClassifyOid',
    method: 'get',
    params:{
      ...params
    }
  })
}
Source/UBCS-WEB/src/api/code/codeReferConfig.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
import request from '@/router/axios';
export const getReferConfigPage = (page, limit, params) => {
  return request({
    url: '/api/ubcs-code/codeReferConfig/getReferConfigPage',
    method: 'get',
    params: {
      ...params,
      page,
      limit,
    }
  })
}
export const getReferConfigList = (params) => {
  return request({
    url: '/api/ubcs-code/codeReferConfig/getReferConfigList',
    method: 'get',
    params: {
      ...params
    }
  })
}
export const editCodeReferConfig = (CodeReferConfigVO) => {
  return request({
    url: '/api/ubcs-code/codeReferConfig/edit',
    method: 'put',
    data: CodeReferConfigVO,
  })
}
export const addSaveCodeReferConfig = (data) => {
  return request({
    url: '/api/ubcs-code/codeReferConfig/addSave',
    method: 'post',
    data: data
  })
}
export const deleteCodeReferConfig = (codeReferConfigDTO) => {
  return request({
    url: '/api/ubcs-code/codeReferConfig/del',
    method: 'delete',
    data: codeReferConfigDTO,
  })
}
Source/UBCS-WEB/src/api/common.js
@@ -12,10 +12,3 @@
  })
}
export const getFormTemplate = (params) => {
  return request({
    url: '/ubcs-code/ubcs-code/mdmEngineController/getFormDefineByTemplateOid',
    method: 'get',
    params
  })
}
Source/UBCS-WEB/src/api/formTemplate.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
import request from "@/router/axios";
// èŽ·å–è¡¨å•æ¨¡æ¿æ•°æ®
export const getFormTemplate = (params) => {
  return request({
    url: 'api/ubcs-code/ubcs-code/mdmEngineController/getFormDefineByTemplateOid',
    method: 'get',
    params
  })
}
// è¡¨å•数据执行代码
export const executeCode = (params) => {
  return request({
    url: 'api/ubcs-code/ubcs-code/mdmEngineController/getFormDefineByTemplateOid',
    method: 'get',
    params
  })
}
// ç›¸ä¼¼é¡¹æŸ¥è¯¢
export const findLike = (data) => {
  return request({
    url: 'api/mdmEngineController/resembleQuery',
    method: 'post',
    data
  })
}
Source/UBCS-WEB/src/api/omd/btmType.js
@@ -56,4 +56,16 @@
        method: 'post',
        data: btmType
    })
}
export const btmPage = (current,size,params) => {
    return request ({
        url: '/api/ubcs-omd/btm-type/page',
        method: 'get',
        params: {
            current,
            size,
            ...params
        }
    })
}
Source/UBCS-WEB/src/api/refer/tree.js
Source/UBCS-WEB/src/components/Crud/Crud.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,205 @@
<template>
  <basic-container>
    <avue-crud ref="crud"
               v-loading="loading"
               :data="data"
               :option="option"
               :page="page"
               @sort-change="sortChange"
               @selection-change="selectionChange"
               @on-load="onLoad">
      <template slot="menu">
        <el-button type="text">文字按钮</el-button>
      </template>
      <template slot="menuLeft">
          <div>
            <el-table :data="tableData" style="width: 100%" @cell-click="handleCellClick" @cell-dblclick="dbclick">
              <div v-for="(item,index) in this.tableHeadData" :key="index">
                <el-table-column :label="item.label" :prop="item.prop">
<!--              ç¼–辑和展示逻辑 -->
                  <template slot-scope="{ row }">
                  <el-input v-if="editingRow === row && editShow== item.prop" v-model="row[item.prop]" @blur="saveRow"></el-input>
                  <span v-else>{{row[item.prop]}}</span>
                </template>
                </el-table-column>
              </div>
              <el-table-column fixed="right" label="操作" width="120">
                <template slot-scope="scope">
                  <el-button size="small" type="text" @click.native.prevent="enumDeleteRow(scope.$index, tableData)">
                    ç§»é™¤
                  </el-button>
                </template>
              </el-table-column>
            </el-table>
            <template>
              <div style="display: flex;justify-content: right;margin-top: 15px">
                <el-button type="primary"  size="small">保存</el-button>
                <el-button size="small" @click="enumVisible=false">取消</el-button>
              </div>
            </template>
          </div>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
import {MasterTable, TableData} from "@/api/GetItem";
export default {
  name: "Crud.vue",
  data() {
    return {
      editingRow:null,
      editShow: "",
      editAttr:"",
      loading: false,
      data: [],
      option: {
        //默认高度,
        align: 'center',
        menuAlign: 'center',
        addBtn: false,
        editBtn: false,
        selection: true,
        selectionFixed: false,
        index: true,
        column: []
      },
      List: [],
      columnType: {
        text: "input",
        combox: "select",
        truefalse: "switch",
        number: "number",
        datetime: "datetime",
      },
      page: {
        total: 0,
        currentPage: 1,
        pageSize: 10,
        pageSizes: [10, 30, 50, 100, 200],
      },
      tableData:[],
      tableHeadData:[],
      items:{}
    }
  },
  computed:{
    editable(){
      this.tableData.forEach(item=>{
        this.items=item
      })
      return this.editShow === this.editingRow[this.items.prop];
    }
  },
  created() {
    this.CrudHeaderRend();
    this.CrudRend()
  },
  activated() {
    this.doLayout()
  },
  methods: {
    // ç›‘听单元格点击事件并存储正在编辑的行
    handleCellClick(row, column) {
      this.editingRow = row;
      this.editShow = column.property;
      console.log( this.editingRow['name'], this.editShow)
    },
    //枚举注入删除
    enumDeleteRow(row) {
      console.log(row)
      this.tableData.splice(row, 1)
    },
    // å°†æ­£åœ¨ç¼–辑的行的状态变为 null ï¼Œå³é€€å‡ºç¼–辑状态
    saveRow() {
      this.editingRow = null;
    },
    doLayout() {
      this.$nextTick(() => {
        this.$refs.crud.doLayout();
      });
    },
    //表格头渲染
    CrudHeaderRend() {
      MasterTable({
        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
        functionId: 5,
        _: 1685067339479
      }).then(res => {
        this.List = res.data.tableDefineVO.cols[0];
        this.List.forEach(item => {
          let columnItem = {
            label: item.title,
            prop: item.field,
            type: this.columnType[item.type],
            sortable: item.sort,
            width: item.minWidth
          };
          this.option.column.push(columnItem);
          this.option.column=this.tableHeadData;
        })
      })
    },
    //表格数据
    CrudRend() {
      TableData({
        templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
        page: this.page.currentPage,
        limit: this.page.pageSize,
        _: 1685089123575
      }).then(res => {
        this.page.total = res.data.total;
        this.data = res.data.data;
        this.tableData=res.data.data;
      })
    },
    // æŽ’序
    sortChange(val) {
      this.loading = true;
      let order = ""
      if (val.order == "ascending") {
        order = "asc";
      } else {
        order = "desc";
      }
      TableData({
        templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
        order: order,
        sort: val.prop,
        page: this.page.currentPage,
        limit: this.page.pageSize,
      }).then(res => {
        setTimeout(() => {
          this.data = res.data.data;
          this.loading = false;
        }, 100);
      })
    },
    //分页刷新
    async onLoad(val) {
      console.log(val)
      await TableData({
        templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
        page: val.currentPage,
        limit: val.pageSize,
        _: 1685089123575
      }).then(res => {
        this.data = res.data.data;
      })
    },
    //多选
    selectionChange(row) {
      console.log(row)
    }
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/components/FormTemplate/FindLike.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,636 @@
<template>
  <div v-if="visible">
    <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
      <el-tab-pane label="相似项数据" name="findlike">
        <el-table
          :data="tableData"
          v-loading="loading"
          height="250"
          :border="true"
        >
          <el-table-column
            v-for="item in column"
            :key="item.prop"
            :prop="item.prop"
            :label="item.label"
          >
            <template #default="{ row }">
              <el-button type="text" @click="openFormTemlpate(row)">{{
                row.id
              }}</el-button>
            </template>
          </el-table-column>
        </el-table>
      </el-tab-pane>
    </el-tabs>
    <FormTemplate
      type="detail"
      :visible.sync="templateVisible"
      templateOid="78B8C7C5-A042-0B96-FE6D-65421451782A"
      codeClassifyOid="4524E801-6CC6-92E8-1AC3-2AB9604E8F96"
    ></FormTemplate>
  </div>
</template>
<script>
import { findLike } from "@/api/formTemplate";
import FormTemplate from "./index.vue";
export default {
  name: "FindLike",
  components: { FormTemplate },
  props: {
    column: {
      type: Array,
      default: () => [{ prop: "id", label: "代号" }],
    },
  },
  data() {
    return {
      visible: false,
      templateVisible: false,
      activeName: 'findlike',
      tableData: [
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "C2FD69E0-59CA-7A3C-D3BE-A95AB67F81D4",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "5052756D-CE43-8F30-AE6B-A4F4102A66C5",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:53:06.637",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:53:06.637",
          nameoid: "69E5E86F-AD62-1DBE-05D3-E0CE4C07408F",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:53:06.637",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "C33464B7-79A8-095B-D6FC-F9EB2EA0C985",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "4AF61981-D2E8-D8A2-9704-D12B043C22D1",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:51:06.262",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:51:06.262",
          nameoid: "53E9B351-C410-2A78-3DC0-159BB3E695F9",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:51:06.262",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "00813CDD-4066-5FF5-0AAF-4AFCDB0C2CAE",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "47E45EAF-74E3-C722-3FCA-8FC8F996684F",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:41:14.965",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:41:14.965",
          nameoid: "0AA8ACA8-1961-A670-93C5-744DCFF64238",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:41:14.965",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "413C9BA4-877D-AC01-554D-4DF3CCC0CCA5",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "E2F85B5B-9812-0A03-59D1-F4A48BCDA20B",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:38:11.315",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:38:11.315",
          nameoid: "231D873D-ADF0-1E46-5E02-A2C0C1667324",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:38:11.315",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "99E22C15-228E-E64B-E0F4-BB699CF1E686",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test1223",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "A750F940-B2EA-DB08-5240-1379FE34E9C1",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:26:31.626",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:26:31.626",
          nameoid: "B38F560F-38EF-4E80-A843-0EF0556DBE1A",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:26:31.626",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "0D8A595E-962C-E88A-1B75-CCBA29675B7A",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "80602381-F29D-E6A3-9DD4-FEF211DB8EAA",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:20:08.311",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:20:08.311",
          nameoid: "DBDF377F-F7CF-67BA-673B-D8DE7E6D6587",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:20:08.311",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "3EFB6B91-E320-58DD-8402-956E9D416D2C",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "0B6D7C29-DE6A-9D81-BC11-EB39D454877F",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 21:16:24.964",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 21:16:24.964",
          nameoid: "3B3C476A-74E2-FF4A-7228-01D1F1EA18B8",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 21:16:24.964",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "F3EB357A-1285-6BED-105E-4E4F1230CB76",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "247CF179-AA18-E636-F66E-054BF1A4A03C",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 20:28:37.591",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 20:28:37.591",
          nameoid: "F95AF399-F100-8CD0-F944-DE528F8DFC93",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 20:28:37.591",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "610F9365-8E6E-699F-07A0-BC35601BD952",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "9DBE4C77-D0E6-4326-621D-EA9AACD86AD4",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 20:27:05.35",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 20:27:05.35",
          nameoid: "B1B51981-A1D9-20A0-F974-5A61C1B9F3FF",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 20:27:05.35",
        },
        {
          lastmodifier: "1(业务测试)",
          revisionseq: "1",
          versionvalue: "1",
          secondfl: "",
          versionseq: "1",
          checkinby: "",
          firstfl: "",
          jiliangdwname: "",
          materialtype: "1001",
          materialtypeText: "材料",
          chukufangshi: "先进先出",
          hesuanfenlei: "",
          lctid: "wupinLC",
          id: "******",
          isfirstv: "1",
          revisionoid: "7AF39DAB-A6EA-C0E0-303F-BD8B493553AE",
          checkouttime: "",
          btmname: "wupin",
          codeclsfid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          revisionvalue: "1",
          secretgradeText: "普通商密",
          name: "",
          secretgrade: "2",
          isfirstr: "1",
          xinghaoguige: "",
          materialname: "test12",
          codetemplateoid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
          description: "",
          oid: "CD5EF43C-41E5-A0AC-42B1-BBEE6535AE1C",
          thrifl: "",
          revisionrule: "numberversionrule",
          lcstatus_text: "编辑中",
          oldcode: "223",
          hesuanfenleiname: "",
          codeclsfpath:
            "D9CF223F-317D-71EB-BD11-433A94CAD9F3##535FC9B6-FE27-241F-5FCA-ED4DC17CF95B##8EB35A1D-AB8B-2255-565C-84D309E0C62B##4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
          owner: "1",
          xiaoshouwl: "false",
          checkoutby: "",
          creator: "1(业务测试)",
          createtime: "2023-04-12 20:25:28.642",
          tuhao: "yy002",
          beizhushuoming: "",
          versionrule: "0",
          jiliangdw: "个",
          islastr: "1",
          copyfromversion: "",
          materialclassify: "",
          lastmodifytime: "2023-04-12 20:25:28.642",
          nameoid: "9BC308A8-35D7-49FD-4E49-B93CB21E22A3",
          lcstatus: "Editing",
          islastv: "1",
          checkintime: "",
          ts: "2023-04-12 20:25:28.642",
        },
      ],
      loading: false,
      templateOid: "",
      codeClassifyOid: "",
    };
  },
  methods: {
    findLinkClick(data) {
      this.visible = true;
      // findLike(data).then((res) => {
      //   this.tableData = res.data.data
      // });
    },
    openFormTemlpate(row) {
      this.codetemplateoid = row.codetemplateoid;
      this.codeClassifyOid = row.codeclsfid;
      this.templateVisible = true;
    },
  },
};
</script>
<style lang="less" scoped></style>
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -1,42 +1,769 @@
<template>
  <div>
  </div>
</template>
<script>
  import { getFormTemplate } from '../../api/common';
  export default {
    name: 'FormTemplate',
    props: {
      visible: {
        type: Boolean,
        default: false
      },
    },
    created() {
      this.getFormTemplate()
    },
    data() {
      return {
        load: false
      }
    },
    methods: {
      getFormTemplate() {
        this.load = true
        getFormTemplate({
          templateOid: '78B8C7C5-A042-0B96-FE6D-65421451782A',
          codeClassifyOid: '4524E801-6CC6-92E8-1AC3-2AB9604E8F96'
        }).then(res => {
          console.log(res);
        }).catch(err => {
          console.log(err);
        })
      }
    }
  }
</script>
<style lang='less' scoped>
</style>
<template>
  <el-dialog
    :visible.sync="dialogVisible"
    v-dialogDrag
    top="0vh"
    :title="title"
    class="avue-dialog avue-dialog--top"
    :width="dialogOptions.width"
    append-to-body
    v-if="dialogVisible"
  >
    <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>
      <template :slot="item.prop + ''" v-for="item in option.column">
        <vciWebRefer v-if="item.type=='refer'" :options="item.originalItem"></vciWebRefer>
      </template>
    </avue-form>
    <FindLike ref="findLike"></FindLike>
    <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>
    </div>
  </el-dialog>
</template>
<script>
import { getFormTemplate, executeCode, findLike } from "@/api/formTemplate";
import { getDictionary } from "../../api/system/dict";
import FindLike from "./FindLike.vue";
import vciWebRefer from "../refer/vciWebRefer.vue";
export default {
  name: "FormTemplate",
  components: { FindLike ,vciWebRefer},
  props: {
    visible: {
      type: Boolean,
      default: false,
    },
    disabledProp: {
      type: Array,
      default: () => ["id"],
    },
    templateOid: {
      type: String,
      default: "",
    },
    codeClassifyOid: {
      type: String,
      default: "",
    },
    type: {
      type: String,
      default: 'add'
    },
    title: {
      type: String,
      default: '表单模板'
    }
  },
  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",
        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: "",
        },
      ],
      submitBtnLoading: false
    };
  },
  created() {},
  computed: {
    dialogVisible: {
      get() {
        return this.visible;
      },
      set(val) {
        this.$emit("update:visible", val);
      },
    },
  },
  methods: {
    getFormTemplate() {
      this.loading = true;
      getFormTemplate({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
      })
        .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,
          originalItem:item,
          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);
    },
    changeFun(displayExtension, prop) {
      // executeCode({displayExtension, data: this.form}).then(res => {
      //   this.form[prop] = res.data.data
      // })
    },
    clickFun(referConfig) {
      if (this.type === 'detail') {
        return
      }
    },
    // å‰åŽç¼€
    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;
      }
    },
    // èŽ·å–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()
      }
    },
  },
};
</script>
<style lang="scss" scoped>
.key_attr_icon {
  font-size: 24px;
  position: relative;
  top: 2px;
  color: red;
}
// è§£å†³swich组件不垂直居中的问题
/deep/ .el-switch {
  vertical-align: baseline;
}
</style>
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -539,7 +539,7 @@
            cell: false,
            labelWidth: 110,
            width: 125,
            sortable: true,
            sortable: false,
          },
          {
            label: "属性中文名称",
@@ -860,16 +860,17 @@
    },
    // æŽ’序
    sortChange(val) {
      switch (val.order) {
        // case "ascending":
        //   this.data = this.data.sort((a,b) => { return b['name'].localeCompare(a['name']) })
        //   this.data = this.data.sort((a,b) => { return b['id'].localeCompare(a['id']) })
        //   break;
        // case "descending":
        //   this.data = this.data.sort((a,b) => { return a['name'].localeCompare(b['name']) })
        //   this.data = this.data.sort((a,b) => { return a['id'].localeCompare(b['id']) })
        //   break;
      }
      console.log(val)
      // switch (val.order) {
      //   // case "ascending":
      //   //   this.data = this.data.sort((a,b) => { return b['name'].localeCompare(a['name']) })
      //   //   this.data = this.data.sort((a,b) => { return b['id'].localeCompare(a['id']) })
      //   //   break;
      //   // case "descending":
      //   //   this.data = this.data.sort((a,b) => { return a['name'].localeCompare(b['name']) })
      //   //   this.data = this.data.sort((a,b) => { return a['id'].localeCompare(b['id']) })
      //   //   break;
      // }
    }
  }
}
Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -42,7 +42,8 @@
          },
          {
            label:"描述",
            prop:"description"
            prop:"description",
            labelWidth:128,
          },
          {
            label: '存储的业务类型',
@@ -57,17 +58,18 @@
          },
          {
            label:"编码规则",
            prop:"coderuleoidName"
            prop:"coderuleoidName",
            labelWidth:128,
          },
          {
            label:"忽略大小写查重",
            label:"关键属性查询规则",
            prop:"codekeyattrrepeatoidName",
            labelWidth:128,
          },
          {
            label:"相似查询规则",
            prop:"codeResembleRuleOidName",
            labelWidth:100,
            labelWidth:128,
          },
        ]
      },
Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
@@ -12,7 +12,6 @@
            <el-button plain size="small" type="primary" @click="flushed">刷新</el-button>
          </div>
          <div style="display: flex;justify-content: space-around;margin-top: 5px;margin-bottom: 5px">
          </div>
        </div>
        <!--        æ ‘节点添加对话框-->
@@ -50,9 +49,9 @@
        </el-dialog>
        <!--        ä¿®æ”¹å¯¹è¯æ¡†-->
        <el-dialog :visible.sync="TreeEditFormVisible" append-to-body title="修改分类">
          <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform>
          <classifyTreeform ref="childForm" :loneTreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform>
        </el-dialog>
        <avue-tree ref="tree" v-model="TreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false"
        <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata" :defaultExpandAll="false"
                   :option="Treeoption"
                   style="height: 80.5vh;padding-top: 5px;padding-bottom: 30px"
                   @node-click=" nodeClick"
@@ -74,6 +73,7 @@
                          @row-save="CrudRowSave"
                          @row-del="CrudRowDel"
                          @row-update="CrudRowUpdata"
                          :before-close="beforeClose"
               >
            <template slot="menuLeft">
              <el-button plain size="small" type="primary" @click="FindFormVisible = true;">查询</el-button>
@@ -118,12 +118,12 @@
                  <el-container>
                    <el-aside width="300px">
                      <div style="margin-bottom: 5px"><el-tag>主题库分类</el-tag></div>
                      <!--                      å…‹éš†æ¨¡æ¿çš„æ ‘ æ²¿ç”¨é¦–页树的loading和option,但是data和v-model绑定的数据创建一个新的变量,另外点击方法也是重新获取来操作克隆模板的数据-->
                        <avue-tree ref="tree" v-model="TreeAvueform" v-loading="loading" :data="Treedata"
                                   :defaultExpandAll="false"
                                   :option="Treeoption"
                                   style="height: 50.5vh;margin-right: 10px"
                                   @node-click=" nodeClick"
                                   @check-change="checkChange"
                                   @node-click="ClonenodeClick"
                        >
                        </avue-tree>
                    </el-aside>
@@ -244,6 +244,7 @@
      TreeAddFormVisible: false,
      //当前点击项
      nodeClickList: "",
      ClonenodeClickList:"",
      //分类和主题库状态
      TreeFlag: false,
      //树加载
@@ -264,7 +265,10 @@
      },
      //avue-tree数据,暂时没有作用,里面功能用element写了,只用avue的一个树组件不用内置表单了。
      TreeAvueform: {},
      //克隆树
      CloneTreeAvueform:{},
      Treedata: [],
      CloneTreedata:[],
      Treeoption: {
        addBtn: false,
        editBtn: false,
@@ -290,7 +294,7 @@
      CloneSelectOptions: [{
        value: '0',
        label: '模板编号'
        },
      },
        {
          value: '1',
          label: '模板名称'
@@ -343,7 +347,7 @@
          },
          {
            label: "模板名称",
            prop: "name"
            prop: "name",
          },
          {
            label: "模板描述",
@@ -401,18 +405,20 @@
    getAttr() {
      getAtrrList().then(res => {
        this.Treedata = res.data;
        this.Treedata.forEach(() => {
        this.CloneTreedata = res.data;
        this.Treedata.forEach((item) => {
          for (let i = 0; i < this.Treedata.length; i++) {
            this.Treedata[i].value = i;
          }
        })
        //调用修改属性名方法
        this.ModifyProperties(this.Treedata, 'text', 'label');
        this.ModifyProperties(this.CloneTreedata, 'text', 'label');
      }).catch(res => {
        this.$message.error(res)
      })
    },
    //定义一个修改对象属性名的方法 è¿™é‡Œåˆ«æ”¹ï¼ï¼ï¼å¥½åƒæ˜¯åŽå°æŽ¥å£æ•°æ®å­—段不一致,添加的方法。具体什么原因我也忘记了
    //定义一个修改数据属性名的方法
    ModifyProperties(obj, oldName, newName) {
      for (let key in obj) {
        if (key === oldName) {
@@ -598,21 +604,12 @@
        })
        //模板管理表格数据
        await gridCodeClassifyTemplate({'conditionMap[codeclassifyoid]': data.oid}).then(res => {
          if (this.CloneVisible != true) {
            this.Formlist = res.data.data.filter(item => {
              if (item.codeclassifyoid != "") {
                this.codeClassifyOid = item.codeclassifyoid
                return item.codeclassifyoid == this.nodeClickList.oid
              }
            })
          } else {
            this.CloneFormlist = res.data.data.filter(item => {
              if (item.codeclassifyoid != "") {
                this.codeClassifyOid = item.codeclassifyoid
                return item.codeclassifyoid == this.nodeClickList.oid
              }
            })
          }
          this.Formlist = res.data.data.filter(item => {
            if (item.codeclassifyoid != "") {
              this.codeClassifyOid = item.codeclassifyoid
              return item.codeclassifyoid == this.nodeClickList.oid
            }
          })
          gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid}).then(res => {
            this.ProData = res.data.data
            console.log(this.ProData)
@@ -633,9 +630,22 @@
        console.log(error)
      }
    },
    //克隆模板树的点击切换数据
    async ClonenodeClick(data){
      this.ClonenodeClickList=data;
      console.log("aaa",this.ClonenodeClickList.oid)
      await gridCodeClassifyTemplate({'conditionMap[codeclassifyoid]': data.oid}).then(res=>{
        this.CloneFormlist = res.data.data.filter(item => {
          if (item.codeclassifyoid != "") {
            this.codeClassifyOid = item.codeclassifyoid
            return item.codeclassifyoid == this.ClonenodeClickList.oid
          }
        })
      })
    },
    //tab栏切换
    handleChange(column) {
      this.type = column
      this.type = column;
    },
    // //高级查询按钮
    // handleSelectChange(key) {
@@ -702,22 +712,24 @@
        this.Formlist = res.data.data
      })
    },
    //模板管理表格添加
    CrudRowSave(row,done) {
      debugger
      console.log(nodeClickList.length)
      if (this.nodeClickList.length <= 0) {
        this.$message({
          type: 'warning',
          message: '请先从树上选择一条数据!'
        });
      } else {
        console.log(this.nodeClickList)
        let codeClassifyOid = this.codeClassifyOid
        this.$set(row, "codeclassifyoid", codeClassifyOid)
        addSave(row).then(res => {
          this.$message({
            type: "success",
            message: "添加成功!"
          });
          done(row)
          this.CrudRend()
          done()
        }).catch(res => {
          this.$message({
            type: 'info',
@@ -727,14 +739,16 @@
      }
    },
    //模板管理修改
    CrudRowUpdata(row) {
      editSave(row).then(() => {
    CrudRowUpdata(row,index,done) {
      editSave(row).then((res) => {
        this.CrudRend()
      }).catch(res => {
        this.$message({
          type: 'info',
          message: res
          type: "success",
          message: "操作成功!"
        });
        done()
      }).catch(res => {
        console.log(res)
      })
    },
    //模板管理删除
@@ -777,7 +791,7 @@
    },
    //克隆模板选择确定
    Clonehandler(){
      if(this.CloneFormlist.length <= 0){
      if(this.CloneSelect.length <= 0){
        this.$message({
          type: 'warning',
          message: '请选择要克隆的模板!'
@@ -788,7 +802,8 @@
          message: '只能选择一条数据!'
        });
      } else {
        this.CloneinnerVisible=true
        this.CloneinnerVisible=true;
      }
    },
    //点击从其它模板克隆
@@ -804,16 +819,27 @@
    },
    //克隆模板单选框改变
    selectionChange(row){
      console.log(row)
      this.CloneSelect=row
      this.CloneSelect=row;
      //双向绑定,提交表单输入框回填上当前选择的数据
      this.CloneModel.id=row[0].id;
      this.CloneModel.name=row[0].name;
      //这里有点绕,CloneSelect是我选择框选择的数据。等于this.nodeClickList.oid是因为,克隆模板传递数据要把当前选择树的oid传递给后端。而不是当前要克隆模板的oid
      this.CloneSelect[0].codeclassifyoid=this.nodeClickList.oid
    },
    //克隆表单提交
    Clonesubmit(done){
    Clonesubmit(row,done){
      //重新赋值CloneSelect传递的数据为输入框可以修改的数据,CloneModel提交表单输入框双向绑定数据
      this.CloneSelect[0].id=this.CloneModel.id;
      this.CloneSelect[0].name=this.CloneModel.name;
      copy(this.CloneSelect[0]).then(res=>{
        console.log(res)
        done()
        //因为是嵌套弹窗所以手动关闭CloneinnerVisible,CloneVisible两个弹窗。
        this.CloneinnerVisible=false
        this.CloneVisible=false
        this.$message.success("复制成功")
        this.CrudRend()
        done(row)
      }).catch(res=>{
        done(res)
      })
    },
    //刷新
@@ -831,10 +857,6 @@
      setTimeout(() => {
        this.FormLoing = false
      }, 600);
    },
    // å·¦æ ‘多选
    checkChange(val) {
      console.log(val)
    },
  }
}
Source/UBCS-WEB/src/components/advanced-query/advanced-query.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
}
</script>
<style>
</style>
Source/UBCS-WEB/src/components/code-dialog-page/referConfigCrudDialog.vue
@@ -3,13 +3,13 @@
        title="选择参照配置"
        append-to-body
        :visible.sync="isShowReferConfigCrud"
        width="94%"
        width="95%"
        id="refer-config-dialog"
        style="height: 115vh; margin-top: -14vh; overflow-y: hidden">
        <div style="width: 100%; overflow-y: auto; height: 70vh">
            <el-row style="width: 100%; height:70%">
                <el-col style="width: 70%; height: 100%;">
                    <basic-container style="width: 100%; ">
                <el-col :style="toggleBasicCrudWidth">
                    <basic-container style="width: 100%;">
                        <avue-crud :option="referConfigCrudOption"
                            class="refer-config-crud"
                            :page.sync="referConfigParams.referConfigPage"
@@ -17,9 +17,11 @@
                            :data="referConfigParams.referConfigData"
                            :ref= "referConfigParams.ref"
                            @row-click="referConfigRowClick"
                            @selection-change="referConfigDataChange"
                            @search-change="referConfigSearchChange"
                            @search-reset="referConfigSearchReset">
                            @search-reset="referConfigSearchReset"
                            @current-change="referConfigCurrentChange"
                            @size-change="referConfigSizeChange"
                            @on-load="referConfigOnload">
                            <template #radio="{row}">
                                <el-radio v-model="referConfigParams.referConfigSelectedRow"
                                    :label="row.$index">
@@ -29,26 +31,39 @@
                        </avue-crud>
                    </basic-container>
                </el-col>
                <el-col v-show="true" style="width: 30%; height: 100%;">
                    <basic-container style="width: 100%;">
                <el-col v-show="isShowForm" style="height: 100%; width: 30%;">
                    <basic-container style="width: 100%; height: 100vh; overflow-y: hidden">
                        <avue-form ref="refereConfigForm" 
                        style="height: 65vh;"
                        :option="formOption"
                        class="refer-confg-form"
                        ></avue-form>
                            style="height: 65vh; overflow-y: auto;"
                            :option="formOption"
                            v-model="referConfigForm"
                            class="refer-confg-form">
                        </avue-form>
                    </basic-container>
                </el-col>
            </el-row>
            <el-row style="width: 100%; height:30%; margin-top: 130px">
                <basic-container style="width: 100%; height:100%;">
                    <avue-crud :option="attrAndSrchCondOption"
                        class="refer-attrorsrchcond-crud"
                        :table-loading="attrAndSrchCondParams.attrAndSrchCondLoading"
                        :data="attrAndSrchCondParams.attrAndSrchCondData"
                        :ref= "attrAndSrchCondParams.ref"
                        @row-click="attrAndSrchCondRowClick">
                    </avue-crud>
                </basic-container>
                <el-col
                    :style="toggleSrchCrudWidth">
                    <basic-container style="width: 100%; height:100%;">
                        <avue-crud :option="srchCondOption"
                            class="refer-srchcond-crud"
                            :table-loading="srchCondParams.srchCondLoading"
                            :data="srchCondParams.srchCondData"
                            :ref= "srchCondParams.ref">
                        </avue-crud>
                    </basic-container>
                </el-col>
                <el-col v-show="showAttrParams.isShow" style="width: 60%; height: 100%;">
                    <basic-container style="width: 100%; height:100%;">
                        <avue-crud :option="showAttrOption"
                            class="refer-attr-crud"
                            :table-loading="showAttrParams.showAttrLoading"
                            :data="showAttrParams.showAttrData"
                            :ref= "showAttrParams.ref">
                        </avue-crud>
                    </basic-container>
                </el-col>
            </el-row>
        </div>
        <div slot="footer" class="dialog-footer">
@@ -60,6 +75,7 @@
<script>
//import func from "@/util/func";
import { getReferConfigPage } from "@/api/code/codeReferConfig";
export default {
    name: "referConfigDialog",
        props: {
@@ -69,7 +85,7 @@
                isShowReferConfigCrud:false,
                referConfigCrudOption: {
                    border: true,
                    height: '56vh',
                    height: '45vh',
                    tip: false,
                    searchShow: true,
                    searchMenuSpan: 6,
@@ -106,7 +122,7 @@
                        },{
                            label: '参照的业务类型',
                            search: false,
                            prop: 'referType'
                            prop: 'referTypeName'
                        },{
                            label: '显示的属性',
                            search: false,
@@ -118,7 +134,7 @@
                        },{
                            label: '参照窗口类型',
                            search: false,
                            prop: 'typeText'
                            prop: 'typeText',
                        }
                    ],
                },
@@ -139,10 +155,45 @@
                formOption: {
                    submitBtn: false,
                    emptyBtn: false,
                    labelWidth: '110', //默认标签宽度
                    column: [{
                            label: '每页显示条数',
                            prop: 'limit',
                    labelWidth: '150', //默认标签宽度
                    // é»˜è®¤é…ç½®å°±ä¸ºæ ‘形类型,改了会出现问题
                    column: [
                        {
                            label: '树形的上级属性',
                            prop: 'parentFieldName',
                            span: 24,
                            disabled: true,
                            row: true,
                            placeholder: ' ',
                        },{
                            label: '上级属性值对应属性',
                            prop: 'parentUsedField',
                            span: 24,
                            disabled: true,
                            row: true,
                            placeholder: ' ',
                        },{
                            label: '根节点的值',
                            prop: 'parentValue',
                            span: 24,
                            disabled: true,
                            row: true,
                            placeholder: ' ',
                        },{
                            label: '树加载方式',
                            prop: 'loadType',
                            span: 24,
                            disabled: true,
                            row: true,
                            placeholder: ' ',
                            dicData: [{
                                label: '全部', value: 'all'
                            }, {
                                label: '逐级加载', value: 'node'
                            }],
                        },{
                            label: '是否只能选择叶子节点',
                            prop: 'onlyLeaf',
                            span: 24,
                            disabled: true,
                            row: true,
@@ -158,18 +209,18 @@
                            label: '排序类型',
                            prop: 'sortType',
                            span: 24,
                            disabled: true,
                            row: true,
                            placeholder: ' ',
                            dicData: [{
                                label: '升序', value: 'asc'
                            }, {
                                label: '降序', value: 'desc'
                            }],
                            type: 'select',
                            disabled: true,
                            row: true,
                            placeholder: ' ',
                        }
                    ]
                        },
                    ],
                },
                referConfigForm:{},
                // æŽ’序类型的表单配置
                sortColumn:[{            
                    label: '每页显示条数',
@@ -189,95 +240,98 @@
                    label: '排序类型',
                    prop: 'sortType',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                    dicData: [{
                        label: '升序', value: 'asc'
                    }, {
                        label: '降序', value: 'desc'
                    }],
                    type: 'select',
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                }],
                // æ ‘形类型的表单配置
                treeColumn:[{
                    label: '树形的上级属性',
                    prop: 'parentFieldName',
                    span: 7,
                    tip: '树形展示的时候,上下级关系查找的属性。',
                    tipPlacement: 'right',
                    rules: [{
                        required: true,
                        message: "(树形的上级属性)必填项不能为空",
                        trigger: "blur",
                    }],
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                },{
                    label: '上级属性值对应属性',
                    prop: 'parentUsedField',
                    span: 7,
                    tip: '上级属性存储的值,是上级数据的什么属性。一般都是oid。',
                    value: 'oid',
                    tipPlacement: 'right',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                },{
                    label: '根节点的值',
                    prop: 'parentValue',
                    span: 7,
                    tip: '树形展示的时候,上级的值。',
                    tipPlacement: 'right',
                },{
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                },
                {
                    label: '树加载方式',
                    prop: 'loadType',
                    span: 7,
                    value: 'all',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                    dicData: [{
                        label: '全部', value: 'all'
                    }, {
                        label: '逐级加载', value: 'node'
                    }],
                    type: 'select',
                },{
                    label: '是否只能选择叶子节点',
                    prop: 'onlyLeaf',
                    span: 7,
                    value: false,
                    type: 'switch',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                },{
                    label: '排序字段',
                    prop: 'sortField',
                    span: 7,
                    //type: 'table',
                    tip: '查询数据时的排序字段',
                    tipPlacement: 'right',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                },{
                    label: '排序类型',
                    prop: 'sortType',
                    span: 7,
                    type: 'select',
                    value: 'asc',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                    dicData: [{
                        label: '升序', value: 'asc'
                    }, {
                        label: '降序', value: 'desc'
                    }],
                },],
                },
                ],
                // å¹³å°ç±»åž‹çš„表单配置
                standColumn:[{
                    label: '参考的UI上下文',
                    prop: 'referContent',
                    span: 7,
                    tip: '只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                    tipPlacement: 'right',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                },
                {
                    label: '平台的表格编号',
                    prop: 'displayTable',
                    span: 7,
                    tip: '与参照的UI上下文互斥,只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                    tipPlacement: 'right',
                    span: 24,
                    disabled: true,
                    row: true,
                    placeholder: ' ',
                }],
                // æ˜¾ç¤ºçš„属性和查询条件表格区域
                attrAndSrchCondOption: {
                // æŸ¥è¯¢æ¡ä»¶è¡¨æ ¼åŒºåŸŸ
                srchCondOption: {
                    border: true,
                    height: '40vh',
                    tip: false,
@@ -309,7 +363,40 @@
                                    prop: 'filterValue',
                                }
                            ],
                        },{
                        },
                    ],
                },
                srchCondParams: {
                    ref: "srchCondCrud",
                    srchCondLoading: false,
                    srchCondData: [],
                    isShow: true,
                },
                toggleSrchCrudWidth: {
                    width: '40%',
                    height: '100%',
                },
                //显示的属性表格配置区域
                showAttrOption: {
                    border: true,
                    height: '40vh',
                    tip: false,
                    searchShow: false,
                    searchMenuSpan: 6,
                    index: true,
                    selection: false,
                    menu: false,
                    addBtn: false,
                    refreshBtn: false,
                    searchShowBtn: false,
                    columnBtn: false,
                    dialogClickModal: false,
                    highlightCurrentRow: true,
                    align: 'center',
                    menuAlign: 'center',
                    column: [
                        {
                            label: '显示的属性',
                            children: [
                                {
@@ -327,36 +414,62 @@
                                    prop: 'title'
                                },{
                                    label: '字段类型',
                                    prop: 'fieldType'
                                    prop: 'fieldTypeText'
                                },{
                                    label: '列表可排序',
                                    prop: 'sort' 
                                },{
                                    label: '排序字段',
                                    prop: 'sortField'
                                    prop: 'attrSortField'
                                },{
                                    label: '字段宽度',
                                    prop: 'width' 
                                },{
                                    label: '列固定位置',
                                    prop: 'fixedText'
                                    prop: 'fixedPositionText'
                                },{
                                    label: 'js显示代码',
                                    prop: 'templet' 
                                },{
                                    label: '是否快速查询',
                                    prop: 'isQuery'
                                }
                            ]
                        }, 
                    ],
                },
                attrAndSrchCondParams: {
                    ref: "attrOrSrchCondCrud",
                    attrAndSrchCondLoading: false,
                    attrAndSrchCondData: [],
                showAttrParams: {
                    ref: "showAttrCrud",
                    showAttrLoading: false,
                    showAttrData: [],
                    isShow: true,
                },
                // æ˜¯å¦æ˜¾ç¤ºå˜åŠ¨çš„è¡¨å•åŒºåŸŸ
                isShowForm: true,
                toggleBasicCrudWidth: {
                    height: '100%',
                    width: '70%',
                },
                
                // æ˜¯å¦æ˜¾ç¤ºå±žæ€§è¡¨æ ¼
                isShowAttrCrud: true,
                defaultOrGridForm: ['limit','sortField','sortType'],
                standForm: ['referContent','displayTable'],
                treeForm: [
                    'parentFieldName',
                    'parentUsedField',
                    'parentValue',
                    'loadType',
                    'onlyLeaf',
                    'sortField',
                    'sortType'
                ],
            }
        },
        methods: {
            // ä¸‹ä¸€æ­¥è¦è¿›è¡Œçš„æ“ä½œé€‰æ‹©å¹¶ä¿å­˜æˆ–选择并修改
            selectedreferConfig(condition) {
                // å½“前选中的参照配置行
@@ -365,35 +478,142 @@
                    this.$message.warning("请选择一条数据!");
                    return;
                }
                let filterForm = this.filterForm(currentSeletedRow);
                if(condition == "selectedSave"){
                    console.log(currentSeletedRow);
                    // ç›´æŽ¥ä¿å­˜,所以直接调用code界面的界面回显
                    this.$emit('echoReferConfig',filterForm);
                    // console.log(filterForm);
                }else {
                    console.log(currentSeletedRow);
                }
            },
            referConfigOnload(page, params = {}){
                this.referConfigParams.referConfigLoading = true;
                this.referConfigParams.referConfigData = [
                    {
                        id: 'test',
                        name: '测试',
                        referType: 'test',
                        textField: 'test',
                        valueField: 'test',
                        typeText:'默认配置',
                    },{
                        id: 'test1',
                        name: '测试1',
                        referType: 'test1',
                        textField: 'test1',
                        valueField: 'test1',
                        typeText:'平台配置',
                    // é€‰æ‹©å¹¶ä¿®æ”¹,执行code服务中的打开界面,所以要先构造出所需的数据
                    let submitForm = {
                        referBtmName: filterForm.referType,
                        referBtmId: filterForm.referTypeName,
                        referConfig:  JSON.stringify(filterForm),
                    }
                    this.$emit('openReconfigInterFace',submitForm);
                }
                this.isShowReferConfigCrud = false;
            },
            // è¿‡æ»¤å‡ºå½“前类型所需要的属性
            filterForm(currentRow){
                // éœ€è¦ä¿ç•™çš„基础属性
                let submittDefaultForm = [
                    'referTypeName',
                    'referType',
                    'textField',
                    'valueField',
                    'type', //参照窗口类型
                    'url',
                    'backPath',
                    'method',
                    'height',
                    'useFormKey',
                    'paramForFormKey',
                    'isMuti',
                    'mapFields',
                    'isOpenGlobal', //是否开启全局
                    'isPersistence',
                    'id',
                    'name',
                ];
                this.$nextTick(() => {
                    this.$refs[this.referConfigParams.ref].doLayout()
                })
                this.referConfigParams.referConfigLoading = false;
                // éœ€è¦æ ¹æ®ç±»åž‹æ·»åŠ çš„å±žæ€§
                let addArray = [];
                let newForm ={};
                // æ ¹æ®ä¸åŒç±»åž‹è¿‡æ»¤å‡ºä¸åŒçš„的表单属性
                if(currentRow.type == 'stand'){
                    addArray = ['referContent', 'displayTable'];
                } else if(currentRow.type == 'default' || currentRow.type == 'grid'){
                    addArray = ['limit', 'sortField', 'sortType'];
                } else if(currentRow.type == 'tree'){
                    addArray = [
                        "parentFieldName",
                        'parentUsedField',
                        'parentValue',
                        'loadType',
                        'onlyLeaf',
                        'sortField',
                        'sortType'
                    ];
                }
                // æ‹¼æŽ¥ä¸¤ä¸ªæ•°ç»„
                submittDefaultForm = submittDefaultForm.concat(addArray);
                if(currentRow.codeSrchCondConfigVOS.length > 0){
                    //console.log(currentRow.codeSrchCondConfigVOS);
                    newForm = {
                        codeSrchCondConfigVOS: currentRow.codeSrchCondConfigVOS,
                    }
                }
                if((currentRow.type == 'default' || currentRow.type  == 'grid') && currentRow.codeShowFieldConfigVOS.length >= 0){
                    newForm = Object.assign(newForm,{codeShowFieldConfigVOS: currentRow.codeShowFieldConfigVOS});
                }
                // è¿‡æ»¤å‡ºç©ºå€¼å±žæ€§å’Œä¸éœ€è¦çš„属性
                submittDefaultForm.forEach(item=>{
                    // console.log(!this.checkStringIsEmpty(currentRow[item]) || !this.checkArrayIsUndefined(currentRow[item]));
                    if((item == 'isMuti' || item == 'onlyLeaf') || (!this.checkStringIsEmpty(currentRow[item]) || !this.checkArrayIsUndefined(currentRow[item]))){
                        //console.log(item,currentRow[item]);
                        newForm = Object.assign(newForm,{[item]:currentRow[item]});
                    }
                });
                // console.log(newForm);
                return newForm;
            },
             /**
             * ä¸ºç©º
             * @param val
             * @returns {boolean}
            */
            checkStringIsEmpty(val){
                if (
                    val === null ||
                    typeof val === 'undefined' ||
                    (typeof val === 'string' && val === "" && val !== 'undefined')
                ) {
                    return true;
                }
                    return false;
            },
             /**
             * æ˜¯å¦ä¸ºå®šä¹‰
             * @param val
             * @returns {boolean}
             */
            checkArrayIsUndefined(val){
                return typeof val === 'array' && (val.length === 0 || val === null || typeof val === 'undefined' || val === []);
            },
            referConfigOnload(){
                let refer = this.referConfigParams;
                refer.referConfigLoading = true;
                let param = {};
                // å¤šä¸ªconditionMap这样传参
                if(refer.referConfigQuery){
                    Object.keys(refer.referConfigQuery).forEach(key=>{
                        param['conditionMap['+key+']'] = refer.referConfigQuery[key];
                    });
                }
                getReferConfigPage(
                    refer.referConfigPage.currentPage,
                    refer.referConfigPage.pageSize,
                    param
                ).then(res=>{
                    const data = res.data.data;
                    this.referConfigParams.referConfigPage.total = data.total;
                    this.referConfigParams.referConfigData = data.records;
                    this.referConfigParams.referConfigLoading = false;
                    //console.log(this.referConfigParams.referConfigData.length > 0);
                    // æ¸²æŸ“其他区域数据
                    if(this.referConfigParams.referConfigData.length > 0) {
                        this.$nextTick(() => {
                            // è¡¨æ ¼é”™è¡Œé—®é¢˜
                            this.$refs[this.referConfigParams.ref].doLayout()
                            // é»˜è®¤é€‰ä¸­ç¬¬ä¸€è¡Œ
                            this.referConfigParams.referConfigSelectedRow = 0;
                            this.$refs[this.referConfigParams.ref].setCurrentRow(this.referConfigParams.referConfigData[0]);
                            this.referConfigParams.referConfigSelectedRowData = this.referConfigParams.referConfigData[0];
                            this.attrAndSrchCondOnload(this.referConfigParams.referConfigData[0]);
                            this.loadDefaultOrGridOrStandOrTreeForm(this.referConfigParams.referConfigData[0]);
                        })
                    }
                });
            },
            referBtmTypeSizeChange(pageSize){
                this.referConfigParams.referConfigPage.pageSize = pageSize;
@@ -402,27 +622,98 @@
                this.referConfigParams.referConfigPage.currentPage = currentPage;
            },
            referConfigRowClick(row){
                // å¯¹å½“前选中行进行记录
                this.referConfigParams.referConfigSelectedRowData = row;
                // å•选框选中
                this.referConfigParams.referConfigSelectedRow = row.$index
                this.attrAndSrchCondOnload(row);
                this.loadDefaultOrGridOrStandOrTreeForm(row);
            },
            referConfigDataChange(params, done){
            referConfigSearchChange(params, done){
                this.referConfigParams.referConfigQuery = params;
                this.referConfigParams.referConfigPage.currentPage = 1;
                this.referConfigOnload(this.referConfigParams.referConfigPage, params);
                this.referConfigOnload();
                done();
            },
            referConfigSearchReset(){
                this.referConfigParams.referConfigQuery = {};
                this.referConfigOnload(this.referConfigParams.referConfigPage);
            },
            referConfigCurrentChange(currentPage){
                this.referConfigParams.referConfigPage.currentPage = currentPage;
            },
            referConfigSizeChange(pageSize){
                this.referConfigParams.referConfigPage.pageSize = pageSize;
            },
            // åŠ è½½è¡¨å•æ˜¾ç¤ºå†…å®¹
            loadDefaultOrGridOrStandOrTreeForm(currentFormData){
                if(currentFormData.type != 'tree' &
                   currentFormData.type != 'stand' &
                   currentFormData.type != 'default'&
                   currentFormData.type != 'grid') {
                    //控制参照配置表格和表单显示比例
                    this.isShowForm = false;
                    this.toggleBasicCrudWidth.width = '100%';
                }else {
                    this.isShowForm = true;
                    this.toggleBasicCrudWidth.width = '70%';
                    this.toggleFormOption(currentFormData);
                }
                this.toggleCurdWidth(currentFormData);
                //console.log(this.isShowForm);
                //console.log(this.toggleBasicCrudWidth.width);
            },
            // æ ¹æ®type的变动切换表单的配置option
            toggleFormOption(data){
                //console.log(data);
                let currentForm = '';
                if(data.type=='default' || data.type=='grid'){
                    this.formOption.column = this.sortColumn;
                    currentForm = 'defaultOrGridForm';
                }else if(data.type == 'stand'){
                    this.formOption.column = this.standColumn;
                    currentForm = 'standForm';
                }else if(data.type == 'tree'){
                    this.formOption.column = this.treeColumn;
                    currentForm = 'treeForm'
                }
                this.referConfigForm = {},
                //console.log( this.formOption);
                this[currentForm].forEach(item=>{
                    Vue.set(this.referConfigForm, item, data[item])
                    //this.referConfigForm = Object.assign(this.referConfigForm,{[item]:data[item]})
                })
                // console.log(this.referConfigForm);
            },
            // æ ¹æ®type的变动切换attr表格的显示隐藏,调整查询条件表格的宽度
            toggleCurdWidth(data) {
                if(data.type=='default' || data.type=='grid'){
                    this.showAttrParams.isShow = true;
                    // ä¸éœ€è¦æ˜¾ç¤ºå±žæ€§è¡¨æ ¼æ‰€æœ‰éœ€è¦å°†æŸ¥è¯¢è°ƒä»·è¡¨æ ¼ç¼©å°ä¸º100%
                    this.toggleSrchCrudWidth.width = '40%';
                }else {
                    this.showAttrParams.isShow = false;
                    // ä¸éœ€è¦æ˜¾ç¤ºå±žæ€§è¡¨æ ¼æ‰€æœ‰éœ€è¦å°†æŸ¥è¯¢è°ƒä»·è¡¨æ ¼ç¼©å°ä¸º100%
                    this.toggleSrchCrudWidth.width = '100%';
                }
                // console.log(this.toggleSrchCrudWidth);
                // console.log(this.showAttrParams.isShow);
            },
            // æ˜¾ç¤ºçš„属性和查询条件相关方法
            attrAndSrchCondOnload(row){
                this.attrAndSrchCondParams.attrAndSrchCondLoading = true;
                this.attrAndSrchCondParams.attrAndSrchCondParams = row.attrAndSrchCondParams
                this.attrAndSrchCondParams.attrAndSrchCondLoading = false;
                this.srchCondParams.srchCondLoading = true;
                this.showAttrParams.showAttrLoading = true;
                this.$nextTick(() => {
                    this.$refs[this.srchCondParams.ref].doLayout()
                    this.$refs[this.showAttrParams.ref].doLayout()
                });
                this.srchCondParams.srchCondData = row.codeSrchCondConfigVOS
                this.showAttrParams.showAttrData = row.codeShowFieldConfigVOS
                //console.log(this.showAttrParams.showAttrData);
                this.srchCondParams.srchCondLoading = false;
                this.showAttrParams.showAttrLoading = false;
            },
        },
@@ -434,7 +725,10 @@
    .refer-config-crud > .el-card > .el-card__body > .avue-crud__menu {
        display: none!important;
    }
    .refer-attrorsrchcond-crud > .el-card > .el-card__body > .avue-crud__menu {
    .refer-srchcond-crud > .el-card > .el-card__body > .avue-crud__menu  {
        display: none!important;
    }
    .refer-attr-crud > .el-card > .el-card__body > .avue-crud__menu {
        display: none!important;
    }
Source/UBCS-WEB/src/components/code-dialog-page/referConfigFormDialog.vue
@@ -10,7 +10,7 @@
      style="height: 115vh; margin-top: -14vh; overflow-y: hidden">
        <div style="width: 100%; overflow-y: auto; height: 70vh">
            <el-row>
                <avue-form ref="form" :option="formOption" v-model="form" class="referTypeForm">
                <avue-form :ref="formRefs[0]" :option="formOption" v-model="form" class="referTypeForm">
                    <template #referTypeName="{disabled,size}">
                        <el-input :disabled="disabled"
                            :size="size"
@@ -37,76 +37,101 @@
                    </template>
                </avue-form>
            </el-row>
            <el-row v-show="form.type=='default' || form.type=='grid'">
                <avue-crud
                    ref="crudAttr"
                    class="crud-attr"
                    :option="attrOption"
                    @cell-click="clickAttrEdit"
                    :data="attrData">
                    <!-- è¡¨æ ¼å†…操作按钮 -->
                    <template slot="menu" slot-scope="scope">
                        <el-button type="text"
                            size="small"
                            icon="el-icon-search"
                            plain
                            @click="scope.row.isquery=!scope.row.isquery">
                            {{scope.row.isquery ? "取消快速查询":"快速查询"}}
                        </el-button>
                        <el-button type="text"
                            size="small"
                            icon="el-icon-minus"
                            plain
                            @click="removeCurrentRow(scope.row,'removeAttr')">移除
                        </el-button>
                    </template>
                    <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
                    <template slot="menuLeft" slot-scope="scope">
                        <el-button type="primary"
                            size="small"
                            icon="el-icon-plus"
                            @click="openSelectionTable('selectAttr')">选择属性
                        </el-button>
                        <div class="tag-group" style="display: inline">
                            <el-tag
                                v-for="item in attrData"
                                v-show="item.isquery && item.title!=''"
                                style="margin-left: 3px"
                                :key="item.title"
                                type="info"
                                size="small"
                                effect="dark">
                                {{ item.title }}
                            </el-tag>
                        </div>
                    </template>
                </avue-crud>
            </el-row>
            <el-row style="margin-top: 10px">
                <avue-crud
                    ref="crudAddCondition"
                    :option="addSearchCondtionOption"
                    @cell-click="clickAddSearchCondtionEdit"
                    :data="addSearchCondtionData">
                    <!-- è¡¨æ ¼å†…操作按钮 -->
                    <template slot="menu" slot-scope="scope">
                        <el-button type="text"
                            size="small"
                            icon="el-icon-minus"
                            plain
                            @click="removeCurrentRow(scope.row,'removeaddSearchCondtion')">移除
                        </el-button>
                    </template>
                    <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
                    <template slot="menuLeft" slot-scope="scope">
                        <el-button type="primary"
                            size="small"
                            icon="el-icon-plus"
                            @click="openSelectionTable('addSearchCondition')">
                            æ·»åŠ æŸ¥è¯¢æ¡ä»¶
                        </el-button>
                    </template>
                </avue-crud>
            <el-row>
                <el-tabs type="border-card" v-model="activeName">
                    <el-tab-pane name="first" :disabled="isDisabledTabs">
                        <span slot="label"><i class="el-icon-monitor"></i>显示的属性与其他配置</span>
                        <el-row>
                            <avue-form :ref="formRefs[1]" :option="formOtherOption" v-model="form" class="referTypeForm">
                                <template #sortField="{disabled,size}">
                                    <el-input :disabled="disabled"
                                        :size="size"
                                        v-model="form.sortField"
                                        ref="sortField"
                                        placeholder="请选择 æŽ’序字段"
                                        prefix-icon="el-icon-search"
                                        readonly="true"
                                        @focus="openSelectionTable('sortField')">
                                        <i slot="suffix" class="el-icon-circle-close" @click="clearSelectionTable('sortField')" style="margin-right: 5px;cursor: pointer;"></i>
                                    </el-input>
                                </template>
                            </avue-form>
                        </el-row>
                        <el-row v-show="form.type=='default' || form.type=='grid'">
                            <el-divider content-position="left" style="margin-bottom: -40px;">配置显示的属性</el-divider>
                            <avue-crud
                                ref="crudAttr"
                                class="crud-attr"
                                :option="attrOption"
                                @cell-click="clickAttrEdit"
                                :data="codeShowFieldConfigVOS">
                                <!-- è¡¨æ ¼å†…操作按钮 -->
                                <template slot="menu" slot-scope="scope">
                                    <el-button type="text"
                                        size="small"
                                        icon="el-icon-search"
                                        plain
                                        @click="scope.row.isquery=!scope.row.isquery">
                                        {{scope.row.isquery ? "取消快速查询":"快速查询"}}
                                    </el-button>
                                    <el-button type="text"
                                        size="small"
                                        icon="el-icon-minus"
                                        plain
                                        @click="removeCurrentRow(scope.row,'removeAttr')">移除
                                    </el-button>
                                </template>
                                <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
                                <template slot="menuLeft" slot-scope="scope">
                                    <el-button type="primary"
                                        size="small"
                                        icon="el-icon-plus"
                                        @click="openSelectionTable('selectAttr')">选择属性
                                    </el-button>
                                    <div class="tag-group" style="display: inline">
                                        <el-tag
                                            v-for="item in codeShowFieldConfigVOS"
                                            v-show="item.isquery && item.title!=''"
                                            style="margin-left: 3px"
                                            :key="item.title"
                                            type="info"
                                            size="small"
                                            effect="dark">
                                            {{ item.title }}
                                        </el-tag>
                                    </div>
                                </template>
                            </avue-crud>
                        </el-row>
                    </el-tab-pane>
                    <el-tab-pane name="second">
                        <span slot="label"><i class="el-icon-search"></i>添加查询条件</span>
                        <avue-crud
                            ref="crudAddCondition"
                            :option="addSearchCondtionOption"
                            @cell-click="clickAddSearchCondtionEdit"
                            :data="form.codeSrchCondConfigVOS">
                            <!-- è¡¨æ ¼å†…操作按钮 -->
                            <template slot="menu" slot-scope="scope">
                                <el-button type="text"
                                    size="small"
                                    icon="el-icon-minus"
                                    plain
                                    @click="removeCurrentRow(scope.row,'removeaddSearchCondtion')">移除
                                </el-button>
                            </template>
                            <!-- è¡¨æ ¼å·¦ä¸Šæ–¹æŒ‰é’®åŒºåŸŸ -->
                            <template slot="menuLeft" slot-scope="scope">
                                <el-button type="primary"
                                    size="small"
                                    icon="el-icon-plus"
                                    @click="openSelectionTable('addSearchCondition')">
                                    æ·»åŠ æŸ¥è¯¢æ¡ä»¶
                                </el-button>
                            </template>
                        </avue-crud>
                    </el-tab-pane>
                </el-tabs>
            </el-row>
        </div>
@@ -233,7 +258,6 @@
            let element = '';
            return {
                activeName: 'first', //当前活动的tabs
                labelWidth: '150',   // æ ‡é¢˜å®½åº¦
                isShowReferConfigForm: false,  // ç¬¬ä¸€å±‚对话框显示隐藏控制
                referTypeIsReadOnly: false,
@@ -252,6 +276,11 @@
                    paramForFormKey: '',
                    isMuti: false,
                    mapFields: '',
                    isOpenGlobal: true, //是否开启全局
                    codeSrchCondConfigVOS: [],
                    isPersistence: true, // æ˜¯å¦æŒä¹…化
                    id: '',
                    name: '',
                     // æŸ¥è¯¢æ¡ä»¶åˆ—表
                    // limit: '15',
                    // sortField: '',
@@ -264,7 +293,21 @@
                    // loadType: 'all',
                    // onlyLeaf: false,
                },
                attrData: [],
                // type切换时对form表单属性进行移除
                removeFormAttr: [
                    'limit',
                    'sortField',
                    'sortType',
                    'parentFieldName',
                    'parentUsedField',
                    'parentValue',
                    'loadType',
                    'onlyLeaf',
                    'sortType',
                    'referContent',
                    'displayTable',
                ],
                codeShowFieldConfigVOS: [],
                attrOption: {
                    height:'180',
                    tip: false,
@@ -282,6 +325,8 @@
                    columnBtn: false,
                    dialogClickModal: false,
                    highlightCurrentRow: true,
                    indexFixed: false,
                    menuFixed: false,
                    column: [
                        {
                            label: "列字段(*)",
@@ -327,7 +372,7 @@
                            blur: (value) => this.updateAttrBlur(value),
                        },{
                            label: "排序字段",
                            prop: "sortField",
                            prop: "attrSortField",
                            cell: true,
                            clearable: false,
                            blur: (value) => this.updateAttrBlur(value),
@@ -339,7 +384,7 @@
                            blur: (value) => this.updateAttrBlur(value),
                        },{
                            label: "列固定位置",
                            prop: "fixedText",
                            prop: "fixedPosition",
                            cell: true,
                            type:"select",
                            clearable: false,
@@ -355,7 +400,7 @@
                        },
                    ]
                },
                addSearchCondtionData: [],
                // addSearchCondtionData: [],
                addSearchCondtionOption: {
                    height:'150',
                    tip: false,
@@ -408,6 +453,13 @@
                        }
                    ]
                },
                // ä¸¤ä¸ªè¡¨å•çš„ref
                formRefs: ['form','otherForm'],
                // tabs控制
                isDisabledTabs: false,
                activeName: 'first', //当前活动的tabs
                //为【参照的业务类型】选取值对话框
                selectionReferBtmTypeOption: {
@@ -638,205 +690,280 @@
                    submitBtn: false,
                    emptyBtn: false,
                    labelWidth: '145', //默认标签宽度
                    // åŸºç¡€è¡¨å•信息展示区域
                    column: [
                        {
                            label: '参照的业务类型',
                            prop: 'referTypeName',
                            span: 7,
                            disabled: this.referTypeIsReadOnly,
                            clearable: !this.referTypeIsReadOnly,
                            tip: '参照数据查询的业务类型。',
                            tipPlacement: 'right',
                            rules: [{
                                required: true,
                                message: "(参照的业务类型)必填项不能为空",
                                trigger: ["blur","change"],
                            }],
                        },{
                            label: '显示的属性',
                            prop: 'textField',
                            tip: '选择数据后,显示到字段上的信息所属的属性,一般都是name,如果是多个属性使用逗号分割,如id,name。',
                            tipPlacement: 'right',
                            span: 7,
                            value: 'name',
                            rules: [{
                                required: true,
                                message: "(显示的属性)必填项不能为空",
                                trigger: "blur",
                            }],
                        },{
                            label: '存储值的属性',
                            prop: 'valueField',
                            tip: '选择数据后,保存到数据库里的属性,一般都是oid或者id,如果是多个属性使用逗号分割,如oid ,id',
                            value: 'oid',
                            tipPlacement: 'right',
                            span: 7,
                            rules: [{
                                required: true,
                                message: "(存储值的属性)必填项不能为空",
                                trigger: "blur",
                            }],
                        },{
                            label: '参照窗口类型',
                            prop: 'type',
                            tip: 'default:默认的参照窗口样式; stand:UI上下文配置的方式; classify:分类+档案的显示; è‡ªå®šä¹‰çš„参照直接写js的组件路径;tree:树形展示;grid:列表展示',
                            tipPlacement: 'right',
                            span: 7,
                            value: 'default',
                            type: 'select',
                            dicData: [{
                                label: '默认样式',
                                value: 'default'
                            }, {
                                label: '平台配置',
                                value: 'stand'
                            }, {
                                label: '树形',
                                value: 'tree'
                            }, {
                                label: '列表',
                                value: 'grid'
                            }, {
                                label: '部门树',
                                value: 'refer/OrgDepartmentRefer'
                            }, {
                                label: '部门列表',
                                value: 'refer/OrgDepartmentGridRefers'
                            }, {
                                label: '用户',
                                value: 'refer/SmUserRefer'
                            }, {
                                label: '用户列表',
                                value: 'refer/SmUserGridRefer'
                            }, {
                                label: '角色列表',
                                value: 'refer/SmRoleRefer'
                            }, {
                                label: '职务',
                                value: 'refer/OrgDutyRefer'
                            }, {
                                label: '工种',
                                value: 'refer/SmWorkTypeRefer'
                            }, {
                                label: '流程模板',
                                value: 'refer/WfProcessTemplateRefer'
                            }],
                            rules: [{
                                required: true,
                                message: "(参照窗口类型)必填项不能为空",
                                trigger: "blur",
                            }],
                            change: ({ value, column }) => {
                                // å¤åŽŸè¡¨å•,因为其他分组中如果存在值,在切换时,会保留输入的字段值所以需要还原
                                let oldForm = this.form;
                                this.form = {};  // è¡¨å•对象赋空
                                this.form.referType = oldForm.referType
                                this.form.textField = oldForm.textField
                                this.form.valueField = oldForm.valueField
                                this.form.type = oldForm.type //参照窗口类型
                                this.form.url =  oldForm.url
                                this.form.backPath =  oldForm.backPath
                                this.form.method =  oldForm.method
                                this.form.height =  oldForm.height
                                this.form.useFormKey =  oldForm.useFormKey
                                this.form.paramForFormKey =  oldForm.paramForFormKey
                                this.form.isMuti =  oldForm.isMuti
                                this.form.mapFields =  oldForm.mapFields
                                let addFrom = {};  //根据类型需要添加的不同属性
                                if(value == 'stand'){
                                    addFrom = {
                                        referContent: '',
                                        displayTable: '',
                                    }
                                } else if(value == 'default' || value == 'grid'){
                                    addFrom = {
                                        limit: '15',
                                        sortField: '',
                                        sortType: 'asc',
                                    }
                                } else if(value == 'tree'){
                                    addFrom = {
                                        parentFieldName: '',
                                        parentUsedField: 'oid',
                                        parentValue: '',
                                        loadType: 'all',
                                        onlyLeaf: false,
                                        sortField: '',
                                        sortType: 'asc',
                                    }
                    group: [
                        {
                            // åŸºç¡€è¡¨å•信息展示区域
                            //display: this.form.type=='default'||this.form.type=='grid',
                            icon: 'el-icon-info',
                            label: '必填的参照配置',
                            collapse: true,
                            labelWidth: '115',
                            prop: 'groupDdefaultOrGrid',
                            column: [
                                {
                                    label: '参照的业务类型',
                                    prop: 'referTypeName',
                                    span: 6,
                                    labelWidth: '130',
                                    disabled: this.referTypeIsReadOnly,
                                    clearable: !this.referTypeIsReadOnly,
                                    tip: '参照数据查询的业务类型。',
                                    tipPlacement: 'bottom',
                                    rules: [{
                                        required: true,
                                        message: "(参照的业务类型)必填项不能为空",
                                        trigger: ["blur","change"],
                                    }],
                                },{
                                    label: '显示的属性',
                                    prop: 'textField',
                                    tip: '选择数据后,显示到字段上的信息所属的属性,一般都是name,如果是多个属性使用逗号分割,如id,name。',
                                    tipPlacement: 'bottom',
                                    span: 6,
                                    value: 'name',
                                    rules: [{
                                        required: true,
                                        message: "(显示的属性)必填项不能为空",
                                        trigger: "blur",
                                    }],
                                },{
                                    label: '存储值的属性',
                                    prop: 'valueField',
                                    tip: '选择数据后,保存到数据库里的属性,一般都是oid或者id,如果是多个属性使用逗号分割,如oid ,id',
                                    value: 'oid',
                                    tipPlacement: 'bottom',
                                    span: 6,
                                    rules: [{
                                        required: true,
                                        message: "(存储值的属性)必填项不能为空",
                                        trigger: "blur",
                                    }],
                                },{
                                    label: '参照窗口类型',
                                    prop: 'type',
                                    tip: 'default:默认的参照窗口样式; stand:UI上下文配置的方式; classify:分类+档案的显示; è‡ªå®šä¹‰çš„参照直接写js的组件路径;tree:树形展示;grid:列表展示',
                                    tipPlacement: 'bottom',
                                    span: 6,
                                    value: 'default',
                                    type: 'select',
                                    dicData: [{
                                        label: '默认样式',
                                        value: 'default'
                                    }, {
                                        label: '平台配置',
                                        value: 'stand'
                                    }, {
                                        label: '树形',
                                        value: 'tree'
                                    }, {
                                        label: '列表',
                                        value: 'grid'
                                    }, {
                                        label: '部门树',
                                        value: 'refer/OrgDepartmentRefer'
                                    }, {
                                        label: '部门列表',
                                        value: 'refer/OrgDepartmentGridRefers'
                                    }, {
                                        label: '用户',
                                        value: 'refer/SmUserRefer'
                                    }, {
                                        label: '用户列表',
                                        value: 'refer/SmUserGridRefer'
                                    }, {
                                        label: '角色列表',
                                        value: 'refer/SmRoleRefer'
                                    }, {
                                        label: '职务',
                                        value: 'refer/OrgDutyRefer'
                                    }, {
                                        label: '工种',
                                        value: 'refer/SmWorkTypeRefer'
                                    }, {
                                        label: '流程模板',
                                        value: 'refer/WfProcessTemplateRefer'
                                    }],
                                    rules: [{
                                        required: true,
                                        message: "(参照窗口类型)必填项不能为空",
                                        trigger: "blur",
                                    }],
                                    change: ({ value, column }) => {
                                        // console.log("start",value);
                                        // å¤åŽŸè¡¨å•,因为其他分组中如果存在值,在切换时,会保留输入的字段值所以需要还原
                                        let addFrom = {};
                                        this.activeName = 'first'; // é»˜è®¤åˆ‡æ¢è‡³ç¬¬ä¸€ä¸ªtab
                                        //根据类型对form表单属性进行调整
                                        if(value == 'stand'){
                                            addFrom = {
                                                referContent: '',
                                                displayTable: '',
                                            };
                                            this.isDisabledTabs = false;
                                        } else if(value == 'default' || value == 'grid'){
                                            addFrom = {
                                                limit: '15',
                                                sortField: '',
                                                sortType: 'asc',
                                            };
                                            this.isDisabledTabs = false;
                                        } else if(value == 'tree'){
                                            addFrom = {
                                                parentFieldName: '',
                                                parentUsedField: 'oid',
                                                parentValue: '',
                                                loadType: 'all',
                                                onlyLeaf: false,
                                                sortField: '',
                                                sortType: 'asc',
                                            };
                                            // ä¸çŸ¥é“为什么type为tree的时候会触发两次change事件
                                            // å¯¼è‡´type切换失败
                                            this.form.type = 'tree';
                                            this.isDisabledTabs = false;
                                        }else {
                                            this.isDisabledTabs = true;
                                            this.activeName = 'second';
                                        }
                                       // ç±»åž‹åˆ‡æ¢æ—¶ï¼Œå¯¹ä¸éœ€è¦çš„属性进行筛除
                                        this.removeFormAttr.forEach(attr=>{
                                            // console.log(attr);
                                            this.$delete(this.form,attr)
                                        })
                                        // åˆå¹¶ä¸¤ä¸ªè¡¨å•
                                        this.form = Object.assign(addFrom,this.form);
                                        // console.log("endFilter",this.form.type);
                                        //console.log(this.form);
                                    },
                                },{
                                    label: '是否开启持久化',
                                    prop: 'isPersistence',
                                    tip: 'true:开启持久化,对当前定义的参照配置进行持久化存储,下次可直接选取;false:仅对当前次码段新增生效。',
                                    tipPlacement: 'bottom',
                                    span: 6,
                                    type: 'switch',
                                },{
                                    display: this.form.isPersistence | this.form.isPersistence=='true',
                                    label: '编号',
                                    prop: 'id',
                                    rules: [{
                                        required: true,
                                        message: "(开始持久化时编号)必填项不能为空",
                                        trigger: "blur",
                                    }],
                                    span: 6,
                                },{
                                    display: this.form.isPersistence | this.form.isPersistence=='true',
                                    label: '名称',
                                    prop: 'name',
                                    rules: [{
                                        required: true,
                                        message: "(开始持久化时名称)必填项不能为空",
                                        trigger: "blur",
                                    }],
                                    span: 6,
                                }
                                // åˆå¹¶ä¸¤ä¸ªè¡¨å•
                                this.form = Object.assign(addFrom,this.form);
                                //console.log(this.form);
                            },
                        },{
                            label: '自定义的后台路径',
                            prop: 'url',
                            tip: '通常为空;如果是列表,后台必须返回DataGrid,如果是树,后台必须返回List<Tree>',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '服务的地址',
                            prop: 'backPath',
                            tip: '通常为空,在支持微服务或者分布式部署的时候才配置',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '请求后台的协议方式',
                            prop: 'method',
                            tip: 'HTTP的协议方式,支持POST,PUT,GET,一般都是GET',
                            tipPlacement: 'right',
                            span: 7,
                            value: 'GET',
                            type: 'select',
                            dicData: [{
                                label:'GET',value: "GET"
                            },{
                                label:'PUT',value: "PUT"
                            },
                            {
                                label:'POST',value: "POST"
                            }],
                        },{
                            label: '窗口显示的高度',
                            prop: 'height',
                            tip: '默认空着,设置后表示强制显示这样的高度',
                            tipPlacement: 'right',
                            span: 7,
                            rules:[{
                                validator: validateNumber,
                                message: "窗口显示的高度必须为数值类型",
                                trigger: "blur",
                            }]
                        },{
                            label: '过滤(级联)属性',
                            prop: 'useFormKey',
                            tip: '获取表单上的其他属性的属性的值来过滤,或者使用某个属性来级联选择',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '过滤属性请求参数',
                            prop: 'paramForFormKey',
                            tip: '使用过滤属性时,发送给后台的请求参数',
                            tipPlacement: 'right',
                            span: 7,
                        },{
                            label: '是否多选',
                            type: 'switch',
                            prop: 'isMuti',
                            value: false,
                            span: 7,
                            row: true,
                        },{
                            label: '映射其他属性',
                            prop: 'mapFields',
                            tip: '选择数据后,将选择的数据拷贝到表单里的其他属性,书写格式为{当前表单上的属性:选择数据里的属性,XXXXx:yyyy}',
                            tipPlacement: 'right',
                            span: 18,
                        }
                    ],
                            ]
                        },
                        {
                            icon: 'el-icon-info',
                            label: '页面参数配置',
                            collapse: false,
                            prop: 'webConfig',
                            column: [
                                {
                                    label: '窗口显示的高度',
                                    prop: 'height',
                                    tip: '默认空着,设置后表示强制显示这样的高度',
                                    tipPlacement: 'right',
                                    span: 7,
                                    rules:[{
                                        validator: validateNumber,
                                        message: "窗口显示的高度必须为数值类型",
                                        trigger: "blur",
                                    }]
                                },{
                                    label: '过滤(级联)属性',
                                    prop: 'useFormKey',
                                    tip: '获取表单上的其他属性的属性的值来过滤,或者使用某个属性来级联选择',
                                    tipPlacement: 'right',
                                    span: 7,
                                },{
                                    label: '过滤属性请求参数',
                                    prop: 'paramForFormKey',
                                    tip: '使用过滤属性时,发送给后台的请求参数',
                                    tipPlacement: 'right',
                                    span: 7,
                                },{
                                    label: '映射其他属性',
                                    prop: 'mapFields',
                                    tip: '选择数据后,将选择的数据拷贝到表单里的其他属性,书写格式为{当前表单上的属性:选择数据里的属性,XXXXx:yyyy}',
                                    tipPlacement: 'right',
                                    span: 7,
                                },{
                                    label: '是否开启全局',
                                    prop: 'isOpenGlobal',
                                    tip: '开启全局之后对全部参照配置数据进行查询,默认根据租户进行查询。',
                                    tipPlacement: 'right',
                                    type: 'switch',
                                    span: 7,
                                },{
                                    label: '是否多选',
                                    type: 'switch',
                                    prop: 'isMuti',
                                    value: false,
                                    span: 7,
                                    row: true,
                                }
                            ]
                        },
                        {
                            icon: 'el-icon-info',
                            label: '后台参数配置',
                            collapse: false,
                            prop: 'backstageConfig',
                            column: [
                                {
                                label: '自定义的后台路径',
                                prop: 'url',
                                tip: '通常为空;如果是列表,后台必须返回DataGrid,如果是树,后台必须返回List<Tree>',
                                tipPlacement: 'right',
                                span: 7,
                                },{
                                    label: '服务的地址',
                                    prop: 'backPath',
                                    tip: '通常为空,在支持微服务或者分布式部署的时候才配置',
                                    tipPlacement: 'right',
                                    span: 7,
                                },{
                                    label: '请求后台的协议方式',
                                    prop: 'method',
                                    tip: 'HTTP的协议方式,支持POST,PUT,GET,一般都是GET',
                                    tipPlacement: 'right',
                                    span: 7,
                                    value: 'GET',
                                    type: 'select',
                                    dicData: [{
                                        label:'GET',value: "GET"
                                    },{
                                        label:'PUT',value: "PUT"
                                    },
                                    {
                                        label:'POST',value: "POST"
                                    }],
                                },
                            ]
                        },
                    ]
                }
            },
            formOtherOption(){
                return {
                    // å˜åŠ¨çš„è¡¨å•åŒºåŸŸ
                    submitBtn: false,
                    emptyBtn: false,
                    labelWidth: '145', //默认标签宽度
                    group: [
                        {   
                            display: this.form.type=='default'||this.form.type=='grid',
@@ -848,21 +975,21 @@
                                {
                                    label: '每页显示条数',
                                    prop: 'limit',
                                    span: 7,
                                    span: 8,
                                    tip: '分页时每页显示的数量,不分页填-1',
                                    //value: 15,
                                    tipPlacement: 'right',
                                },{
                                    label: '排序字段',
                                    prop: 'sortField',
                                    span: 7,
                                    span: 8,
                                    tip: '查询数据时的排序字段',
                                    //clearable: false,
                                    tipPlacement: 'right',
                                },{
                                    label: '排序类型',
                                    prop: 'sortType',
                                    span: 7,
                                    span: 8,
                                    dicData: [{
                                        label: '升序', value: 'asc'
                                    }, {
@@ -885,14 +1012,14 @@
                                {
                                    label: '参考的UI上下文',
                                    prop: 'referContent',
                                    span: 7,
                                    span: 8,
                                    tip: '只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                                    tipPlacement: 'right',
                                },
                                {
                                    label: '平台的表格编号',
                                    prop: 'displayTable',
                                    span: 7,
                                    span: 8,
                                    tip: '与参照的UI上下文互斥,只有参照窗口类型是stand时才必须设置,且在stand类型下才能生效',
                                    tipPlacement: 'right',
                                },
@@ -942,12 +1069,6 @@
                                    }],
                                    type: 'select',
                                },{
                                    label: '是否只能选择叶子节点',
                                    prop: 'onlyLeaf',
                                    span: 7,
                                    value: false,
                                    type: 'switch',
                                },{
                                    label: '排序字段',
                                    prop: 'sortField',
                                    span: 7,
@@ -965,10 +1086,16 @@
                                    }, {
                                        label: '降序', value: 'desc'
                                    }],
                                },
                                },{
                                    label: '是否只能选择叶子节点',
                                    prop: 'onlyLeaf',
                                    span: 7,
                                    value: false,
                                    type: 'switch',
                                }
                            ]
                        },
                    ]
                    ],
                }
            },
        },
@@ -993,8 +1120,7 @@
        },
        watch: {
            // è´¼å‘,切换类型时表格,隐藏再显示就会出现表格错位问题,
            'form.type'(val) {
                //console.log(val);
            'form.type'(value) {
                this.onloadAttrData();
            }
        },
@@ -1003,22 +1129,23 @@
            // å•击表格实现表格行编辑
            clickAttrEdit(row, column, event){
                if(this.preClickAttrRow && this.preClickAttrRow != row){
                    //console.log(this.attrData[this.preClickAttrRow.$index]);
                    this.attrData[this.preClickAttrRow.$index].$cellEdit = false;
                    //console.log(this.codeShowFieldConfigVOS[this.preClickAttrRow.$index]);
                    this.codeShowFieldConfigVOS[this.preClickAttrRow.$index].$cellEdit = false;
                }
                row.$cellEdit = true;
                this.preClickAttrRow = row;
            },
            // å±žæ€§è¡¨æ ¼è¡Œç¼–辑失去焦点时保存方法
            // updateAttrBlur(value){
                //console.log(this.attrData[0]);
                //console.log(this.codeShowFieldConfigVOS[0]);
                
            // },
            // å•击表格实现表格行编辑
            clickAddSearchCondtionEdit(row, column, event){
                if(this.preClickAddSearchConditionRow && this.preClickAddSearchConditionRow != row){
                    //console.log(this.attrData[this.preClickAttrRow.$index]);
                    this.addSearchCondtionData[this.preClickAddSearchConditionRow.$index].$cellEdit = false;
                    //console.log(this.codeShowFieldConfigVOS[this.preClickAttrRow.$index]);
                    this.form.codeSrchCondConfigVOS[this.preClickAddSearchConditionRow.$index].$cellEdit = false;
                }
                row.$cellEdit = true;
                this.preClickAddSearchConditionRow = row;
@@ -1028,8 +1155,13 @@
                //console.log(val);
                if(func.notEmpty(val.referConfig)){
                    this.form = JSON.parse(val.referConfig);
                    //console.log(val);
                    // console.log(this.form);
                    this.form.isPersistence = this.form.isPersistence == 'true' ? true:false;
                    // å‚照引用的业务类型不可选
                    this.referTypeIsReadOnly = true;
                    if((this.form.type == 'default' || this.form.type  == 'grid') && (this.form.codeShowFieldConfigVOS != undefined && this.form.codeShowFieldConfigVOS.length > 0)){
                        this.codeShowFieldConfigVOS = this.form.codeShowFieldConfigVOS;
                    }
                    return;
                }
                if(func.notEmpty(val.referType)){
@@ -1041,37 +1173,43 @@
                //console.log(localStorage.getItem("userId"));
            },
            // é€‰æ‹©å®Œå‚照配置之后点击保存按钮触发
            selectedListReferConfig(){
                //表单验证
                this.$refs.form.validate((valid, done, msg) => {
                    if (valid) {
                        // æ ¹æ®ç±»åž‹å¯¹form表单中的参数进行过滤,只保留非空且需要的属性
                        let submitForm = this.filterForm();
                        //console.log(submitForm);
                        this.$emit('echoReferConfig', submitForm) // è§¦å‘update:data将子组件值传递给父组件
                        this.isShowReferConfigForm = false;
                        done()
                    } else {
                        for(let attr in msg) {
                            //console.log(msg[attr][0].message);
                            this.$message.warning(msg[attr][0].message);
                            break;
                        }
                        return false;
                    }
            async selectedListReferConfig(){
                // æ ‡è®°æ‰€æœ‰è¡¨å•是否通过校验的变量
                let isValid = true;
                // éåŽ†è¡¨å•æ•°ç»„ï¼Œä¾æ¬¡å¯¹æ¯ä¸ªè¡¨å•è¿›è¡Œæ ¡éªŒ
                await this.formRefs.forEach(ref => {
                    this.$refs[ref].validate((valid, done, msg) => {
                        if (!valid) {
                            for(let attr in msg) {
                                this.$message.warning(msg[attr][0].message);
                                break;
                            }
                            isValid = false;
                            //console.log(valid);
                        }
                        done();
                    })
                })
                // å¦‚果所有表单都校验通过,执行提交操作
                if (isValid) {
                    // æ ¹æ®ç±»åž‹å¯¹form表单中的参数进行过滤,只保留非空且需要的属性
                    let submitForm = this.filterForm();
                    // console.log(submitForm);
                    this.$emit('echoReferConfig', submitForm) // è§¦å‘update:data将子组件值传递给父组件
                    this.isShowReferConfigForm = false;
                }
            },
            /** å…¶å®žé€‰å–属性表格的默认数据不需要加载,
             ä½†æ˜¯å¼¹çª—打开会有表格错行问题所以需要在这调用doLayout方法*/
            onloadAttrData(){
                this.attrData = [
                this.codeShowFieldConfigVOS = [
                    {
                        field: 'id',
                        title: '编号',
                        fieldType: 'text',
                        fieldTypeText: '文本框',
                        sort: true,
                        sortField: 'id',
                        attrSortField: 'id',
                        width: '150',
                        isquery: true,
                        $cellEdit: false
@@ -1081,7 +1219,7 @@
                        fieldType: 'text',
                        fieldTypeText: '文本框',
                        sort: true,
                        sortField: 'name',
                        attrSortField: 'name',
                        width: '180',
                        isquery: true,
                        $cellEdit: false
@@ -1094,10 +1232,10 @@
            // å±žæ€§é€‰æ‹©è¡¨æ ¼ä¸­çš„移除按钮功能
            removeCurrentRow(row,condition){
                if(condition=='removeAttr'){
                    this.$delete(this.attrData, row.$index);
                    this.$delete(this.codeShowFieldConfigVOS, row.$index);
                    return;
                }
                this.$delete(this.addSearchCondtionData, row.$index);
                this.$delete(this.form.codeSrchCondConfigVOS, row.$index);
            },
            // è¯¥ç•Œé¢çš„æ•°æ®è¿›è¡Œåˆå§‹åŒ–复原
            recoveryDataAndForm(condition){
@@ -1133,7 +1271,9 @@
                    'paramForFormKey',
                    'isMuti',
                    'mapFields', 
                    'searchCondition',
                    'codeSrchCondConfigVOS',
                    'isOpenGlobal', //是否开启全局
                    'isPersistence',
                ];
                let addArray = [];
                let newForm ={};
@@ -1153,14 +1293,18 @@
                        'sortType'
                    ];
                }
                // å¼€å¯æŒä¹…化参照配置
                if(oldForm.isPersistence=='true' | oldForm.isPersistence){
                    submittDefaultForm =  submittDefaultForm.concat(['id','name'])
                }
                submittDefaultForm = submittDefaultForm.concat(addArray);
                if(!this.checkArrayIsUndefined(this.addSearchCondtionData)){
                if(!this.checkArrayIsUndefined(this.form.codeSrchCondConfigVOS)){
                    newForm = {
                        searchCondition: this.addSearchCondtionData,
                        codeSrchCondConfigVOS: this.form.codeSrchCondConfigVOS,
                    }
                }
                if((oldForm.type == 'default' || oldForm.type  == 'grid') && (this.attrData.length >= 0 && !this.checkArrayIsUndefined(this.addSearchCondtionData))){
                    newForm = Object.assign(newForm,{attrData:this.attrData});
                if((oldForm.type == 'default' || oldForm.type  == 'grid') && (this.codeShowFieldConfigVOS.length >= 0 && !this.checkArrayIsUndefined(this.codeShowFieldConfigVOS))){
                    newForm = Object.assign(newForm,{codeShowFieldConfigVOS:this.codeShowFieldConfigVOS});
                }
                // è¿‡æ»¤å‡ºç©ºå€¼å±žæ€§å’Œä¸éœ€è¦çš„属性
                submittDefaultForm.forEach(item=>{
@@ -1170,7 +1314,7 @@
                        newForm = Object.assign(newForm,{[item]:oldForm[item]});  
                    }
                });
                // console.log(newForm);
                //console.log(newForm);
                return newForm;
            },
            /**
@@ -1397,14 +1541,14 @@
                }
                //this.showFieldSelectList;
                this.showFieldSelectList.forEach(item => {
                    this.attrData.push(
                    this.codeShowFieldConfigVOS.push(
                        {
                            field: item.id,
                            title: item.id,
                            fieldType: item.attrType,
                            fieldTypeText: item.attrTypeText,
                            sort: false,
                            sortField: item.id,
                            attrSortField: item.id,
                            width: item.attrLength,
                            isquery: false,
                            $cellEdit: false
@@ -1459,16 +1603,17 @@
                this.sortFieldOnLoad();
            },
            selectedSearchCondition(){
                console.log(this.searchConditionSelectList);
                // console.log(this.searchConditionSelectList);
                if(this.searchConditionSelectList.length <= 0) {
                    this.$message.warning("请至少选择一条数据");
                    return;
                }
                this.searchConditionSelectList.forEach(item => {
                    this.addSearchCondtionData.push(
                    this.form.codeSrchCondConfigVOS.push(
                        {
                            filterField: item.id,
                            filterType: '=',
                            filterTypeText: item.name,
                            filterValue: '',
                            $cellEdit: false
                        }
Source/UBCS-WEB/src/components/code-dialog-page/tableEdit.vue
ÎļþÒÑɾ³ý
Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
<template>
  <vciWebReferTree v-if="refertype=='tree'" :defaultValue="defaultValue" :options="referConfig"></vciWebReferTree>
</template>
<script>
import vciWebReferTree from "./vciWebReferTree.vue";
export default {
  name: "vciWebRefer",
  props:["options"],
  components: { vciWebReferTree},
  data() {
    return {
      referConfig:this.options.referConfig,
      refertype:this.options.referConfig.type,
      defaultValue:this.options.defaultValue
    };
  },
  created() {
    if(this.refertype=='tree'){
      console.log('referConfig:')
      console.log(this.options)
    }
  },
  mounted() {
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
<template>
  <avue-input-tree default-expand-all v-model="defaultValue" :placeholder="placeholder" :dic="dicData"></avue-input-tree>
</template>
<script>
export default {
  name: "vciWebReferTree",
  props:["options","defaultValue"],
  data() {
    return {
      placeholder:'请选择内容',
      dicData:[{
        label:'选项1',
        value:0,
        children:[{
          label:'选项3',
          value:2
        },{
          label:'选项4',
          value:3
        }]
      },{
        label:'选项2',
        value:1
      }]
    };
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/components/transfer/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,224 @@
<template>
    <div class="el-transfer">
        <transfer-panel v-bind="$props" ref="leftPanel" :data="sourceData" :title="titles[0] || t('el.transfer.titles.0')"
            :default-checked="leftDefaultChecked" :placeholder="filterPlaceholder || t('el.transfer.filterPlaceholder')"
            @checked-change="onSourceCheckedChange">
            <slot name="left-footer"></slot>
        </transfer-panel>
        <div class="el-transfer__buttons">
            <el-button type="primary" :class="['el-transfer__button', hasButtonTexts ? 'is-with-texts' : '']"
                @click.native="addToLeft" :disabled="rightChecked.length === 0">
                <i class="el-icon-arrow-left"></i>
                <span v-if="buttonTexts[0] !== undefined">{{ buttonTexts[0] }}</span>
            </el-button>
            <el-button type="primary" :class="['el-transfer__button', hasButtonTexts ? 'is-with-texts' : '']"
                @click.native="addToRight" :disabled="leftChecked.length === 0">
                <span v-if="buttonTexts[1] !== undefined">{{ buttonTexts[1] }}</span>
                <i class="el-icon-arrow-right"></i>
            </el-button>
        </div>
        <transfer-panel v-bind="$props" ref="rightPanel" :data="targetData" :title="titles[1] || t('el.transfer.titles.1')"
            :default-checked="rightDefaultChecked" :placeholder="filterPlaceholder || t('el.transfer.filterPlaceholder')"
            @checked-change="onTargetCheckedChange">
            <slot name="right-footer"></slot>
        </transfer-panel>
    </div>
</template>
<script>
import ElButton from 'element-ui/packages/button';
import Emitter from 'element-ui/src/mixins/emitter';
import Locale from 'element-ui/src/mixins/locale';
import TransferPanel from './transfer-panel.vue';
// import TransferPanel from './transfer-panel2.vue';
import Migrating from 'element-ui/src/mixins/migrating';
export default {
    name: 'ElTransfer',
    mixins: [Emitter, Locale, Migrating],
    components: {
        TransferPanel,
        ElButton
    },
    props: {
        data: {
            type: Array,
            default() {
                return [];
            }
        },
        titles: {
            type: Array,
            default() {
                return [];
            }
        },
        buttonTexts: {
            type: Array,
            default() {
                return [];
            }
        },
        filterPlaceholder: {
            type: String,
            default: ''
        },
        filterMethod: Function,
        leftDefaultChecked: {
            type: Array,
            default() {
                return [];
            }
        },
        rightDefaultChecked: {
            type: Array,
            default() {
                return [];
            }
        },
        renderContent: Function,
        value: {
            type: Array,
            default() {
                return [];
            }
        },
        format: {
            type: Object,
            default() {
                return {};
            }
        },
        filterable: Boolean,
        props: {
            type: Object,
            default() {
                return {
                    label: 'label',
                    key: 'key',
                    disabled: 'disabled'
                };
            }
        },
        targetOrder: {
            type: String,
            default: 'original'
        }
    },
    data() {
        return {
            leftChecked: [],
            rightChecked: []
        };
    },
    computed: {
        dataObj() {
            const key = this.props.key;
            return this.data.reduce((o, cur) => (o[cur[key]] = cur) && o, {});
        },
        sourceData() {
            return this.data.filter(item => this.value.indexOf(item[this.props.key]) === -1);
        },
        targetData() {
            if (this.targetOrder === 'original') {
                return this.data.filter(item => this.value.indexOf(item[this.props.key]) > -1);
            } else {
                return this.value.reduce((arr, cur) => {
                    const val = this.dataObj[cur];
                    if (val) {
                        arr.push(val);
                    }
                    return arr;
                }, []);
            }
        },
        hasButtonTexts() {
            return this.buttonTexts.length === 2;
        }
    },
    watch: {
        value:{
            handler(val) {
            this.dispatch('ElFormItem', 'el.form.change', val);
        },
        immediate:true,
        deep:true
    }
    },
    methods: {
        getMigratingConfig() {
            return {
                props: {
                    'footer-format': 'footer-format is renamed to format.'
                }
            };
        },
        onSourceCheckedChange(val, movedKeys) {
            this.leftChecked = val;
            if (movedKeys === undefined) return;
            this.$emit('left-check-change', val, movedKeys);
        },
        onTargetCheckedChange(val, movedKeys) {
            this.rightChecked = val;
            if (movedKeys === undefined) return;
            this.$emit('right-check-change', val, movedKeys);
        },
        addToLeft() {
            let currentValue = this.value.slice();
            this.rightChecked.forEach(item => {
                const index = currentValue.indexOf(item);
                if (index > -1) {
                    currentValue.splice(index, 1);
                }
            });
            this.$emit('input', currentValue);
            this.$emit('change', currentValue, 'left', this.rightChecked);
        },
        addToRight() {
            let currentValue = this.value.slice();
            let itemsToBeMoved = [];
            const key = this.props.key;
            this.data.forEach(item => {
                const itemKey = item[key];
                if (
                    this.leftChecked.indexOf(itemKey) > -1 &&
                    this.value.indexOf(itemKey) === -1
                ) {
                    // itemsToBeMoved.push(itemKey)
                    itemsToBeMoved = [itemKey]
                    console.log(itemsToBeMoved)
                }
            });
            // currentValue = this.targetOrder === 'unshift'
            //     ? itemsToBeMoved.concat(currentValue)
            //     : currentValue.concat(itemsToBeMoved);
            currentValue = itemsToBeMoved
            this.$emit('input', currentValue);
            this.$emit('change', currentValue, 'right', this.leftChecked);
        },
        clearQuery(which) {
            if (which === 'left') {
                this.$refs.leftPanel.query = '';
            } else if (which === 'right') {
                this.$refs.rightPanel.query = '';
            }
        }
    }
};
</script>
Source/UBCS-WEB/src/components/transfer/transfer-panel.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,232 @@
<template>
    <div class="el-transfer-panel">
        <p class="el-transfer-panel__header">
                {{ title }}
        </p>
        <div :class="['el-transfer-panel__body', hasFooter ? 'is-with-footer' : '']">
            <el-input class="el-transfer-panel__filter" v-model="query" size="small" :placeholder="placeholder"
                @mouseenter.native="inputHover = true" @mouseleave.native="inputHover = false" v-if="filterable">
                <i slot="prefix" :class="['el-input__icon', 'el-icon-' + inputIcon]" @click="clearQuery"></i>
            </el-input>
            <el-radio-group v-model="checked" v-show="!hasNoMatch && data.length > 0"
                :class="{ 'is-filterable': filterable }" class="el-transfer-panel__list">
                <el-radio class="el-transfer-panel__item" :label="item[keyProp]" :disabled="item[disabledProp]"
                    :key="item[keyProp]" v-for="item in filteredData"><option-content
                        :option="item"></option-content></el-radio>
            </el-radio-group>
            <p class="el-transfer-panel__empty" v-show="hasNoMatch">{{ t('el.transfer.noMatch') }}</p>
            <p class="el-transfer-panel__empty" v-show="data.length === 0 && !hasNoMatch">{{ t('el.transfer.noData') }}</p>
        </div>
        <p class="el-transfer-panel__footer" v-if="hasFooter">
            <slot></slot>
        </p>
    </div>
</template>
<script>
import ElCheckboxGroup from 'element-ui/packages/checkbox-group';
import ElCheckbox from 'element-ui/packages/checkbox';
import ElInput from 'element-ui/packages/input';
import Locale from 'element-ui/src/mixins/locale';
export default {
    mixins: [Locale],
    name: 'ElTransferPanel',
    componentName: 'ElTransferPanel',
    components: {
        ElCheckboxGroup,
        ElCheckbox,
        ElInput,
        OptionContent: {
            props: {
                option: Object
            },
            render(h) {
                const getParent = vm => {
                    if (vm.$options.componentName === 'ElTransferPanel') {
                        return vm;
                    } else if (vm.$parent) {
                        return getParent(vm.$parent);
                    } else {
                        return vm;
                    }
                };
                const panel = getParent(this);
                const transfer = panel.$parent || panel;
                return panel.renderContent
                    ? panel.renderContent(h, this.option)
                    : transfer.$scopedSlots.default
                        ? transfer.$scopedSlots.default({ option: this.option })
                        : <span>{this.option[panel.labelProp] || this.option[panel.keyProp]}</span>;
            }
        }
    },
    props: {
        data: {
            type: Array,
            default() {
                return [];
            }
        },
        renderContent: Function,
        placeholder: String,
        title: String,
        filterable: Boolean,
        format: Object,
        filterMethod: Function,
        defaultChecked: Array,
        props: Object
    },
    data() {
        return {
            checked: [],
            allChecked: false,
            query: '',
            inputHover: false,
            checkChangeByUser: true
        };
    },
    watch: {
        checked(val, oldVal) {
            this.updateAllChecked();
            let vals = Array.isArray(val)? val:[val]
            let oldVals = Array.isArray(oldVal)? oldVal:[oldVal]
            if (this.checkChangeByUser) {
                const movedKeys = vals.concat(oldVals)
                    .filter(v => vals.indexOf(v) === -1 || oldVals.indexOf(v) === -1);
                this.$emit('checked-change', vals,movedKeys);
            } else {
                this.$emit('checked-change', vals);
                this.checkChangeByUser = true;
            }
        },
        data() {
            const checked = [];
            const filteredDataKeys = this.filteredData.map(item => item[this.keyProp]);
            let checkeds = Array.isArray(this.checked)? this.checked:[this.checked]
            checkeds.forEach(item => {
                if (filteredDataKeys.indexOf(item) > -1) {
                    checked.push(item);
                }
            });
            this.checkChangeByUser = false;
            this.checked = checked;
        },
        checkableData() {
            this.updateAllChecked();
        },
        defaultChecked: {
            immediate: true,
            handler(val, oldVal) {
                if (oldVal && val.length === oldVal.length &&
                    val.every(item => oldVal.indexOf(item) > -1)) return;
                const checked = [];
                const checkableDataKeys = this.checkableData.map(item => item[this.keyProp]);
                val.forEach(item => {
                    if (checkableDataKeys.indexOf(item) > -1) {
                        checked.push(item);
                    }
                });
                this.checkChangeByUser = false;
                this.checked = checked;
            }
        }
    },
    computed: {
        filteredData() {
            return this.data.filter(item => {
                console.log(item)
                if (typeof this.filterMethod === 'function') {
                    return this.filterMethod(this.query, item);
                } else {
                    const label = item[this.labelProp] || item[this.keyProp].toString();
                    return label.toLowerCase().indexOf(this.query.toLowerCase()) > -1;
                }
            });
        },
        checkableData() {
            return this.filteredData.filter(item => !item[this.disabledProp]);
        },
        checkedSummary() {
            const checkedLength = this.checked.length;
            const dataLength = this.data.length;
            const { noChecked, hasChecked } = this.format;
            if (noChecked && hasChecked) {
                return checkedLength > 0
                    ? hasChecked.replace(/\${checked}/g, checkedLength).replace(/\${total}/g, dataLength)
                    : noChecked.replace(/\${total}/g, dataLength);
            } else {
                return `${checkedLength}/${dataLength}`;
            }
        },
        isIndeterminate() {
            const checkedLength = this.checked.length;
            return checkedLength > 0 && checkedLength < this.checkableData.length;
        },
        hasNoMatch() {
            return this.query.length > 0 && this.filteredData.length === 0;
        },
        inputIcon() {
            return this.query.length > 0 && this.inputHover
                ? 'circle-close'
                : 'search';
        },
        labelProp() {
            return this.props.label || 'label';
        },
        keyProp() {
            return this.props.key || 'key';
        },
        disabledProp() {
            return this.props.disabled || 'disabled';
        },
        hasFooter() {
            return !!this.$slots.default;
        }
    },
    methods: {
        updateAllChecked() {
            const checkableDataKeys = this.checkableData.map(item => item[this.keyProp]);
            this.allChecked = checkableDataKeys.length > 0 &&
                checkableDataKeys.every(item => this.checked===item);
        },
        handleAllCheckedChange(value) {
            this.checked = value
                ? this.checkableData.map(item => item[this.keyProp])
                : [];
        },
        clearQuery() {
            if (this.inputIcon === 'circle-close') {
                this.query = '';
            }
        }
    }
};
</script>
Source/UBCS-WEB/src/const/code/selectAttrOptionDialog.js
@@ -11,6 +11,8 @@
    viewBtn: false,
    selection: true,
    menu: false,
    columnBtn: false,
    searchShowBtn: false, //    è¡¨æ ¼æœç´¢æ˜¾éšæŒ‰é’®
    dialogClickModal: false,
    highlightCurrentRow: true,
    column: [
@@ -30,12 +32,12 @@
      },
      {
        label: "属性长度",
        prop: "attrLength",
        prop: "attrlength",
        search: false,
      },
      {
        label: "属性类型",
        prop: "attributeDataTypeText",
        prop: "attributedatatypetext",
        search: false,
      }
    ]
Source/UBCS-WEB/src/const/code/selectattroption.js
ÎļþÒÑɾ³ý
Source/UBCS-WEB/src/main.js
@@ -40,7 +40,12 @@
import referConfigCrudDialog from "@/components/code-dialog-page/referConfigCrudDialog"
import referConfigFormDialog from "@/components/code-dialog-page/referConfigFormDialog"
import businessAdd from "@/views/modeling/BusinessAdd"
import TableCrud from "@/components/Crud/Crud"
import originalAdd from "@/views/modeling/originalAdd"
// å°†å·¥å…·å‡½æ•°æ·»åŠ åˆ°å…¨å±€
import utilFunc from './util/func'
Vue.prototype.$utilFunc = utilFunc
// æ³¨å†Œå…¨å±€crud驱动
window.$crudCommon = crudCommon;
// åŠ è½½Vue拓展
@@ -78,7 +83,8 @@
Vue.component('referConfigFormDialog',referConfigFormDialog)
Vue.component('businessAdd',businessAdd)
Vue.component('attrCrud',attrCrud)
Vue.component('TableCrud',TableCrud)
Vue.component('originalAdd',originalAdd)
// åŠ è½½ç›¸å…³url地址
Source/UBCS-WEB/src/util/func.js
@@ -102,4 +102,12 @@
    }
    return str;
  }
  /**
   * åˆ¤æ–­æ˜¯å¦ä¸ºå¯¹è±¡å¹¶ä¸ä¸ºç©ºå¯¹è±¡
   * @param value
   * @returns {Boolean}
   */
  static isValuableObj(value) {
    return typeof value === 'object' && value !== null && Object.keys(value).length > 0;
  }
}
Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue
@@ -1,11 +1,19 @@
<template>
  <div></div>
</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>
  </div>
</template>codeClassifyOid
<script>
import FormTemplate from "../../components/FormTemplate/index";
export default {
  name: "FormTempalteTest",
  components: { FormTemplate },
  data() {
    return {
      visible: false,
    };
  },
};
</script>
<style lang='less' scoped>
</style>
Source/UBCS-WEB/src/views/MasterData/items.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
<template>
    <el-container>
      <el-aside>
        <basic-container style="height: 85vh; max-height: 155vh; overflow-y: scroll;">
          <avue-tree  :option="option" :data="data"  v-model="form" style="height: 80.5vh;padding-top: 5px;padding-bottom: 30px"></avue-tree>
        </basic-container>
      </el-aside>
      <el-main>
      <TableCrud></TableCrud>
      </el-main>
    </el-container>
</template>
<script>
export default {
  name: "items.vue",
  data(){
    return{
      form:{},
      data:[
        {
          value:0,
          label:'一级部门',
          children:[
            {
              value:1,
              label:'一级部门1',
            },{
              value:2,
              label:'一级部门2',
            }
          ]
        },{
          value:3,
          label:'二级部门',
          children:[
            {
              value:4,
              label:'二级部门1',
            },{
              value:5,
              label:'二级部门2',
            }
          ]
        }
      ],
      option:{
        title:'我是标题',
        filterText:"搜索关键字自定义",
        defaultExpandAll:true,
        addBtnText:'新增自定义文案',
        editBtnText:'修改自定义文案',
        delBtnText:'删除自定义文案',
        defaultExpandedKeys:[1],
        height:900,
        formOption:{
          labelWidth:100,
          column:[{
            label:'自定义项',
            prop:'label'
          }],
        },
        props:{
          labelText:'标题',
          label:'label',
          value:'value',
          children:'children'
        }
      }
    }
  }
}
</script>
<style scoped>
</style>
Source/UBCS-WEB/src/views/code/code.vue
@@ -259,7 +259,7 @@
            size="small"
            icon="el-icon-plus"
            :disabled="selectionList.length <= 0"
            @click="addBasicCodeSec">
            @click="openAddBasicCodeSec">
            æ–° å¢ž
        </el-button>
        <el-button type="danger"
@@ -680,7 +680,7 @@
                  :option="attrOption"
                  :table-loading="selectAttrOptionLoading"
                  ref="selectionAttrCrud"
                  @search-change="selectAttrOptionSearchChange"
                  @search-change="selectAttrSearchChange"
                  @search-reset="searchAttrReset"
                  @row-click="selectionAttrRowClick"
                  @selection-change="selectionChangeAttr">
@@ -760,11 +760,13 @@
      <!-- ç¬¬äºŒå±‚对话框,自定义参照配置Form组件 -->
      <refer-config-form-dialog
        ref="referConfigFormDialog"
        @echoReferConfig="echoReferConfig" >
        @echoReferConfig="echoReferConfig">
      </refer-config-form-dialog>
      <!-- ç¬¬äºŒå±‚对话框,直接选择参照配置curd组件 -->
      <!-- ç¬¬äºŒå±‚对话框,直接选择参照配置crud组件 -->
      <refer-config-crud-dialog
        ref="referConfigCrudDialog">
        ref="referConfigCrudDialog"
        @openReconfigInterFace="openReconfigInterFace"
        @echoReferConfig="echoReferConfig">
      </refer-config-crud-dialog>
    </el-dialog>
@@ -1121,6 +1123,7 @@
        /* å¼•用码段参照配置,子组件填完参照配置之后内容回显时调用 */
        echoReferConfig(content){
          // console.log(content.referTypeName);
          this.form.referBtmId = content.referType;
          this.form.referBtmName = content.referTypeName;
          //转换成JSON字符串进行父组件回显
@@ -1274,19 +1277,13 @@
          //这儿还需要完善
          this.selectAttrOptionLoading = true;
          listClassifyLinkAttr({"page": 1,"limit": -1,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}).then(res=>{
          //console.log(res.data.data);
          //造假数据
          let dataInfo =[
            {"id":"address","name":"会议室地址","oid":"058D840D-1010-A7DE-7C52-B39C03CE89C1","attrLength":"150","description":"","attributeDataTypeText":"字符串"},
            {"id":"businesslicensetype","name":"营业执照类型","oid":"BDAC6D3E-1827-35A0-F3CA-0E58A43F6A07","attrLength":"255","description":"营业执照类型","attributeDataTypeText":"字符串"},
            {"id":"certificatenumber","name":"保密证编号","oid":"E2BC8332-A721-3713-26C3-C9F6340C2C1D","attrLength":"255","description":"保密证编号","attributeDataTypeText":"字符串"},
          ]
          this.selectattrData = dataInfo;
          this.selectAttrOptionLoading = false;
            console.log(res.data.data);
            this.selectattrData = res.data.data;
            this.selectAttrOptionLoading = false;
          })
        },
        // ç‚¹å‡»æœç´¢åŽè§¦å‘该事件
        selectAttrOptionSearchChange(params, done) {
        selectAttrSearchChange(params, done) {
          this.query = params;
          //console.log(params);  //这儿需要改
          this.loadlistClassifyLinkAttr(Object.assign(params,{'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}));
@@ -1663,7 +1660,7 @@
          // this.changeSectypeFormItems(null);
        },
        // æ‰“开新增窗口
        addBasicCodeSec(){
        openAddBasicCodeSec(){
          if(!this.tipsMessage(this.selectionList)){
            return;
          }
@@ -1709,10 +1706,10 @@
          if(this.form.oid == '' || this.form.oid == null){
            if(this.checkForm()){
              addSave(this.form).then(() => {
              this.$message({
                type: "success",
                message: "操作成功!"
              });
                this.$message({
                  type: "success",
                  message: "操作成功!"
                });
              }, error => {
                window.console.log(error);
              });
@@ -2373,7 +2370,6 @@
          });
        },
        /** ç¬¬ä¸€å±‚对话框相关方法 */
        // æ‰“开二层对话框方法
        openAttrSelectOrGetValue(condition){
@@ -2389,20 +2385,26 @@
            this.refreshReferBtmDataChange();
          }else if(condition === 'referConfig'){
            if(func.notEmpty(this.form.referConfig) || func.notEmpty(this.form.referBtmName)){
              this.$refs.referConfigFormDialog.isShowReferConfig = true;
              let value = {
                referTypeName: this.form.referBtmName,
                referType: this.form.referBtmId,
                referConfig: this.form.referConfig,
              }
              this.$refs.referConfigFormDialog.initPageData(value);
              this.openReconfigInterFace(this.form);
            }else{
              this.openTipsChooseOrCust();
            }
             //this.$refs.referConfigFormDialog.onloadAttrData();
          }
        },
        // æ‰“开自定义参照配置或直接选择参照配置界面
        // å½“前已存在编辑过的参展配置,所以直接打开参照配置界面
        openReconfigInterFace(preReferConfigForm){
          // console.log(preReferConfigForm);
          this.$refs.referConfigFormDialog.isShowReferConfigForm = true;
              let value = {
                referTypeName: preReferConfigForm.referBtmName,
                referType: preReferConfigForm.referBtmId,
                referConfig: preReferConfigForm.referConfig,
              }
              this.$refs.referConfigFormDialog.initPageData(value);
        },
        // æ‰“开自定义参照配置或直接选择参照配置的提示框
        openTipsChooseOrCust(){
          this.$confirm('请选择参照配置的定义方式?','参照配置的方式', {
            distinguishCancelAndClose: true,
@@ -2441,6 +2443,7 @@
            this.form.parentClassifySecOid = '';
          }else if(condition === 'referBtmId'){
            this.form.referBtmId = '';
            this.form.referBtmName = '';
            this.form.referConfig = '';
          }else if(condition === 'referConfig'){
            this.form.referConfig = '';
@@ -2510,7 +2513,7 @@
              serialStart: row!=null&&row.serialStart != '' ? row.serialStart:1,  //流水号起始值
              serialStep: row!=null&&row.serialStep != '' ? row.serialStep:1,   //流水的步长
              codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码补位方式
              codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:0,    //补位时的字符,选中的下拉框的下标
              codeFillSeparatorSelect: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparatorSelect:0,    //补位时的字符,选中的下拉框的下标
              codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:0,          //补位时的字符
              codeFillLength: row!=null&&row.codeFillLength != '' ? row.codeFillLength:'',              //填充长度
              codeFillLimit: row!=null&&row.codeFillLimit != '' ? row.codeFillLimit:'',               //流水上限
@@ -2569,7 +2572,7 @@
        },
        //枚举和可输可选内容查询
        loadCodeSecType(){
          getDictionary({code: "codeBasicSecType"}).then(res=>{
          getDictionary({code: "codeSecType"}).then(res=>{
            this.sectypeList = res.data.data;
          })
          this.loadCodeSecLength();
Source/UBCS-WEB/src/views/flow/flowPath.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,191 @@
<template>
    <div>
        <el-button @click="outerVisible = true">流程测试</el-button>
        <el-dialog :title="`执行${title}`" width="90%" append-to-body="true" :visible.sync="outerVisible">
            <div class="dialogwarp">
                <div class="dialogwarp_tab">
                    <el-card class="dialogwarp_tab_card">
                        <el-tabs v-model="activeName" @tab-click="handleClick">
                            <el-tab-pane label="业务数据信息" name="first">
                            </el-tab-pane>
                            <el-tab-pane label="流程跟踪" name="second">
                                <avue-crud :data="data" :option="option" ref="crud">
                                </avue-crud>
                                <div style="padding: 10px 0; width: 100%; height: 100% ">
                                    <el-image :src="url" flt="fill"></el-image>
                                </div>
                            </el-tab-pane>
                        </el-tabs>
                    </el-card>
                </div>
                <div class="dialogwarp_card">
                    <el-card class="box-card">
                        <div slot="header" class="clearfix">
                            <span>当前任务:</span>
                            <span>{{ title }}</span>
                        </div>
                        <div style="width: 100%;">
                            <p>请在下方输入您的审批意见:</p>
                            <el-input type="textarea" :rows="4" placeholder="请输入内容" show-word-limit v-model="opinionVal">
                            </el-input>
                        </div>
                        <div style="width: 100%;">
                            <p>审批意见附件:</p>
                            <el-upload drag action="https://jsonplaceholder.typicode.com/posts/" multiple
                                style="width: 100%;">
                                <i class="el-icon-upload"></i>
                                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
                            </el-upload>
                        </div>
                        <div style="width: 100%;">
                            <p>已上传审批文件:</p>
                            <el-card class="box-card">
                                <el-table :data="tableData" stripe style="width: 100%">
                                    <el-table-column prop="date" label="文件名">
                                    </el-table-column>
                                    <el-table-column prop="name" label="上传人  ">
                                    </el-table-column>
                                    <el-table-column prop="address" label="操作">
                                    </el-table-column>
                                </el-table>
                            </el-card>
                        </div>
                        <div style="margin-top: 20px;">
                            <el-button v-if="!isRefuse" type="primary" size="mini" @click="handelAgree">同意</el-button>
                            <el-button v-if="!isAgree" type="primary" size="mini" @click="handelRefuse">不同意</el-button>
                            <el-button v-if="isAgree && !isRefuse" type="primary" size="mini" @click="handelRevert"
                                v-for="item in btnList" :key="item">{{ item }}</el-button>
                            <el-button v-if="isRefuse" type="primary" size="mini" @click="handelExecute">执行</el-button>
                        </div>
                    </el-card>
                </div>
            </div>
        </el-dialog>
    </div>
</template>
<script>
export default {
    data() {
        return {
            outerVisible: false,
            destroyClose: true,
            activeName: 'first',
            fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
            url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
            title: '业务测试-申请-物品-审核',
            data: [
                {
                    name: '张三',
                    sex: '男'
                }, {
                    name: '李四',
                    sex: '女'
                }, {
                    name: '李四',
                    sex: '女'
                }, {
                    name: '李四',
                    sex: '女'
                }
            ],
            btnList: ['返回1', '返回1', '返回1'],
            isAgree: false,
            isRefuse: false,
            opinionVal: '',
            option: {
                menu: false,
                addBtn: false,
                refreshBtn: false,
                columnBtn: false,
                index: true,
                header: false,
                stripe: true,
                indexLabelClassName: '序号',
                column: [
                    { label: '任务名称', prop: 'name', minWidth: 120 },
                    { label: '执行操作', prop: 'sex', minWidth: 80 },
                    { label: '任务开始时间', prop: 'sex', minWidth: 140 },
                    { label: '审批意见', prop: 'sex', minWidth: 220, overHidden: true },
                    { label: '执行人', prop: 'sex', minWidth: 80 },
                    { label: '任务完成时间', prop: 'sex', minWidth: 140 },
                    { label: '已上传审批文件', prop: 'sex', minWidth: 220, overHidden: true },
                ]
            },
        }
    },
    methods: {
        closeDialog() {
            this.destroyClose = true
            this.outerVisible = false
        },
        handleClick(tab, event) {
            console.log(event)
        },
        handelAgree() {
            this.isAgree = !this.isAgree
            this.outerVisible = false
            console.log(this.isAgree)
        },
        handelRefuse() {
            if (!this.opinionVal) {
                this.$alert('当处理方式为不同意时,需要填写审批意见', '提示信息', {
                    confirmButtonText: '确定',
                }).then(() => {
                });
            } else {
                this.isRefuse = true
                this.isAgree = true
                this.outerVisible = false
                this.opinionVal = ''
            }
        },
        handelExecute() {
            this.outerVisible = false
            this.isAgree = false
            this.isRefuse = false
        },
        handelRevert() {
            this.outerVisible = false
            this.isAgree = false
        }
    }
}
</script>
<style lang="scss" scoped>
.dialogwarp {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    justify-content: space-between;
    height: 70vh;
    &_tab {
        width: 79%;
        &_card {
            width: 100%;
            height: 100%;
        }
    }
    &_card {
        // margin-left: 20px;
        width: 20%;
    }
}
/deep/ .el-upload,
/deep/ .el-upload-dragger {
    width: 100%;
    height: 120px;
}
/deep/ .el-upload-dragger .el-icon-upload {
    margin: 15px 0 16px;
}
</style>
Source/UBCS-WEB/src/views/integration/integrationIndex.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,342 @@
<template>
    <div>
        <el-container style="height: 100%; border: 1px solid #fff">
            <el-card :style="{ marginRight: '10px' }">
                <el-aside width="300px" style="background-color: #fff">
                    <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>
                    </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-card :style="{ marginTop: '20px' }">
                        <avue-crud :data="tableData" :option="optinos" ref="crud" @row-update="addUpdate"
                            @row-save="rowSave" @row-click="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>
    </div>
</template>
<script>
import transfer from '@/components/transfer/index'
import pinyin from 'js-pinyin'
export default {
    components: {
        transfer
    },
    data() {
        const generateData = () => {
            pinyin.setOptions({ checkPolyphone: false, charCase: 1 });
            const data = [];
            const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都'];
            cities.forEach((city, index) => {
                data.push({
                    label: city,
                    key: index,
                    pinyin: pinyin.getFullChars(city),
                    pinyins: pinyin.getCamelChars(city),
                });
            });
            return data;
        };
        return {
            form: {
                name: '',
            },
            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: '',
                }
            ],
            filterText: '',
            optinos: {
                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,
                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 },
                ]
            },
            option: {
                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,
                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 },
                ]
            },
            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'
                }]
            }],
            defaultProps: {
                children: 'children',
                label: 'label'
            }
        }
    },
    watch: {
        filterText(val) {
            this.$refs.tree.filter(val);
        }
    },
    created() {
        pinyin.setOptions({ checkPolyphone: false, charCase: 1 });
        console.log(pinyin.getFullChars('管理员'))
        console.log(pinyin.getCamelChars('管理员'))
    },
    methods: {
        filterNode(value, data) {
            if (!value) return true;
            return data.label.indexOf(value) !== -1;
        },
        handleSave() {
        },
        handlePush() {
        },
        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) {
            return item.pinyins.indexOf(this.form.name) > -1;
        },
    }
}
</script>
<style lang="scss" scoped>
.text_tip {
    padding: 10px 0;
    color: #F56C6C;
}
/deep/ .el-transfer-panel__list {
    width: 100%;
}
/deep/ .el-input {
    width: auto;
}
/deep/ .el-transfer-panel {
    width: 270px;
}
/deep/ .el-transfer-panel__list {
    height: 370px;
}
/deep/ .el-transfer-panel__body {
    height: 370px;
}
</style>
Source/UBCS-WEB/src/views/modeling/classifyTree.vue
@@ -15,6 +15,7 @@
      crudTreeOption: {
        index: true,
        border: true,
        height:180,
        column: [
          {
            label: "模板编号",
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -2,22 +2,30 @@
  <el-container>
    <el-main>
      <basic-container>
        <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave"
          @row-update="rowUpdate" :before-open="beforeOpen" @row-del="rowDel" :page.sync="page"
          @refresh-change="refreshChange" @row-click="rowClick"
          @selection-change="selectChange">
          <template slot-scope="{row,index,type}" slot="selInputForm">
          <div style="margin-left: 75px">
            <el-input v-model="form.text" :size="size" style="width: 210px" :readonly="true" @focus="selectBtmType" :disabled="referType.disable"></el-input>
          </div>
        </template>
        <template slot="radio"
                slot-scope="{row}">
                    <el-radio v-model="selectRow"
                        :label="row.$index">&nbsp;
                    </el-radio>
        <avue-crud v-model="form"
          ref="crud"
          :option="option"
          :data="data"
          @on-load="onLoad"
          :page.sync="page"
          @refresh-change="refreshChange"
          @row-click="rowClick">
               <template slot="radio"
                  slot-scope="{row}">
                      <el-radio v-model="selectRow"
                          :label="row.$index">&nbsp;
                      </el-radio>
                </template>
          <template slot="menu">
             <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave">编辑</el-button>
             <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave">删除</el-button>
          </template>
         <template slot="menuLeft">
            <el-button size="small"
              type="primary"
              icon="el-icon-plus"
              @click="addSave">新&nbsp;&nbsp;增
            </el-button>
            <el-button size="small"
                       plain
                       type="primary"
@@ -31,76 +39,105 @@
            <avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable"
            ></avue-crud>
        </el-dialog>
        <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px">
          <original-range @rowchange="rowchange"></original-range>
          <span slot="footer" class="dialog-footer">
            <el-button @click="dialoghandelfalse">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="dialoghandeltrue">ç¡® å®š</el-button>
          </span>
        </el-dialog>
        <!-- <el-dialog :visible.sync="packageLinkBox" append-to-body title="查看链接类型" width="1000px">
          <original-link @rowLinkchange="rowLinkchange"></original-link>
          <span slot="footer" class="dialog-footer">
            <el-button @click="Linkdialoghandelfalse">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="Linkdialoghandeltrue">ç¡® å®š</el-button>
          </span>
        </el-dialog> -->
      </basic-container>
    </el-main>
    <el-aside>
      <basic-container class="itemForm">
        <el-tabs v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="属性项" name="attrTab">
            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
              <el-form-item label="属性编码">
                <el-input v-model="itemData.id" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="属性名称">
                <el-input v-model="itemData.name" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="属性类型">
                <el-input v-model="itemData.typeValue" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="标签">
                <el-input v-model="itemData.hashtag" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="默认值">
                <el-input v-model="itemData.defaultValue" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="允许为空">
                <el-switch v-model="itemData.nullable" :disabled="true"></el-switch>
              </el-form-item>
              <el-form-item label="长度">
                <el-input v-model="itemData.maxLength" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="描述">
                <el-input v-model="itemData.description" :disabled="true"></el-input>
              </el-form-item>
            </el-form>
          </el-tab-pane>
          <el-tab-pane label="参照" name="valueTab">
            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
              <el-form-item label="参照类型">
                <el-input v-model="itemData.referTypeValue" :disabled="true"></el-input>
              </el-form-item>
              <el-form-item label="参照名称">
                <el-input v-model="itemData.referToName" :disabled="true"></el-input>
              </el-form-item>
            </el-form>
            <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项">
              <el-descriptions-item>
                <template slot="label">
                  å±žæ€§ç¼–号
                </template>
                {{ itemForm.itemData.id }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å±žæ€§åç§°
                </template>
                {{ itemForm.itemData.name }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å±žæ€§ç±»åž‹
                </template>
                {{ itemForm.itemData.typeValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  æ ‡ç­¾
                </template>
                {{ itemForm.itemData.hashtag }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  é»˜è®¤å€¼
                </template>
                {{ itemForm.itemData.defaultValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å…è®¸ä¸ºç©º
                </template>
                {{ itemForm.itemData.nullable }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  é•¿åº¦
                </template>
                {{ itemForm.itemData.maxLength }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  æè¿°
                </template>
                {{ itemForm.itemData.description }}
              </el-descriptions-item>
            </el-descriptions>
            <div style="height:15px"></div>
        <el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions>
        <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
        <el-tab-pane label="参照" name="referTab">
            <el-descriptions class="margin-top" :column="1" size="medium" border>
              <el-descriptions-item>
                <template slot="label">
                  ä½¿ç”¨å‚ç…§
                </template>
                {{ itemForm.itemData.referTypeValue ? '是' : '否' }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å‚照类型
                </template>
                {{ itemForm.itemData.referTypeValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  å‚照名称
                </template>
                {{ itemForm.itemData.referToName }}
              </el-descriptions-item>
            </el-descriptions>
          </el-tab-pane>
          <el-tab-pane label="枚举" name="enumTab">
            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
              <el-form-item label="使用枚举">
                <el-switch v-model="itemData.usingDict" :disabled="true"></el-switch>
              </el-form-item>
              <el-form-item label="枚举类型">
                <el-input v-model="form.dictCode" :disabled="true"></el-input>
              </el-form-item>
            </el-form>
            <el-descriptions class="margin-top" :column="1" :size="small" border>
              <el-descriptions-item>
                <template slot="label">
                  ä½¿ç”¨æžšä¸¾
                </template>
                {{ itemForm.itemData.usingDict ? '是' : '否' }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  æžšä¸¾ç±»åž‹
                </template>
                {{ itemForm.itemData.dictCode }}
              </el-descriptions-item>
            </el-descriptions>
          </el-tab-pane>
        </el-tabs>
      </basic-container>
    </el-aside>
    <originalAdd ref="originalAdd" :attribute="attribute" @refreshTable="refreshChange"></originalAdd>
  </el-container>
</template>
@@ -112,52 +149,21 @@
  update, getPage, getApplyRange
} from "@/api/omd/OmdAttribute";
import { getDictionary } from "@/api/omd/enum";
export default {
  name: "original",
  data() {
    return {
      datas: [],
      itemData: {},
      activeName: 'attrTab',
      formAtrr: {},
      rouname: "",
      referType: {
        code: 'referType',
        key: '',
        value: '',
        display: false,
        title: '',
        disable: true
      },
      //值域下拉框数据
      Typelist: [],
      //版本数据
      banList: [],
      // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†æ•°æ®
      typeSelectList: [
        {
          label: "哈哈哈",
          value: 0
        },],
      // æ˜¯å¦ä¸ºç©º
      nullable: [],
      form: {
        text: ""
      },
      detailForm: {
        text: ""
      },
    return {
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 100
      },
      selectRow: '',
      data: [
      ],
      data: [],
      form:{},
      attribute: {
        nullable: true
      },
      option: {
        height: "550px",
        headerAlign: 'center',
@@ -165,7 +171,13 @@
        index: true,
        rowKey: 'id',
        tabs: true,
        stripe:true,
        indexFixed: false,
        menuWidth: 150,
        highlightCurrentRow: true,
        addBtn:false,
        editBtn:false,
        delBtn:false,
        column: [{
            label: '选择',
            prop: 'radio',
@@ -178,7 +190,8 @@
            prop: 'id',
            align: 'left',
            display: false,
            width: 200
            width: 200,
            required: true
          }, {
            label: '属性名称',
            prop: 'name',
@@ -200,10 +213,10 @@
            display: false,
            dicData: [{
              label: '是',
              value: 0
              value: 'true'
            }, {
              label: '否',
              value: 1
              value: 'false'
            }]
          },
          {
@@ -226,10 +239,10 @@
            labelWidth: 132,
            dicData: [{
              label: '否',
              value: 1
              value: 'false'
            }, {
              label: '是',
              value: 0
              value: 'true'
            }]
          },
          {
@@ -244,195 +257,6 @@
            type: "textarea",
            display: false
          },
        ],
        group: [
          {
            label: '属性项',
            prop: "index",
            column: [
              {
                label: '属性编号',
                prop: 'id',
                align: 'left',
              },
              {
                label: '属性名称',
                prop: 'name',
                align: 'left',
              },
              {
                label: '标签',
                prop: 'hashtag',
                hide: true
              }, {
                label: '属性类型字典码',
                prop: 'typeCode',
                display: false,
                value: 'attributeType'
              },
              {
                label: '属性类型',
                prop: 'typeKey',
                type: "select",
                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=attributeType',
                dicType: 'String',
                props: {
                  label: 'dictValue',
                  value: 'dictKey'
                },
                rules: [
                  {
                    required: true,
                    message: "请选择属性类型",
                    trigger: "click"
                  }
                ]
              },
              {
                label: '默认值',
                prop: 'defaultValue',
              },
              {
                label: '允许为空',
                prop: 'nullable',
                type: 'switch',
                hide: true,
                labelWidth: 132,
                dicData: [{
                  label: '否',
                  value: 1
                }, {
                  label: '是',
                  value: 0
                }]
              },
              {
                label: "长度",
                prop: "maxLength",
                hide: true
              },
              {
                label: '描述',
                prop: 'description',
                type: "textarea"
              },
            ]
          },
          {
            label: '参照',
            column: [
              {
                label: '参照类别',
                prop: 'referTypeCode',
                display: false,
                hide: true
              },{
                span: 12,
                label: '参照类别',
                prop: 'referTypeKey',
                type: "select",
                change: this.selectChange,
                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=referType',
                dicType: 'String',
                props: {
                  label: 'dictValue',
                  value: 'dictKey'
                },
                rules: [
                  {
                    required: true,
                    message: "请选择参照类别",
                    trigger: "click"
                  }
                ]
              },
              {
                prop: "selInput",
                placeholder: false,
                readonly: true,
                display: true,
                formslot: true,
              },
              // {
              //   label: "选择版本",
              //   prop: "banben",
              //   type: 'select',
              //   value: 0,
              //   change: this.selchange,
              //   display: true,
              //   dicData: [
              //     {
              //       label: '当前版本次',
              //       value: 0
              //     },
              //     {
              //       label: '最新版本次',
              //       value: 1
              //     }
              //   ]
              // },
              {
                //默认表格插槽
                prop: "default",
                span: 24,
                display: false
              }
            ]
          },
          {
            label: '枚举',
            column: [
              {
                label: '是否使用枚举',
                prop: 'isnot',
                type: 'switch',
                hide: true,
                labelWidth: 132,
                span: 8,
                dicData: [{
                  label: '否',
                  value: 1
                }, {
                  label: '是',
                  value: 0
                }]
              },
              {
                prop: 'text',
                type: 'input',
                placeholder: '请输入内容',
                hide: true,
                display: false
              },
              {
                prop: 'enumerationSelect',
                type: 'select',
                placeholder: '请选择',
                hide: true,
                span: 12,
                dicData: [
                  {
                    label: 'a',
                    value: 0
                  },
                  {
                    label: 'b',
                    value: 1
                  },
                  {
                    label: 'c',
                    value: 2
                  }
                ]
              },
              {
                label: '描述',
                prop: 'endesc',
                type: "textarea",
                labelWidth: 132,
              },
            ]
          }
        ]
      },
      applyRange: {
@@ -464,115 +288,32 @@
        },
        data: [],
        display: false,
      },
      itemForm:{
        itemData: {},
        activeName: 'referTab',
        form:{}
      }
    }
  },
  created() {
    const column =this.findObject(this.option.group,"referTypeKey")
    console.log(column);
  },
  methods: {
    rowLinkchange(row) {
      this.form.text = row.name
    },
    rowchange(row) {
      this.form.text = row.name
    },
    //值域类型选择
    addHandle() {
      this.packageBox = true
      if (this.Typelist.value == 0) {
        this.packageBox = true
        this.packageLinkBox = false
      } else if (this.Typelist.value == 1) {
        this.packageBox = false
        this.packageLinkBox = true
      }
    },
    // å€¼åŸŸä¸šåŠ¡ç±»åž‹å¯¹è¯æ¡†å–æ¶ˆ
    dialoghandelfalse() {
      this.packageBox = false;
      this.form.text = ""
    },
    //值域业务类型对话框确定
    dialoghandeltrue() {
      this.packageBox = false
    },
    // å€¼åŸŸé“¾æŽ¥ç±»åž‹å¯¹è¯æ¡†å–消
    Linkdialoghandelfalse() {
      this.packageLinkBox = false;
      this.form.text = ""
    },
    //值域链接类型对话框确定
    Linkdialoghandeltrue() {
      this.packageLinkBox = false
    },
    selectChange(val) {
       this.referType.key = val.value
      if (val.value == 'businessType'){
        this.referType.value = '业务类型'
      }
      if (val.value == 'linkType'){
        this.referType.value = '链接类型'
      }
      if(val.value){
        this.referType.disable = false
      }
    },
    selchange(val) {
      this.banList = val
      console.log(val);
    },
    refreshChange() {
      this.onLoad(this.pageParent, this.query);
    },
    beforeOpen(done, type) {
      done();
    addSave(){
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = {};
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(row.id);
        })
        .then(() => {
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.onLoad();
        });
    updateSave(){
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = this.attribute;
    },
    rowSave(row, done) {
      add(row).then(() => {
        this.$message({
          type: "success",
          message: "操作成功!"
        });
        done(row)
        this.onLoad()
      }).catch((res) => {
        this.$message({
          type: "success",
          message: res
        });
      })
    },
    rowUpdate(row, index, done) {
      update(row).then(() => {
        this.onLoad()
        this.$message({
          type: "success",
          message: "修改成功!"
        });
        done(row)
    deleteSave(){
      remove(this.itemForm.itemData).then(res => {
        this.$message.success("删除成功");
      })
    },
    onLoad(page, params = {}) {
@@ -587,9 +328,9 @@
      })
    },
    rowClick(row) {
      this.itemData = row;
      this.itemForm.itemData = row;
      this.selectRow = row.$index;
      this.attribute = row;
    }
    ,selectBtmType(){
        this.referType.display = true;
@@ -603,11 +344,9 @@
          })
        }
        var oid = this.data[this.selectRow].oid;
        console.log(oid);
        getApplyRange(oid).then(res => {
            this.applyRange.data = res.data.data;
        })
        console.log("success");
        this.applyRange.display = true;
    },
    applyRangeClose(){
Source/UBCS-WEB/src/views/modeling/originalAdd.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,456 @@
<template>
    <el-container>
        <el-dialog title="元数据" :visible.sync="showSubmitDialog" append-to-body @close="closeSubmitDialog" width="700px"
            style="height: 115vh;">
            <!-- å…ƒæ•°æ®çš„增改弹窗 -->
            <el-form ref="form" :model="attribute" show-message="true" inline size="medium" label-suffix=":"
                class="attributeForm" :rules="rules" @resetFields="resetAttributeForm" status-icon="true">
                <el-form-item label="属性编号" label-width="100px" prop="id">
                    <el-input v-model="attribute.id" maxlength="15" show-word-limit type="text"></el-input>
                </el-form-item>
                <el-form-item label="属性名称" label-width="100px" prop="name">
                    <el-input v-model="attribute.name"></el-input>
                </el-form-item>
                <el-form-item label="属性类型" label-width="100px" prop="typeValue">
                    <el-select v-model="attribute.typeValue" placeholder="请选择属性类型" @change="typeSelectChange">
                        <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="标签" label-width="100px">
                    <el-input v-model="attribute.hashtag"></el-input>
                </el-form-item>
                <el-form-item label="默认值" label-width="100px">
                    <el-input v-model="attribute.defaultValue"></el-input>
                </el-form-item>
                <el-form-item label="允许为空" label-width="100px">
                    <el-switch v-model="attribute.nullable" active-text="允许" inactive-text="不允许"></el-switch>
                </el-form-item>
                <el-form-item label="长度" label-width="100px" prop="maxLength">
                    <el-input-number v-model="attribute.maxLength" :min="1" :max="4000" :step="1" controls-position="right"></el-input-number>
                </el-form-item>
                <el-form-item label="精度" label-width="100px" v-if="attribute.typeValue == 'VTDouble'">
                    <el-input-number v-model="attribute.precision" :min="1" :max="20" :step="1" controls-position="right" @change="changeNumber"></el-input-number>
                </el-form-item>
                <el-form-item label="描述" label-width="100px">
                    <el-input v-model="attribute.description" type="text"></el-input>
                </el-form-item>
                <el-tabs v-model="activeName" @tab-click="handleClick" stretch="true">
                    <el-tab-pane label="参照" name="referTab">
                        <el-form-item label="参照类型" label-width="100px">
                            <el-select v-model="attribute.referTypeKey" @change="referTypeSelectChange">
                                <el-option v-for="item in btmRefer.referTypeList" :key="item.value" :label="item.label"
                                    :value="item.value">
                                </el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="参照名称" label-width="100px">
                            <el-input v-model="attribute.referToName" @focus="openReferConfig" clearable="true"
                                :disabled="referToFlag" @clear="clearReferTo">
                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
                            </el-input>
                        </el-form-item>
                    </el-tab-pane>
                    <el-tab-pane label="枚举" name="enumTab">
                        <el-form-item label="枚举" label-width="100px">
                            <el-input v-model="attribute.dictValue" @focus="openEnumConfig" clearable="true">
                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
                            </el-input>
                        </el-form-item>
                        <el-form-item label="枚举项" label-width="100px">
                        </el-form-item>
                    </el-tab-pane>
                </el-tabs>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="submitAttribute">确定</el-button>
                <el-button @click="cancleSubmit">取消</el-button>
            </div>
            <!-- é€‰æ‹©å‚照时的弹窗 -->
            <el-dialog title="参照列表" :visible.sync="btmRefer.show" append-to-body @close="closeReferDialog" width="80%"
                style="height: 115vh;">
                <el-container>
                    <el-aside>
                        <basic-container>
                           <span class="el-dialog__title"> {{ domain.treeOption.title }} </span>
                            <div style="height:20px;"></div>
                            <avue-tree id="domain" :data="domain.data" :option="domain.treeOption" @node-click="nodeClick"
                                class="businessTree" style="height: 418px">
                                <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-main>
                        <basic-container>
                            <avue-crud ref="btmTable" :option="btmRefer.option" :data="btmRefer.data" class="btmTable" @row-click="btmReferClick">
                                <template slot="radio" slot-scope="{row}">
                                    <el-radio v-model="btmRefer.selectRow" :label="row.$index">&nbsp;
                                    </el-radio>
                                </template>
                            </avue-crud>
                        </basic-container>
                    </el-main>
                </el-container>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="confirmBtm" size="small">确定</el-button>
                    <el-button @click="cancleBtm" size="small">取消</el-button>
                </div>
            </el-dialog>
            <!-- é€‰æ‹©æžšä¸¾æ—¶çš„弹窗 -->
            <el-dialog title="枚举列表" :visible.sync="enumRefer.show" append-to-body @close="closeEnumDialog" width="70%"
                style="height: 115vh;">
                <avue-crud ref="eunmTable" :option="enumRefer.option" :data="enumRefer.data" class="enumTable" @row-click="enumReferClick" :page.sync="enumRefer.enumPage">
                    <template slot="radio" slot-scope="{row}">
                        <el-radio v-model="enumRefer.selectRow" :label="row.$index">&nbsp;
                        </el-radio>
                    </template>
                </avue-crud>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="confirmEnum" size="small">确定</el-button>
                    <el-button @click="cancleEnum" size="small">取消</el-button>
                </div>
            </el-dialog>
        </el-dialog>
    </el-container>
</template>
<script>
import { getDictionary,getParentList } from '@/api/omd/enum'
import { initTree,btmPage } from '@/api/omd/btmType'
import { add} from '@/api/omd/OmdAttribute'
export default {
    name: 'originalAdd',
    props: {
        attribute: {
            type: Object
        },
    },
    data() {
        return {
            showSubmitDialog: false,
            // é»˜è®¤çš„页签
            activeName: 'referTab',
            // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†æ•°æ®
            typeList: [],
            // å‚照下拉框是否可用
            referToFlag: true,
            // è¡¨å•校验规则
            rules: {
                id: [
                    { required: true, message: '请输入属性编号', trigger: 'blur' },
                    { pattern: /^[A-Za-z]+$/, message: '属性编号只能为英文', trigger: 'blur' },
                    { min: 2, max: 15, message: '长度在2到15个字符', trigger: 'blur' }
                ],
                name: [
                    { required: true, message: '请输入属性名称', trigger: 'blur' }
                ],
                typeValue: [
                    { required: true, message: '请选择属性类型', trigger: 'change' }
                ],
                maxLength: [
                    { required: true, message: '需要指定长度', trigger: 'blur' }
                ]
            },
            // å‚照页面表格配置
            btmRefer: {
                show: false,
                btmPage: {
                    pageSize: 10,
                    currentPage: 1,
                    total: 100
                },
                option: {
                    height: 405,
                    addBtn: false,
                    refreshBtn: false,
                    columnBtn: false,
                    menu: false,
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan: 32,
                    searchShowBtn: false,
                    highlightCurrentRow: true,
                    column: [
                        {
                        label: '',
                        prop: 'radio',
                        width: 60,
                        hide: false
                    },
                    {
                        label: '英文名称',
                        prop: 'id',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }, {
                        label: '中文名称',
                        prop: 'name',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }]
                },
                // å‚照页面表格数据
                data: [],
                selectRow: '',
                selectItem: {},
                referTypeList: []
            },
            // æžšä¸¾å‚照表格配置
            enumRefer: {
                show: false,
                enumPage: {
                    pageSize: 10,
                    currentPage: 1,
                    total: 100
                },
                option: {
                    height: 360,
                    addBtn: false,
                    refreshBtn: false,
                    columnBtn: false,
                    selection: true,
                    menu: false,
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan: 32,
                    searchShowBtn: false,
                    highlightCurrentRow: true,
                    column: [{
                        label: '',
                        prop: 'radio',
                        width: 60,
                        hide: false
                    },{
                        label: '枚举代号',
                        prop: 'name',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }, {
                        label: '枚举名称',
                        prop: 'label',
                        align: 'center',
                        searchSpan:8,
                        search: true,
                    }]
                },
                // æžšä¸¾å‚照表格数据
                data: [],
                enumDictionary: [],
                // é€‰å®šè¡Œ
                selectRow: '',
                selectItem: {}
            },
            domain: {
                data: [],
                treeOption: {
                    defaultExpandAll: true,
                    title: '领域服务树',
                    props: {
                        labelText: '',
                        label: 'name',
                        value: 'oid',
                    }
                }
            }
        }
    },
    created() {
        this.initAttributeTypeList();
        this.initAttributeReferTypeList();
    },
    methods: {
        closeSubmitDialog() {
            this.resetAttributeForm();
            this.showSubmitDialog = false;
        },
        resetAttributeForm() {
            this.attribute = {
                nullable: true,
                referTypeKey: '',
            };
            this.referToFlag = true;
            this.$refs.form.resetFields();
        },
        submitAttribute() {
            add(this.attribute).then(res => {
                this.$message.success("保存成功");
                this.showSubmitDialog = false;
                this.attribute = {};
                this.$emit('refreshTable');
            });
        },
        cancleSubmit() {
            this.closeSubmitDialog();
        },
        closeEnumDialog() {
            this.cancleEnum();
         },
        closeReferDialog() {
            this.cancleBtm();
        },
        confirmBtm() {
            this.attribute.referToId = this.btmRefer.selectItem.oid;
            this.attribute.referToName = this.btmRefer.selectItem.name;
            this.btmRefer.show = false;
        },
        cancleBtm() {
            this.btmRefer.selectItem = {};
            this.btmRefer.show = false;
            this.btmRefer.selectRow = '';
        },
        confirmEnum() {
            this.attribute.usingDict = true;
            this.attribute.dictCode = this.enumRefer.selectItem.name;
            this.attribute.dictValue = this.enumRefer.selectItem.label;
            this.enumRefer.show = false;
         },
        cancleEnum() {
            this.enumRefer.selectItem = {};
            this.enumRefer.show = false;
            this.enumRefer.selectRow = '';
        },
        // å‚照名称输入框获取焦点时的事件
        openReferConfig() {
            if (!this.attribute.referTypeKey) {
                this.$message.warning('请先选择参照的类型');
                this.referToFlag = true;
                return;
            }
            this.domain.data = [];
            this.btmRefer.data = [];
            initTree().then(res => {
                this.domain.data = res.data.data;
            })
            this.btmRefer.show = true;
        },
        // å‚照类型树的点击事件
        nodeClick(data) {
            // åŒºåˆ†ä¸šåŠ¡ç±»åž‹çš„æŸ¥è¯¢å’Œé“¾æŽ¥ç±»åž‹çš„æŸ¥è¯¢
            if(this.attribute.referTypeKey == 'btmType'){
                btmPage(this.btmRefer.btmPage.currentPage,this.btmRefer.btmPage.pageSize,{domain:data.id}).then(res => {
                    this.btmRefer.data = res.data.data.records;
                    this.btmRefer.btmPage.total = res.data.data.total;
                })
            }
            if(this.attribute.referTypeKey == 'linkType'){
            }
        },
        // æžšä¸¾ç±»åž‹è¾“入框获得焦点时的事件
        openEnumConfig() {
            getParentList(this.enumRefer.enumPage.currentPage,this.enumRefer.enumPage.pageSize).then(res => {
                this.enumRefer.enumPage.total = res.data.data.total;
                this.enumRefer.data = res.data.data.records;
            })
            this.enumRefer.show = true;
        },
        // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†é€‰æ‹©äº‹ä»¶
        typeSelectChange(value) {
            if (value == 'VTString') {
                this.$set(this.attribute,"maxLength",150)
            } else if (value == 'VTInteger') {
                this.$set(this.attribute,"maxLength",50)
            } else if (value == 'VTBoolean') {
                this.$set(this.attribute,"maxLength",5)
            } else if (value == 'VTDouble') {
                this.$set(this.attribute,"maxLength",26)
                this.$set(this.attribute,"precision",8)
            } else if (value == 'VTLong') {
                this.$set(this.attribute,"maxLength",150)
            } else if (value == 'VTDate' || value == 'VTTime' || value == 'VTDateTime') {
                this.$set(this.attribute,"maxLength",6)
            } else {
                this.$set(this.attribute,"maxLength",50)
            }
            this.attribute.typeCode = 'attributeType';
            this.attribute.typeKey = value;
        },
        referTypeSelectChange(value) {
            this.attribute.referTypeCode = 'attributeReferType';
            this.attribute.referTypeKey = value;
            this.referToFlag = false;
        },
        initAttributeTypeList() {
            getDictionary({ code: 'attributeType' }).then(res => {
                res.data.data.forEach(element => {
                    this.typeList.push(
                        { value: element.itemValue, label: element.itemName }
                    )
                });
            }).catch(() => {
                this.$message.error('属性类型没找到或者未定义')
            })
        },
        initAttributeReferTypeList(){
            getDictionary({ code: 'attributeReferType' }).then(res => {
                res.data.data.forEach(element => {
                    this.btmRefer.referTypeList.push(
                        { value: element.itemValue, label: element.itemName }
                    )
                });
            }).catch(() => {
                this.$message.error('参照类型没找到或者未定义')
            })
        },
        btmReferClick(row){
            this.btmRefer.selectItem = row;
            this.btmRefer.selectRow = row.$index;
        },
        enumReferClick(row){
            this.enumRefer.selectItem = row;
            this.enumRefer.selectRow = row.$index;
        },
        // å‚照名称点击清除数据
        clearReferTo(){
            this.$delete(this.attribute,'referToId');
            this.$delete(this.attribute,'referToName');
            this.btmRefer.selectItem = {};
            this.btmRefer.selectRow = '';
        },
        handleClick(tab){
            // å› ä¸ºåªèƒ½å‚照和枚举二选一。所以在切换的时候把属性给清空。
            this.$delete(this.attribute,'referTypeCode');
            this.$delete(this.attribute,'referTypeKey');
            this.$delete(this.attribute,'referTypeValue');
            this.$delete(this.attribute,'referToId');
            this.$delete(this.attribute,'referToName');
            this.$delete(this.attribute,'dictCode');
            this.$delete(this.attribute,'dictKey');
            this.$delete(this.attribute,'dictValue');
            this.$delete(this.attribute,'usingDict');
        }
    }
}
</script>
<style>
.btmTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
    display: none !important;
}
.enumTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
    display: none !important;
}
.attributeForm>.el-form-item>.el-form-item__content>.el-input>.el-input__inner {
    width: 200px;
}
.attributeForm>.el-form-item>.el-form-item__content> .el-select>.el-input>.el-input__inner {
    width: 200px;
}
</style>
Source/UBCS-WEB/vue.config.js
@@ -26,9 +26,10 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        // target: 'http://localhost:37000',
        //target: 'http://192.168.3.7:37000',
        target: 'http://dev.vci-tech.com:37000',
          target: 'http://localhost:37000',
        // target: 'http://192.168.3.7:37000',
        //target: 'http://dev.vci-tech.com:37000',
        //target: 'http://192.168.1.51:37000/',
        //远程演示服务地址,可用于直接启动项目
        // target: 'https://saber.bladex.vip/api',
        ws: true,
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "localhost:8848";
    String NACOS_DEV_ADDR = "127.0.0.1:8848";
    /**
     * nacos prod åœ°å€
Source/UBCS/ubcs-service-api/pom.xml
@@ -25,6 +25,7 @@
        <module>ubcs-omd-api</module>
        <module>ubcs-util-api</module>
        <module>ubcs-ddl-api</module>
        <module>ubcs-webservice-api</module>
    </modules>
    <dependencies>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeReferConfigDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.vci.ubcs.code.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.github.yulichang.annotation.EntityMapping;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.entity.CodeShowFieldConfig;
import com.vci.ubcs.code.entity.CodeSrchCondConfig;
import java.util.List;
/**
 * @author ludc
 * @date 2023/5/24 11:31
 */
public class CodeReferConfigDTO extends CodeReferConfig {
    /**
     * æ˜¾ç¤ºçš„属性-显示对象
     */
    private List<CodeShowFieldConfig> codeShowFieldConfigs;
    /**
     * æŸ¥è¯¢æ¡ä»¶æ˜¾ç¤ºå¯¹è±¡
     */
    private List<CodeSrchCondConfig> codeSrchCondConfigs;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsattributeEntity.java
@@ -97,5 +97,4 @@
    @ApiModelProperty(value = "取值范围")
    private String range;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeOsbtmtypeattributeEntity.java
@@ -45,7 +45,6 @@
     */
    private static final long serialVersionUID = -4431848943790920077L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeReferConfig.java
@@ -1,7 +1,11 @@
package com.vci.ubcs.code.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.github.yulichang.annotation.EntityMapping;
import com.vci.ubcs.code.vo.CodeShowFieldConfigVO;
import com.vci.ubcs.code.vo.CodeSrchCondConfigVO;
import com.vci.ubcs.starter.revision.model.BaseModel;
@@ -22,6 +26,7 @@
@Data
@TableName("PL_CODE_REFERCONFIG")
@ApiModel(value = "CodeReferConfig对象", description = "编码规则管理-引用码段-参照配置")
@JsonInclude(JsonInclude.Include.NON_EMPTY)  //不输出掉空字段
public class CodeReferConfig extends BaseModel {
    /**
@@ -32,6 +37,7 @@
    /**
     * ç§Ÿæˆ·ID
     */
    @JSONField()
    private String tenantId;
    /**
@@ -140,20 +146,39 @@
    private String onlyLeaf;
    /**
     * å‚照的业务类型-显示文本
     */
    private String referTypeName;
    /**
     * æ˜¯å¦å¼€å¯å…¨å±€
     */
    private String isOpenGlobal;
    /**
     * æŽ’序
     */
    private Integer orderNum;
    /**
     * æ˜¯å¦å¼€å¯æŒä¹…化
     */
    private String isPersistence;
    /**
     * æ˜¾ç¤ºçš„属性-显示对象
     */
    @TableField(exist = false)
    @EntityMapping(thisField = "oid", joinField = "referConfigOid")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CodeShowFieldConfig> codeShowFieldConfigs;
    /**
     * æŸ¥è¯¢æ¡ä»¶æ˜¾ç¤ºå¯¹è±¡
     */
    @TableField(exist = false)
    @EntityMapping(thisField = "oid", joinField = "referConfigOid")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CodeSrchCondConfig> codeSrchCondConfigs;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeShowFieldConfig.java
@@ -1,9 +1,14 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.yulichang.annotation.EntityMapping;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
 * ç¼–码规则管理-引用码段-参照配置-显示属性配置
@@ -14,9 +19,15 @@
@Data
@TableName("PL_CODE_SHOWFIELDCONFIG")
@ApiModel(value = "CodeShowFieldConfig对象", description = "编码规则管理-引用码段-参照配置-显示属性配置")
public class CodeShowFieldConfig extends BaseModel {
public class CodeShowFieldConfig implements Serializable {
    private static final long serialVersionUID = -71135592796848692L;
    /**
     * ä¸»é”®
     */
    @TableId(value = "OID",type = IdType.ASSIGN_UUID)
    private String oid;
    /**
     * åˆ—字段
@@ -39,9 +50,9 @@
    private String sort;
    /**
     * æŽ’序字段
     * æ˜¾ç¤ºçš„属性中的-排序字段
     */
    private String sortField;
    private String attrSortField;
    /**
     * å­—段宽度
@@ -59,6 +70,11 @@
    private String templet;
    /**
     * æ˜¯å¦å¿«é€ŸæŸ¥è¯¢
     */
    private String isQuery;
    /**
     * å…³è”的参照配置主键
     */
    private String referConfigOid;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSrchCondConfig.java
@@ -1,5 +1,7 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
@@ -15,11 +17,17 @@
@Data
@TableName("PL_CODE_SRCHCONDCONFIG")
@ApiModel(value = "CodeSrchCondConfig对象", description = "编码规则管理-引用码段-参照配置-搜索条件配置")
public class CodeSrchCondConfig extends BaseModel {
public class CodeSrchCondConfig {
    private static final long serialVersionUID = -51655155561881523L;
    /**
     * ä¸»é”®
     */
    @TableId(value = "OID",type = IdType.ASSIGN_UUID)
    private String oid;
    /**
     * ç­›é€‰å­—段
     */
    private String filterField;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/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,6 +43,8 @@
    String API_PREFIX = "/codeClass";
    String TOP = API_PREFIX + "/top";
    String CODE_CLASSIFY_TREE=API_PREFIX+"/referCodeClassifyTree";
    String CODE_ATTRIBUTE_LIST=API_PREFIX+"/listCodeAttributeByClassId";
    /**
     * èŽ·å–ä¸»é¢˜åº“å®šä¹‰è¡¨åˆ—è¡¨
@@ -46,4 +56,19 @@
    @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);
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyTemplateAttrClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeOsbtmtypeClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodePhaseAttrClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeSynonymClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeTempButtonClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/ICodeWupinClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * ç¼–码信息 Feign接口类
 *
 * @author yuxc
 * @since 2023-05-05
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_CODE,
    fallback = IMdmEngineFallback.class
)
public interface IMdmEngineClient {
    String API_PREFIX = "/mdmEngineClient";
    String SELECT_BY_TYPE_OID = API_PREFIX + "/selectByTypeAndOid";
    String INSERT_BATCH_BY_TYPE = API_PREFIX + "/insertBatchByType";
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸oid集合查询数据进行返回
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param oids      éœ€è¦æŸ¥è¯¢çš„oid集合 é€—号分开
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    @GetMapping(SELECT_BY_TYPE_OID)
    R<List<BaseModel>> selectByTypeAndOid(@RequestParam("btmType") String btmType, @RequestParam("oids") String oids);
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ’å…¥æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理成功数据条数
     */
    @PostMapping(INSERT_BATCH_BY_TYPE)
    R<Integer> insertBatchByType(@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
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Feign失败配置
 *
 * @author Chill
 */
@Component
public class IMdmEngineFallback implements IMdmEngineClient {
    @Override
    public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels){
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/lCodeClassifyTemplateClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/lCodeKeyAttrRepeatClient.java
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeReferConfigVO.java
@@ -27,70 +27,9 @@
    private static final long serialVersionUID = 957685333614390234L;
    /**
     * å‚照的业务类型-显示文本
     */
    private String referTypeText;
    /**
     * å‚照窗口类型-显示文本
     * å‚照窗口类型-显示属性
     */
    private String typeText;
    /**
     * è¯·æ±‚后台的协议方式
     */
    private String method;
    /**
     * å‚考的UI上下文
     */
    private String referContent;
    /**
     * å¹³å°çš„表格编号
     */
    private String displayTable;
    /**
     * æ¯é¡µæ˜¾ç¤ºæ¡æ•°
     */
    private String limit;
    /**
     * æŽ’序字段
     */
    private String sortField;
    /**
     * æŽ’序类型
     */
    private String sortType;
    /**
     * æ ‘形的上级属性
     */
    private String parentFieldName;
    /**
     * ä¸Šçº§å±žæ€§å€¼å¯¹åº”属性
     */
    private String parentUsedField;
    /**
     * æ ¹èŠ‚ç‚¹çš„å€¼
     */
    private String parentValue;
    /**
     * æ ‘加载方式
     */
    private String loadType;
    /**
     * æ˜¯å¦åªèƒ½é€‰æ‹©å¶å­èŠ‚ç‚¹
     */
    private String onlyLeaf;
    /**
     * æ˜¾ç¤ºçš„属性-显示对象
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeShowFieldConfigVO.java
@@ -19,11 +19,6 @@
    private static final long serialVersionUID = -71135592796848692L;
    /**
     * å…³è”的参照配置id
     */
    private String configOid;
    /**
     * å­—段类型-显示文本
     */
    private String fieldTypeText;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeSrchCondConfigVO.java
@@ -20,11 +20,6 @@
    private static final long serialVersionUID = -51655155561881523L;
    /**
     * å…³è”的参照配置id
     */
    private String configOid;
    /**
     * ç­›é€‰ç±»åž‹
     */
    private String filterTypeText;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
@@ -291,4 +291,64 @@
     */
    private String parentQueryAttr;
    @Override
    public String toString() {
        return "CodeClassifyTemplateAttrVO{" +
            "classifyTemplateOid='" + classifyTemplateOid + '\'' +
            ", classifyTemplateOidName='" + classifyTemplateOidName + '\'' +
            ", classifyAttributeOid='" + classifyAttributeOid + '\'' +
            ", classifyAttributeOidName='" + classifyAttributeOidName + '\'' +
            ", attributeDataType='" + attributeDataType + '\'' +
            ", attributeDataTypeText='" + attributeDataTypeText + '\'' +
            ", keyAttrFlag='" + keyAttrFlag + '\'' +
            ", queryAttrFlag='" + queryAttrFlag + '\'' +
            ", seniorQueryAttrFlag='" + seniorQueryAttrFlag + '\'' +
            ", sameRepeatAttrFlag='" + sameRepeatAttrFlag + '\'' +
            ", sortAttrFlag='" + sortAttrFlag + '\'' +
            ", qrcodeFlag='" + qrcodeFlag + '\'' +
            ", barcodeFlag='" + barcodeFlag + '\'' +
            ", componentRule='" + componentRule + '\'' +
            ", verifyRule='" + verifyRule + '\'' +
            ", classifyInvokeLevel='" + classifyInvokeLevel + '\'' +
            ", classifyInvokeAttr='" + classifyInvokeAttr + '\'' +
            ", classifyInvokeAttrName='" + classifyInvokeAttrName + '\'' +
            ", classifyInvokeEditFlag='" + classifyInvokeEditFlag + '\'' +
            ", orderNum=" + orderNum +
            ", formDisplayFlag='" + formDisplayFlag + '\'' +
            ", tableDisplayFlag='" + tableDisplayFlag + '\'' +
            ", attributeGroup='" + attributeGroup + '\'' +
            ", enumId='" + enumId + '\'' +
            ", enumName='" + enumName + '\'' +
            ", enumEditFlag='" + enumEditFlag + '\'' +
            ", referBtmId='" + referBtmId + '\'' +
            ", referBtmName='" + referBtmName + '\'' +
            ", referConfig='" + referConfig + '\'' +
            ", requireFlag='" + requireFlag + '\'' +
            ", readOnlyFlag='" + readOnlyFlag + '\'' +
            ", controlLength=" + controlLength +
            ", formDisplayStyle='" + formDisplayStyle + '\'' +
            ", tableDisplayStyle='" + tableDisplayStyle + '\'' +
            ", formHref='" + formHref + '\'' +
            ", tableHref='" + tableHref + '\'' +
            ", precisionLength=" + precisionLength +
            ", scaleLength=" + scaleLength +
            ", valueArea='" + valueArea + '\'' +
            ", codeDateFormat='" + codeDateFormat + '\'' +
            ", tableDisplayJs='" + tableDisplayJs + '\'' +
            ", textAreaFlag='" + textAreaFlag + '\'' +
            ", imageFlag='" + imageFlag + '\'' +
            ", defaultValue='" + defaultValue + '\'' +
            ", prefixValue='" + prefixValue + '\'' +
            ", suffixValue='" + suffixValue + '\'' +
            ", filterSourceAttr='" + filterSourceAttr + '\'' +
            ", filterSourceAttrName='" + filterSourceAttrName + '\'' +
            ", enumString='" + enumString + '\'' +
            ", attrTableWidth=" + attrTableWidth +
            ", explain='" + explain + '\'' +
            ", libraryIdentification='" + libraryIdentification + '\'' +
            ", parentCode='" + parentCode + '\'' +
            ", parentName='" + parentName + '\'' +
            ", parentQueryAttr='" + parentQueryAttr + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
@XStreamAlias("classify")
public class ClassifyVO {
    /**
     * åˆ†ç±»id
     */
    @XStreamAsAttribute
    private String id;
    /***
     * åˆ†ç±»åç§°
     */
    @XStreamAsAttribute
    private String name;
    /***
     * çˆ¶èŠ‚ç‚¹id
     */
    @XStreamAsAttribute
    private String pid;
    /***
     * åˆ†ç±»ä»£å·
     */
    @XStreamAsAttribute
    private String classCode;
    /***
     * æè¿°
     */
    @XStreamAsAttribute
    private  String description;
    /***
     * åˆ†ç±»é“¾æŽ¥è·¯å¾„
     */
    @XStreamAsAttribute
    private  String fullPathName;
    /***
     * åˆ†ç±»çŠ¶æ€
     */
    @XStreamAsAttribute
    private String lcStatus;
    /***
     * è§„则id
     */
    @XStreamAsAttribute
    private String codeRuleId;
    /***
     * æ˜¯å¦ä¸ºå¶å­èŠ‚ç‚¹
     */
    @XStreamAsAttribute
    private boolean isLeaf;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getClassCode() {
        return classCode;
    }
    public void setClassCode(String classCode) {
        this.classCode = classCode;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getFullPathName() {
        return fullPathName;
    }
    public void setFullPathName(String fullPathName) {
        this.fullPathName = fullPathName;
    }
    public String getLcStatus() {
        return lcStatus;
    }
    public void setLcStatus(String lcStatus) {
        this.lcStatus = lcStatus;
    }
    public String getCodeRuleId() {
        return codeRuleId;
    }
    public void setCodeRuleId(String codeRuleId) {
        this.codeRuleId = codeRuleId;
    }
    public boolean isLeaf() {
        return isLeaf;
    }
    public void setLeaf(boolean leaf) {
        isLeaf = leaf;
    }
    @Override
    public String toString() {
        return "ClassifyVO{" +
            "id='" + id + '\'' +
            ", name='" + name + '\'' +
            ", pid='" + pid + '\'' +
            ", classCode='" + classCode + '\'' +
            ", description='" + description + '\'' +
            ", fullPathName='" + fullPathName + '\'' +
            ", lcStatus='" + lcStatus + '\'' +
            ", codeRuleId='" + codeRuleId + '\'' +
            ", isLeaf=" + isLeaf +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
public class CodeRuleVO {
//    private String
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
@XStreamAlias("library ")
public class LibraryVO {
    @XStreamAsAttribute
    private String id;
    @XStreamAsAttribute
    private  String name;
    @XStreamImplicit
    private List<ClassifyVO>classify;
    private List<CodeRuleVO> coderule;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<ClassifyVO> getClassify() {
        return classify;
    }
    public void setClassify(List<ClassifyVO> classify) {
        this.classify = classify;
    }
    @Override
    public String toString() {
        return "LibraryVO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", classify=" + classify +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
public class QueryClassifyVO {
    /***
     *
     */
    private QueryData data;
    public QueryData getData() {
        return data;
    }
    public void setData(QueryData data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "QueryClassifyVO{" +
                "data=" + data +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.vci.ubcs.code.vo.webserviceModel.apply.UserVO;
@XStreamAlias("data")
public class QueryData {
    @XStreamAsAttribute
    private String systemId;
    private UserVO user;
    private QueryLibraryVO library ;
    public QueryLibraryVO getLibrary() {
        return library;
    }
    public void setLibrary(QueryLibraryVO library) {
        this.library = library;
    }
    public String getSystemId() {
        return systemId;
    }
    public void setSystemId(String systemId) {
        this.systemId = systemId;
    }
    public UserVO getUser() {
        return user;
    }
    public void setUser(UserVO user) {
        this.user = user;
    }
    @Override
    public String toString() {
        return "QueryData{" +
                "systemId='" + systemId + '\'' +
                ", library=" + library +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import java.util.List;
@XStreamAlias("library")
public class QueryLibraryVO {
    @XStreamAsAttribute
    private String id;
    @XStreamImplicit
    private List<String> classifyid;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public List<String> getClassifyid() {
        return classifyid;
    }
    public void setClassifyid(List<String> classifyid) {
        this.classifyid = classifyid;
    }
    @Override
    public String toString() {
        return "LibraryVO{" +
                "id='" + id + '\'' +
                ", classifyid=" + classifyid +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
public class ResultClassifyVO {
   private ResultData resultData;
    public ResultData getResultData() {
        return resultData;
    }
    public void setResultData(ResultData resultData) {
        this.resultData = resultData;
    }
    @Override
    public String toString() {
        return "ResultClassifyVO{" +
                "resultData=" + resultData +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.ubcs.code.vo.webserviceModel.coderule;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("data")
public class ResultData {
    @XStreamAlias("errorid")
    private  String errorid;
    @XStreamAlias("msg")
    private String msg;
    private LibraryVO library ;
    public LibraryVO getLibrary() {
        return library;
    }
    public void setLibrary(LibraryVO library) {
        this.library = library;
    }
    public String getErrorid() {
        return errorid;
    }
    public void setErrorid(String errorid) {
        this.errorid = errorid;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    @Override
    public String toString() {
        return "ResultData{" +
                "code='" + errorid + '\'' +
                ", msg='" + msg + '\'' +
                ", library=" + library +
                '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/BtmTypeCache.java
@@ -8,7 +8,6 @@
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringPool;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/EnumCache.java
@@ -73,7 +73,6 @@
        return getValue(name.getName(), nameChild);
    }
    /**
     * èŽ·å–å­—å…¸å€¼
     *
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -36,6 +37,7 @@
     */
    @ApiModelProperty(value = "主键")
    @NotNull
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -27,6 +28,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -25,6 +26,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -26,6 +27,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -61,12 +62,13 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -25,6 +26,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -26,6 +27,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -24,6 +25,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -26,6 +27,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -105,6 +106,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -24,6 +25,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
@@ -1,6 +1,7 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@@ -27,6 +28,7 @@
    /**
     * ä¸»é”®
     */
    @TableId
    private String oid;
    /**
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/EnumEnum.java
@@ -88,6 +88,59 @@
     * ç”¨æˆ·å¹³å°
     */
    USER_TYPE("user_type"),
    /**
     * codeSecType ç å€¼ç±»åž‹
     */
    CODE_SEC_TYPE("codeSecType"),
    /**
     * å±‚级码段的层级类型
     */
    CODE_LEVEL_TYPE("codeLevelType"),
    /**
     * ç æ®µé•¿åº¦ç±»åž‹
     */
    CODE_SEC_LENGTH("codeSecLength"),
    /**
     * å€¼æˆªå–类型
     */
    CODE_CUT_TYPE("codeCutType"),
    /**
     * å€¼æˆªå–类型
     */
    CODE_GET_VALUE_TYPE("codeGetValueType"),
    /**
     * åˆ†ç±»ä¸­çš„æµç¨‹æ¨¡æ¿ç”¨é€”
     */
    CODE_CLASSIFY_PROCESS_USE("codeClassifyProcessUse"),
    /**
     * å±žæ€§ç±»åž‹
     */
    VCO_FIELD_TYPE("vciFieldType"),
    /**
     * çª—口类型
     */
    CODE_REFER_CONFIG_TYPE("codeReferConfigType"),
    /**
     * ç¼–码规则的生命周期
     */
    CODE_RULE_LC("codeRuleLC"),
    /**
     * å‚照配置中用到的字段类型
     */
    CODE_REFER_CONFIG_FIELD_TYPE("codeReferConfigFieldType"),
    /**
     * å‚照配置中用到的列固定位置
     */
    CODE_REFER_CONFIG_FIXED("codeReferConfigFixed"),
    /**
     * ç­›é€‰ç±»åž‹
     */
    CODE_REFER_CONFIG_FILTER_TYPE("codeReferConfigFilterType"),
    /**
     * æ¨¡æ¿çš„æŒ‰é’®ç”¨é€”
     */
    CODE_TEMPLATE_BUTTON_USE("codeTemplateButtonUse"),
    ;
    final String name;
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java
@@ -5,6 +5,7 @@
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;
@@ -16,6 +17,7 @@
 * @author LiHang
 * @date 2023/5/22
 */
@Component
public class IRevisionRuleFallback implements IRevisionRuleClient{
    /**
     * èŽ·å–ç‰ˆæœ¬è§„åˆ™è¯¦æƒ…ä¿¡æ¯
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java
@@ -7,7 +7,7 @@
    /**
     * ç¼–码规则,服务启动名
     */
    APPLICATION_NAME_CODE(AppConstant.APPLICATION_NAME_CODE,"编码规则服务"),
    APPLICATION_NAME_CODE(AppConstant.APPLICATION_NAME_CODE,"主数据"),
    ;
    /**
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
@@ -26,6 +26,8 @@
    private String id;
    private String name;
    //集团码
    //private String groupcode;
    private String description;
@@ -340,6 +342,14 @@
        this.lctid = lctid;
    }
/*    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/util/MdmBtmTypeConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
package com.vci.ubcs.starter.util;
/**
 * ä¸»æ•°æ®ç›¸å…³çš„业务类型编号
 */
public class MdmBtmTypeConstant {
    /**
     * çŠ¶æ€
     */
    public static final String CODE_STATUS_FILED = "lcstatus";
    /**
     * é›†å›¢ç çš„字段
     */
    public static final String CODE_GROUP_FIELD = "groupcode";
    /**
     * åˆ†ç±»çš„主键字段
     */
    public static final String CODE_CLASSIFY_OID_FIELD = "codeclsfid";
    /**
     * ä¸»é¢˜åº“分类
     */
    public static final String CODE_CLASSIFY = "codeclassify";
    /**
     * ä¸»é¢˜åº“分类包含的模板
     */
    public static final String CODE_CLASSIFY_TEMPLATE = "codeclstemplate";
    /**
     * ä¸»é¢˜åº“分类模板 åŒ…含的属性
     */
    public static final String CODE_CLASSIFY_TEMPLATE_ATTR = "codeclstempattr";
    /**
     * ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•
     */
    public static final String CODE_BUTTON = "codebutton";
    /**
     * ä¸»æ•°æ®ä¸­çš„æ¨¡æ¿å…³è”的按钮
     */
    public static final String CODE_TEMPLATE_BUTTON = "codetempbutton";
    /**
     * ä¸»æ•°æ®ä¸­çš„编码规则
     */
    public static final String CODE_RULE = "coderule";
    /**
     * å…³é”®å±žæ€§åˆ¤æ–­é‡å¤
     */
    public static final String CODE_KEY_ATTR_REPEAT_RULE = "codekeyattrrepeat";
    /**
     * ç›¸ä¼¼æŸ¥è¯¢è§„则
     */
    public static final String CODE_RESEMBLE_RULE = "coderesemblerule";
    /**
     * æ¨¡æ¿é˜¶æ®µ
     */
    public static final String CODE_TEMPLATE_PHASE = "codetempphase";
    /**
     * é˜¶æ®µçš„属性
     */
    public static final String CODE_PHASE_ATTR = "codephaseattr";
    /**
     * é˜¶æ®µçš„属性
     */
    public static final String CODE_PHASE_ATTR_TABLENAME = "code_phaseattr";
    /**
     * ä¸»æ•°æ®åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     */
    public static final String CODE_CLASSIFY_PROCESS_TEMPLATE = "codeclsflowtemp";
    /**
     *分类的模板对应流程中的阶段配置
     */
    public static final String CODE_CLASSIFY_PROCESS_PHASE = "codeclsflowphase" ;
    /**
     * å›ºå®šç çš„码值
     */
    public static final String CODE_FIXED_VALUE = "codefixedvalue";
    /**
     * åˆ†ç±»ç çš„码值
     */
    public static final String CODE_CLASSIFY_VALUE = "codeclassifyvalue";
    /**
     * æ˜ å°„规则
     */
    public static final String CODE_TEMPLATE_MAP = "codetempmap";
    /**
     * æ˜ å°„规则明细
     */
    public static final String CODE_TEMPLATE_MAP_ITEM = "codetempmapitem";
    /**
     * ç æ®µåŸºç¡€ä¿¡æ¯
     */
    public static final String CODE_BASIC_SEC = "codebasicsec";
    /**
     * åŒä¹‰è¯é…ç½®
     */
    public static final String CODE_SYNONYM = "codesynonym";
    /**
     * å…¨éƒ¨çš„码值
     */
    public static final String CODE_ALL_CODE = "codeallcode";
    /**
     * ç¼–码规则的流水值
     */
    public static final String CODE_SERIAL_VALUE = "codeserialvalue" ;
    /**
     * èµ„源对接通知、查询接口日志
     */
    public static final String DOCKING_LOGE = "codedockinglog";
    /**
     * èµ„源对接触发器插入要推送的数据
     */
    public static final String DOCKING_DATA = "codedockingdata";
    /**
     * èµ„源对接触发器插入要推送的数据和系统信息
     */
    public static final String DOCKING_TASK = "codedockingtask";
    /**
     * é¢„申请数据
     */
    public static final String DOCKING_PRE_APPLY_DATA = "dockingpadata";
    /**
     * é¢„申请数据信息
     */
    public static final String DOCKING_PRE_APPLY_DATA_INFO = "dockingpadatainfo";
    /**
     * ç³»ç»Ÿé›†æˆçš„系统
     */
    public static final String SYS_INT_BASE = "sysintbase";
    /**
     * ç³»ç»Ÿé›†æˆæŽ¥å£çš„基础信息
     */
    public static final String SYS_INT_INFO = "sysintinfo";
    /**
     * ç³»ç»Ÿé›†æˆæŽ¥å£çš„认证方式
     */
    public static final String SYS_INT_AUTHORITY = "sysintauthority";
    /**
     * ç³»ç»Ÿé›†æˆæŽ¥å£çš„参数,http对应的paramter
     */
    public static final String SYS_INT_PARAMTERY = "sysintparemter";
    /**
     * ç³»ç»Ÿé›†æˆæŽ¥å£çš„认证信息,http对应的header,webserver对应的账号密码等信息
     */
    public static final String SYS_INT_HEADER = "sysintheader";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     */
    public static final String DOCKING_PRE_JINTEGMAPCONFIG = "jintegmapconfig";
    /**
     * é›†æˆé›†å›¢åˆ†ç±»ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JCLASSIFY = "jclassify";
    /**
     * é›†æˆé›†å›¢æ¨¡åž‹å±žæ€§ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JMETAATRR = "jmetaattr";
    /**
     * é›†æˆå±žæ€§å–值范围关系业务类型
     */
    public static final String DOCKING_PRE_JRANGE = "jrange";
    /**
     * é›†æˆé›†å›¢ç”³è¯·å•业务类型
     */
    public static final String DOCKING_PRE_JAPPLYFORM = "japplyform";
    /**
     * é›†æˆé›†å›¢æ¨¡åž‹å±žæ€§ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JVIEWMODEL = "jviewmodel";
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -7,6 +7,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
@@ -19,7 +20,9 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.ResourceUtils;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.IOException;
@@ -32,6 +35,8 @@
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -1244,5 +1249,118 @@
    }
    /**
     * å°† JavaBean对象转化为 Map
     * @author wyply115
     * @param bean è¦è½¬åŒ–的类型
     * @return Map对象
     * @version 2016å¹´3月20日 11:03:01
     */
    public static Map convertBean2Map(Object bean) throws Exception {
        Class type = bean.getClass();
        Map returnMap = new HashMap();
        BeanInfo beanInfo = Introspector.getBeanInfo(type);
        PropertyDescriptor[] propertyDescriptors = beanInfo
            .getPropertyDescriptors();
        Field[] declaredFields = type.getDeclaredFields();
        String existField = "";
        for (Field declaredField : declaredFields) {
            declaredField.setAccessible(true);
            // èŽ·å–å­—æ®µçš„å€¼
            boolean isTableField = declaredField.isAnnotationPresent(TableField.class);
            if (isTableField) {
                TableField tableField = declaredField.getAnnotation(TableField.class);
                Boolean fieldValue = tableField.exist();
                if(fieldValue == false){
                    existField += declaredField.getName().toLowerCase()+",";
                }
            }
        }
        for (int i = 0, n = propertyDescriptors.length; i <n ; i++) {
            PropertyDescriptor descriptor = propertyDescriptors[i];
            String propertyName = descriptor.getName();
            if (!propertyName.equals("class") &&
                ((!"".equals(existField) && !existField.contains(propertyName.toLowerCase()+","))||"data".equals(propertyName))) {
                Method readMethod = descriptor.getReadMethod();
                Object result = readMethod.invoke(bean, new Object[0]);
                if (result != null) {
                    if ("data".equals(propertyName)){
                        returnMap.putAll((Map) result);
                    }else {
                        returnMap.put(propertyName, result);
                    }
                } else {
                    returnMap.put(propertyName, "");
                }
            }
        }
        return returnMap;
    }
    public static <T> List<T> mapToBean(List<Map> maps, Class<T> tClass) {
        List<T> beanList = new ArrayList<>();
        try {
            for (Map map : maps) {
                    T t = tClass.newInstance();
                    BeanInfo beanInfo = Introspector.getBeanInfo(tClass);
                    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                    for (PropertyDescriptor property : propertyDescriptors) {
                        String key = property.getName();
                        if ("class".equals(key)) {
                            continue;
                        }
//                        String sqlField = camelToUnderscore(key);
                        if (map.containsKey(key.toUpperCase())) {
                            try {
                                Object value = map.get(key.toUpperCase());
                                // å¾—到property对应的setter方法
                                Method setter = property.getWriteMethod();
                                Class<?> type = property.getPropertyType();
                                // å¼ºè½¬ä¸ºå­—段的类型,不需要时可以去除,依赖commons-beanutilss-beanutils
                                //Object convert = ConvertUtils.convert(String.valueOf(value), type);
                                //setter.invoke(t, convert);
                                setter.invoke(t, value);
                            } catch (Exception e) {
                                throw new RuntimeException("【赋值异常】", e);
                            }
                        }
                    }
                    beanList.add(t);
            }
        } catch (Exception e) {
            throw new RuntimeException("【Map转换实体异常】", e);
        }
        return beanList;
}
    public static String camelToUnderscore(String name) {
        if (name == null && name.length() <= 0) {
            return name;
        }
        StringBuilder sb = new StringBuilder();
        String lowerName = name.toLowerCase();
        for (int i = 0; i < lowerName.length(); i++) {
            String nameChar = name.substring(i, i + 1);
            String lowerChar = lowerName.substring(i, i + 1);
            if (!nameChar.equals(lowerChar)) {
                sb.append("_").append(lowerChar);
            } else {
                sb.append(nameChar);
            }
        }
        return sb.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ubcs-service-api</artifactId>
        <groupId>com.vci.ubcs</groupId>
        <version>3.0.1.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ubcs-webservice-api</artifactId>
    <name>${project.artifactId}</name>
    <version>3.0.1.RELEASE</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-code-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
        </dependency>
    </dependencies>
</project>
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreApplyFormDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java ÐÞ¸Ä
@@ -1,6 +1,7 @@
package com.vci.ubcs.code.dto;
package com.vci.ubcs.code.webservice.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.webservice.vo.BaseModelVO;
/**
 * è®°å½•集成属数据申请id
@@ -16,6 +17,11 @@
    /***
     * é›†å›¢ç¼–码
     */
    private String groupCode;
    /***
     * é”™è¯¯æ ‡è¯†ç 
     */
    private String code;
    /***
@@ -34,6 +40,11 @@
     * æ¶ˆæ¯
     */
    private String msg;
    /**
     * ç”³è¯·å•类型1:申请,2:更改
     */
    private  String operationType;
    public String getCode() {
        return code;
@@ -75,14 +86,32 @@
        this.msg = msg;
    }
    public String getOperationType() {
        return operationType;
    }
    public void setOperationType(String operationType) {
        this.operationType = operationType;
    }
    public String getGroupCode() {
        return groupCode;
    }
    public void setGroupCode(String groupCode) {
        this.groupCode = groupCode;
    }
    @Override
    public String toString() {
        return "DockingPreApplyCodeFormVO{" +
            "code='" + code + '\'' +
        return "DockingPreApplyFormDTO{" +
            "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/dto/DockingPreAttrMappingDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java ÐÞ¸Ä
@@ -1,8 +1,8 @@
package com.vci.ubcs.code.dto;
package com.vci.ubcs.code.webservice.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.webservice.vo.BaseModelVO;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO;
import java.util.List;
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreAttrRangeDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java ÐÞ¸Ä
@@ -1,6 +1,6 @@
package com.vci.ubcs.code.dto;
package com.vci.ubcs.code.webservice.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.webservice.vo.BaseModelVO;
/**
 * è®°å½•集成属性取值范围配置
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreClassifyDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java ÐÞ¸Ä
@@ -1,6 +1,8 @@
package com.vci.ubcs.code.dto;
package com.vci.ubcs.code.webservice.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.webservice.vo.BaseModelVO;
import java.util.List;
/***
 * è®°å½•集团分类信息
@@ -29,6 +31,10 @@
     * çˆ¶çº§èŠ‚ç‚¹
     */
    private  String pid;
    /**
     * é›†å›¢åˆ†ç±»åŒ…含的模型视图
     */
    List<DockingPreViewModelDTO> dockingPreViewModelDTOList;
    public String getClassName() {
        return className;
@@ -62,6 +68,14 @@
        this.pid = pid;
    }
    public List<DockingPreViewModelDTO> getDockingPreViewModelDTOList() {
        return dockingPreViewModelDTOList;
    }
    public void setDockingPreViewModelDTOList(List<DockingPreViewModelDTO> dockingPreViewModelDTOList) {
        this.dockingPreViewModelDTOList = dockingPreViewModelDTOList;
    }
    @Override
    public String toString() {
        return "DockingPreClassifyDTO{" +
@@ -69,6 +83,7 @@
            ", nodeLink='" + nodeLink + '\'' +
            ", getNodeLinkName='" + getNodeLinkName + '\'' +
            ", pid='" + pid + '\'' +
            ", dockingPreViewModelDTOList=" + dockingPreViewModelDTOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreMetaAttrDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreMetaAttrDTO.java ÐÞ¸Ä
@@ -1,7 +1,6 @@
package com.vci.ubcs.code.dto;
package com.vci.ubcs.code.webservice.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.webservice.vo.BaseModelVO;
public class DockingPreMetaAttrDTO extends BaseModelVO {
    /**
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/dto/DockingPreViewModelDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java ÐÞ¸Ä
@@ -1,6 +1,8 @@
package com.vci.ubcs.code.dto;
package com.vci.ubcs.code.webservice.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.webservice.vo.BaseModelVO;
import java.util.List;
/**
 * è®°å½•集成集团分类视图信息
@@ -27,7 +29,10 @@
     * æ•°æ®xinx
     */
    private  String impactList;
    /***
     * æ¨¡åž‹è§†å›¾åŒ…含的属性
     */
    private List<DockingPreMetaAttrDTO> dockingPreMetaAttrDTOList;
    public String getViewName() {
        return viewName;
@@ -53,12 +58,21 @@
        this.impactList = impactList;
    }
    public List<DockingPreMetaAttrDTO> getDockingPreMetaAttrDTOList() {
        return dockingPreMetaAttrDTOList;
    }
    public void setDockingPreMetaAttrDTOList(List<DockingPreMetaAttrDTO> dockingPreMetaAttrDTOList) {
        this.dockingPreMetaAttrDTOList = dockingPreMetaAttrDTOList;
    }
    @Override
    public String toString() {
        return "DockingPreViewModelVO{" +
        return "DockingPreViewModelDTO{" +
            "viewName='" + viewName + '\'' +
            ", sourceClassifyId='" + sourceClassifyId + '\'' +
            ", impactList='" + impactList + '\'' +
            ", dockingPreMetaAttrDTOList=" + dockingPreMetaAttrDTOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreApplyForm.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.entity;
package com.vci.ubcs.code.webservice.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
@@ -6,21 +6,26 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * é›†å›¢ç¼–码申请单记录对象
 * @author xiejun
 * @date  2023-05-22
 */
@Data
@TableName("PL_CODE_JINTEGMAPCONFIG")
@TableName("PL_CODE_JAPPLYCODEFORM")
@ApiModel(value = "DockingPreApplyForm", description = "集团编码申请单记录对象")
@EqualsAndHashCode
public class DockingPreApplyForm extends BaseModel {
    /***
     * é›†å›¢ç¼–码
     */
    @ApiModelProperty(value = "集团编码")
    private String groupCode;
    /***
     * é”™è¯¯æ ‡è¯†ç 
     */
    @ApiModelProperty(value = "错误标识码")
    private String code;
    /***
@@ -43,4 +48,9 @@
     */
    @ApiModelProperty(value = "消息")
    private String msg;
    /**
     * ç”³è¯·å•类型1:申请,2:更改
     */
    @ApiModelProperty(value = "消息")
    private  String operationType;
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreAttrMapping.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrMapping.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.entity;
package com.vci.ubcs.code.webservice.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -7,8 +7,6 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * è®°å½•集成属性与主数据属性映射关系对象
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreAttrRange.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrRange.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.entity;
package com.vci.ubcs.code.webservice.entity;
import com.baomidou.mybatisplus.annotation.TableName;
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreClassify.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreClassify.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.entity;
package com.vci.ubcs.code.webservice.entity;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -7,13 +7,14 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * è®°å½•集成集团分类信息
 * @author xiejun
 * @date 2023-05-22
 */
@Data
@TableName("PL_CODE_CLASSIFY")
@TableName("PL_CODE_JCLASSIFY")
@ApiModel(value = "DockingPreClassify", description = "集成集团分类信息")
@EqualsAndHashCode
public class DockingPreClassify extends BaseModel {
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/entity/DockingPreMetaAttr.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreMetaAttr.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.entity;
package com.vci.ubcs.code.webservice.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -9,7 +9,7 @@
import lombok.EqualsAndHashCode;
@Data
@TableName("PL_CODE_JVIEWMODE")
@TableName("PL_CODE_JMETAATTR")
@ApiModel(value = "DockingPreViewModel", description = "集团分类模型视图信息")
@EqualsAndHashCode
public class DockingPreMetaAttr extends BaseModel {
@@ -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/entity/DockingPreViewModel.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreViewModel.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.entity;
package com.vci.ubcs.code.webservice.entity;
import com.baomidou.mybatisplus.annotation.TableField;
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/feign/IMdmInterJtClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.vci.ubcs.code.webservice.feign;
import com.vci.ubcs.code.webservice.vo.DockingClassifyModelAttrVO;
import com.vci.ubcs.code.webservice.vo.DockingResultVO;
import com.vci.ubcs.code.webservice.vo.DockingReturnStoreVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotNull;
/****
 * é›†å›¢ç ç”³è¯·æä¾›ç»™å¤–部调用接口
 * @author xiejun
 * @date 2023-05-26
 */
@FeignClient(
    value = "ubcs-code"
)
public interface IMdmInterJtClient {
    String API_PREFIX = "/mdmInterService";
    String RETURNGROUPCODE = API_PREFIX + "/getApplyGroupCode";
    String PUBMDMMODEL = API_PREFIX + "/pubMdmModel";
    /***
     * å°†é›†å›¢ç”³è¯·æˆåŠŸçš„ç¼–ç å­˜å…¥ç›¸å…³æ•°æ®ä¹‹ä¸­
     * @param dockingResultVO
     * @return è¿”回存储是否成功信息
     */
    @GetMapping(RETURNGROUPCODE)
    public R getApplyGroupCode( @RequestParam("dockingResultVO") DockingReturnStoreVO dockingResultVO);
    /***
     * ä¸»æ•°æ®æ¨¡åž‹è§†å›¾å‘布
     * @param dockingClassifyModelAttrVO
     * @return
     */
    @PostMapping(PUBMDMMODEL)
    R pubMdmModel(@RequestParam("dockingClassifyModelAttrVO") DockingClassifyModelAttrVO dockingClassifyModelAttrVO);
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/feign/MdmApplyGroupCodeProvider.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.vci.ubcs.code.webservice.feign;
/***
 * @author xiejun
 * @date 2023-05-26
 */
import com.vci.ubcs.code.webservice.vo.*;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.constraints.NotNull;
/****
 * é›†å›¢ç ç”³è¯·æä¾›ç»™å¤–部调用接口
 * @author xiejun
 * @date 2023-05-26
 */
@FeignClient(name = "qmsIntegration",
    url = "${docking.apply.jtInterUrl:http://116.205.176.185:8099}",
    path = "")
public interface MdmApplyGroupCodeProvider {
    /**
     * mdm向集团申请集团码接口
     * @param dockingGroupDataVO AO/TO的信息
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/externalMainData/receiveAddApply")
    DockingResultVO receiveAddApply(@NotNull @RequestBody DockingGroupDataVO dockingGroupDataVO)throws VciBaseException;
    /**
     * mdm向集团更新集团码接口
     * @param dockingGroupDataVO AO/TO的信息
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/externalMainData/receiveAddApply")
    DockingResultVO receiveEditApply(@NotNull @RequestBody DockingGroupDataVO dockingGroupDataVO)throws VciBaseException;
    /***
     * æŸ¥è¯¢ä¸»åˆ†ç±»æ¨¡åž‹
     * @param dockingModelQueryVO
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/externalMainData/queryMdmModel")
    DockingQueryModelVO queryMdmModel(@NotNull @RequestBody DockingModelQueryVO dockingModelQueryVO);
    /***
     * æŸ¥è¯¢åˆ†ç±»è¯¦ç»†æ¨¡åž‹è§†å›¾
     * @param dockingModelQueryVO
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/externalMainData/queryClassModel")
    DockingQueryClassModelVO queryClassModel(@NotNull @RequestBody DockingModelQueryVO dockingModelQueryVO);
    /***
     * æŸ¥è¯¢ç”³è¯·å•状态
     * @param dockingModelQueryVO
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/externalMainData/queryApplyState")
    DockingApplyFormStatusVO queryApplyState(@NotNull @RequestBody DockingModelQueryVO dockingModelQueryVO);
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/BaseModelVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,333 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.vci.ubcs.code.webservice.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.data.annotation.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
public class BaseModelVO implements Serializable {
    private String oid;
    private String id;
    private String name;
    private String description;
    private String revisionOid;
    private String nameOid;
    private String btmname;
    private String lastR;
    private String firstR;
    private String lastV;
    private String firstV;
    private String creator;
    private Date createTime;
    private String lastModifier;
    private Date lastModifyTime;
    private String revisionRule;
    private Integer revisionSeq;
    private String revisionValue;
    private String versionRule;
    private Integer versionSeq;
    private String versionValue;
    private String lcStatus;
    private String lcStatusText;
    @JsonFormat(
        pattern = "yyyy-MM-dd HH:mm:ss.SSS"
    )
    private Date ts;
    private String owner;
//    private String checkInBy;
//    private Date checkInTime;
//    private String checkOutBy;
//    private Date checkOutTime;
    private String copyFromVersion;
    private Integer secretGrade;
    private String secretGradeText;
    private String lctid;
    @Transient
    private Map<String, String> data;
    public BaseModelVO() {
    }
    public String getOid() {
        return this.oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public String getId() {
        return this.id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDescription() {
        return this.description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getRevisionOid() {
        return this.revisionOid;
    }
    public void setRevisionOid(String revisionOid) {
        this.revisionOid = revisionOid;
    }
    public String getNameOid() {
        return this.nameOid;
    }
    public void setNameOid(String nameOid) {
        this.nameOid = nameOid;
    }
    public String getBtmname() {
        return this.btmname;
    }
    public void setBtmname(String btmname) {
        this.btmname = btmname;
    }
    public String getLastR() {
        return this.lastR;
    }
    public void setLastR(String lastR) {
        this.lastR = lastR;
    }
    public String getFirstR() {
        return this.firstR;
    }
    public void setFirstR(String firstR) {
        this.firstR = firstR;
    }
    public String getLastV() {
        return this.lastV;
    }
    public void setLastV(String lastV) {
        this.lastV = lastV;
    }
    public String getFirstV() {
        return this.firstV;
    }
    public void setFirstV(String firstV) {
        this.firstV = firstV;
    }
    public String getCreator() {
        return this.creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public String getLastModifier() {
        return this.lastModifier;
    }
    public void setLastModifier(String lastModifier) {
        this.lastModifier = lastModifier;
    }
    public Date getLastModifyTime() {
        return this.lastModifyTime;
    }
    public void setLastModifyTime(Date lastModifyTime) {
        this.lastModifyTime = lastModifyTime;
    }
    public String getRevisionRule() {
        return this.revisionRule;
    }
    public void setRevisionRule(String revisionRule) {
        this.revisionRule = revisionRule;
    }
    public String getVersionRule() {
        return this.versionRule;
    }
    public void setVersionRule(String versionRule) {
        this.versionRule = versionRule;
    }
    public Integer getRevisionSeq() {
        return this.revisionSeq;
    }
    public void setRevisionSeq(Integer revisionSeq) {
        this.revisionSeq = revisionSeq;
    }
    public String getRevisionValue() {
        return this.revisionValue;
    }
    public void setRevisionValue(String revisionValue) {
        this.revisionValue = revisionValue;
    }
    public Integer getVersionSeq() {
        return this.versionSeq;
    }
    public void setVersionSeq(Integer versionSeq) {
        this.versionSeq = versionSeq;
    }
    public String getVersionValue() {
        return this.versionValue;
    }
    public void setVersionValue(String versionValue) {
        this.versionValue = versionValue;
    }
    public String getLcStatus() {
        return this.lcStatus;
    }
    public void setLcStatus(String lcStatus) {
        this.lcStatus = lcStatus;
    }
    public Date getTs() {
        return this.ts;
    }
    public void setTs(Date ts) {
        this.ts = ts;
    }
    public String getOwner() {
        return this.owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    /*public String getCheckInBy() {
        return this.checkInBy;
    }
    public void setCheckInBy(String checkInBy) {
        this.checkInBy = checkInBy;
    }
    public Date getCheckInTime() {
        return this.checkInTime;
    }
    public void setCheckInTime(Date checkInTime) {
        this.checkInTime = checkInTime;
    }
    public String getCheckOutBy() {
        return this.checkOutBy;
    }
    public void setCheckOutBy(String checkOutBy) {
        this.checkOutBy = checkOutBy;
    }
    public Date getCheckOutTime() {
        return this.checkOutTime;
    }
    public void setCheckOutTime(Date checkOutTime) {
        this.checkOutTime = checkOutTime;
    }*/
    public String getCopyFromVersion() {
        return this.copyFromVersion;
    }
    public void setCopyFromVersion(String copyFromVersion) {
        this.copyFromVersion = copyFromVersion;
    }
    public String getLcStatusText() {
        return this.lcStatusText;
    }
    public void setLcStatusText(String lcStatusText) {
        this.lcStatusText = lcStatusText;
    }
    public Date getCreateTime() {
        return this.createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getSecretGrade() {
        return this.secretGrade;
    }
    public void setSecretGrade(Integer secretGrade) {
        this.secretGrade = secretGrade;
    }
    public String getSecretGradeText() {
        return this.secretGradeText;
    }
    public void setSecretGradeText(String secretGradeText) {
        this.secretGradeText = secretGradeText;
    }
    public String getLctid() {
        return this.lctid;
    }
    public void setLctid(String lctid) {
        this.lctid = lctid;
    }
    public Map<String, String> getData() {
        return this.data;
    }
    public void setData(Map<String, String> data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "BaseModelVO{oid='" + this.oid + '\'' + ", id='" + this.id + '\'' + ", name='" + this.name + '\'' + ", description='" + this.description + '\'' + ", revisionOid='" + this.revisionOid + '\'' + ", nameOid='" + this.nameOid + '\'' + ", btmname='" + this.btmname + '\'' + ", lastR='" + this.lastR + '\'' + ", firstR='" + this.firstR + '\'' + ", lastV='" + this.lastV + '\'' + ", firstV='" + this.firstV + '\'' + ", creator='" + this.creator + '\'' + ", createTime=" + this.createTime + ", lastModifier='" + this.lastModifier + '\'' + ", lastModifyTime=" + this.lastModifyTime + ", revisionRule='" + this.revisionRule + '\'' + ", revisionSeq=" + this.revisionSeq + ", revisionValue='" + this.revisionValue + '\'' + ", versionRule='" + this.versionRule + '\'' + ", versionSeq=" + this.versionSeq + ", versionValue='" + this.versionValue + '\'' + ", lcStatus='" + this.lcStatus + '\'' + ", lcStatusText='" + this.lcStatusText + '\'' + ", ts=" + this.ts + ", owner='" + this.owner + '\'' + ", checkInBy='" + ", copyFromVersion='" + this.copyFromVersion + '\'' + ", secretGrade=" + this.secretGrade + ", secretGradeText='" + this.secretGradeText + '\'' + ", lctid='" + this.lctid + '\'' + ", data=" + this.data + '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingApplyFormStatusVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.vci.ubcs.code.webservice.vo;
/***
 * ç”³è¯·å•状态对象
 * @author xiejun
 * @date 2023-05-29
 */
public class DockingApplyFormStatusVO {
    /***
     * ç”³è¯·å•号
     */
    private String applyNum;
    /***
     * ç”³è¯·å•状态
     */
    private String formState;
    /**
     * å®¡æ ¸æ„è§
     */
    private String examineOpinion;
    public String getApplyNum() {
        return applyNum;
    }
    public void setApplyNum(String applyNum) {
        this.applyNum = applyNum;
    }
    public String getFormState() {
        return formState;
    }
    public void setFormState(String formState) {
        this.formState = formState;
    }
    public String getExamineOpinion() {
        return examineOpinion;
    }
    public void setExamineOpinion(String examineOpinion) {
        this.examineOpinion = examineOpinion;
    }
    @Override
    public String toString() {
        return "DockingApplyFormStatusVO{" +
            "applyNum='" + applyNum + '\'' +
            ", formState='" + formState + '\'' +
            ", examineOpinion='" + examineOpinion + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyMainVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
import java.util.Map;
/***
 * åˆ†ç±»ä¿¡æ¯ï¼ŒåŠå…¶æ¨¡åž‹è§†å›¾å¯¹è±¡
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingClassifyMainVO {
    /**
     * åˆ†ç±»å¯¹è±¡çš„æ¨¡åž‹è§†å›¾
     */
    private Map<String,List<DockingClassifyViewVO>>classInfos;
    /***
     * åˆ†ç±»é›†åˆ
     */
    private List<DockingClassifyVO> classList;
    public Map<String, List<DockingClassifyViewVO>> getClassInfos() {
        return classInfos;
    }
    public void setClassInfos(Map<String, List<DockingClassifyViewVO>> classInfos) {
        this.classInfos = classInfos;
    }
    public List<DockingClassifyVO> getClassList() {
        return classList;
    }
    public void setClassList(List<DockingClassifyVO> classList) {
        this.classList = classList;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyMetaAttrVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.Map;
/***
 * é›†å›¢åˆ†ç±»å±žæ€§ä¿¡æ¯
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingClassifyMetaAttrVO {
    /***
     * ä¸­æ–‡åç§°
     */
    private String chineseName;
    /***
     * è‹±æ–‡åç§°
     */
    private String englishName;
    /***
     * ç±»åž‹
     */
    private Integer metadataType;
    /***
     * æ˜¯å¦å¿…å¡«
     */
    private Integer necessaryConf;
    /**
     * é»˜è®¤å€¼
     */
    private String defaultValue;
    /***
     * ä¸‹å±žå¯¹è±¡
     */
    private DockingClassifyMetaAttrVO compositeMeta;
    /**
     * å€¼åŸŸ
     */
    private Map<String,String> range;
    public String getChineseName() {
        return chineseName;
    }
    public void setChineseName(String chineseName) {
        this.chineseName = chineseName;
    }
    public String getEnglishName() {
        return englishName;
    }
    public void setEnglishName(String englishName) {
        this.englishName = englishName;
    }
    public Integer getMetadataType() {
        return metadataType;
    }
    public void setMetadataType(Integer metadataType) {
        this.metadataType = metadataType;
    }
    public Integer getNecessaryConf() {
        return necessaryConf;
    }
    public void setNecessaryConf(Integer necessaryConf) {
        this.necessaryConf = necessaryConf;
    }
    public String getDefaultValue() {
        return defaultValue;
    }
    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }
    public Map<String, String> getRange() {
        return range;
    }
    public void setRange(Map<String, String> range) {
        this.range = range;
    }
    public DockingClassifyMetaAttrVO getCompositeMeta() {
        return compositeMeta;
    }
    public void setCompositeMeta(DockingClassifyMetaAttrVO compositeMeta) {
        this.compositeMeta = compositeMeta;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyModelAttrVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.vci.ubcs.code.webservice.vo;
/***
 * æŽ¥å£ä¼ é€’对象
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingClassifyModelAttrVO {
    /***
     * ç³»ç»Ÿæ ‡è¯†
     */
    private String sysName;
    /***
     * æ•°æ®é›†
     */
    private DockingClassifyMainVO mainData;
    private String applyEntId;
    /***
     * æ•°æ®é›†
     */
    private DockingClassifyMainVO dataStructure;
    public String getSysName() {
        return sysName;
    }
    public void setSysName(String sysName) {
        this.sysName = sysName;
    }
    public String getApplyEntId() {
        return applyEntId;
    }
    public void setApplyEntId(String applyEntId) {
        this.applyEntId = applyEntId;
    }
    public DockingClassifyMainVO getDataStructure() {
        return dataStructure;
    }
    public void setDataStructure(DockingClassifyMainVO dataStructure) {
        this.dataStructure = dataStructure;
    }
    public DockingClassifyMainVO getMainData() {
        return mainData;
    }
    public void setMainData(DockingClassifyMainVO mainData) {
        this.mainData = mainData;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.vci.ubcs.code.webservice.vo;
/***
 * é›†å›¢åˆ†ç±»ä¿¡æ¯
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingClassifyVO {
    /**
     * ä¸»é”®ID
     */
    private String id;
    /**
     * åˆ†ç±»åç§°
     */
    private String className;
    /***
     * åˆ†ç±»ä»£å·
     */
    private String classNumber;
    private String version;
    /**
     * çˆ¶ID
     */
    private String pid ;
    /***
     * èŠ‚ç‚¹åˆ†ç±»é“¾è·¯
     */
    private String nodeLink;
    /**
     * èŠ‚ç‚¹åˆ†ç±»é“¾è·¯
     */
    private String nodeLinkName;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getClassName() {
        return className;
    }
    public void setClassName(String className) {
        this.className = className;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getNodeLink() {
        return nodeLink;
    }
    public void setNodeLink(String nodeLink) {
        this.nodeLink = nodeLink;
    }
    public String getNodeLinkName() {
        return nodeLinkName;
    }
    public void setNodeLinkName(String nodeLinkName) {
        this.nodeLinkName = nodeLinkName;
    }
    public String getClassNumber() {
        return classNumber;
    }
    public void setClassNumber(String classNumber) {
        this.classNumber = classNumber;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifyViewVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
/***
 * è§†å›¾æ¨¡åž‹å¯¹è±¡
 * @author xj
 * @date 2023-05-26
 */
public class DockingClassifyViewVO {
    /**
     * æ¨¡åž‹è§†å›¾åç§°
     */
    private String viewName;
    /***
     * å½±å“ç¼–码项的数据
     */
    private String impactList;
    /**
     * æ¨¡åž‹è§†å›¾å±žæ€§é›†åˆ
     */
    private List<DockingClassifyMetaAttrVO> metaList;
    public String getViewName() {
        return viewName;
    }
    public void setViewName(String viewName) {
        this.viewName = viewName;
    }
    public List<DockingClassifyMetaAttrVO> getMetaList() {
        return metaList;
    }
    public void setMetaList(List<DockingClassifyMetaAttrVO> metaList) {
        this.metaList = metaList;
    }
    public String getImpactList() {
        return impactList;
    }
    public void setImpactList(String impactList) {
        this.impactList = impactList;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingClassifysVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
import java.util.Map;
/***
 * é›†å›¢åˆ†ç±»ä¿¡æ¯
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingClassifysVO {
    private Map<String,List<DockingClassifyViewVO>> classInfos;
    public Map<String, List<DockingClassifyViewVO>> getClassInfos() {
        return classInfos;
    }
    public void setClassInfos(Map<String, List<DockingClassifyViewVO>> classInfos) {
        this.classInfos = classInfos;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.vci.ubcs.code.webservice.vo;
/***
 * è¿”回对象信息
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingDataVO {
    private String msg;
    private String code;
    private DockingMainDataVO data;
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public DockingMainDataVO getData() {
        return data;
    }
    public void setData(DockingMainDataVO data) {
        this.data = data;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingGroupDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.vci.ubcs.code.webservice.vo;
import lombok.Data;
import java.util.List;
/***
 * é›†å›¢ç”³è¯·æŽ¥å£å‚数信息
 */
@Data
public class DockingGroupDataVO {
    /***
     * ç³»ç»Ÿæ ‡è¯†
     */
    private String sysName;
    /**
     * ä¸šåŠ¡æ•°æ®
     */
    private List<DockingMainData> mainData;
    @Override
    public String toString() {
        return "DockingGroupDataVO{" +
            "sysName='" + sysName + '\'' +
            ", mainData=" + mainData +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingMainData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.vci.ubcs.code.webservice.vo;
import lombok.Data;
import java.util.List;
@Data
public class DockingMainData {
    /**
     * ç”³è¯·å•号
     */
    private String  applyId;
    /***
     * å¯†çº§
     */
    private  String secretLevel;
    /***
     * ç”³è¯·å•位代码(如131460)
     */
    private  String applyEntId;
    /***
     * ç”³è¯·äººå‘˜ç¼–码(用户名,如85645824)
     */
    private  String createBy;
    /***
     * åˆ†ç±»åç§°
     */
    private String  className;
    /***
     * æ¨¡åž‹è§†å›¾ä¿¡æ¯
     */
    private List<DockingViewVO> viewInfos;
    @Override
    public String toString() {
        return "DockingMainData{" +
            "applyId='" + applyId + '\'' +
            ", secretLevel='" + secretLevel + '\'' +
            ", applyEntId='" + applyEntId + '\'' +
            ", createBy='" + createBy + '\'' +
            ", className='" + className + '\'' +
            ", viewInfos=" + viewInfos +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingMainDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.vci.ubcs.code.webservice.vo;
public class DockingMainDataVO {
    private String applyId;
    private String customCoding;
    private String formState;
    public String getApplyId() {
        return applyId;
    }
    public void setApplyId(String applyId) {
        this.applyId = applyId;
    }
    public String getCustomCoding() {
        return customCoding;
    }
    public void setCustomCoding(String customCoding) {
        this.customCoding = customCoding;
    }
    public String getFormState() {
        return formState;
    }
    public void setFormState(String formState) {
        this.formState = formState;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingModelQueryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.vci.ubcs.code.webservice.vo;
public class DockingModelQueryVO {
    private  String sysName;
    private String classId;
    private String applyNums;
    public String getSysName() {
        return sysName;
    }
    public void setSysName(String sysName) {
        this.sysName = sysName;
    }
    public String getClassId() {
        return classId;
    }
    public void setClassId(String classId) {
        this.classId = classId;
    }
    public String getApplyNums() {
        return applyNums;
    }
    public void setApplyNums(String applyNums) {
        this.applyNums = applyNums;
    }
    @Override
    public String toString() {
        return "DockingModelQueryVO{" +
            "sysName='" + sysName + '\'' +
            ", classId='" + classId + '\'' +
            ", applyNums='" + applyNums + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreApplyFormVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java ÐÞ¸Ä
@@ -1,5 +1,4 @@
package com.vci.ubcs.code.vo.pagemodel;
package com.vci.ubcs.code.webservice.vo;
/**
 * è®°å½•集成属数据申请id
@@ -15,6 +14,10 @@
    /***
     * é›†å›¢ç¼–码
     */
    private String  groupCode;
    /***
     * é”™è¯¯æ ‡è¯†ç 
     */
    private String code;
    /***
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreAttrMappingVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java ÐÞ¸Ä
@@ -1,8 +1,4 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.dto.DockingPreAttrRangeDTO;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreAttrRangeVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java ÐÞ¸Ä
@@ -1,6 +1,4 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
package com.vci.ubcs.code.webservice.vo;
/**
 * è®°å½•集成属性取值范围配置
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreClassifyVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java ÐÞ¸Ä
@@ -1,4 +1,6 @@
package com.vci.ubcs.code.vo.pagemodel;
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
/**
 * è®°å½•集成集团分类信息
@@ -27,6 +29,10 @@
     * çˆ¶çº§èŠ‚ç‚¹
     */
    private  String pid;
    /***
     * åˆ†ç±»æ¨¡åž‹è§†å›¾
     */
    private List<DockingPreViewModelVO> dockingPreViewModelVOList;
    public String getClassName() {
        return className;
@@ -60,13 +66,22 @@
        this.pid = pid;
    }
    public List<DockingPreViewModelVO> getDockingPreViewModelVOList() {
        return dockingPreViewModelVOList;
    }
    public void setDockingPreViewModelVOList(List<DockingPreViewModelVO> dockingPreViewModelVOList) {
        this.dockingPreViewModelVOList = dockingPreViewModelVOList;
    }
    @Override
    public String toString() {
        return "DockingPreClassifyDTO{" +
        return "DockingPreClassifyVO{" +
            "className='" + className + '\'' +
            ", nodeLink='" + nodeLink + '\'' +
            ", getNodeLinkName='" + getNodeLinkName + '\'' +
            ", pid='" + pid + '\'' +
            ", dockingPreViewModelVOList=" + dockingPreViewModelVOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreMetaAttrVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreMetaAttrVO.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.code.vo.pagemodel;
package com.vci.ubcs.code.webservice.vo;
/**
 * è®°å½•集成集团分类信息
 * @author xiejun
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingPreViewModelVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java ÐÞ¸Ä
@@ -1,4 +1,7 @@
package com.vci.ubcs.code.vo.pagemodel;
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
/**
 * è®°å½•集成集团分类视图信息
 * @author xiejun
@@ -24,8 +27,10 @@
     * æ•°æ®xinx
     */
    private  String impactList;
    /***
     * æ¨¡åž‹è§†å›¾åŒ…含的属性
     */
    private List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList;
    public String getViewName() {
        return viewName;
    }
@@ -50,12 +55,21 @@
        this.impactList = impactList;
    }
    public List<DockingPreMetaAttrVO> getDockingPreMetaAttrVOList() {
        return dockingPreMetaAttrVOList;
    }
    public void setDockingPreMetaAttrVOList(List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList) {
        this.dockingPreMetaAttrVOList = dockingPreMetaAttrVOList;
    }
    @Override
    public String toString() {
        return "DockingPreViewModelVO{" +
            "viewName='" + viewName + '\'' +
            ", sourceClassifyId='" + sourceClassifyId + '\'' +
            ", impactList='" + impactList + '\'' +
            ", dockingPreMetaAttrVOList=" + dockingPreMetaAttrVOList +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingQueryClassModelVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
/***
 * é›†å›¢åˆ†ç±»ä¿¡æ¯
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingQueryClassModelVO {
    /***
     * è¿”回编码
     */
    private int code=1;
    /***
     * è¿”回信息
     */
    private String msg="接口调用成功";
    /***
     * ç³»ç»Ÿæ ‡è¯†
     */
    private String sysName;
    /***
     * æ•°æ®é›†
     */
    private DockingClassifyMainVO mainData;
    /***
     * æ•°æ®é›†
     */
    private DockingClassifyMainVO data;
    private String applyEntId;
    /***
     * æ•°æ®é›†
     */
    private DockingClassifyMainVO dataStructure;
    public String getSysName() {
        return sysName;
    }
    public void setSysName(String sysName) {
        this.sysName = sysName;
    }
    public String getApplyEntId() {
        return applyEntId;
    }
    public void setApplyEntId(String applyEntId) {
        this.applyEntId = applyEntId;
    }
    public void setMainData(DockingClassifyMainVO mainData) {
        this.mainData = mainData;
    }
    public DockingClassifyMainVO getDataStructure() {
        return dataStructure;
    }
    public DockingClassifyMainVO getMainData() {
        return mainData;
    }
    public DockingClassifyMainVO getData() {
        return data;
    }
    public void setData(DockingClassifyMainVO data) {
        this.data = data;
    }
    public void setDataStructure(DockingClassifyMainVO dataStructure) {
        this.dataStructure = dataStructure;
    }
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    @Override
    public String toString() {
        return "DockingQueryClassModelVO{" +
            "code=" + code +
            ", msg='" + msg + '\'' +
            ", sysName='" + sysName + '\'' +
            ", mainData=" + mainData +
            ", data=" + data +
            ", applyEntId='" + applyEntId + '\'' +
            ", dataStructure=" + dataStructure +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingQueryModelVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
public class DockingQueryModelVO {
    private int code;
    private String msg;
    private List<DockingClassifyVO> data;
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public List<DockingClassifyVO> getData() {
        return data;
    }
    public void setData(List<DockingClassifyVO> data) {
        this.data = data;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingResultDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.vci.ubcs.code.webservice.vo;
import lombok.Data;
@Data
public class DockingResultDataVO<T> {
    /***
     * æ¶ˆæ¯
     */
    private String code;
    private String msg;
    private T data;
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingResultVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
/***
 * è¿”回对象信息
 * @author xiejun
 * @date 2023-05-26
 */
public class DockingResultVO {
    /**
     * çŠ¶æ€ç     1:成功;2:失败
     */
    private String code;
    /**
     * æŽ¥å£è°ƒç”¨ç»“æžœ    æˆåŠŸï¼›å¤±è´¥åŽŸå› 
     */
    private String msg;
    /***
     * æ•°æ®å¯¹è±¡
     */
    private List<DockingDataVO> data;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public List<DockingDataVO> getData() {
        return data;
    }
    public void setData(List<DockingDataVO> data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "ResultDataObject{" +
            "code='" + code + '\'' +
            ", msg='" + msg + '\'' +
            ", data=" + data +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingReturnStoreVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
/***
 * é›†å›¢ç ç”³è¯·è¿”回集团码对象
 * @author xiejun
 * @date 2023-5-26
 */
public class DockingReturnStoreVO {
    /**
     * åˆ†ç±»id
     */
    private String classId;
    /**
     * æºç³»ç»Ÿåç§°
     */
    private String sysName;
    /***
     * ç”³è¯·å•赋码结果
     */
    private List<MainData>mainData;
    public String getClassId() {
        return classId;
    }
    public void setClassId(String classId) {
        this.classId = classId;
    }
    public String getSysName() {
        return sysName;
    }
    public void setSysName(String sysName) {
        this.sysName = sysName;
    }
    public List<MainData> getMainData() {
        return mainData;
    }
    public void setMainData(List<MainData> mainData) {
        this.mainData = mainData;
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DockingViewVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.vci.ubcs.code.webservice.vo;
import lombok.Data;
import java.util.List;
import java.util.Map;
/***
 * æ¨¡åž‹è§†å›¾ä¿¡æ¯
 */
@Data
public class DockingViewVO {
    /**
     * æ¨¡åž‹è§†å›¾åç§°
     */
    private  String viewName;
    /**
     * å±žæ€§å¯¹è±¡ä¿¡æ¯
     */
    private List<Map<String,Object>> viewValue;
    @Override
    public String toString() {
        return "DockingViewVO{" +
            "viewName='" + viewName + '\'' +
            ", viewValue=" + viewValue +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/DokingAttributeSerchVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.vci.ubcs.code.webservice.vo;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import lombok.Data;
import java.util.List;
@Data
public class DokingAttributeSerchVO {
    private String classifyId;
    private String searchValue;
    private boolean flag;
    private List<CodeClassifyTemplateAttrVO> rightAttributes;
    private  List<CodeClassifyTemplateAttrVO> leftAttributes;
    @Override
    public String toString() {
        return "DokingAttributeSerchVO{" +
            "classifyId='" + classifyId + '\'' +
            ", searchValue='" + searchValue + '\'' +
            ", flag=" + flag +
            ", rightAttributes=" + rightAttributes +
            ", leftAttributes=" + leftAttributes +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/com/vci/ubcs/code/webservice/vo/MainData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.vci.ubcs.code.webservice.vo;
import java.util.List;
public class MainData {
    /**
     * ç”³è¯·å•号
     */
    private String applyId;
    /**
     * ç”³è¯·å•状态(1 é›†å›¢å®¡æ ¸ä¸­,2集团审核中, 3 é›†å›¢å®¡æ ¸ä¸­,4 å®¡æ ¸ç»“束,赋码失败,5审核结束,赋码成功 6:待301赋码 7:已赋码 8:已赋码(沿用)9:审核中)
     */
    private String formState;
    /**
     * ä¸»æ•°æ®ç¼–码
     */
    private String customCoding;
    /**
     * ç”³è¯·å•中编码视图信息
     */
    private List<DockingViewVO> viewInfos;
    public String getApplyId() {
        return applyId;
    }
    public void setApplyId(String applyId) {
        this.applyId = applyId;
    }
    public String getFormState() {
        return formState;
    }
    public void setFormState(String formState) {
        this.formState = formState;
    }
    public String getCustomCoding() {
        return customCoding;
    }
    public void setCustomCoding(String customCoding) {
        this.customCoding = customCoding;
    }
    public List<DockingViewVO> getViewInfos() {
        return viewInfos;
    }
    public void setViewInfos(List<DockingViewVO> viewInfos) {
        this.viewInfos = viewInfos;
    }
    @Override
    public String toString() {
        return "MainData{" +
            "applyId='" + applyId + '\'' +
            ", formState='" + formState + '\'' +
            ", customCoding='" + customCoding + '\'' +
            ", viewInfos=" + viewInfos +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/data/data.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
{
  "parentOid":"XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
  "parentBtmName":"jclass",
  "valueField":"oid",
  "textField":"name",
  "parentFieldName":"id",
  "conditionMap":[{
    "codeclsfid": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B"
  }]
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/data/pl_code_jconfig.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1159 @@
{
  "code": 200,
  "success": true,
  "data": [
    {
      "oid": "2023022114229",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "C73079D0-3BEB-E887-5210-87D8A792D3ED",
      "nameOid": "98669FD3-AE76-659B-1583-7F5C28519B89",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "8EAB5416-4928-CFB8-84F5-1955AA890762",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "lastmodifytime",
      "targetAttrName": "最后修改时间",
      "sourceAttrKey": "lastmodifytime",
      "sourceAttrName": "最后修改时间",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114230",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "E46AA8DD-FFC7-BCA0-76F2-AA959AEE8D0A",
      "nameOid": "FBE012CC-0CBE-5D86-9685-BDF01F086342",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-0FED7-90B6-BAF8-B558-2A4693CAAD83",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "2810FED7-90B6-BAF8-B558-2A4693CAAD83",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "createcompany",
      "targetAttrName": "创建公司",
      "sourceAttrKey": "createcompany",
      "sourceAttrName": "创建公司",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114231",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "8A71CDE9-11A7-1095-4603-A7E9D1FB66B6",
      "nameOid": "9F59B1E2-2268-885B-07AC-F34C4972FE86",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-1469D-F1E9-6A31-21B9-E5FF7A03BBEA",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "0131469D-F1E9-6A31-21B9-E5FF7A03BBEA",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "kucunwl",
      "targetAttrName": "库存物料",
      "sourceAttrKey": "kucunwl",
      "sourceAttrName": "库存物料",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114204",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "5F17F832-DAE2-08D5-792D-0B6CBF0199F4",
      "nameOid": "85F86261-18E4-4978-BFAE-BBFF0C75F7C1",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-07512-3fff-4ff0-bf25-f13fcd2a4acf",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "a2307512-3fff-4ff0-bf25-f13fcd2a4acf",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "id",
      "targetAttrName": "编码",
      "sourceAttrKey": "id",
      "sourceAttrName": "编码",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114206",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "D9D48ED4-4481-60B6-582E-6A9910F3D907",
      "nameOid": "0BAF9BDA-A707-DC18-96A0-FEA0D68D9036",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-1fe09-da6f-4412-b92f-f411d341e92d",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "3b11fe09-da6f-4412-b92f-f411d341e92d",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "lcstatus",
      "targetAttrName": "状态",
      "sourceAttrKey": "lcstatus",
      "sourceAttrName": "状态",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114208",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "2A28E3E8-BB25-9652-804E-A1185F52E1D9",
      "nameOid": "F385803E-8EA2-7F2B-B22D-63FF527FCB1C",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-F8C09-A123-391B-E119-748B70028952",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "264F8C09-A123-391B-E119-748B70028952",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "oldcode",
      "targetAttrName": "历史编号",
      "sourceAttrKey": "oldcode",
      "sourceAttrName": "历史编号",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114210",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "3C3ACABB-E692-FED2-ADD9-F04532A43D00",
      "nameOid": "1AB942E6-E956-E44B-B140-AA75222FAF4F",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-9ab10-a3bf-4b51-b8c5-337132018f1d",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "5469ab10-a3bf-4b51-b8c5-337132018f1d",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890762",
      "viewModeName": "",
      "targetAttrKey": "name",
      "targetAttrName": "物料名称",
      "sourceAttrKey": "name",
      "sourceAttrName": "物料名称",
      "viewModelName": "基本视图",
      "viewName": "基本视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114212",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "CAF4CC4C-D2BD-CE2C-7BB1-30799A124EBB",
      "nameOid": "939A13F3-814A-1CD3-0896-429C1D2F803D",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-F0DDF-C5DB-8616-D752-20360970AFB6",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "0FAF0DDF-C5DB-8616-D752-20360970AFB6",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "materialclassify",
      "targetAttrName": "物料分类",
      "sourceAttrKey": "materialclassify",
      "sourceAttrName": "物料分类",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114213",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "43AFA453-AD02-958C-413D-EDC58EFF27B3",
      "nameOid": "E41F372D-60FD-2462-E6B1-DF33D5C787E2",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-329e5-b881-4128-aea4-f1b8f67eb5e7",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "3d7329e5-b881-4128-aea4-f1b8f67eb5e7",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "firstfl",
      "targetAttrName": "一级管理分类",
      "sourceAttrKey": "firstfl",
      "sourceAttrName": "一级管理分类",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114214",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "BCBAE106-DD94-5B6C-C4AF-3AD50F513E93",
      "nameOid": "B52551C4-E35F-9E18-AD63-AD42FC89A15A",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.338",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-43fc3-a604-4fd8-a2c9-482712301285",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "00a43fc3-a604-4fd8-a2c9-482712301285",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "secondfl",
      "targetAttrName": "二级管理分类",
      "sourceAttrKey": "secondfl",
      "sourceAttrName": "二级管理分类",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114215",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "1E5B2974-DEAF-7489-0EEA-1E6EB5AEC7E8",
      "nameOid": "CC456D46-7D32-1E39-05EE-2CF8F9D3754E",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-8e06b-b297-4738-ad6d-0b1b0064ae3e",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "53d8e06b-b297-4738-ad6d-0b1b0064ae3e",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "thrifl",
      "targetAttrName": "三级管理分类",
      "sourceAttrKey": "thrifl",
      "sourceAttrName": "三级管理分类",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114216",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "14C8547F-B31A-E007-170F-9953B57AC003",
      "nameOid": "C3C87FAB-5F9F-3E6E-F433-5DAA335A35DB",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-618cd-475b-4235-8783-20fd3e19e397",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "e7b618cd-475b-4235-8783-20fd3e19e397",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "xiaoshouwl",
      "targetAttrName": "销售物料",
      "sourceAttrKey": "xiaoshouwl",
      "sourceAttrName": "销售物料",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114217",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "880DCB14-8FA6-26FE-796F-1896A8DEFD63",
      "nameOid": "F40FB67E-ED46-F375-F302-EE991F98FAEC",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-3de12-01e3-4a96-9323-ee025f57fe75",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "4ad3de12-01e3-4a96-9323-ee025f57fe75",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "xinghaoguige",
      "targetAttrName": "规格型号",
      "sourceAttrKey": "xinghaoguige",
      "sourceAttrName": "规格型号",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114218",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "1F491FBC-B16C-A715-231D-57825F3FDBBF",
      "nameOid": "63DD90E9-716C-DB3C-E4B3-3CB59425228F",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-059FA-B513-114A-318C-9D7FB3E06736",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "894059FA-B513-114A-318C-9D7FB3E06736",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "jiliangdw",
      "targetAttrName": "计量单位",
      "sourceAttrKey": "jiliangdw",
      "sourceAttrName": "计量单位",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114219",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "E1EAE8B0-2C14-3E39-87F2-D2139D116446",
      "nameOid": "DA491C02-DB3E-1FCA-9896-D9BF8D60699F",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-4C611-FC2A-C4EB-D85E-74B008515EAB",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "1894C611-FC2A-C4EB-D85E-74B008515EAB",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "chukufangshi",
      "targetAttrName": "出库方式",
      "sourceAttrKey": "chukufangshi",
      "sourceAttrName": "出库方式",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114220",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "6295A1BB-95B4-8D25-B508-663CDE89C6B8",
      "nameOid": "0246385E-5435-3859-F5E1-BC1C6B4246F9",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-43953-2216-4171-b1a6-139244e63a95",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "e3d43953-2216-4171-b1a6-139244e63a95",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "description",
      "targetAttrName": "备注说明",
      "sourceAttrKey": "description",
      "sourceAttrName": "备注说明",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114221",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "3E0811EF-B738-27DD-AA77-FBA44CE55A01",
      "nameOid": "113BB469-ECED-8393-D6F2-7F9B85B4060F",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.342",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-D6882-1BA9-BBA6-2344-B433A6FDCA39",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "902D6882-1BA9-BBA6-2344-B433A6FDCA39",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890763",
      "viewModeName": "",
      "targetAttrKey": "hesuanfenlei",
      "targetAttrName": "核算分类",
      "sourceAttrKey": "hesuanfenlei",
      "sourceAttrName": "核算分类",
      "viewModelName": "采购视图",
      "viewName": "采购视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114222",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "E2CF6A7E-AFEA-5474-A8E7-EAD9C6BEE06C",
      "nameOid": "DE77BF7D-DC65-7E3F-C369-2E17217ADE96",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-E34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "01CE34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "materialtype",
      "targetAttrName": "物料类型",
      "sourceAttrKey": "materialtype",
      "sourceAttrName": "物料类型",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114223",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "84F730D2-EEA9-DFC4-FFED-10457C35FB0E",
      "nameOid": "4285DCED-27F9-5CF9-3965-8D2EBF4F6328",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-38D7E-E51A-81B3-558D-FF1212DFC757",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "2FA38D7E-E51A-81B3-558D-FF1212DFC757",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "tuhao",
      "targetAttrName": "图号",
      "sourceAttrKey": "tuhao",
      "sourceAttrName": "图号",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114224",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "48381EB2-4674-6B49-79FF-191BFB17B855",
      "nameOid": "613951FA-9935-4FEB-E729-4F3CCD884515",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-BF978-7354-CE66-415B-16ABD3ED036D",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "B23BF978-7354-CE66-415B-16ABD3ED036D",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "zhibaoqi",
      "targetAttrName": "质保期",
      "sourceAttrKey": "zhibaoqi",
      "sourceAttrName": "质保期",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114225",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "0A731F1F-B033-A068-CE37-4BB00BF222EE",
      "nameOid": "4D08AE69-BFF1-71E9-0532-D76A2DD30BAF",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-46119-D74B-4818-9A89-6235E2234395",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "26D46119-D74B-4818-9A89-6235E2234395",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "revisionvalue",
      "targetAttrName": "版本",
      "sourceAttrKey": "revisionvalue",
      "sourceAttrName": "版本",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114226",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "1B4C043F-E464-5DDC-5BCD-2FCC9D3C1EBF",
      "nameOid": "655623AA-9BAA-ECED-2366-C3AEDAC5CAE5",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-752FC-DC6E-361E-B960-607D7FF908E6",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "52A752FC-DC6E-361E-B960-607D7FF908E6",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "creator",
      "targetAttrName": "创建人",
      "sourceAttrKey": "creator",
      "sourceAttrName": "创建人",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114227",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "14672EF9-7686-8FF6-2ACB-C45ECC0B49E9",
      "nameOid": "2D575115-E4E0-A68B-5463-E8D416AF1CF6",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-799D8-6721-3D79-8EE3-75DAF0680B7E",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "518799D8-6721-3D79-8EE3-75DAF0680B7E",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "createtime",
      "targetAttrName": "创建时间",
      "sourceAttrKey": "createtime",
      "sourceAttrName": "创建时间",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    },
    {
      "oid": "2023022114228",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "F5C2A81C-1105-7DB7-574F-EF46C8199F4A",
      "nameOid": "390CEE14-E838-3496-7B7C-336A0912BF79",
      "btmname": "jintegmapconifg",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-04-01 15:08:55",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-04-01 15:08:55.343",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "defaultValue": "",
      "metaListId": "XJ-9368E-9BA8-38E8-73F3-7D0531A22009",
      "sourceClassifyId": "XJ-FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "sourceClassifyName": "产品",
      "targetAttrId": "4049368E-9BA8-38E8-73F3-7D0531A22009",
      "targetClassifyId": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
      "viewModeId": "XJ-B5416-4928-CFB8-84F5-1955AA890764",
      "viewModeName": "",
      "targetAttrKey": "lastmodifier",
      "targetAttrName": "最后修改人",
      "sourceAttrKey": "lastmodifier",
      "sourceAttrName": "最后修改人",
      "viewModelName": "销售视图",
      "viewName": "销售视图",
      "targetClassifyName": "产品",
      "dockingPreAttrRangeVoList": []
    }
  ],
  "msg": "操作成功"
}
Source/UBCS/ubcs-service-api/ubcs-webservice-api/src/main/java/data/pl_code_jrange.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,192 @@
{
  "code": 200,
  "success": true,
  "data": [
    {
      "oid": "2023022114232",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "097DC30F-CC8F-595D-0530-7C86C176FC61",
      "nameOid": "D3FB491C-0571-3BB2-604E-563CC579CCAC",
      "btmname": "jrange",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-03-30 23:35:13",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-03-30 23:35:13.027",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "metaListId": "XJ-E34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "numText": "材料",
      "numTextValue": "1001",
      "targetNumText": "材料",
      "targetNumTextValue": "7"
    },
    {
      "oid": "2023022114233",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "ABFFA8CA-2BD0-D894-1B2C-2294CBADCBAD",
      "nameOid": "667D8ACC-FA79-521D-9B37-9EFAB338E06A",
      "btmname": "jrange",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-03-30 23:35:13",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-03-30 23:35:13.027",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "metaListId": "XJ-E34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "numText": "成品",
      "numTextValue": "1002",
      "targetNumText": "成品",
      "targetNumTextValue": "5"
    },
    {
      "oid": "2023022114234",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "471212E1-CF4D-1899-C692-FBC3183F2A84",
      "nameOid": "A886A5B0-8617-7FB7-562C-AE3DBBF373EA",
      "btmname": "jrange",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-03-30 23:35:13",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-03-30 23:35:13.027",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "metaListId": "XJ-E34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "numText": "机物料",
      "numTextValue": "1003",
      "targetNumText": "机物料",
      "targetNumTextValue": "6"
    },
    {
      "oid": "2023022114235",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "E08263A0-A7C8-8DBB-3CF0-63EE863A669A",
      "nameOid": "B8CC570A-0448-3E54-9686-0A4EB0004638",
      "btmname": "jrange",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-03-30 23:35:13",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-03-30 23:35:13.027",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "metaListId": "XJ-E34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "numText": "综保",
      "numTextValue": "1004",
      "targetNumText": "综保",
      "targetNumTextValue": "2"
    },
    {
      "oid": "2023022114236",
      "id": "",
      "name": "",
      "description": "",
      "revisionOid": "C641A4DE-9675-2172-A5AF-C313E6C2A36D",
      "nameOid": "DBB71651-D31D-C8BC-15FB-23A9D28A1325",
      "btmname": "jrange",
      "lastR": "1",
      "firstR": "1",
      "lastV": "1",
      "firstV": "1",
      "creator": "1",
      "createTime": "2023-03-30 23:35:13",
      "lastModifier": "1",
      "lastModifyTime": "2023-03-30 23:35:13",
      "revisionRule": "",
      "revisionSeq": 1,
      "revisionValue": "",
      "versionRule": "0",
      "versionSeq": 1,
      "versionValue": "1",
      "lcStatus": "Exist",
      "lcStatusText": "",
      "ts": "2023-03-30 23:35:13.027",
      "owner": "1",
      "copyFromVersion": "",
      "secretGrade": -1,
      "secretGradeText": "",
      "lctid": "defaultLC",
      "data": {},
      "metaListId": "XJ-E34DA-ABF6-9813-8AB0-7651E4B2D54B",
      "numText": "资产",
      "numTextValue": "1005",
      "targetNumText": "资产",
      "targetNumTextValue": "4"
    }
  ],
  "msg": "操作成功"
}
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -51,11 +51,34 @@
            <version>${mybatisplus.join.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
            <version>3.3.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.validation</groupId>
                    <artifactId>validation-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--<dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-webservice</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        </dependency>-->
    </dependencies>
    <build>
        <plugins>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
@@ -5,6 +5,21 @@
 */
public class MdmBtmTypeConstant {
    /**
     * çŠ¶æ€
     */
    public static final String CODE_STATUS_FILED = "lcstatus";
    /**
     * é›†å›¢ç çš„字段
     */
    public static final String CODE_GROUP_FIELD = "groupcode";
    /**
     * åˆ†ç±»çš„主键字段
     */
    public static final String CODE_CLASSIFY_OID_FIELD = "codeclsfid";
    /**
     * ä¸»é¢˜åº“分类
     */
@@ -36,6 +51,11 @@
     * å…³é”®å±žæ€§åˆ¤æ–­é‡å¤
     */
    public static final String CODE_KEY_ATTR_REPEAT_RULE = "codekeyattrrepeat";
    /**
     * å‚照配置
     */
    public static final String CODE_REFER_CONFIG = "codereferconfig";
    /**
     * ç›¸ä¼¼æŸ¥è¯¢è§„则
@@ -151,23 +171,36 @@
    public static final String SYS_INT_HEADER = "sysintheader";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     */
    public static final String DOCKING_PRE_JINTEGMAPCONFIG = "jintegmapconifg";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     */
    public static final String DOCKING_PRE_JINTEGMAPCONFIG = "jintegmapconfig";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     */
    public static final String DOCKING_PRE_JCLASS = "jclass";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     */
    public static final String DOCKING_PRE_JMETAATRR = "jmetaattr";
    /**
     * é›†æˆé›†å›¢åˆ†ç±»ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JCLASSIFY = "jclassify";
    /**
     * é›†æˆé›†å›¢æ¨¡åž‹å±žæ€§ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JMETAATRR = "jmetaattr";
    /**
     * é›†æˆå±žæ€§æ˜ å°„关系业务类型
     */
    public static final String DOCKING_PRE_JRANGE = "jrange";
    /**
     * é›†æˆå±žæ€§å–值范围关系业务类型
     */
    public static final String DOCKING_PRE_JRANGE = "jrange";
    /**
     * é›†æˆé›†å›¢ç”³è¯·å•业务类型
     */
    public static final String DOCKING_PRE_JAPPLYFORM = "japplyform";
    /**
     * é›†æˆé›†å›¢æ¨¡åž‹å±žæ€§ä¸šåŠ¡ç±»åž‹
     */
    public static final String DOCKING_PRE_JVIEWMODEL = "jviewmodel";
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeReferConfigController.java
@@ -1,20 +1,15 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.service.CodeReferConfigService;
import com.vci.ubcs.code.dto.CodeReferConfigDTO;
import com.vci.ubcs.code.service.ICodeReferConfigService;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * å‚照配置表(CodeReferConfig)表控制层
@@ -30,7 +25,7 @@
     * æœåŠ¡å¯¹è±¡
     */
    @Resource
    private CodeReferConfigService codeReferconfigService;
    private ICodeReferConfigService codeReferconfigService;
    /**
     * åˆ†é¡µæŸ¥è¯¢
@@ -39,8 +34,18 @@
     */
    @GetMapping("getReferConfigPage")
    public R<IPage<CodeReferConfigVO>> queryByPage(BladeQueryObject bladeQueryObject) {
        return R.data(this.codeReferconfigService.queryByPage(bladeQueryObject));
        return R.data(this.codeReferconfigService.queryByJoinPage(bladeQueryObject));
    }
    /**
     * æŸ¥è¯¢åˆ—表
     * @param codeReferConfigVO ç­›é€‰æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping("getReferConfigList")
    public R<List<CodeReferConfigVO>> queryByList(CodeReferConfigVO codeReferConfigVO) {
        return R.data(this.codeReferconfigService.queryByList(codeReferConfigVO));
    }
    /**
     * é€šè¿‡ä¸»é”®æŸ¥è¯¢å•条数据
@@ -49,41 +54,41 @@
     * @return å•条数据
     */
    @GetMapping("getByOid")
    public R<CodeReferConfig> queryById(@RequestParam("oid") String oid) {
    public R<CodeReferConfigVO> queryById(@RequestParam("oid") String oid) {
        return R.data(this.codeReferconfigService.queryById(oid));
    }
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param codeReferConfig å®žä½“
     * @param codeReferConfigVO å®žä½“
     * @return æ–°å¢žç»“æžœ
     */
    @PostMapping("/save")
    public R<CodeReferConfig> add(CodeReferConfig codeReferConfig) {
        return R.data(this.codeReferconfigService.insert(codeReferConfig));
    @PostMapping("/addSave")
    public R<CodeReferConfigVO> add(CodeReferConfigVO codeReferConfigVO) {
        return this.codeReferconfigService.insert(codeReferConfigVO);
    }
    /**
     * ç¼–辑数据
     *
     * @param codeReferConfig å®žä½“
     * @param codeReferConfigVO å®žä½“
     * @return ç¼–辑结果
     */
    @PutMapping("/edit")
    public R<CodeReferConfig> edit(CodeReferConfig codeReferConfig) {
        return R.data(this.codeReferconfigService.update(codeReferConfig));
    public R<CodeReferConfigVO> edit(CodeReferConfigVO codeReferConfigVO) {
        return this.codeReferconfigService.update(codeReferConfigVO);
    }
    /**
     * åˆ é™¤æ•°æ®
     *
     * @param id ä¸»é”®
     * @param codeReferConfigDTO ä¸»é”®
     * @return åˆ é™¤æ˜¯å¦æˆåŠŸ
     */
    @DeleteMapping("/del")
    public R<Boolean> deleteById(String id) {
        return R.data(this.codeReferconfigService.deleteById(id));
    public R<Boolean> deleteById(CodeReferConfigDTO codeReferConfigDTO) {
        return this.codeReferconfigService.deleteById(codeReferConfigDTO);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeShowFieldConfigController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSrchCondConfigController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -11,6 +11,7 @@
import com.vci.ubcs.code.service.MdmIOService;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.annotation.VciBusinessLog;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
@@ -19,7 +20,6 @@
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.api.R;
@@ -31,6 +31,7 @@
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -148,7 +149,7 @@
     */
    @PostMapping("/addSaveCode")
    @VciBusinessLog(operateName = "申请单个编码")
    public R addSaveCode(@RequestBody CodeOrderDTO orderDTO){
    public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception {
        return R.success(engineService.addSaveCode(orderDTO));
    }
@@ -469,4 +470,12 @@
    public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId){
        return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
    }
    @GetMapping("/thisistest")
    @ResponseBody
    public List<BaseModel> thisistest(String codeClassifyOid, String functionId) throws Exception {
        return engineService.selectByTypeAndOid("wupin", "b1511bb3-a773-43e2-ac85-a7fde7314a0f,3e08970024835e69f6c2b2ecd90c48c3,582ff205-0dfb-43e0-8223-e772ff1851ab,db0400fe-cc90-4d9d-8da7-1edf06b1481b");
//        return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigFieldTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,146 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * å‚照配置中用到的——字段类型
 * @author ludc
 * @date 2023/5/24 14:09
 */
public enum CodeReferConfigFieldTypeEnum implements BaseEnum {
    /**
     * æ–‡æœ¬æ¡†
     */
    TEXT("text","文本框"),
    /**
     * ä¸‹æ‹‰èœå•
     */
    MODIFY("combox","下拉菜单"),
    /**
     * å•选
     */
    RADIO("radio","单选"),
    /**
     * å¼€å…³
     */
    SWTICH("swtich","开关"),
    /**
     * æ—¶é—´
     */
    DATE("date","时间"),
    /**
     * æ–‡æœ¬åŸŸ
     */
    TEXTAREA("textarea","文本域");
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     *
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     *
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     *
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     *
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * æž„造函数
     *
     * @param value å€¼
     * @param text  æ˜¾ç¤ºæ–‡æœ¬
     */
    private CodeReferConfigFieldTypeEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (CodeReferConfigFieldTypeEnum wenum : CodeReferConfigFieldTypeEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (CodeReferConfigFieldTypeEnum wenum : CodeReferConfigFieldTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static CodeReferConfigFieldTypeEnum forValue(String value) {
        for (CodeReferConfigFieldTypeEnum wenum : CodeReferConfigFieldTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigFilterTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * ç­›é€‰ç±»åž‹
 * @author ludc
 * @date 2023/5/24 15:01
 */
public enum CodeReferConfigFilterTypeEnum implements BaseEnum {
    /**
     * å‡åº
     */
    LIKE("like","包含"),
    /**
     * é™åº
     */
    EQUAL("=","等于"),
    /**
     * é™åº
     */
    GREATER(">","大于"),
    /**
     * é™åº
     */
    LESS("<","小于"),
    /**
     * é™åº
     */
    NOTEQUAL("!=","不等于"),
    /**
     * é™åº
     */
    GREATEREQUAL(">=","大于等于"),
    /**
     * é™åº
     */
    LESSEQUAL("<=","小于等于");
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     *
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     *
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     *
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     *
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * æž„造函数
     *
     * @param value å€¼
     * @param text  æ˜¾ç¤ºæ–‡æœ¬
     */
    private CodeReferConfigFilterTypeEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (CodeReferConfigFilterTypeEnum wenum : CodeReferConfigFilterTypeEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (CodeReferConfigFilterTypeEnum wenum : CodeReferConfigFilterTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static CodeReferConfigFilterTypeEnum forValue(String value) {
        for (CodeReferConfigFilterTypeEnum wenum : CodeReferConfigFilterTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigFixedEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * å‚照配置中用到的——列固定位置
 * @author ludc
 * @date 2023/5/24 14:38
 */
public enum CodeReferConfigFixedEnum implements BaseEnum{
    /**
     * ä¸å›ºå®š
     */
    NOFIXED("noFixed","不固定"),
    /**
     * ä¸‹æ‹‰èœå•
     */
    LEFT("left","左边"),
    /**
     * å•选
     */
    RIGHT("right","右边");
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     *
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     *
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     *
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     *
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * æž„造函数
     *
     * @param value å€¼
     * @param text  æ˜¾ç¤ºæ–‡æœ¬
     */
    private CodeReferConfigFixedEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (CodeReferConfigFixedEnum wenum : CodeReferConfigFixedEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (CodeReferConfigFixedEnum wenum : CodeReferConfigFixedEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static CodeReferConfigFixedEnum forValue(String value) {
        for (CodeReferConfigFixedEnum wenum : CodeReferConfigFixedEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeReferConfigTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,176 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * å‚照配置中用到的——窗口类型
 * @author ludc
 * @date 2023/5/24 14:09
 */
public enum CodeReferConfigTypeEnum implements BaseEnum {
    /**
     * é»˜è®¤æ ·å¼
     */
    DEFAULT("default","默认样式"),
    /**
     * å¹³å°é…ç½®
     */
    STAND("stand","平台配置"),
    /**
     * æ ‘å½¢
     */
    TREE("tree","树形"),
    /**
     * æ ‘å½¢
     */
    GRID("grid","列表"),
    /**
     * éƒ¨é—¨æ ‘
     */
    ORGDEPARTMENTREFER("refer/OrgDepartmentRefer","部门树"),
    /**
     * éƒ¨é—¨åˆ—表
     */
    ORGDEPARTMENTGRIDREFERS("refer/OrgDepartmentGridRefers","部门列表"),
    /**
     * ç”¨æˆ·
     */
    SMUSERREFER("refer/SmUserRefer","用户"),
    /**
     * ç”¨æˆ·åˆ—表
     */
    SMUSERGRIDREFER("refer/SmUserGridRefer","用户列表"),
    /**
     * è§’色列表
     */
    SMROLEREFER("refer/SmRoleRefer","角色列表"),
    /**
     * èŒåŠ¡
     */
    ORGDUTYREFER("refer/OrgDutyRefer","职务"),
    /**
     * å·¥ç§
     */
    SMWORKTYPEREFER("refer/SmWorkTypeRefer","工种"),
    /**
     * æµç¨‹æ¨¡æ¿
     */
    WFPROCESSTEMPLATEREFER("refer/WfProcessTemplateRefer","流程模板");
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     *
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     *
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     *
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     *
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * æž„造函数
     *
     * @param value å€¼
     * @param text  æ˜¾ç¤ºæ–‡æœ¬
     */
    private CodeReferConfigTypeEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (CodeReferConfigTypeEnum wenum : CodeReferConfigTypeEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (CodeReferConfigTypeEnum wenum : CodeReferConfigTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static CodeReferConfigTypeEnum forValue(String value) {
        for (CodeReferConfigTypeEnum wenum : CodeReferConfigTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
}
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,23 @@
        return BladePage.of(page);
    }
    /***
     * èŽ·å–ä¸»é¢˜åº“åˆ†ç±»å±‚çº§æ ‘
     * @param treeQueryObject
     * @return ä¸»é¢˜åº“分类
     */
    @Override
    @PostMapping(CODE_CLASSIFY_TREE)
    public List<Tree> referCodeClassifyTree(TreeQueryObject treeQueryObject) {
        return plCodeClassifyService.referTree(treeQueryObject);
    }
    @Override
    @GetMapping(CODE_ATTRIBUTE_LIST)
    public List<CodeClassifyTemplateAttrVO> listCodeAttributeByClassId(String codeClassifyId) {
        CodeClassifyTemplateVO codeClassifyTemplateVO=engineService.getUsedTemplateByClassifyOid(codeClassifyId,true);
        return codeClassifyTemplateVO.getAttributes();
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.feign;
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;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;
/**
 * ç¼–码信息 Feign实现类
 *
 * @author yuxc
 * @since 2023-05-05
 */
@ApiIgnore()
@RestController
@AllArgsConstructor
public class MdmEngineClient implements IMdmEngineClient {
    private final MdmEngineService mdmEngineService;
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸oid集合查询数据进行返回
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param oids      éœ€è¦æŸ¥è¯¢çš„oid集合 é€—号分开
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    @Override
    @GetMapping(SELECT_BY_TYPE_OID)
    public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) {
        try {
            return R.data(mdmEngineService.selectByTypeAndOid(btmType, oids));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ’å…¥æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理成功数据条数
     */
    @Override
    @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);
        }
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeBasicSecMapper.java
@@ -27,10 +27,10 @@
    /**
     * æ‰¹é‡æ’å…¥
     * @param codeBasicSecList
     //* @param codeBasicSecList
     * @return
     */
    Long insertBatch(@Param("entities") List<CodeBasicSec> codeBasicSecList);
    //    Long insertBatch(@Param("entities") List<CodeBasicSec> codeBasicSecList);
    List<String> getOidByCodeclassifysecOid(@Param("codeClassifySecOid") String codeClassifySecOid);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeReferConfigMapper.java
@@ -1,6 +1,10 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseMapper;
import com.vci.ubcs.code.dto.CodeReferConfigDTO;
import com.vci.ubcs.code.entity.CodeReferConfig;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
@@ -9,10 +13,10 @@
/**
 * å‚照配置表(CodeReferConfig)表数据库访问层
 *
 * @author makejava
 * @author ludc
 * @since 2023-05-19 17:47:51
 */
public interface CodeReferConfigMapper extends BaseMapper<CodeReferConfig> {
public interface CodeReferConfigMapper extends MPJBaseMapper<CodeReferConfig> {
    /**
     * é€šè¿‡ID查询单条数据
@@ -26,10 +30,10 @@
     * æŸ¥è¯¢æŒ‡å®šè¡Œæ•°æ®
     *
     * @param codeReferConfig æŸ¥è¯¢æ¡ä»¶
     * @param pageable         åˆ†é¡µå¯¹è±¡
     * @param page         åˆ†é¡µå¯¹è±¡
     * @return å¯¹è±¡åˆ—表
     */
    List<CodeReferConfig> queryAllByPage(CodeReferConfig codeReferConfig, @Param("pageable") Pageable pageable);
    IPage<CodeReferConfig> selectJoinPage(@Param("codeReferConfig") CodeReferConfig codeReferConfig, IPage page);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeShowFieldConfigMapper.java
@@ -10,76 +10,11 @@
/**
 * å¼•用码段,参照配置界面,显示的属性配置表(CodeShowFieldConfig)表数据库访问层
 *
 * @author makejava
 * @author ludc
 * @since 2023-05-19 17:58:55
 */
public interface CodeShowFieldConfigMapper extends BaseMapper<CodeShowFieldConfig> {
    /**
     * é€šè¿‡ID查询单条数据
     *
     * @param oid ä¸»é”®
     * @return å®žä¾‹å¯¹è±¡
     */
    CodeShowFieldConfig queryById(String oid);
    /**
     * æŸ¥è¯¢æŒ‡å®šè¡Œæ•°æ®
     *
     * @param plCodeShowfieldconfig æŸ¥è¯¢æ¡ä»¶
     * @param pageable         åˆ†é¡µå¯¹è±¡
     * @return å¯¹è±¡åˆ—表
     */
    List<CodeShowFieldConfig> queryAllByLimit(CodeShowFieldConfig plCodeShowfieldconfig, @Param("pageable") Pageable pageable);
    /**
     * ç»Ÿè®¡æ€»è¡Œæ•°
     *
     * @param plCodeShowfieldconfig æŸ¥è¯¢æ¡ä»¶
     * @return æ€»è¡Œæ•°
     */
    long count(CodeShowFieldConfig plCodeShowfieldconfig);
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param plCodeShowfieldconfig å®žä¾‹å¯¹è±¡
     * @return å½±å“è¡Œæ•°
     */
    int insert(CodeShowFieldConfig plCodeShowfieldconfig);
    /**
     * æ‰¹é‡æ–°å¢žæ•°æ®ï¼ˆMyBatis原生foreach方法)
     *
     * @param entities List<CodeShowFieldConfig> å®žä¾‹å¯¹è±¡åˆ—表
     * @return å½±å“è¡Œæ•°
     */
    int insertBatch(@Param("entities") List<CodeShowFieldConfig> entities);
    /**
     * æ‰¹é‡æ–°å¢žæˆ–按主键更新数据(MyBatis原生foreach方法)
     *
     * @param entities List<CodeShowFieldConfig> å®žä¾‹å¯¹è±¡åˆ—表
     * @return å½±å“è¡Œæ•°
     * @throws org.springframework.jdbc.BadSqlGrammarException å…¥å‚是空List的时候会抛SQL语句错误的异常,请自行校验入参
     */
    int insertOrUpdateBatch(@Param("entities") List<CodeShowFieldConfig> entities);
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param plCodeShowfieldconfig å®žä¾‹å¯¹è±¡
     * @return å½±å“è¡Œæ•°
     */
    int update(CodeShowFieldConfig plCodeShowfieldconfig);
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
     * @return å½±å“è¡Œæ•°
     */
    int deleteById(String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSrchCondConfigMapper.java
@@ -9,76 +9,10 @@
/**
 * å¼•用码段,参照配置界面,查询条件配置表(CodeSrchCondConfig)表数据库访问层
 *
 * @author makejava
 * @author ludc
 * @since 2023-05-19 17:58:56
 */
public interface CodeSrchCondConfigMapper extends BaseMapper<CodeSrchCondConfig> {
    /**
     * é€šè¿‡ID查询单条数据
     *
     * @param oid ä¸»é”®
     * @return å®žä¾‹å¯¹è±¡
     */
    CodeSrchCondConfig queryById(String oid);
    /**
     * æŸ¥è¯¢æŒ‡å®šè¡Œæ•°æ®
     *
     * @param plCodeSrchcondconfig æŸ¥è¯¢æ¡ä»¶
     * @param pageable         åˆ†é¡µå¯¹è±¡
     * @return å¯¹è±¡åˆ—表
     */
    List<CodeSrchCondConfig> queryAllByLimit(CodeSrchCondConfig plCodeSrchcondconfig, @Param("pageable") Pageable pageable);
    /**
     * ç»Ÿè®¡æ€»è¡Œæ•°
     *
     * @param plCodeSrchcondconfig æŸ¥è¯¢æ¡ä»¶
     * @return æ€»è¡Œæ•°
     */
    long count(CodeSrchCondConfig plCodeSrchcondconfig);
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param plCodeSrchcondconfig å®žä¾‹å¯¹è±¡
     * @return å½±å“è¡Œæ•°
     */
    int insert(CodeSrchCondConfig plCodeSrchcondconfig);
    /**
     * æ‰¹é‡æ–°å¢žæ•°æ®ï¼ˆMyBatis原生foreach方法)
     *
     * @param entities List<CodeSrchCondConfig> å®žä¾‹å¯¹è±¡åˆ—表
     * @return å½±å“è¡Œæ•°
     */
    int insertBatch(@Param("entities") List<CodeSrchCondConfig> entities);
    /**
     * æ‰¹é‡æ–°å¢žæˆ–按主键更新数据(MyBatis原生foreach方法)
     *
     * @param entities List<CodeSrchCondConfig> å®žä¾‹å¯¹è±¡åˆ—表
     * @return å½±å“è¡Œæ•°
     * @throws org.springframework.jdbc.BadSqlGrammarException å…¥å‚是空List的时候会抛SQL语句错误的异常,请自行校验入参
     */
    int insertOrUpdateBatch(@Param("entities") List<CodeSrchCondConfig> entities);
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param plCodeSrchcondconfig å®žä¾‹å¯¹è±¡
     * @return å½±å“è¡Œæ•°
     */
    int update(CodeSrchCondConfig plCodeSrchcondconfig);
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
     * @return å½±å“è¡Œæ•°
     */
    int deleteById(String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -21,4 +21,13 @@
    List<Map> selectBySql(@Param("inSql") String inSql);
    /**
     * ä¼ å…¥è¡¨æ˜Žï¼Œ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);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreApplyFormMapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrMappingMapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrRangeMapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreMetaAttrMapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreViewModelMapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeReferConfigService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeShowFieldConfigService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSrchCondConfigService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
@@ -161,6 +161,14 @@
    List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSec> codeBasicSecDOs, boolean hasFixedValue) throws VciBaseException;
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeBasicSecDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSec>  codeBasicSecDOs) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeBasicSecDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeOsattributeService.java
@@ -41,7 +41,6 @@
     */
    IPage<CodeOsattributeVO> selectCodeOsattributePage(IPage<CodeOsattributeVO> page, CodeOsattributeVO CodeOsattribute);
    boolean isDefaultAttr(String selectKey);
    Map<String, CodeOsattributeVO> getDefaultAttributeVOMap();
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeReferConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.yulichang.base.MPJBaseService;
import com.vci.ubcs.code.dto.CodeReferConfigDTO;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import org.springblade.core.tool.api.R;
import java.util.List;
/**
 * å‚照配置表(CodeReferConfig)表服务接口
 *
 * @author ludc
 * @since 2023-05-19 17:47:59
 */
public interface ICodeReferConfigService extends MPJBaseService<CodeReferConfig> {
    /**
     * é€šè¿‡ID查询单条数据
     *
     * @param oid ä¸»é”®
     * @return å®žä¾‹å¯¹è±¡
     */
    CodeReferConfigVO queryById(String oid);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param bladeQueryObject ç­›é€‰æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    IPage<CodeReferConfigVO> queryByJoinPage(BladeQueryObject bladeQueryObject);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param codeReferConfigVO ç­›é€‰æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<CodeReferConfigVO> queryByList(CodeReferConfigVO codeReferConfigVO);
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param codeReferConfigVO å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    R insert(CodeReferConfigVO codeReferConfigVO);
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param codeReferConfigVO å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    R update(CodeReferConfigVO codeReferConfigVO);
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param codeReferConfigDTO
     * @return æ˜¯å¦æˆåŠŸ
     */
    R deleteById(CodeReferConfigDTO codeReferConfigDTO);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeShowFieldConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodeShowFieldConfig;
import com.vci.ubcs.code.vo.CodeShowFieldConfigVO;
import java.util.List;
/**
 * å¼•用码段,参照配置界面,显示的属性配置表(CodeShowFieldConfig)表服务接口
 *
 * @author ludc
 * @since 2023-05-19 17:58:56
 */
public interface ICodeShowFieldConfigService extends IService<CodeShowFieldConfig> {
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param codeShowFieldConfig å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    boolean insert(CodeShowFieldConfig codeShowFieldConfig);
    /**
     * æ‰¹é‡æ–°å¢žæ•°æ®
     *
     * @param codeShowFieldConfigVOS å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    boolean insertBatch(List<CodeShowFieldConfigVO> codeShowFieldConfigVOS, String oid);
    /**
     * æ‰¹é‡ä¿®æ”¹æ•°æ®
     *
     * @param codeShowFieldConfigVOS å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    boolean updateBatch(List<CodeShowFieldConfigVO> codeShowFieldConfigVOS);
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
     * @return æ˜¯å¦æˆåŠŸ
     */
    boolean deleteById(String oid);
    /**
     * é€šè¿‡å…³è”的参照配置主键删除数据
     *
     * @param oid
     * @return æ˜¯å¦æˆåŠŸ
     */
    boolean deleteByReferConfigOid(String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSrchCondConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodeSrchCondConfig;
import com.vci.ubcs.code.vo.CodeSrchCondConfigVO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import java.util.List;
/**
 * å¼•用码段,参照配置界面,查询条件配置表(CodeSrchCondConfig)表服务接口
 *
 * @author ludc
 * @since 2023-05-19 17:58:56
 */
public interface ICodeSrchCondConfigService extends IService<CodeSrchCondConfig> {
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param codeSrchCondConfig å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    boolean insert(CodeSrchCondConfig codeSrchCondConfig);
    /**
     * æ‰¹é‡æ–°å¢žæ•°æ®
     *
     * @param codeSrchCondConfigVOS å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    boolean insertBatch(List<CodeSrchCondConfigVO> codeSrchCondConfigVOS, String oid);
    /**
     * æ‰¹é‡â€”—修改数据
     *
     * @param codeSrchCondConfigVOS å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    boolean updateBatch(List<CodeSrchCondConfigVO> codeSrchCondConfigVOS);
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
     * @return æ˜¯å¦æˆåŠŸ
     */
    boolean deleteById(String oid);
    /**
     * é€šè¿‡å…³è”的参照配置id删除数据
     *
     * @param oid å‚照配置主键
     * @return æ˜¯å¦æˆåŠŸ
     */
    boolean deleteByReferConfigOid(String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -9,12 +9,18 @@
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.pagemodel.*;
import org.springblade.core.tool.api.R;
import java.util.*;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ä¸»æ•°æ®å¼•擎服务
@@ -55,7 +61,7 @@
     * @param orderDTO ç”³è¯·çš„信息,需要包含属性的内容和码段相关的内容
     * @return è¿”回编码的内容
     */
    String addSaveCode(CodeOrderDTO orderDTO);
    String addSaveCode(CodeOrderDTO orderDTO) throws Exception;
    /**
     * åˆ¤æ–­ç¼–码的码段是否输入或者选择了码值
@@ -84,9 +90,9 @@
     * åˆå§‹åŒ–业务类型
     * --创建人默认为当前用户,如果需要修改,可以在获取后自行处理
     * @param btmName ä¸šåŠ¡ç±»åž‹çš„åç§°ï¼Œä¼šè‡ªåŠ¨å˜æˆå°å†™
     * @return CodeWupinEntity
     * @return BaseModel
     */
    CodeWupin createCBOByBtmName(String btmName);
    BaseModel createCBOByBtmName(String btmName);
    /**
     * ä¿å­˜å¯è¾“可选的信息
@@ -363,4 +369,21 @@
     * @return UI相关的内容
     */
    MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ’å…¥æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理成功数据条数
     */
    Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception;
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸oid集合查询数据进行返回
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param oids      éœ€è¦æŸ¥è¯¢çš„oid集合 é€—号分开
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException;
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -2,9 +2,9 @@
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.revision.model.BaseModel;
import java.util.Collection;
import java.util.List;
@@ -19,7 +19,7 @@
     * @param dataCBOList ä¸šåŠ¡æ•°æ®
     */
    List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
                                        CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupin> dataCBOList);
                                        CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception;
    /**
        * å›žæ”¶ç å€¼
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -16,10 +16,8 @@
import com.vci.ubcs.code.mapper.CodeBasicSecMapper;
import com.vci.ubcs.code.mapper.CodeClassifyValueMapper;
import com.vci.ubcs.code.mapper.CodeFixedValueMapper;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.service.ICodeClassifyValueService;
import com.vci.ubcs.code.service.ICodeFixedValueService;
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
@@ -83,6 +81,9 @@
    @Resource
    private ICodeClassifyValueService codeClassifyValueService;
    @Resource
    private ICodeReferConfigService codeReferConfigService;
    @Resource
    private IDictBizClient iDictBizClient;
@@ -237,15 +238,22 @@
            && StringUtils.isBlank(codeBasicSecDO.getCodeFillSeparator())){
            throw new VciBaseException("当补位方式为左补位或者右补位的时候,补位字符不能为空");
        }
        CodeReferConfigVO codeReferConfigVO = null;
        //引用码段的时候,需要判断参照的信息是否正确
        if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){
            if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){
                throw new VciBaseException("引用码段的时候,需要填写 å‚照配置 çš„内容");
            }
            try{
                JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
                //JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
                codeReferConfigVO = JSONObject.parseObject(codeBasicSecDO.getReferConfig(), CodeReferConfigVO.class);
                // å°†å‚照配置进行持久化,给用户提供可可选择参照配置的方式
            }catch (Throwable e){
                throw new VciBaseException("引用码段的时候,参照配置的内容的格式不正确,",new String[0],e);
            }
            if(codeReferConfigVO.getIsPersistence()=="true"){
                codeReferConfigService.insert(codeReferConfigVO);
            }
        }
        boolean resBoolean = codeBasicSecMapper.insert(codeBasicSecDO) > 0;
@@ -731,6 +739,27 @@
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     *
     * @param codeBasicSecDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSec> codeBasicSecDOs) throws VciBaseException {
        List<CodeBasicSecVO> voList = new ArrayList<CodeBasicSecVO>();
        if (!CollectionUtils.isEmpty(codeBasicSecDOs)) {
            for (CodeBasicSec s : codeBasicSecDOs) {
                CodeBasicSecVO vo = codeBasicSecDO2VO(s);
                if (vo != null) {
                    voList.add(vo);
                }
            }
        }
        return voList;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     *
     * @param codeBasicSecDO æ•°æ®å¯¹è±¡
@@ -739,14 +768,26 @@
     */
    @Override
    public CodeBasicSecVO codeBasicSecDO2VO(CodeBasicSec codeBasicSecDO) throws VciBaseException {
        CodeBasicSecVO vo = new CodeBasicSecVO();
        CodeBasicSecVO codeBasicSecVO = new CodeBasicSecVO();
        if (codeBasicSecDO != null) {
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDO, vo);
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecVO, codeBasicSecVO);
            codeBasicSecVO.setSecTypeText(CodeSecTypeEnum.getTextByValue(codeBasicSecVO.getSecType()));
            codeBasicSecVO.setCodeLevelTypeText(CodeLevelTypeEnum.getTextByValue(codeBasicSecVO.getCodeLevelType()));
            codeBasicSecVO.setCodeSecLengthTypeText(CodeSecLengthTypeEnum.getTextByValue(codeBasicSecVO.getCodeSecLengthType()));
            codeBasicSecVO.setValueCutTypeText(CodeCutTypeEnum.getValueByText(codeBasicSecVO.getValueCutType()));
            codeBasicSecVO.setCodeGetValueTypeText(CodeGetValueTypeEnum.getValueByText(codeBasicSecVO.getCodeGetValueType()));
            // å¦‚果是分类码段需要查询所属分类的中文名称
            if(codeBasicSecDO.getSecType().equals("codeclassifysec") && Func.isNotEmpty(codeBasicSecDO.getParentClassifySecOid())){
                CodeBasicSec codeBasicSec = codeBasicSecMapper.selectOne(Wrappers.<CodeBasicSec>query().lambda()
                    .eq(CodeBasicSec::getOid, codeBasicSecDO.getParentClassifySecOid())
                    .eq(CodeBasicSec::getSecType, codeBasicSecDO.getSecType()));
                codeBasicSecVO.setParentClassifySecText(codeBasicSec.getName());
            }
            //如果有lcstatus的类的话
            if (true) {
                //vo.setLcStatusText({lcStatusFullClassName}.getTextByValue(vo.getLcStatus()));
            }
        }
        return vo;
        return codeBasicSecVO;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
@@ -34,6 +35,7 @@
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
import static jodd.util.StringUtil.isBlank;
/**
 * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æœåŠ¡æŽ¥å£
@@ -324,6 +326,7 @@
        return false;
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oid ä¸»é”®
@@ -366,7 +369,7 @@
    @Override
    public int codeTemplateDeleteTrigger(String classifyTemplateOid) {
        int updateCount = 0;
        if(com.alibaba.nacos.api.utils.StringUtils.isBlank(classifyTemplateOid)){
        if(isBlank(classifyTemplateOid)){
            Map<String,Object> conditionMap = new HashMap<>();
            conditionMap.put("classifyTemplateOid",classifyTemplateOid);
            List<CodeClassifyProcessTemp> codeClsflowtempEntities = baseMapper.selectByMap(conditionMap);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -19,13 +19,15 @@
import com.vci.ubcs.code.po.CodeClassifyPO;
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
import com.vci.ubcs.code.service.ICodeOsattributeService;
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.vo.CodeOsattributeVO;
import com.vci.ubcs.code.vo.CodeOsbtmtypeVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.core.log.exception.ServiceException;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.bo.WriteExcelData;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
@@ -35,6 +37,7 @@
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.BladeTreeQueryObject;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
@@ -46,10 +49,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -74,10 +81,18 @@
    @Resource
    private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
    @Resource
    CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
    private CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
    @Resource
    ICodeRuleService ICodeRuleService;
    private IBtmTypeClient btmTypeClient;
    /**
     * å±žæ€§æœåŠ¡
     */
//    @Autowired
//    private OsAttributeServiceI attributeService;
    /**
     * æ—¥å¿—
@@ -258,7 +273,6 @@
        return codeClassifyMapper.checkHasChild(oid.trim());
    }
    /**
     * åˆ é™¤ä¸»é¢˜åº“分类
     * @param codeClassify ä¸»é¢˜åº“分类数据传输对象,oid和ts需要传输
@@ -363,7 +377,6 @@
        return codeClassifyDO2VOs(codeClassifyDOList);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oidCollections ä¸»é”®çš„集合
@@ -382,7 +395,6 @@
        }
        return  codeClassifyList;
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
@@ -508,8 +520,7 @@
        return null;
    }
//    /**
    //    /**
//     * æ ¹æ®æ ‘形查询对象来查询数据对象
//     *
//     * @param treeQueryObject æ ‘形查询对象
@@ -899,7 +910,7 @@
        condition.put("pkbtmtype",topClassifyVO.getBtmtypeid());
        List<CodeOsbtmtypeattributeEntity> unDefaultAttributes = codeOsbtmtypeattributeMapper.selectByMap(condition);
//        List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService. (topClassifyVO.getBtmtypeid());
        // List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService. (topClassifyVO.getBtmtypeid());
        List<CodeOsattributeVO> attributeVOS = new ArrayList<>();
        if(!CollectionUtils.isEmpty(unDefaultAttributes)){
            unDefaultAttributes.stream().forEach(attr->{
@@ -909,6 +920,7 @@
                attributeVO.setAttrlength(Short.valueOf(attr.getAttributelength()));
                attributeVO.setBtmtypeid(attr.getReferbtmtypeid());
                attributeVO.setBtmtypename(attr.getReferbtmtypename());
                attributeVO.setAttributedatatypetext(attr.getReferbtmtypename());
                boolean add = true;
                if(StringUtils.isNotBlank(id) && !attributeVO.getId().contains(id.replace("*",""))){
                    add = false;
@@ -921,8 +933,8 @@
                }
            });
        }
//        if(!CollectionUtils.isEmpty(attributeService.getDefaultAttributeVOs())){
//            attributeService.getDefaultAttributeVOs().stream().forEach(attr->{
//        if(!CollectionUtils.isEmpty(codeOsattributeService.getDefaultAttributeVOs())){
//            codeOsattributeService.getDefaultAttributeVOs().stream().forEach(attr->{
//                boolean add = true;
//                if(StringUtils.isNotBlank(id) && !attr.getId().contains(id.replace("*",""))){
//                    add = false;
@@ -1000,7 +1012,7 @@
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    @Override
    public  CodeClassifyVO getObjectByOid(String oid) throws VciBaseException{
    public CodeClassifyVO getObjectByOid(String oid) throws VciBaseException{
        return codeClassifyDO2VO(selectByOid(oid));
    }
@@ -1021,7 +1033,7 @@
    }
    /**
     * ä¸»é¢˜åº“的树
     * ä¸»é¢˜åº“的树,已经联调业务类型查询
     *
     * @param treeQueryObject æ ‘形查询对象
     * @return ä¸»é¢˜åº“显示树
@@ -1032,10 +1044,20 @@
            treeQueryObject = new TreeQueryObject();
        }
        if(treeQueryObject.getConditionMap() == null){
            treeQueryObject.setConditionMap(new HashMap<>());
            treeQueryObject.setConditionMap(new HashMap<String,String>());
        }
        treeQueryObject.getConditionMap().put(PARENT_FIELD_NAME, "=null");
        return treeCodeClassify(treeQueryObject);
        List<Tree> trees = treeCodeClassify(treeQueryObject);
        treeQueryObject.getConditionMap().put("domain", AppConstant.APPLICATION_NAME_CODE);
        BaseQueryObject baseQueryObject = new BaseQueryObject();
        baseQueryObject.setConditionMap(treeQueryObject.getConditionMap());
        List<BtmTypeVO> btmTypeVOS = btmTypeClient.getRef(baseQueryObject).getData();
        if(Func.isEmpty(btmTypeVOS) || Func.isEmpty(trees)){
            return null;
        }
        List<Tree> treeList = trees.stream().filter(tree -> btmTypeVOS.stream().
            anyMatch(btmType -> Objects.equals(tree.getAttributes().get("id"), btmType.getId()))).collect(Collectors.toList());
        return treeList;
    }
    /**
@@ -1106,7 +1128,6 @@
        return fullInfo;
    }
    /**
     * ç»Ÿè®¡å­èŠ‚ç‚¹çš„ä¸ªæ•°
     *
@@ -1121,4 +1142,5 @@
        wrapper.eq("parentCodeClassifyOid",codeClassifyOid);
        return codeClassifyMapper.selectCount(wrapper).intValue();
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java
@@ -1,28 +1,41 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.entity.CodeShowFieldConfig;
import com.vci.ubcs.code.entity.CodeSrchCondConfig;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeReferConfigDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.mapper.CodeReferConfigMapper;
import com.vci.ubcs.code.service.CodeReferConfigService;
import com.vci.ubcs.code.service.ICodeReferConfigService;
import com.vci.ubcs.code.service.ICodeShowFieldConfigService;
import com.vci.ubcs.code.service.ICodeSrchCondConfigService;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.wrapper.CodeReferConfigWraper;
import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.TS_NOT_PROCESS;
/**
 * å‚照配置表(CodeReferconfig)表服务实现类
@@ -31,9 +44,16 @@
 * @since 2023-05-19 17:48:02
 */
@Service("CodeReferconfigService")
public class CodeReferConfigServiceImpl extends ServiceImpl<CodeReferConfigMapper,CodeReferConfig> implements CodeReferConfigService {
public class CodeReferConfigServiceImpl extends MPJBaseServiceImpl<CodeReferConfigMapper,CodeReferConfig> implements ICodeReferConfigService {
    @Resource
    private CodeReferConfigMapper codeReferconfigMapper;
    @Resource
    private ICodeShowFieldConfigService ICodeShowFieldConfigService;
    @Resource
    private ICodeSrchCondConfigService ICodeSrchCondConfigService;
    /**
     * é€šè¿‡ID查询单条数据
@@ -42,61 +62,184 @@
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeReferConfig queryById(String oid) {
        return this.codeReferconfigMapper.queryById(oid);
    public CodeReferConfigVO queryById(String oid) {
        CodeReferConfig codeReferConfig = this.codeReferconfigMapper.selectJoinOne(CodeReferConfig.class, this.getMPJLambdaWrapper().eq(CodeReferConfig::getOid, oid));
        return CodeReferConfigWraper.build().entityVO(codeReferConfig);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param bladeQueryObject ç­›é€‰æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param bladeQueryObject ç­›é€‰æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public IPage<CodeReferConfigVO> queryByJoinPage(BladeQueryObject bladeQueryObject) {
        CodeReferConfig codeReferConfig = new CodeReferConfig();
        // æ ¹æ®ç§Ÿæˆ·è¿›è¡ŒåŒºåˆ†å¯¹åº”的参照配置
        Map<String, Object> conditionMap = bladeQueryObject.getConditionMap();
        // æŸ¥è¯¢æ‰€å±žç§Ÿæˆ·ä¸‹çš„和开启全局的参照配置信息
        conditionMap.put("tenantId",AuthUtil.getTenantId());
        conditionMap.put("isOpenGlobal","true");
        BeanMap beanMap = BeanMap.create(codeReferConfig);
        beanMap.putAll(conditionMap);
        // æ·»åŠ é»˜è®¤æŽ’åºå­—æ®µ,根据时间进行排序
        Query query = bladeQueryObject.getQuery();
        query.setAscs("CREATETIME");
        IPage<CodeReferConfig> codeReferConfigs = codeReferconfigMapper.selectJoinPage(codeReferConfig, Condition.getPage(query));
        return CodeReferConfigWraper.build().pageVO(codeReferConfigs);
    }
    @Override
    public IPage<CodeReferConfigVO> queryByPage(BladeQueryObject bladeQueryObject) {
        MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = Map2MPJLambdaUtil.getMPJLambdaWrapper(bladeQueryObject.getConditionMap(), CodeReferConfig.class)
            .selectAll(CodeReferConfig.class)
            .selectCollection("PCS",CodeShowFieldConfig.class, CodeReferConfig::getCodeShowFieldConfigs)
            .selectCollection("PCSR",CodeSrchCondConfig.class, CodeReferConfig::getCodeSrchCondConfigs)
            .leftJoin(CodeShowFieldConfig.class, CodeShowFieldConfig::getReferConfigOid,CodeReferConfig::getOid)
            .leftJoin(CodeSrchCondConfig.class, CodeSrchCondConfig::getReferConfigOid, CodeReferConfig::getOid)
    public List<CodeReferConfigVO> queryByList(CodeReferConfigVO codeReferConfigVO) {
        codeReferConfigVO.setTenantId(AuthUtil.getTenantId());
        //MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = Map2MPJLambdaUtil.getMPJLambdaWrapper(bladeQueryObject.getConditionMap(), CodeReferConfig.class)
        MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = getMPJLambdaWrapper()
            .setEntity(codeReferConfigVO)
            .orderBy(true, true, CodeReferConfig::getCreateTime);
        IPage<CodeReferConfig> codeReferConfigIPage = this.codeReferconfigMapper.selectPage(Condition.getPage(bladeQueryObject.getQuery()), mpjLambdaWrapper);
        return CodeReferConfigWraper.build().pageVO(codeReferConfigIPage);
        List<CodeReferConfig> codeReferConfigList = codeReferconfigMapper.selectJoinList(CodeReferConfig.class, mpjLambdaWrapper);
        return CodeReferConfigWraper.build().listVO(codeReferConfigList);
    }
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param codeReferConfig å®žä¾‹å¯¹è±¡
     * @param codeReferConfigVO å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeReferConfig insert(CodeReferConfig codeReferConfig) {
        this.codeReferconfigMapper.insert(codeReferConfig);
        return codeReferConfig;
    @Transactional(rollbackFor = Exception.class)
    public R insert(CodeReferConfigVO codeReferConfigVO) {
        VciBaseUtil.alertNotNull(codeReferConfigVO,"需要添加的数据对象");
        if (StringUtils.isBlank(codeReferConfigVO.getReferType())){
            throw new VciBaseException("参照配置不能为空");
        }
        // Long count = countCodeReferConfig(codeReferConfigVO);
        // if(count > 0){
        //    throw new VciBaseException("已存在相同的参照配置");
        // }
        CodeReferConfig codeReferConfig = CodeReferConfigWraper.build().entityDO(codeReferConfigVO);
        codeReferConfig.setOid(VciBaseUtil.getPk().toUpperCase());
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeReferConfig, MdmBtmTypeConstant.CODE_REFER_CONFIG);
        codeReferConfig.setTenantId(AuthUtil.getTenantId());
        boolean resInsertReferConfig = this.codeReferconfigMapper.insert(codeReferConfig) > 0;
        if (!resInsertReferConfig) {
            return R.fail("新增参照配置失败!");
        }
        // ä¸»é”®å›žå¡«
        if(Func.isNotEmpty(codeReferConfig.getCodeShowFieldConfigs())){
            ICodeShowFieldConfigService.insertBatch(codeReferConfigVO.getCodeShowFieldConfigVOS(),codeReferConfig.getOid());
        }
        if(Func.isNotEmpty(codeReferConfig.getCodeSrchCondConfigs())){
            ICodeSrchCondConfigService.insertBatch(codeReferConfigVO.getCodeSrchCondConfigVOS(),codeReferConfig.getOid());
        }
        return R.data(codeReferConfigVO);
    }
    /**
     * èŽ·å–å·²å­˜åœ¨çš„å‚ç…§é…ç½®
     * @param codeReferConfigVO
     * @return ä¸ªæ•°
     */
    private Long countCodeReferConfig(CodeReferConfigVO codeReferConfigVO) {
        String templateName = codeReferConfigVO.getName();
        String templateId = codeReferConfigVO.getId();
        if (StringUtils.isBlank(templateName) && StringUtils.isBlank(templateId)){
            throw new VciBaseException("参照配置编号和名称不能为空");
        }
        LambdaQueryWrapper<CodeReferConfig> wrapper = Wrappers.<CodeReferConfig>query()
            .lambda().eq(CodeReferConfig::getId, codeReferConfigVO.getId())
            .eq(CodeReferConfig::getTenantId, codeReferConfigVO.getTenantId())
            .or(true)
            .eq(CodeReferConfig::getIsOpenGlobal,"true") // æŸ¥è¯¢å¼€å¯å…¨å±€çš„参照配置
            .eq(CodeReferConfig::getId,templateId)
            .eq(CodeReferConfig::getName,templateName);
        Long count = codeReferconfigMapper.selectCount(wrapper);
        return count;
    }
    /**
     * è¿žè¡¨æŸ¥è¯¢Wrapper对象获取
     * @return
     */
    private MPJLambdaWrapper<CodeReferConfig> getMPJLambdaWrapper(){
        MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = new MPJLambdaWrapper<>(CodeReferConfig.class)
            .selectAll(CodeReferConfig.class)
            // .select(CodeShowFieldConfig::getField
            // ,CodeShowFieldConfig::getTitle
            // ,CodeShowFieldConfig::getFieldType
            // ,CodeShowFieldConfig::getSort
            // ,CodeShowFieldConfig::getAttrSortField
            // ,CodeShowFieldConfig::getWidth
            // ,CodeShowFieldConfig::getFixedPosition
            // ,CodeShowFieldConfig::getTemplet)
            // .select(
            // CodeSrchCondConfig::getFilterType,
            // CodeSrchCondConfig::getFilterField,
            // CodeSrchCondConfig::getFilterValue)
            .selectCollection(CodeShowFieldConfig.class, CodeReferConfig::getCodeShowFieldConfigs)
            .selectCollection(CodeSrchCondConfig.class, CodeReferConfig::getCodeSrchCondConfigs)
            .leftJoin(CodeShowFieldConfig.class, CodeShowFieldConfig::getReferConfigOid,CodeReferConfig::getOid)
            .leftJoin(CodeSrchCondConfig.class, CodeSrchCondConfig::getReferConfigOid, CodeReferConfig::getOid);
        return mpjLambdaWrapper;
    }
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param codeReferConfig å®žä¾‹å¯¹è±¡
     * @param codeReferConfigVO å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeReferConfig update(CodeReferConfig codeReferConfig) {
        this.codeReferconfigMapper.updateById(codeReferConfig);
        return this.queryById(codeReferConfig.getOid());
    @Transactional(rollbackFor = Exception.class)
    public R update(CodeReferConfigVO codeReferConfigVO) {
        boolean resUpdateReferConfig = this.codeReferconfigMapper.updateById(codeReferConfigVO) > 0;
        if (!resUpdateReferConfig) {
            return R.fail("参照配置修改失败!");
        }
        this.ICodeShowFieldConfigService.updateBatch(codeReferConfigVO.getCodeShowFieldConfigVOS());
        this.ICodeSrchCondConfigService.updateBatch(codeReferConfigVO.getCodeSrchCondConfigVOS());
        return R.data(codeReferConfigVO);
    }
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
     * @param codeReferConfigDTO
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Override
    public boolean deleteById(String oid) {
        return this.codeReferconfigMapper.deleteById(oid) > 0;
    @Transactional(rollbackFor = Exception.class)
    public R deleteById(CodeReferConfigDTO codeReferConfigDTO) {
        CodeReferConfig tsDO = new CodeReferConfig();
        BeanUtil.copyProperties(tsDO,codeReferConfigDTO);
        CodeReferConfig codeReferConfig = codeReferconfigMapper.queryById(codeReferConfigDTO.getOid());
        // æ£€æŸ¥ts字段是否一致
        if (!checkTs(tsDO,codeReferConfig)) {
            return R.fail(TS_NOT_PROCESS);
        }
        boolean resDeleteReferConfig = this.codeReferconfigMapper.deleteById(codeReferConfigDTO.getOid()) > 0;
        if (!resDeleteReferConfig) {
            return R.fail("参照配置删除失败!");
        }
        this.ICodeShowFieldConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid());
        this.ICodeSrchCondConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid());
        return  R.status(resDeleteReferConfig);
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @param codeReferConfig
     * @return
     */
    private boolean checkTs(CodeReferConfig tempDO, CodeReferConfig codeReferConfig){
        Date dbTs = codeReferConfig.getTs();
        Date currentTs = tempDO.getTs();
        if(currentTs == null ?  dbTs == null:currentTs.compareTo(dbTs)==0){
            return true;
        }
        return false;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java
@@ -1,14 +1,18 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeShowFieldConfig;
import com.vci.ubcs.code.mapper.CodeShowFieldConfigMapper;
import com.vci.ubcs.code.service.CodeShowFieldConfigService;
import com.vci.ubcs.code.service.ICodeShowFieldConfigService;
import com.vci.ubcs.code.vo.CodeShowFieldConfigVO;
import com.vci.ubcs.code.wrapper.CodeShowFieldConfigWraper;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
 * å¼•用码段,参照配置界面,显示的属性配置表(CodeShowFieldConfigService)表服务实现类
@@ -17,34 +21,10 @@
 * @since 2023-05-19 17:58:56
 */
@Service("CodeShowFieldConfigService")
public class CodeShowFieldConfigServiceImpl implements CodeShowFieldConfigService {
public class CodeShowFieldConfigServiceImpl extends ServiceImpl<CodeShowFieldConfigMapper,CodeShowFieldConfig> implements ICodeShowFieldConfigService {
    @Resource
    private CodeShowFieldConfigMapper codeShowFieldConfigMapper;
    /**
     * é€šè¿‡ID查询单条数据
     *
     * @param oid ä¸»é”®
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeShowFieldConfig queryById(String oid) {
        return this.codeShowFieldConfigMapper.queryById(oid);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param codeShowFieldConfig ç­›é€‰æ¡ä»¶
     * @param pageRequest      åˆ†é¡µå¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public Page<CodeShowFieldConfig> queryByPage(CodeShowFieldConfig codeShowFieldConfig, PageRequest pageRequest) {
        long total = this.codeShowFieldConfigMapper.count(codeShowFieldConfig);
        return new PageImpl<>(this.codeShowFieldConfigMapper.queryAllByLimit(codeShowFieldConfig, pageRequest), pageRequest, total);
    }
    /**
     * æ–°å¢žæ•°æ®
@@ -53,24 +33,25 @@
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeShowFieldConfig insert(CodeShowFieldConfig codeShowFieldConfig) {
        this.codeShowFieldConfigMapper.insert(codeShowFieldConfig);
        return codeShowFieldConfig;
    public boolean insert(CodeShowFieldConfig codeShowFieldConfig) {
        return this.codeShowFieldConfigMapper.insert(codeShowFieldConfig)>0;
    }
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param codeShowFieldConfig å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeShowFieldConfig update(CodeShowFieldConfig codeShowFieldConfig) {
        this.codeShowFieldConfigMapper.update(codeShowFieldConfig);
        return this.queryById(codeShowFieldConfig.getOid());
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean insertBatch(List<CodeShowFieldConfigVO> codeShowFieldConfigVOS, String oid) {
        List<CodeShowFieldConfig> codeShowFieldConfigs = CodeShowFieldConfigWraper.build().listDO(codeShowFieldConfigVOS,oid);
        boolean b = this.saveOrUpdateBatch(codeShowFieldConfigs);
        return b;
    }
    /**
    @Override
    public boolean updateBatch(List<CodeShowFieldConfigVO> codeShowFieldConfigVOS) {
        List<CodeShowFieldConfig> codeShowFieldConfigs = CodeShowFieldConfigWraper.build().listDO(codeShowFieldConfigVOS);
        return this.saveOrUpdateBatch(codeShowFieldConfigs);
    }
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
@@ -80,4 +61,13 @@
    public boolean deleteById(String oid) {
        return this.codeShowFieldConfigMapper.deleteById(oid) > 0;
    }
    @Override
    public boolean deleteByReferConfigOid(String oid) {
        LambdaQueryWrapper<CodeShowFieldConfig> lambdaQueryWrapper = Wrappers.<CodeShowFieldConfig>query()
            .lambda()
            .eq(CodeShowFieldConfig::getReferConfigOid, oid);
        return this.codeShowFieldConfigMapper.delete(lambdaQueryWrapper) > 0;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java
@@ -1,14 +1,18 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeSrchCondConfig;
import com.vci.ubcs.code.mapper.CodeSrchCondConfigMapper;
import com.vci.ubcs.code.service.CodeSrchCondConfigService;
import com.vci.ubcs.code.service.ICodeSrchCondConfigService;
import com.vci.ubcs.code.vo.CodeSrchCondConfigVO;
import com.vci.ubcs.code.wrapper.CodeSrchCondConfigWraper;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
 * å¼•用码段,参照配置界面,查询条件配置表(CodeSrchCondConfigService)表服务实现类
@@ -17,34 +21,10 @@
 * @since 2023-05-19 17:58:56
 */
@Service("CodeSrchCondConfigService")
public class CodeSrchCondConfigServiceImpl implements CodeSrchCondConfigService {
public class CodeSrchCondConfigServiceImpl extends ServiceImpl<CodeSrchCondConfigMapper, CodeSrchCondConfig> implements ICodeSrchCondConfigService {
    @Resource
    private CodeSrchCondConfigMapper codeSrchcondconfigMapper;
    /**
     * é€šè¿‡ID查询单条数据
     *    codeSrchcondconfig
     * @param oid ä¸»é”®
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeSrchCondConfig queryById(String oid) {
        return this.codeSrchcondconfigMapper.queryById(oid);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param codeSrchcondconfig ç­›é€‰æ¡ä»¶
     * @param pageRequest      åˆ†é¡µå¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public Page<CodeSrchCondConfig> queryByPage(CodeSrchCondConfig codeSrchcondconfig, PageRequest pageRequest) {
        long total = this.codeSrchcondconfigMapper.count(codeSrchcondconfig);
        return new PageImpl<>(this.codeSrchcondconfigMapper.queryAllByLimit(codeSrchcondconfig, pageRequest), pageRequest, total);
    }
    /**
     * æ–°å¢žæ•°æ®
@@ -53,24 +33,24 @@
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeSrchCondConfig insert(CodeSrchCondConfig codeSrchcondconfig) {
        this.codeSrchcondconfigMapper.insert(codeSrchcondconfig);
        return codeSrchcondconfig;
    public boolean insert(CodeSrchCondConfig codeSrchcondconfig) {
        return this.codeSrchcondconfigMapper.insert(codeSrchcondconfig)>0;
    }
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param codeSrchcondconfig å®žä¾‹å¯¹è±¡
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    public CodeSrchCondConfig update(CodeSrchCondConfig codeSrchcondconfig) {
        this.codeSrchcondconfigMapper.update(codeSrchcondconfig);
        return this.queryById(codeSrchcondconfig.getOid());
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean insertBatch(List<CodeSrchCondConfigVO> codeSrchCondConfigVOS, String oid) {
        List<CodeSrchCondConfig> codeSrchCondConfigs = CodeSrchCondConfigWraper.build().listDO(codeSrchCondConfigVOS,oid);
        return this.saveOrUpdateBatch(codeSrchCondConfigs);
    }
    /**
    @Override
    public boolean updateBatch(List<CodeSrchCondConfigVO> codeSrchCondConfigVOS) {
        List<CodeSrchCondConfig> codeSrchCondConfigs = CodeSrchCondConfigWraper.build().listDO(codeSrchCondConfigVOS);
        return this.saveOrUpdateBatch(codeSrchCondConfigs);
    }
    /**
     * é€šè¿‡ä¸»é”®åˆ é™¤æ•°æ®
     *
     * @param oid ä¸»é”®
@@ -80,4 +60,13 @@
    public boolean deleteById(String oid) {
        return this.codeSrchcondconfigMapper.deleteById(oid) > 0;
    }
    @Override
    public boolean deleteByReferConfigOid(String oid) {
        LambdaQueryWrapper<CodeSrchCondConfig> lambdaQueryWrapper = Wrappers.<CodeSrchCondConfig>query()
            .lambda()
            .eq(CodeSrchCondConfig::getReferConfigOid, oid);
        return this.codeSrchcondconfigMapper.delete(lambdaQueryWrapper) > 0;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyFormServiceImpl.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrRangeServiceImpl.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -4,10 +4,10 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeDeleteBatchDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
@@ -18,13 +18,17 @@
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IEnumClient;
import com.vci.ubcs.omd.feign.IEnumItemClient;
import com.vci.ubcs.omd.feign.IRevisionRuleClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.EnumVO;
import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
@@ -37,21 +41,32 @@
import com.vci.ubcs.starter.web.util.*;
import com.vci.ubcs.system.entity.DictBiz;
import com.vci.ubcs.system.feign.IDictBizClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import oracle.sql.TIMESTAMP;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@@ -120,6 +135,16 @@
     */
    @Autowired
    private ICodePhaseAttrService phaseAttrService;
    /**
     * ä¸šåŠ¡ç±»åž‹çš„æœåŠ¡
     */
    @Autowired
    private IBtmTypeClient btmTypeClient;
    /**
     * ç‰ˆæœ¬è§„则的服务
     */
    @Resource
    private IRevisionRuleClient revisionRuleClient;
//
    /**
     * é€šç”¨æŸ¥è¯¢
@@ -180,6 +205,14 @@
     * ç©ºæ ¼
     */
    public static final String SPACE = " ";
    /**
     * ç¼“存key
     */
    public static final String BTM_INIT_CACHE = "ubcs-code:btm";
    /**
     *
     */
    public static final String BTM_NAME = "btm:name";
    /**
     * å¯†çº§çš„字段
@@ -316,7 +349,7 @@
     * @return è¿”回编码的内容
     */
    @Override
    public String addSaveCode(CodeOrderDTO orderDTO) {
    public String addSaveCode(CodeOrderDTO orderDTO) throws Exception {
        VciBaseUtil.alertNotNull(orderDTO, "编码申请相关的属性和码段的内容都为空", orderDTO.getCodeClassifyOid(), "主题库分类的主键",
            orderDTO.getTemplateOid(), "模板的主键", orderDTO.getCodeRuleOid(), "编码规则的主键");
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -340,14 +373,14 @@
        switchDateAttrOnOrder(templateVO, orderDTO);
        //9.生成编码的信息
//        ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
        CodeWupin cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
        BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
//        //默认的属性都不用从前端拷贝
//        //设置编码需要的默认属性的内容
        copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
//        //TODO:因为默认的属性都不拷贝,目前集团码叫name,并没有从DTO拷贝到cbo里。增加一个单独处理,以后再看要不要调整
        cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
//        //end -- modify by lihang @20220407
        List<CodeWupin> cboList = new ArrayList<>();
        List<BaseModel> cboList = new ArrayList<>();
        //备注
        cbo.setDescription(orderDTO.getDescription());
@@ -358,8 +391,8 @@
        List<String> charList = new ArrayList<>();
        for (CodeWupin wupinEntity : cboList) {
            charList.add(wupinEntity.getId());
        for (BaseModel baseModel : cboList) {
            charList.add(baseModel.getId());
        }
        batchSaveSelectChar(templateVO, charList);
        return codeList.size() > 0 ? codeList.get(0) : "";
@@ -709,7 +742,7 @@
     * @param templateVO       æ¨¡æ¿çš„æ˜¾ç¤ºå¯¹è±¡
     * @param edit             æ˜¯å¦ä¸ºä¿®æ”¹
     */
    private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupin cbo,
    private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo,
                                CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
                                boolean edit)  {
        String fullPath = "";
@@ -738,14 +771,18 @@
        try {
            BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(CodeWupin.class,orderDTO.getData()),cbo);
            cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
            cbo.setCodetemplateoid(templateVO.getOid());
            cbo.setCodeclsfpath(fullPath);
            BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(BaseModel.class,orderDTO.getData()),cbo);
            Map<String,String> data = new HashMap<>();
            data.put(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
            data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
            data.put(CODE_FULL_PATH_FILED,fullPath);
            cbo.setData(data);
//            cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
//            cbo.setTemplateOid(templateVO.getOid());
//            cbo.setCodeclsfpath(fullPath);
            cbo.setTs(new Date());
            if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
                //找生命周期的起始状态,插个点,生命周期是否需要创建
                //先写固定,后面生命周期好了在编写
                if (StringUtils.isNotBlank(cbo.getLctid())) {
//                    OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid());
//                    if (lifeCycleVO != null) {
@@ -782,72 +819,65 @@
     * @throws VciBaseException åˆå§‹åŒ–出错的是会抛出异常
     */
    @Override
    public CodeWupin createCBOByBtmName(String btmName)
    public BaseModel createCBOByBtmName(String btmName)
        throws VciBaseException {
        if(btmName!=null){
            btmName = btmName.trim().toLowerCase();
        }
        String userid = AuthUtil.getUser().getUserName();
//        if(!hasCreatedCbos.containsKey(btmName)){
//            if(StringUtils.isEmpty(userid)){
//                throw new VciBaseException(msgCodePrefix +"noHasUserid");
//            }
//            try {
//                hasCreatedCbos.put(btmName, createBusinessObject(btmName));
//            } catch (Exception e) {
//                logger.error("创建业务类型对象",e);
//                throw new VciBaseException(msgCodePrefix + "initBoError",new String[]{btmName});
//            }
//        }
//        ClientBusinessObject cbo = cloneClientBusinessObject(hasCreatedCbos.get(btmName));
//        QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>();
//        btmWrapper.eq("ID",btmName);
//        CodeOsbtmtypeEntity btmTypeVO = codeOsbtmtypeMapper.selectOne(btmWrapper);
//        OsBtmTypeVO btmTypeVO = btmService.getBtmById(boName);
        String userName = AuthUtil.getUser().getUserName();
        CodeWupin wupinEntity = new CodeWupin();
        wupinEntity.setOid(VciBaseUtil.getPk());
//        bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
//        bo.setNameoid((new ObjectUtility()).getNewObjectID36());
        wupinEntity.setBtmname(btmName);
        wupinEntity.setLastR(String.valueOf(1));
        wupinEntity.setFirstR(String.valueOf(1));
        wupinEntity.setFirstV(String.valueOf(1));
        wupinEntity.setLastV(String.valueOf(1));
        wupinEntity.setCreator(userName);
        wupinEntity.setCreateTime(new Date());
        wupinEntity.setLastModifier(userName);
        wupinEntity.setLastModifyTime(new Date());
        wupinEntity.setRevisionRule("numberversionrule");
        wupinEntity.setVersionRule("0");
//        if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
            //
//            OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
        wupinEntity.setRevisionValue("1");
//        }
        wupinEntity.setRevisionSeq(1);
        wupinEntity.setVersionSeq(1);
        //插个点,需要问勇哥版本问题,展示默认为1
        wupinEntity.setVersionValue("1");
        wupinEntity.setLctid("wupinLC");
        wupinEntity.setLcStatus("Editing");
        wupinEntity.setId("");
        wupinEntity.setName("");
        wupinEntity.setDescription("");
        wupinEntity.setOwner(userName);
        wupinEntity.setCheckinby(userName);
        wupinEntity.setCopyFromVersion("");
        wupinEntity.setMaterialtype(1001);
        wupinEntity.setCaigouwl("true");
        wupinEntity.setShifoupihaoguanli("true");
        wupinEntity.setKucunwl("true");
        wupinEntity.setXiaoshouwl("false");
        wupinEntity.setPassing("true");
        try {
            String keyPrefix = BTM_NAME.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
            String finalBtmName = btmName;
            return CacheUtil.get(BTM_INIT_CACHE, keyPrefix, btmName, () -> {
                BaseModel baseModel = createBaseModel(finalBtmName);
                return baseModel;
            });
        } catch (Exception e) {
            logger.error("创建业务类型对象",e);
            throw new VciBaseException("initBtmError",new String[]{btmName});
        }
//        String userName = AuthUtil.getUser().getUserName();
//        CodeWupin wupinEntity = new CodeWupin();
//        wupinEntity.setOid(VciBaseUtil.getPk());
////        bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
////        bo.setNameoid((new ObjectUtility()).getNewObjectID36());
//        wupinEntity.setBtmname(btmName);
//        wupinEntity.setLastR(String.valueOf(1));
//        wupinEntity.setFirstR(String.valueOf(1));
//        wupinEntity.setFirstV(String.valueOf(1));
//        wupinEntity.setLastV(String.valueOf(1));
//        wupinEntity.setCreator(userName);
//        wupinEntity.setCreateTime(new Date());
//        wupinEntity.setLastModifier(userName);
//        wupinEntity.setLastModifyTime(new Date());
//        wupinEntity.setRevisionRule("numberversionrule");
//        wupinEntity.setVersionRule("0");
////        if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
//            //
////            OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
//        wupinEntity.setRevisionValue("1");
////        }
//
//        wupinEntity.setRevisionSeq(1);
//        wupinEntity.setVersionSeq(1);
//        //插个点,需要问勇哥版本问题,展示默认为1
//        wupinEntity.setVersionValue("1");
//        wupinEntity.setLctid("wupinLC");
//        wupinEntity.setLcStatus("Editing");
//        wupinEntity.setId("");
//        wupinEntity.setName("");
//        wupinEntity.setDescription("");
//        wupinEntity.setOwner(userName);
//        wupinEntity.setCheckinby(userName);
//        wupinEntity.setCopyFromVersion("");
//        wupinEntity.setMaterialtype(1001);
//        wupinEntity.setCaigouwl("true");
//        wupinEntity.setShifoupihaoguanli("true");
//        wupinEntity.setKucunwl("true");
//        wupinEntity.setXiaoshouwl("false");
//        wupinEntity.setPassing("true");
//        this.initTypeAttributeValue(wupinEntity,btmTypeVO);
        return wupinEntity;
//        return wupinEntity;
//        return cbo;
@@ -1236,8 +1266,8 @@
        //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可
        if (!CollectionUtils.isEmpty(conditionMap)) {
            Map<String, String> andConditionMap = new HashMap<>();
            andConditionMap.put("islastr", "1");
            andConditionMap.put("islastv", "1");
            andConditionMap.put("lastr", "1");
            andConditionMap.put("lastv", "1");
            if (StringUtils.isNotBlank(orderDTO.getOid())) {
                andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
            }
@@ -2066,7 +2096,7 @@
        } else {
            //表需要改
//            conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
            conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_wupin where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
            conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_classify where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
                "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
        }
        conditionMap.put("lastr", "1");
@@ -2883,4 +2913,150 @@
        }
        return buttonVOList;
    }
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸å…³æ•°æ®è¿›è¡Œæ‰¹é‡æ’å…¥æ“ä½œ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param baseModels      å¤„理数据
     * @return å¤„理成功数据条数
     */
    @Override
    public Integer insertBatchByType(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.toString());
            }
        });
        return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps);
    }
    /**
     * ä¼ å…¥ä¸šåŠ¡ç±»åž‹ä»¥åŠç›¸oid集合查询数据进行返回
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @param oids      éœ€è¦æŸ¥è¯¢çš„oid集合 é€—号分开
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    @Override
    public List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException {
        //使用传入的业务类型查询表
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
        if(listR.getData().size() == 0){
            throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
        }
        //查询数据
        List<Map> maps = commonsMapper.selectBySql("select * from " + listR.getData().get(0).getTableName() + " where oid in ("
            + VciBaseUtil.toInSql(oids.toString()) + ")");
        List<BaseModel> baseModels = new ArrayList<>();
        //将查询到的数据转换为basemodel,使用的反射方式来进行创建的
        for (Map map : maps) {
            Object obj = BaseModel.class.newInstance();
            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            for (PropertyDescriptor property : propertyDescriptors) {
                Method setter = property.getWriteMethod();
                if (setter != null) {
                    //oracle的时间为TIMESTAMP的,需要进行转换成data,否则将报错
                    if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){
                        LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
                        ZoneId zoneId = ZoneId.systemDefault();
                        ZonedDateTime zdt = localDateTime.atZone(zoneId);
                        Date date = Date.from(zdt.toInstant());
                        setter.invoke(obj,date);
                        map.remove(property.getName().toUpperCase());
                    } //oracle的数字为BigDecimal的,需要进行转换成Integer,否则将报错
                    else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
                        && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())){
                        setter.invoke(obj, ((BigDecimal)map.get(property.getName().toUpperCase())).intValue());
                        map.remove(property.getName().toUpperCase());
                    }else if(map.get(property.getName().toUpperCase()) != null){
                        setter.invoke(obj, map.get(property.getName().toUpperCase()));
                        map.remove(property.getName().toUpperCase());
                    }
                }
            }
            for (Object key : map.keySet()) {
                map.put(key,String.valueOf(map.get(key)));
            }
            ((BaseModel) obj).setData(map);
            baseModels.add((BaseModel) obj);
        }
        return baseModels;
    }
    /**
     * æ ¹æ®ä¸šåŠ¡ç±»åž‹åç§°åˆ›å»ºä¸šåŠ¡æ•°æ®æºå¯¹è±¡
     * @param boName ä¸šåŠ¡ç±»åž‹åç§°
     * @return ä¸šåŠ¡æ•°æ®å¯¹è±¡
     */
    public BaseModel createBaseModel(String boName)  {
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName));
        String userName = AuthUtil.getUser().getUserName();
        BaseModel bo = new BaseModel();
        bo.setOid(VciBaseUtil.getPk());
//        bo.setRevisionid(VciBaseUtil.getPk());
//        bo.setNameoid(VciBaseUtil.getPk());
        bo.setBtmname(boName);
        bo.setLastR("1");
        bo.setFirstR("1");
        bo.setFirstV("1");
        bo.setLastV("1");
        bo.setCreator(userName);
        bo.setCreateTime(new Date());
        bo.setLastModifier(userName);
        bo.setLastModifyTime(new Date());
        bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId());
        bo.setVersionRule(String.valueOf(listR.getData().get(0).getVersionRule()));
        if(StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())){
            R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient
                .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId()));
            bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode());
        }
        bo.setRevisionSeq(1);
        bo.setVersionSeq(1);
        bo.setVersionValue(getVersionValue(WebUtil.getInt(listR.getData().get(0).getVersionRule())));
        bo.setLctid(listR.getData().get(0).getLifeCycleId());
//        if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){
//            OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId());
            bo.setLcStatus("Editing");
//        }
        bo.setId("");
        bo.setName("");
        bo.setDescription("");
        bo.setOwner(userName);
//        bo.setCheckinby(userName);
        bo.setCopyFromVersion("");
//        this.initTypeAttributeValue(bo,btmTypeVO);
        return bo;
    }
    /**
     * èŽ·å–ç‰ˆæ¬¡çš„å€¼
     * @param verRuleName ç‰ˆæ¬¡çš„规则
     * @return ç‰ˆæ¬¡çš„值,没有规则则为空
     */
    private String getVersionValue(int verRuleName) {
        if (verRuleName == 0) {
            return "1";
        } else if (verRuleName == 1) {
            return "a";
        } else if (verRuleName == 2) {
            return "0";
        }
        return "";
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -2,11 +2,11 @@
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.entity.CodeSerialValue;
import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.code.enumpack.CodeCutTypeEnum;
import com.vci.ubcs.code.enumpack.CodeGetValueTypeEnum;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
@@ -14,18 +14,22 @@
import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
import com.vci.ubcs.code.mapper.CodeSerialValueMapper;
import com.vci.ubcs.code.service.ICodeWupinService;
import com.vci.ubcs.code.service.MdmEngineService;
import com.vci.ubcs.code.service.MdmProductCodeService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
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.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.constant.RegExpConstant;
import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -55,12 +59,24 @@
     */
    @Resource
    private ICodeWupinService iCodeWupinService;
    /**
     * æ‰€æœ‰çš„编码的内容
     */
    @Resource
    @Lazy
    private MdmEngineService mdmEngineService;
    /**
     * å…¬å¼çš„æœåŠ¡
     */
    @Autowired
    private FormulaServiceImpl formulaService;
    @Override
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupin> dataCBOList) {
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception {
//        BatchCBO batchCBO = new BatchCBO();
//        WebUtil.setPersistence(false);
//        dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
        dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
//        batchCBO.getCreateCbos().addAll(dataCBOList);
        List<String> codeList = new ArrayList<>();
@@ -82,7 +98,7 @@
//                VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
                String code = cbo.getId();
                List<String> serialUnitList = new ArrayList<>();
                String[] secLengths = cbo.getCodeSecLengthField().split("#");
                String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#");
                List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
                Map<String/**码段的主键**/,String/**码段的值**/> serialValueMap = new HashMap<>();
                Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
@@ -266,7 +282,7 @@
            Map<String/**码段的主键**/, Map<String, CodeSerialValue>> maxSerialValueMap = new HashMap<>();
            for (int i = 0; i < dataCBOList.size(); i++) {
                CodeWupin cbo = dataCBOList.get(i);
                BaseModel cbo = dataCBOList.get(i);
                List<String> thisSecValueList = new LinkedList<>();
                for (int j = 0; j < secValueList.size(); j++) {
                    thisSecValueList.add(secValueList.get(j));
@@ -303,13 +319,17 @@
            Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
            allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
                s.setLcStatus(statusMap.get(s.getOid()));
            });
            allCodeDOList.stream().forEach(
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
            );
            codeAllCodeService.saveBatch(allCodeDOList);
            iCodeWupinService.saveBatch(dataCBOList);
//            iCodeWupinService.saveBatch(dataCBOList);
            mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
//            batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
//                s.setLcStatus(statusMap.get(s.getOid()));
//                try {
@@ -332,7 +352,7 @@
     * @param serialUnitList æµæ°´ä¾æ®çš„内容
     *                       è¿˜éœ€è¦åŽç»­çš„一个移植将会涉及到其他的服务
     */
    private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList, CodeWupin cbo,
    private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList, BaseModel cbo,
                                    List<String> thisSecValueList, boolean attrSevIsSerialDepend,
                                    List<String> serialUnitList){
        if (!CollectionUtils.isEmpty(attrSecVOList)) {
@@ -340,9 +360,9 @@
                String value = "";
                if (StringUtils.isNotBlank(attrSevVO.getGetValueClass())) {
                    //使用组合规则来处理的
//                    value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass());
                    value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass());
                } else {
//                    value = cbo.getAttributeValue(attrSevVO.getReferAttributeId());
                    value = cbo.getData().get(attrSevVO.getReferAttributeId());
                }
                if (value == null) {
                    value = "";
@@ -591,7 +611,7 @@
     * @param allCodeDOList æ‰€æœ‰çš„码值的对象列表
     */
    private void wrapperAllCode(CodeClassifyFullInfoBO classifyFullInfoBO, CodeRuleVO ruleVO,
                                CodeWupin cbo, CodeClassifyTemplateVO templateVO,
                                BaseModel cbo, CodeClassifyTemplateVO templateVO,
                                List<CodeAllCode> allCodeDOList, String serialUnitString, String serialValueString){
        CodeAllCode allCodeDO = new CodeAllCode();
        allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
@@ -746,4 +766,20 @@
//        WebUtil.setPersistence(oldPersistence);
        return updateFlag.get();
    }
    /**
     * ä½¿ç”¨CBO处理组合规则的内容
     * @param cbo æ•°æ®çš„内容
     * @param rule è§„则的内容
     * @return è½¬æ¢åŽçš„
     */
    private String getValueByFormulaForCBO(BaseModel cbo,String rule){
        Map<String, Object> dataMap = BeanUtils.beanToMap(cbo);
        Map<String, String> map = new HashMap<String, String>();
        for (String i : dataMap.keySet()) {
            map.put(i, String.valueOf(dataMap.get(i)));
        }
//        WebUtil.copyValueToMapFromCbos(cbo,dataMap);
        return formulaService.getValueByFormula(map,rule);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -20,12 +20,12 @@
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultClassfyVO;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultSystemVO;
import com.vci.ubcs.code.webService.annotation.VciWebservice;
import com.vci.ubcs.code.webService.config.AttributeMapConfig;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.webservice.annotation.VciWebservice;
import com.vci.ubcs.webservice.config.AttributeMapConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/gennerAttrMapUtil.java
@@ -4,8 +4,8 @@
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.vo.webserviceModel.attrmap.LibraryDO;
import com.vci.ubcs.code.webService.config.AttributeMapConfig;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.webservice.config.AttributeMapConfig;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/WsClientUtil.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/WsClientUtil.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
/*
package com.vci.ubcs.code.webService;/*
package com.vci.ubcs.webservice;
import org.apache.axiom.om.OMAbstractFactory;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/annotation/VciWebservice.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/annotation/VciWebservice.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.webservice.annotation;
package com.vci.ubcs.code.webService.annotation;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/AttributeMapConfig.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.vci.ubcs.webservice.config;
package com.vci.ubcs.code.webService.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/VciCxfPublishConfig.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java ÐÞ¸Ä
@@ -1,9 +1,9 @@
package com.vci.ubcs.webservice.config;
package com.vci.ubcs.code.webService.config;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.vci.ubcs.code.webService.annotation.VciWebservice;
import com.vci.ubcs.starter.web.util.ApplicationContextProvider;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.webservice.annotation.VciWebservice;
import lombok.extern.slf4j.Slf4j;
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java
@@ -17,12 +17,15 @@
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -40,15 +43,23 @@
    }
    @Override
    public CodeBasicSecVO entityVO(CodeBasicSec codeBasicSec) {
        CodeBasicSecVO codeBasicSecVO = Objects.requireNonNull(BeanUtil.copy(codeBasicSec, CodeBasicSecVO.class));
        //codeBasicSecVO.setLcStatusText(CodeRuleLC.getTextByValue(codeBasicSec.getLcStatus()));
        codeBasicSecVO.setSecTypeText(CodeSecTypeEnum.getTextByValue(codeBasicSec.getSecType()));
        codeBasicSecVO.setCodeLevelTypeText(CodeLevelTypeEnum.getTextByValue(codeBasicSec.getCodeLevelType()));
        codeBasicSecVO.setCodeSecLengthTypeText(CodeSecLengthTypeEnum.getTextByValue(codeBasicSec.getCodeSecLengthType()));
        codeBasicSecVO.setValueCutTypeText(CodeCutTypeEnum.getValueByText(codeBasicSec.getValueCutType()));
        codeBasicSecVO.setCodeGetValueTypeText(CodeGetValueTypeEnum.getValueByText(codeBasicSec.getCodeGetValueType()));
    public CodeBasicSecVO entityVO(CodeBasicSec codeBasicSecDO) {
        CodeBasicSecVO codeBasicSecVO = Objects.requireNonNull(BeanUtil.copy(codeBasicSecDO, CodeBasicSecVO.class));
        if(StringUtils.isNotBlank(codeBasicSecDO.getSecType())){
            codeBasicSecVO.setSecTypeText(EnumCache.getValue(EnumEnum.CODE_SEC_TYPE,codeBasicSecDO.getSecType()));
        }
        if(StringUtils.isNotBlank(codeBasicSecDO.getCodeLevelType())){
            codeBasicSecVO.setCodeLevelTypeText(EnumCache.getValue(EnumEnum.CODE_LEVEL_TYPE,codeBasicSecDO.getCodeLevelType()));
        }
        if(StringUtils.isNotBlank(codeBasicSecDO.getCodeSecLengthType())){
            codeBasicSecVO.setCodeSecLengthTypeText(EnumCache.getValue(EnumEnum.CODE_SEC_LENGTH,codeBasicSecDO.getCodeSecLengthType()));
        }
        if(StringUtils.isNotBlank(codeBasicSecDO.getValueCutType())){
            codeBasicSecVO.setValueCutTypeText(EnumCache.getValue(EnumEnum.CODE_CUT_TYPE,codeBasicSecDO.getValueCutType()));
        }
        if(StringUtils.isNotBlank(codeBasicSecDO.getCodeGetValueType())){
            codeBasicSecVO.setCodeGetValueTypeText(EnumCache.getValue(EnumEnum.CODE_GET_VALUE_TYPE,codeBasicSecDO.getCodeGetValueType()));
        }
        //codeBasicSecVO.setParentClassifySecText();
        //codeBasicSecVO.setSecretGradeText();
        return codeBasicSecVO;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java
@@ -1,8 +1,11 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.enumpack.CodeClassifyProcessUseEnum;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -17,12 +20,10 @@
    @Override
    public CodeClassifyProcessTempVO entityVO(CodeClassifyProcessTemp codeClassifyProcessTemp) {
        CodeClassifyProcessTempVO codeClassifyProcessTempVO = Objects.requireNonNull(BeanUtil.copy(codeClassifyProcessTemp, CodeClassifyProcessTempVO.class));
        codeClassifyProcessTempVO.setCodeProcessUseText(CodeClassifyProcessUseEnum.getTextByValue(codeClassifyProcessTemp.getCodeProcessUse()));
        if(StringUtils.isNotBlank(codeClassifyProcessTemp.getCodeProcessUse())){
            codeClassifyProcessTempVO.setCodeProcessUseText(EnumCache.getValue(EnumEnum.CODE_CLASSIFY_PROCESS_USE,codeClassifyProcessTemp.getCodeProcessUse()));
        }
        return codeClassifyProcessTempVO;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateAttrWrapper.java
@@ -16,8 +16,11 @@
 */
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -38,9 +41,9 @@
    @Override
    public CodeClassifyTemplateAttrVO entityVO(CodeClassifyTemplateAttr CodeClstempattr) {
        CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO = Objects.requireNonNull(BeanUtil.copy(CodeClstempattr, CodeClassifyTemplateAttrVO.class));
        codeClassifyTemplateAttrVO.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(CodeClstempattr.getAttributeDataType()));
        if(StringUtils.isNotBlank(CodeClstempattr.getAttributeDataType())){
            codeClassifyTemplateAttrVO.setAttributeDataTypeText( EnumCache.getValue(EnumEnum.VCO_FIELD_TYPE,CodeClstempattr.getAttributeDataType()));
        }
        return codeClassifyTemplateAttrVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateWrapper.java
@@ -38,12 +38,10 @@
    @Override
    public CodeClassifyTemplateVO entityVO(CodeClassifyTemplate plCodeClstemplate) {
        CodeClassifyTemplateVO plCodeClstemplateVO = Objects.requireNonNull(BeanUtil.copy(plCodeClstemplate, CodeClassifyTemplateVO.class));
        //User createUser = UserCache.getUser(plCodeClstemplate.getCreateUser());
        //User updateUser = UserCache.getUser(plCodeClstemplate.getUpdateUser());
        //plCodeClstemplateVO.setCreateUserName(createUser.getName());
        //plCodeClstemplateVO.setUpdateUserName(updateUser.getName());
        return plCodeClstemplateVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeReferConfigWraper.java
@@ -1,13 +1,18 @@
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.enumpack.CodeReferConfigTypeEnum;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * å‚照配置-包装类,返回视图层所需的字段
@@ -17,7 +22,6 @@
 */
public class CodeReferConfigWraper extends BaseEntityWrapper<CodeReferConfig, CodeReferConfigVO> {
    public static CodeReferConfigWraper build() {
        return new CodeReferConfigWraper();
    }
@@ -25,11 +29,32 @@
    @Override
    public CodeReferConfigVO entityVO(CodeReferConfig codeReferConfig) {
        CodeReferConfigVO codeReferConfigVO = Objects.requireNonNull(BeanUtil.copy(codeReferConfig, CodeReferConfigVO.class));
        if(StringUtils.isNotBlank(codeReferConfig.getType())){
            codeReferConfigVO.setTypeText(EnumCache.getValue(EnumEnum.CODE_REFER_CONFIG_TYPE,codeReferConfig.getType()));
        }
        if(Func.isNotEmpty(codeReferConfig.getCodeSrchCondConfigs())){
            codeReferConfigVO.setCodeSrchCondConfigVOS(CodeSrchCondConfigWraper.build().listVO(codeReferConfig.getCodeSrchCondConfigs()));
        }
        if(Func.isNotEmpty(codeReferConfig.getCodeShowFieldConfigs())){
            codeReferConfigVO.setCodeShowFieldConfigVOS(CodeShowFieldConfigWraper.build().listVO(codeReferConfig.getCodeShowFieldConfigs()));
        }
        codeReferConfigVO.setCodeShowFieldConfigs(null);
        codeReferConfigVO.setCodeSrchCondConfigs(null);
        return codeReferConfigVO;
    }
    public CodeReferConfig entityDO(CodeReferConfigVO codeReferConfigVO) {
        CodeReferConfig codeReferConfig = Objects.requireNonNull(BeanUtil.copy(codeReferConfigVO, CodeReferConfig.class));
        //codeReferConfig.setType(CodeReferConfigTypeEnum.getValueByText(codeReferConfigVO.getTypeText()));
        if(Func.isNotEmpty(codeReferConfigVO.getCodeSrchCondConfigVOS())){
            codeReferConfig.setCodeSrchCondConfigs(CodeSrchCondConfigWraper.build().listDO(codeReferConfigVO.getCodeSrchCondConfigVOS()));
        }
        if(Func.isNotEmpty(codeReferConfigVO.getCodeShowFieldConfigVOS())){
            codeReferConfig.setCodeShowFieldConfigs(CodeShowFieldConfigWraper.build().listDO(codeReferConfigVO.getCodeShowFieldConfigVOS()));
        }
        //    codeReferConfigVO.setCodeSrchCondConfigVOS(null);
        //    codeReferConfigVO.setCodeShowFieldConfigVOS(null);
        return codeReferConfig;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleWrapper.java
@@ -16,9 +16,12 @@
 */
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.lifecycle.CodeRuleLC;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -41,7 +44,9 @@
    @Override
    public CodeRuleVO entityVO(CodeRule codeRule) {
        CodeRuleVO codeRuleVO = Objects.requireNonNull(BeanUtil.copy(codeRule, CodeRuleVO.class));
        codeRuleVO.setLcStatusText(CodeRuleLC.getTextByValue(codeRuleVO.getLcStatus()));
        if(StringUtils.isNotBlank(codeRuleVO.getLcStatus())){
            codeRuleVO.setLcStatusText(EnumCache.getValue(EnumEnum.CODE_RULE_LC,codeRuleVO.getLcStatus()));
        }
        return codeRuleVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeShowFieldConfigWraper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeShowFieldConfig;
import com.vci.ubcs.code.entity.CodeSrchCondConfig;
import com.vci.ubcs.code.enumpack.CodeReferConfigFieldTypeEnum;
import com.vci.ubcs.code.enumpack.CodeReferConfigFixedEnum;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.CodeShowFieldConfigVO;
import com.vci.ubcs.code.vo.CodeSrchCondConfigVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * @author ludc
 * @date 2023/5/24 13:13
 */
public class CodeShowFieldConfigWraper extends BaseEntityWrapper<CodeShowFieldConfig, CodeShowFieldConfigVO>{
    public static CodeShowFieldConfigWraper build() {
        return new CodeShowFieldConfigWraper();
    }
    @Override
    public CodeShowFieldConfigVO entityVO(CodeShowFieldConfig codeShowFieldConfig) {
        CodeShowFieldConfigVO codeShowFieldConfigVO = Objects.requireNonNull(BeanUtil.copy(codeShowFieldConfig, CodeShowFieldConfigVO.class));
        if(StringUtils.isNotBlank(codeShowFieldConfig.getFixedPosition())){
            codeShowFieldConfigVO.setFixedPositionText(EnumCache.getValue(EnumEnum.CODE_REFER_CONFIG_FIXED,codeShowFieldConfig.getFixedPosition()));
        }
        if(StringUtils.isNotBlank(codeShowFieldConfig.getFieldType())){
            codeShowFieldConfigVO.setFieldTypeText(EnumCache.getValue(EnumEnum.CODE_REFER_CONFIG_FIELD_TYPE,codeShowFieldConfig.getFieldType()));
        }
        return codeShowFieldConfigVO;
    }
    public CodeShowFieldConfig entityDOsetReferConfigOid(CodeShowFieldConfigVO codeShowFieldConfigVO,String oid) {
        CodeShowFieldConfig codeShowFieldConfig = entityDO(codeShowFieldConfigVO);
        codeShowFieldConfig.setReferConfigOid(oid);
        return codeShowFieldConfig;
    }
    public CodeShowFieldConfig entityDO(CodeShowFieldConfigVO codeShowFieldConfigVO) {
        CodeShowFieldConfig codeShowFieldConfig = Objects.requireNonNull(BeanUtil.copy(codeShowFieldConfigVO, CodeShowFieldConfig.class));
        if(StringUtils.isNotBlank(codeShowFieldConfigVO.getFieldTypeText())){
            codeShowFieldConfig.setFieldType(CodeReferConfigFieldTypeEnum.getTextByValue(codeShowFieldConfigVO.getFieldTypeText()));
        }
        if(StringUtils.isNotBlank(codeShowFieldConfigVO.getFixedPositionText())){
            codeShowFieldConfig.setFixedPosition(CodeReferConfigFieldTypeEnum.getTextByValue(codeShowFieldConfigVO.getFixedPositionText()));
        }
        if(StringUtils.isNotBlank(codeShowFieldConfigVO.getFieldTypeText())){
            codeShowFieldConfig.setFieldType(CodeReferConfigFieldTypeEnum.getValueByText(codeShowFieldConfigVO.getFieldTypeText()));
        }
        return codeShowFieldConfig;
    }
    public List<CodeShowFieldConfig> listDO(List<CodeShowFieldConfigVO> codeShowFieldConfigVOS,String oid) {
        return (List)codeShowFieldConfigVOS.stream().map(item->entityDOsetReferConfigOid(item,oid)).collect(Collectors.toList());
    }
    public List<CodeShowFieldConfig> listDO(List<CodeShowFieldConfigVO> codeShowFieldConfigVOS) {
        return (List)codeShowFieldConfigVOS.stream().map(this::entityDO).collect(Collectors.toList());
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeSrchCondConfigWraper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeReferConfig;
import com.vci.ubcs.code.entity.CodeShowFieldConfig;
import com.vci.ubcs.code.entity.CodeSrchCondConfig;
import com.vci.ubcs.code.enumpack.CodeReferConfigFieldTypeEnum;
import com.vci.ubcs.code.enumpack.CodeReferConfigFilterTypeEnum;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.CodeShowFieldConfigVO;
import com.vci.ubcs.code.vo.CodeSrchCondConfigVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * @author ludc
 * @date 2023/5/24 13:13
 */
public class CodeSrchCondConfigWraper extends BaseEntityWrapper<CodeSrchCondConfig, CodeSrchCondConfigVO> {
    public static CodeSrchCondConfigWraper build() {
        return new CodeSrchCondConfigWraper();
    }
    @Override
    public CodeSrchCondConfigVO entityVO(CodeSrchCondConfig codeSrchCondConfig) {
        CodeSrchCondConfigVO codeSrchCondConfigVO = Objects.requireNonNull(BeanUtil.copy(codeSrchCondConfig, CodeSrchCondConfigVO.class));
        if(StringUtils.isNotBlank(codeSrchCondConfigVO.getFilterType())){
            codeSrchCondConfigVO.setFilterTypeText(EnumCache.getValue(EnumEnum.CODE_REFER_CONFIG_FILTER_TYPE,codeSrchCondConfig.getFilterType()));
        }
        return codeSrchCondConfigVO;
    }
    public CodeSrchCondConfig entityDOsetReferConfigOid(CodeSrchCondConfigVO codeSrchCondConfigVO,String oid) {
        CodeSrchCondConfig codeSrchCondConfig = entityDO(codeSrchCondConfigVO);
        codeSrchCondConfig.setReferConfigOid(oid);
        return codeSrchCondConfig;
    }
    public CodeSrchCondConfig entityDO(CodeSrchCondConfigVO codeSrchCondConfigVO) {
        CodeSrchCondConfig codeSrchCondConfig = Objects.requireNonNull(BeanUtil.copy(codeSrchCondConfigVO, CodeSrchCondConfig.class));
        if(StringUtils.isNotBlank(codeSrchCondConfigVO.getFilterTypeText())){
            codeSrchCondConfig.setFilterType(CodeReferConfigFieldTypeEnum.getTextByValue(codeSrchCondConfigVO.getFilterTypeText()));
        }
        codeSrchCondConfig.setReferConfigOid(codeSrchCondConfigVO.getOid());
        return codeSrchCondConfig;
    }
    public List<CodeSrchCondConfig> listDO(List<CodeSrchCondConfigVO> codeSrchCondConfigVOS) {
        return (List)codeSrchCondConfigVOS.stream().map(this::entityDO).collect(Collectors.toList());
    }
    public List<CodeSrchCondConfig> listDO(List<CodeSrchCondConfigVO> codeSrchCondConfigVOS,String oid) {
        return (List)codeSrchCondConfigVOS.stream().map(item->entityDOsetReferConfigOid(item,oid)).collect(Collectors.toList());
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java
@@ -16,9 +16,12 @@
 */
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.vci.ubcs.code.enumpack.CodeButtonUseEnum;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.Objects;
@@ -39,7 +42,9 @@
    public CodeClassifyTemplateButtonVO entityVO(CodeClassifyTemplateButton CodeTempbuttonDO) {
        CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = Objects.requireNonNull(BeanUtil.copy(CodeTempbuttonDO, CodeClassifyTemplateButtonVO.class));
        codeClassifyTemplateButtonVO.setButtonUseText(CodeButtonUseEnum.getTextByValue(CodeTempbuttonDO.getButtonUse()));
        if(StringUtils.isNotBlank(CodeTempbuttonDO.getButtonUse())){
            codeClassifyTemplateButtonVO.setButtonUseText(EnumCache.getValue(EnumEnum.CODE_TEMPLATE_BUTTON_USE,CodeTempbuttonDO.getButtonUse()));
        }
        return codeClassifyTemplateButtonVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java
@@ -1,16 +1,67 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingLog;
import com.vci.ubcs.code.vo.pagemodel.DockingLogeVO;
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 DockingLogeWrapper extends BaseEntityWrapper<DockingLog, DockingLogeVO> {
    public static DockingLogeWrapper build() {
        return new DockingLogeWrapper();
    }
    @Override
    public DockingLogeVO entityVO(DockingLog entity) {
        DockingLogeVO dockingLogeVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingLogeVO.class));
        return dockingLogeVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingLogeVO> entityVOs(Collection<DockingLog> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingLogeVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingLog> voentitys(Collection<DockingLogeVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingLog>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingLog voentity( DockingLogeVO vo) {
        DockingLog entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingLog.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -57,6 +57,7 @@
        <result property="customCodeSerialClass" column="CUSTOMCODESERIALCLASS" jdbcType="VARCHAR"/>
        <result property="matchClassifyValueFlag" column="MATCHCLASSIFYVALUEFLAG" jdbcType="VARCHAR"/>
        <result property="parentClassifySecOid" column="PARENTCLASSIFYSECOID" jdbcType="VARCHAR"/>
        <result property="parentClassifySecText" column="b__name" jdbcType="VARCHAR"/>
        <result property="nullableFlag" column="NULLABLEFLAG" jdbcType="VARCHAR"/>
        <result property="componentCodeFlag" column="COMPONENTCODEFLAG" jdbcType="VARCHAR"/>
        <result property="serialDependFlag" column="SERIALDEPENDFLAG" jdbcType="VARCHAR"/>
@@ -70,71 +71,71 @@
    </resultMap>
    <select id="selectCodeBasicSecPage" resultMap="CodeBasicsecMap">
        select PL_CODE_BASICSEC.oid,
        PL_CODE_BASICSEC.revisionoid,
        PL_CODE_BASICSEC.nameoid,
        PL_CODE_BASICSEC.btmname,
        PL_CODE_BASICSEC.lastr,
        PL_CODE_BASICSEC.firstr,
        PL_CODE_BASICSEC.lastv,
        PL_CODE_BASICSEC.firstv,
        PL_CODE_BASICSEC.creator,
        PL_CODE_BASICSEC.createtime,
        PL_CODE_BASICSEC.lastmodifier,
        PL_CODE_BASICSEC.lastmodifytime,
        PL_CODE_BASICSEC.revisionrule,
        PL_CODE_BASICSEC.versionrule,
        PL_CODE_BASICSEC.revisionseq,
        PL_CODE_BASICSEC.revisionvalue,
        PL_CODE_BASICSEC.versionseq,
        PL_CODE_BASICSEC.versionvalue,
        PL_CODE_BASICSEC.lctid,
        PL_CODE_BASICSEC.lcstatus,
        PL_CODE_BASICSEC.ts,
        PL_CODE_BASICSEC.id,
        PL_CODE_BASICSEC.name,
        PL_CODE_BASICSEC.description,
        PL_CODE_BASICSEC.owner,
        PL_CODE_BASICSEC.copyfromversion,
        PL_CODE_BASICSEC.codefillseparator,
        PL_CODE_BASICSEC.codeseclength,
        PL_CODE_BASICSEC.valuecuttype,
        PL_CODE_BASICSEC.codefilltype,
        PL_CODE_BASICSEC.refervalueinfo,
        PL_CODE_BASICSEC.referattributeid,
        PL_CODE_BASICSEC.getvalueclass,
        PL_CODE_BASICSEC.displayflag,
        PL_CODE_BASICSEC.parentclassifysecoid,
        PL_CODE_BASICSEC.serialstep,
        PL_CODE_BASICSEC.serialdependflag,
        PL_CODE_BASICSEC.filtersql,
        PL_CODE_BASICSEC.codedateformatstr,
        PL_CODE_BASICSEC.refercodeclassifyoid,
        PL_CODE_BASICSEC.codeleveltype,
        PL_CODE_BASICSEC.codeseclengthtype,
        PL_CODE_BASICSEC.referattributename,
        PL_CODE_BASICSEC.referbtmname,
        PL_CODE_BASICSEC.codefillflag,
        PL_CODE_BASICSEC.valuecutlength,
        PL_CODE_BASICSEC.codegetvaluetype,
        PL_CODE_BASICSEC.referbtmid,
        PL_CODE_BASICSEC.codefilltypetext,
        PL_CODE_BASICSEC.codelevelvalue,
        PL_CODE_BASICSEC.codefilllength,
        PL_CODE_BASICSEC.customcodeserialclass,
        PL_CODE_BASICSEC.matchclassifyvalueflag,
        PL_CODE_BASICSEC.sectype,
        PL_CODE_BASICSEC.pkcoderule,
        PL_CODE_BASICSEC.ordernum,
        PL_CODE_BASICSEC.referconfig,
        PL_CODE_BASICSEC.serialstart,
        PL_CODE_BASICSEC.componentcodeflag,
        PL_CODE_BASICSEC.serialdependorder,
        PL_CODE_BASICSEC.nullableflag,
        PL_CODE_BASICSEC.codefilllimit,
        btm_codebasicsec_1.name as b__name,
        platformbtm_codeclassify.name as c__name,
        COUNT(*) OVER () "##VCI_COUNT_VCI##"
        SELECT PL_CODE_BASICSEC.oid,
            PL_CODE_BASICSEC.revisionoid,
            PL_CODE_BASICSEC.nameoid,
            PL_CODE_BASICSEC.btmname,
            PL_CODE_BASICSEC.lastr,
            PL_CODE_BASICSEC.firstr,
            PL_CODE_BASICSEC.lastv,
            PL_CODE_BASICSEC.firstv,
            PL_CODE_BASICSEC.creator,
            PL_CODE_BASICSEC.createtime,
            PL_CODE_BASICSEC.lastmodifier,
            PL_CODE_BASICSEC.lastmodifytime,
            PL_CODE_BASICSEC.revisionrule,
            PL_CODE_BASICSEC.versionrule,
            PL_CODE_BASICSEC.revisionseq,
            PL_CODE_BASICSEC.revisionvalue,
            PL_CODE_BASICSEC.versionseq,
            PL_CODE_BASICSEC.versionvalue,
            PL_CODE_BASICSEC.lctid,
            PL_CODE_BASICSEC.lcstatus,
            PL_CODE_BASICSEC.ts,
            PL_CODE_BASICSEC.id,
            PL_CODE_BASICSEC.name,
            PL_CODE_BASICSEC.description,
            PL_CODE_BASICSEC.owner,
            PL_CODE_BASICSEC.copyfromversion,
            PL_CODE_BASICSEC.codefillseparator,
            PL_CODE_BASICSEC.codeseclength,
            PL_CODE_BASICSEC.valuecuttype,
            PL_CODE_BASICSEC.codefilltype,
            PL_CODE_BASICSEC.refervalueinfo,
            PL_CODE_BASICSEC.referattributeid,
            PL_CODE_BASICSEC.getvalueclass,
            PL_CODE_BASICSEC.displayflag,
            PL_CODE_BASICSEC.parentclassifysecoid,
            PL_CODE_BASICSEC.serialstep,
            PL_CODE_BASICSEC.serialdependflag,
            PL_CODE_BASICSEC.filtersql,
            PL_CODE_BASICSEC.codedateformatstr,
            PL_CODE_BASICSEC.refercodeclassifyoid,
            PL_CODE_BASICSEC.codeleveltype,
            PL_CODE_BASICSEC.codeseclengthtype,
            PL_CODE_BASICSEC.referattributename,
            PL_CODE_BASICSEC.referbtmname,
            PL_CODE_BASICSEC.codefillflag,
            PL_CODE_BASICSEC.valuecutlength,
            PL_CODE_BASICSEC.codegetvaluetype,
            PL_CODE_BASICSEC.referbtmid,
            PL_CODE_BASICSEC.codefilltypetext,
            PL_CODE_BASICSEC.codelevelvalue,
            PL_CODE_BASICSEC.codefilllength,
            PL_CODE_BASICSEC.customcodeserialclass,
            PL_CODE_BASICSEC.matchclassifyvalueflag,
            PL_CODE_BASICSEC.sectype,
            PL_CODE_BASICSEC.pkcoderule,
            PL_CODE_BASICSEC.ordernum,
            PL_CODE_BASICSEC.referconfig,
            PL_CODE_BASICSEC.serialstart,
            PL_CODE_BASICSEC.componentcodeflag,
            PL_CODE_BASICSEC.serialdependorder,
            PL_CODE_BASICSEC.nullableflag,
            PL_CODE_BASICSEC.codefilllimit,
            btm_codebasicsec_1.name as b__name,
            platformbtm_codeclassify.name as c__name,
            COUNT(*) OVER () "##VCI_COUNT_VCI##"
        from PL_CODE_BASICSEC
            left join pl_code_basicsec btm_codebasicsec_1
                on btm_codebasicsec_1.oid = PL_CODE_BASICSEC.parentclassifysecoid
@@ -166,7 +167,7 @@
    </select>
    <insert id="insertBatch" keyProperty="oid" useGeneratedKeys="true">
    <!--    <insert id="insertBatch" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_BASICSEC(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME,
        LASTMODIFIER, LASTMODIFYTIME, REVISIONRULE, VERSIONRULE, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE,
        LCTID, LCSTATUS, TS, ID, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, SECTYPE, PKCODERULE, ORDERNUM,
@@ -194,12 +195,7 @@
            #{entity.referattributename}, #{entity.referattributeid}, #{entity.referbtmname}, #{entity.referbtmid}
            from dual
        </foreach>
    </insert>
    <select id="countByCondition" resultType="java.lang.Long">
    </select>
    </insert>-->
    <select id="getOidByCodeclassifysecOid" resultType="java.lang.String">
        SELECT OID
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeReferConfigMapper.xml
@@ -46,153 +46,122 @@
        <result property="parentValue" column="PARENTVALUE" jdbcType="VARCHAR"/>
        <result property="loadType" column="LOADTYPE" jdbcType="VARCHAR"/>
        <result property="onlyLeaf" column="ONLYLEAF" jdbcType="VARCHAR"/>
        <collection property="codeShowFieldConfigs" select="selectShowFieldByReferConfigOid" column="OID" javaType="java.util.ArrayList" ofType="com.vci.ubcs.code.entity.CodeShowFieldConfig">
            <result property="field" column="FIELD"/>
            <result property="title" column="TITLE"/>
            <result property="fieldType" column="FIELDTYPE"/>
            <result property="sort" column="SORT"/>
            <result property="attrSortField" column="ATTRSORTFIELD"/>
            <result property="width" column="WIDTH"/>
            <result property="fixedPosition" column="FIXEDPOSITION"/>
            <result property="templet" column="TEMPLET"/>
        </collection>
        <collection property="codeSrchCondConfigs" select="selectSrchCondByReferConfigOid" column="OID" javaType="java.util.ArrayList" ofType="com.vci.ubcs.code.entity.CodeSrchCondConfig">
            <result property="filterField" column="FILTERFIELD"/>
            <result property="filterType" column="FILTERTYPE"/>
            <result property="filterValue" column="FILTERVALUE"/>
        </collection>
    </resultMap>
    <!--查询单个-->
    <select id="queryById" resultMap="CodeReferconfigMap">
        select
          OID, REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, REFERTYPE, TEXTFIELD, VALUEFIELD, TYPE, URL, BACKPATH, METHOD, HEIGHT, PARAMFORFORMKEY, ISMUTI, MAPFIELDS, REFERCONTENT, DISPLAYTABLE, LIMIT, SORTFIELD, SORTTYPE, PARENTFIELDNAME, PARENTUSEDFIELD, PARENTVALUE, LOADTYPE, ONLYLEAF
        select OID,
               REVISIONOID,
               NAMEOID,
               BTMNAME,
               LASTR,
               FIRSTR,
               LASTV,
               FIRSTV,
               CREATOR,
               CREATETIME,
               REVISIONSEQ,
               REVISIONVALUE,
               VERSIONSEQ,
               VERSIONVALUE,
               LCTID,
               LCSTATUS,
               TS,
               NAME,
               DESCRIPTION,
               OWNER,
               COPYFROMVERSION,
               ORDERNUM,
               REFERTYPE,
               TEXTFIELD,
               VALUEFIELD,
               TYPE,
               URL,
               BACKPATH,
               METHOD,
               HEIGHT,
               PARAMFORFORMKEY,
               ISMUTI,
               MAPFIELDS,
               REFERCONTENT,
               DISPLAYTABLE,
               LIMIT,
               SORTFIELD,
               SORTTYPE,
               PARENTFIELDNAME,
               PARENTUSEDFIELD,
               PARENTVALUE,
               LOADTYPE,
               ONLYLEAF
        from PL_CODE_REFERCONFIG
        where OID = #{oid}
    </select>
    <!--查询指定行数据-->
    <select id="queryAllByPage" resultMap="CodeReferconfigMap">
        select
          OID, REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, REFERTYPE, TEXTFIELD, VALUEFIELD, TYPE, URL, BACKPATH, METHOD, HEIGHT, PARAMFORFORMKEY, ISMUTI, MAPFIELDS, REFERCONTENT, DISPLAYTABLE, LIMIT, SORTFIELD, SORTTYPE, PARENTFIELDNAME, PARENTUSEDFIELD, PARENTVALUE, LOADTYPE, ONLYLEAF
        from PL_CODE_REFERCONFIG
    <select id="selectJoinPage" resultMap="CodeReferconfigMap">
        SELECT
            PCR.*
        FROM PL_CODE_REFERCONFIG PCR
        <where>
            <if test="oid != null and oid != ''">
                and OID = #{oid}
            <if test="codeReferConfig.tenantId != null and codeReferConfig.tenantId != ''">
                PCR.TENANTID = #{codeReferConfig.tenantId}
            </if>
            <if test="revisionoid != null and revisionoid != ''">
                and REVISIONOID = #{revisionoid}
            <if test="codeReferConfig.isOpenGlobal != null and codeReferConfig.isOpenGlobal != ''">
                OR PCR.ISOPENGLOBAL = #{codeReferConfig.isOpenGlobal}
            </if>
            <if test="nameoid != null and nameoid != ''">
                and NAMEOID = #{nameoid}
            <if test="codeReferConfig.name != null and codeReferConfig.name != ''">
                and NAME like CONCAT(CONCAT('%', #{codeReferConfig.name}), '%')
            </if>
            <if test="btmname != null and btmname != ''">
                and BTMNAME = #{btmname}
            </if>
            <if test="lastr != null and lastr != ''">
                and LASTR = #{lastr}
            </if>
            <if test="firstr != null and firstr != ''">
                and FIRSTR = #{firstr}
            </if>
            <if test="lastv != null and lastv != ''">
                and LASTV = #{lastv}
            </if>
            <if test="firstv != null and firstv != ''">
                and FIRSTV = #{firstv}
            </if>
            <if test="creator != null and creator != ''">
                and CREATOR = #{creator}
            </if>
            <if test="createtime != null and createtime != ''">
                and CREATETIME = #{createtime}
            </if>
            <if test="revisionseq != null">
                and REVISIONSEQ = #{revisionseq}
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                and REVISIONVALUE = #{revisionvalue}
            </if>
            <if test="versionseq != null">
                and VERSIONSEQ = #{versionseq}
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                and VERSIONVALUE = #{versionvalue}
            </if>
            <if test="lctid != null and lctid != ''">
                and LCTID = #{lctid}
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                and LCSTATUS = #{lcstatus}
            </if>
            <if test="ts != null and ts != ''">
                and TS = #{ts}
            </if>
            <if test="name != null and name != ''">
                and NAME = #{name}
            </if>
            <if test="description != null and description != ''">
                and DESCRIPTION = #{description}
            </if>
            <if test="owner != null and owner != ''">
                and OWNER = #{owner}
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                and COPYFROMVERSION = #{copyfromversion}
            </if>
            <if test="ordernum != null">
                and ORDERNUM = #{ordernum}
            </if>
            <if test="refertype != null and refertype != ''">
                and REFERTYPE = #{refertype}
            </if>
            <if test="textfield != null and textfield != ''">
                and TEXTFIELD = #{textfield}
            </if>
            <if test="valuefield != null and valuefield != ''">
                and VALUEFIELD = #{valuefield}
            </if>
            <if test="type != null and type != ''">
                and TYPE = #{type}
            </if>
            <if test="url != null and url != ''">
                and URL = #{url}
            </if>
            <if test="backpath != null and backpath != ''">
                and BACKPATH = #{backpath}
            </if>
            <if test="method != null and method != ''">
                and METHOD = #{method}
            </if>
            <if test="height != null">
                and HEIGHT = #{height}
            </if>
            <if test="paramforformkey != null and paramforformkey != ''">
                and PARAMFORFORMKEY = #{paramforformkey}
            </if>
            <if test="ismuti != null and ismuti != ''">
                and ISMUTI = #{ismuti}
            </if>
            <if test="mapfields != null and mapfields != ''">
                and MAPFIELDS = #{mapfields}
            </if>
            <if test="refercontent != null and refercontent != ''">
                and REFERCONTENT = #{refercontent}
            </if>
            <if test="displaytable != null and displaytable != ''">
                and DISPLAYTABLE = #{displaytable}
            </if>
            <if test="limit != null and limit != ''">
                and LIMIT = #{limit}
            </if>
            <if test="sortfield != null and sortfield != ''">
                and SORTFIELD = #{sortfield}
            </if>
            <if test="sorttype != null and sorttype != ''">
                and SORTTYPE = #{sorttype}
            </if>
            <if test="parentfieldname != null and parentfieldname != ''">
                and PARENTFIELDNAME = #{parentfieldname}
            </if>
            <if test="parentusedfield != null and parentusedfield != ''">
                and PARENTUSEDFIELD = #{parentusedfield}
            </if>
            <if test="parentvalue != null and parentvalue != ''">
                and PARENTVALUE = #{parentvalue}
            </if>
            <if test="loadtype != null and loadtype != ''">
                and LOADTYPE = #{loadtype}
            </if>
            <if test="onlyleaf != null and onlyleaf != ''">
                and ONLYLEAF = #{onlyleaf}
            <if test="codeReferConfig.id != null and codeReferConfig.id != ''">
                and ID like CONCAT(CONCAT('%', #{codeReferConfig.id}), '%')
            </if>
        </where>
        limit #{pageable.offset}, #{pageable.pageSize}
    </select>
    <select id="selectShowFieldByReferConfigOid" resultType="com.vci.ubcs.code.entity.CodeShowFieldConfig">
        SELECT temp.* FROM (
            SELECT
                PCS.REFERCONFIGOID,
                PCS.FIELD,
                PCS.TITLE,
                PCS.FIELDTYPE,
                PCS.SORT,
                PCS.ATTRSORTFIELD,
                PCS.WIDTH,
                PCS.FIXEDPOSITION,
                PCS.TEMPLET,
                PCS.ISQUERY
            FROM PL_CODE_REFERCONFIG PCR
                LEFT JOIN PL_CODE_SHOWFIELDCONFIG PCS ON PCS.REFERCONFIGOID = PCR.OID)
            temp WHERE temp.REFERCONFIGOID = #{oid}
    </select>
    <select id="selectSrchCondByReferConfigOid" resultType="com.vci.ubcs.code.entity.CodeSrchCondConfig">
        SELECT temp.*
            FROM
            (SELECT
                PCSR.FILTERFIELD,
                PCSR.FILTERTYPE,
                PCSR.FILTERVALUE,
                PCSR.REFERCONFIGOID
            FROM PL_CODE_REFERCONFIG PCR
                     LEFT JOIN PL_CODE_SRCHCONDCONFIG PCSR ON PCSR.REFERCONFIGOID = PCR.OID)
            temp WHERE temp.REFERCONFIGOID = #{oid}
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeShowFieldConfigMapper.xml
@@ -3,395 +3,19 @@
<mapper namespace="com.vci.ubcs.code.mapper.CodeShowFieldConfigMapper">
    <resultMap type="com.vci.ubcs.code.entity.CodeShowFieldConfig" id="PlCodeShowfieldconfigMap">
        <result property="oid" column="OID" jdbcType="VARCHAR"/>
        <result property="revisionOid" column="REVISIONOID" jdbcType="VARCHAR"/>
        <result property="nameOid" column="NAMEOID" jdbcType="VARCHAR"/>
        <result property="btmname" column="BTMNAME" jdbcType="VARCHAR"/>
        <result property="lastR" column="LASTR" jdbcType="VARCHAR"/>
        <result property="firstR" column="FIRSTR" jdbcType="VARCHAR"/>
        <result property="lastV" column="LASTV" jdbcType="VARCHAR"/>
        <result property="firstV" column="FIRSTV" jdbcType="VARCHAR"/>
        <result property="creator" column="CREATOR" jdbcType="VARCHAR"/>
        <result property="createTime" column="CREATETIME" jdbcType="VARCHAR"/>
        <result property="revisionSeq" column="REVISIONSEQ" jdbcType="INTEGER"/>
        <result property="revisionValue" column="REVISIONVALUE" jdbcType="VARCHAR"/>
        <result property="versionSeq" column="VERSIONSEQ" jdbcType="INTEGER"/>
        <result property="versionValue" column="VERSIONVALUE" jdbcType="VARCHAR"/>
        <result property="lctid" column="LCTID" jdbcType="VARCHAR"/>
        <result property="lcStatus" column="LCSTATUS" jdbcType="VARCHAR"/>
        <result property="ts" column="TS" jdbcType="VARCHAR"/>
        <result property="name" column="NAME" jdbcType="VARCHAR"/>
        <result property="description" column="DESCRIPTION" jdbcType="VARCHAR"/>
        <result property="owner" column="OWNER" jdbcType="VARCHAR"/>
        <result property="copyFromVersion" column="COPYFROMVERSION" jdbcType="VARCHAR"/>
        <id column="OID" property="oid"/>
        <result property="orderNum" column="ORDERNUM" jdbcType="INTEGER"/>
        <result property="field" column="FIELD" jdbcType="VARCHAR"/>
        <result property="title" column="TITLE" jdbcType="VARCHAR"/>
        <result property="fieldType" column="FIELDTYPE" jdbcType="VARCHAR"/>
        <result property="sort" column="SORT" jdbcType="VARCHAR"/>
        <result property="sortField" column="SORTFIELD" jdbcType="VARCHAR"/>
        <result property="attrSortField" column="ATTRSORTFIELD" jdbcType="VARCHAR"/>
        <result property="width" column="WIDTH" jdbcType="INTEGER"/>
        <result property="fixedText" column="FIXEDTEXT" jdbcType="VARCHAR"/>
        <result property="fixedPosition" column="FIXEDPOSITION" jdbcType="VARCHAR"/>
        <result property="templet" column="TEMPLET" jdbcType="VARCHAR"/>
        <result property="isQuery" column="ISQUERY" jdbcType="VARCHAR"/>
    </resultMap>
    <!--查询单个-->
    <select id="queryById" resultMap="PlCodeShowfieldconfigMap">
        select
          OID, REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FIELD, TITLE, FIELDTYPE, SORT, SORTFIELD, WIDTH, FIXEDTEXT, TEMPLET
        from PL_CODE_SHOWFIELDCONFIG
        where OID = #{oid}
    </select>
    <!--查询指定行数据-->
    <select id="queryAllByLimit" resultMap="PlCodeShowfieldconfigMap">
        select
          OID, REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FIELD, TITLE, FIELDTYPE, SORT, SORTFIELD, WIDTH, FIXEDTEXT, TEMPLET
        from PL_CODE_SHOWFIELDCONFIG
        <where>
            <if test="oid != null and oid != ''">
                and OID = #{oid}
            </if>
            <if test="revisionoid != null and revisionoid != ''">
                and REVISIONOID = #{revisionoid}
            </if>
            <if test="nameoid != null and nameoid != ''">
                and NAMEOID = #{nameoid}
            </if>
            <if test="btmname != null and btmname != ''">
                and BTMNAME = #{btmname}
            </if>
            <if test="lastr != null and lastr != ''">
                and LASTR = #{lastr}
            </if>
            <if test="firstr != null and firstr != ''">
                and FIRSTR = #{firstr}
            </if>
            <if test="lastv != null and lastv != ''">
                and LASTV = #{lastv}
            </if>
            <if test="firstv != null and firstv != ''">
                and FIRSTV = #{firstv}
            </if>
            <if test="creator != null and creator != ''">
                and CREATOR = #{creator}
            </if>
            <if test="createtime != null and createtime != ''">
                and CREATETIME = #{createtime}
            </if>
            <if test="revisionseq != null">
                and REVISIONSEQ = #{revisionseq}
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                and REVISIONVALUE = #{revisionvalue}
            </if>
            <if test="versionseq != null">
                and VERSIONSEQ = #{versionseq}
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                and VERSIONVALUE = #{versionvalue}
            </if>
            <if test="lctid != null and lctid != ''">
                and LCTID = #{lctid}
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                and LCSTATUS = #{lcstatus}
            </if>
            <if test="ts != null and ts != ''">
                and TS = #{ts}
            </if>
            <if test="name != null and name != ''">
                and NAME = #{name}
            </if>
            <if test="description != null and description != ''">
                and DESCRIPTION = #{description}
            </if>
            <if test="owner != null and owner != ''">
                and OWNER = #{owner}
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                and COPYFROMVERSION = #{copyfromversion}
            </if>
            <if test="ordernum != null">
                and ORDERNUM = #{ordernum}
            </if>
            <if test="field != null and field != ''">
                and FIELD = #{field}
            </if>
            <if test="title != null and title != ''">
                and TITLE = #{title}
            </if>
            <if test="fieldtype != null and fieldtype != ''">
                and FIELDTYPE = #{fieldtype}
            </if>
            <if test="sort != null and sort != ''">
                and SORT = #{sort}
            </if>
            <if test="sortfield != null and sortfield != ''">
                and SORTFIELD = #{sortfield}
            </if>
            <if test="width != null">
                and WIDTH = #{width}
            </if>
            <if test="fixedtext != null and fixedtext != ''">
                and FIXEDTEXT = #{fixedtext}
            </if>
            <if test="templet != null and templet != ''">
                and TEMPLET = #{templet}
            </if>
        </where>
        limit #{pageable.offset}, #{pageable.pageSize}
    </select>
    <!--统计总行数-->
    <select id="count" resultType="java.lang.Long">
        select count(1)
        from PL_CODE_SHOWFIELDCONFIG
        <where>
            <if test="oid != null and oid != ''">
                and OID = #{oid}
            </if>
            <if test="revisionoid != null and revisionoid != ''">
                and REVISIONOID = #{revisionoid}
            </if>
            <if test="nameoid != null and nameoid != ''">
                and NAMEOID = #{nameoid}
            </if>
            <if test="btmname != null and btmname != ''">
                and BTMNAME = #{btmname}
            </if>
            <if test="lastr != null and lastr != ''">
                and LASTR = #{lastr}
            </if>
            <if test="firstr != null and firstr != ''">
                and FIRSTR = #{firstr}
            </if>
            <if test="lastv != null and lastv != ''">
                and LASTV = #{lastv}
            </if>
            <if test="firstv != null and firstv != ''">
                and FIRSTV = #{firstv}
            </if>
            <if test="creator != null and creator != ''">
                and CREATOR = #{creator}
            </if>
            <if test="createtime != null and createtime != ''">
                and CREATETIME = #{createtime}
            </if>
            <if test="revisionseq != null">
                and REVISIONSEQ = #{revisionseq}
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                and REVISIONVALUE = #{revisionvalue}
            </if>
            <if test="versionseq != null">
                and VERSIONSEQ = #{versionseq}
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                and VERSIONVALUE = #{versionvalue}
            </if>
            <if test="lctid != null and lctid != ''">
                and LCTID = #{lctid}
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                and LCSTATUS = #{lcstatus}
            </if>
            <if test="ts != null and ts != ''">
                and TS = #{ts}
            </if>
            <if test="name != null and name != ''">
                and NAME = #{name}
            </if>
            <if test="description != null and description != ''">
                and DESCRIPTION = #{description}
            </if>
            <if test="owner != null and owner != ''">
                and OWNER = #{owner}
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                and COPYFROMVERSION = #{copyfromversion}
            </if>
            <if test="ordernum != null">
                and ORDERNUM = #{ordernum}
            </if>
            <if test="field != null and field != ''">
                and FIELD = #{field}
            </if>
            <if test="title != null and title != ''">
                and TITLE = #{title}
            </if>
            <if test="fieldtype != null and fieldtype != ''">
                and FIELDTYPE = #{fieldtype}
            </if>
            <if test="sort != null and sort != ''">
                and SORT = #{sort}
            </if>
            <if test="sortfield != null and sortfield != ''">
                and SORTFIELD = #{sortfield}
            </if>
            <if test="width != null">
                and WIDTH = #{width}
            </if>
            <if test="fixedtext != null and fixedtext != ''">
                and FIXEDTEXT = #{fixedtext}
            </if>
            <if test="templet != null and templet != ''">
                and TEMPLET = #{templet}
            </if>
        </where>
    </select>
    <!--新增所有列-->
    <insert id="insert" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_SHOWFIELDCONFIG(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FIELD, TITLE, FIELDTYPE, SORT, SORTFIELD, WIDTH, FIXEDTEXT, TEMPLET)
        values (#{revisionoid}, #{nameoid}, #{btmname}, #{lastr}, #{firstr}, #{lastv}, #{firstv}, #{creator}, #{createtime}, #{revisionseq}, #{revisionvalue}, #{versionseq}, #{versionvalue}, #{lctid}, #{lcstatus}, #{ts}, #{name}, #{description}, #{owner}, #{copyfromversion}, #{ordernum}, #{field}, #{title}, #{fieldtype}, #{sort}, #{sortfield}, #{width}, #{fixedtext}, #{templet})
    </insert>
    <insert id="insertBatch" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_SHOWFIELDCONFIG(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FIELD, TITLE, FIELDTYPE, SORT, SORTFIELD, WIDTH, FIXEDTEXT, TEMPLET)
        values
        <foreach collection="entities" item="entity" separator=",">
        (#{entity.revisionoid}, #{entity.nameoid}, #{entity.btmname}, #{entity.lastr}, #{entity.firstr}, #{entity.lastv}, #{entity.firstv}, #{entity.creator}, #{entity.createtime}, #{entity.revisionseq}, #{entity.revisionvalue}, #{entity.versionseq}, #{entity.versionvalue}, #{entity.lctid}, #{entity.lcstatus}, #{entity.ts}, #{entity.name}, #{entity.description}, #{entity.owner}, #{entity.copyfromversion}, #{entity.ordernum}, #{entity.field}, #{entity.title}, #{entity.fieldtype}, #{entity.sort}, #{entity.sortfield}, #{entity.width}, #{entity.fixedtext}, #{entity.templet})
        </foreach>
    </insert>
    <insert id="insertOrUpdateBatch" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_SHOWFIELDCONFIG(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FIELD, TITLE, FIELDTYPE, SORT, SORTFIELD, WIDTH, FIXEDTEXT, TEMPLET)
        values
        <foreach collection="entities" item="entity" separator=",">
            (#{entity.revisionoid}, #{entity.nameoid}, #{entity.btmname}, #{entity.lastr}, #{entity.firstr}, #{entity.lastv}, #{entity.firstv}, #{entity.creator}, #{entity.createtime}, #{entity.revisionseq}, #{entity.revisionvalue}, #{entity.versionseq}, #{entity.versionvalue}, #{entity.lctid}, #{entity.lcstatus}, #{entity.ts}, #{entity.name}, #{entity.description}, #{entity.owner}, #{entity.copyfromversion}, #{entity.ordernum}, #{entity.field}, #{entity.title}, #{entity.fieldtype}, #{entity.sort}, #{entity.sortfield}, #{entity.width}, #{entity.fixedtext}, #{entity.templet})
        </foreach>
        on duplicate key update
        REVISIONOID = values(REVISIONOID),
        NAMEOID = values(NAMEOID),
        BTMNAME = values(BTMNAME),
        LASTR = values(LASTR),
        FIRSTR = values(FIRSTR),
        LASTV = values(LASTV),
        FIRSTV = values(FIRSTV),
        CREATOR = values(CREATOR),
        CREATETIME = values(CREATETIME),
        REVISIONSEQ = values(REVISIONSEQ),
        REVISIONVALUE = values(REVISIONVALUE),
        VERSIONSEQ = values(VERSIONSEQ),
        VERSIONVALUE = values(VERSIONVALUE),
        LCTID = values(LCTID),
        LCSTATUS = values(LCSTATUS),
        TS = values(TS),
        NAME = values(NAME),
        DESCRIPTION = values(DESCRIPTION),
        OWNER = values(OWNER),
        COPYFROMVERSION = values(COPYFROMVERSION),
        ORDERNUM = values(ORDERNUM),
        FIELD = values(FIELD),
        TITLE = values(TITLE),
        FIELDTYPE = values(FIELDTYPE),
        SORT = values(SORT),
        SORTFIELD = values(SORTFIELD),
        WIDTH = values(WIDTH),
        FIXEDTEXT = values(FIXEDTEXT),
        TEMPLET = values(TEMPLET)
    </insert>
    <!--通过主键修改数据-->
    <update id="update">
        update PL_CODE_SHOWFIELDCONFIG
        <set>
            <if test="revisionoid != null and revisionoid != ''">
                REVISIONOID = #{revisionoid},
            </if>
            <if test="nameoid != null and nameoid != ''">
                NAMEOID = #{nameoid},
            </if>
            <if test="btmname != null and btmname != ''">
                BTMNAME = #{btmname},
            </if>
            <if test="lastr != null and lastr != ''">
                LASTR = #{lastr},
            </if>
            <if test="firstr != null and firstr != ''">
                FIRSTR = #{firstr},
            </if>
            <if test="lastv != null and lastv != ''">
                LASTV = #{lastv},
            </if>
            <if test="firstv != null and firstv != ''">
                FIRSTV = #{firstv},
            </if>
            <if test="creator != null and creator != ''">
                CREATOR = #{creator},
            </if>
            <if test="createtime != null and createtime != ''">
                CREATETIME = #{createtime},
            </if>
            <if test="revisionseq != null">
                REVISIONSEQ = #{revisionseq},
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                REVISIONVALUE = #{revisionvalue},
            </if>
            <if test="versionseq != null">
                VERSIONSEQ = #{versionseq},
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                VERSIONVALUE = #{versionvalue},
            </if>
            <if test="lctid != null and lctid != ''">
                LCTID = #{lctid},
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                LCSTATUS = #{lcstatus},
            </if>
            <if test="ts != null and ts != ''">
                TS = #{ts},
            </if>
            <if test="name != null and name != ''">
                NAME = #{name},
            </if>
            <if test="description != null and description != ''">
                DESCRIPTION = #{description},
            </if>
            <if test="owner != null and owner != ''">
                OWNER = #{owner},
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                COPYFROMVERSION = #{copyfromversion},
            </if>
            <if test="ordernum != null">
                ORDERNUM = #{ordernum},
            </if>
            <if test="field != null and field != ''">
                FIELD = #{field},
            </if>
            <if test="title != null and title != ''">
                TITLE = #{title},
            </if>
            <if test="fieldtype != null and fieldtype != ''">
                FIELDTYPE = #{fieldtype},
            </if>
            <if test="sort != null and sort != ''">
                SORT = #{sort},
            </if>
            <if test="sortfield != null and sortfield != ''">
                SORTFIELD = #{sortfield},
            </if>
            <if test="width != null">
                WIDTH = #{width},
            </if>
            <if test="fixedtext != null and fixedtext != ''">
                FIXEDTEXT = #{fixedtext},
            </if>
            <if test="templet != null and templet != ''">
                TEMPLET = #{templet},
            </if>
        </set>
        where OID = #{oid}
    </update>
    <!--通过主键删除-->
    <delete id="deleteById">
        delete from PL_CODE_SHOWFIELDCONFIG where OID = #{oid}
    </delete>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSrchCondConfigMapper.xml
@@ -3,340 +3,12 @@
<mapper namespace="com.vci.ubcs.code.mapper.CodeSrchCondConfigMapper">
    <resultMap type="com.vci.ubcs.code.entity.CodeSrchCondConfig" id="PlCodeSrchcondconfigMap">
        <result property="oid" column="OID" jdbcType="VARCHAR"/>
        <result property="revisionOid" column="REVISIONOID" jdbcType="VARCHAR"/>
        <result property="nameOid" column="NAMEOID" jdbcType="VARCHAR"/>
        <result property="btmname" column="BTMNAME" jdbcType="VARCHAR"/>
        <result property="lastR" column="LASTR" jdbcType="VARCHAR"/>
        <result property="firstR" column="FIRSTR" jdbcType="VARCHAR"/>
        <result property="lastV" column="LASTV" jdbcType="VARCHAR"/>
        <result property="firstV" column="FIRSTV" jdbcType="VARCHAR"/>
        <result property="creator" column="CREATOR" jdbcType="VARCHAR"/>
        <result property="createTime" column="CREATETIME" jdbcType="VARCHAR"/>
        <result property="revisionSeq" column="REVISIONSEQ" jdbcType="INTEGER"/>
        <result property="revisionValue" column="REVISIONVALUE" jdbcType="VARCHAR"/>
        <result property="versionSeq" column="VERSIONSEQ" jdbcType="INTEGER"/>
        <result property="versionValue" column="VERSIONVALUE" jdbcType="VARCHAR"/>
        <result property="lctid" column="LCTID" jdbcType="VARCHAR"/>
        <result property="lcStatus" column="LCSTATUS" jdbcType="VARCHAR"/>
        <result property="ts" column="TS" jdbcType="VARCHAR"/>
        <result property="name" column="NAME" jdbcType="VARCHAR"/>
        <result property="description" column="DESCRIPTION" jdbcType="VARCHAR"/>
        <result property="owner" column="OWNER" jdbcType="VARCHAR"/>
        <result property="copyFromVersion" column="COPYFROMVERSION" jdbcType="VARCHAR"/>
        <id column="OID" property="oid"/>
        <result property="orderNum" column="ORDERNUM" jdbcType="INTEGER"/>
        <result property="filterField" column="FILTERFIELD" jdbcType="VARCHAR"/>
        <result property="filterType" column="FILTERTYPE" jdbcType="VARCHAR"/>
        <result property="filterValue" column="FILTERVALUE" jdbcType="VARCHAR"/>
    </resultMap>
    <!--查询单个-->
    <select id="queryById" resultMap="PlCodeSrchcondconfigMap">
        select
          OID, REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FILTERFIELD, FILTERTYPE, FILTERVALUE
        from PL_CODE_SRCHCONDCONFIG
        where OID = #{oid}
    </select>
    <!--查询指定行数据-->
    <select id="queryAllByLimit" resultMap="PlCodeSrchcondconfigMap">
        select
          OID, REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FILTERFIELD, FILTERTYPE, FILTERVALUE
        from PL_CODE_SRCHCONDCONFIG
        <where>
            <if test="oid != null and oid != ''">
                and OID = #{oid}
            </if>
            <if test="revisionoid != null and revisionoid != ''">
                and REVISIONOID = #{revisionoid}
            </if>
            <if test="nameoid != null and nameoid != ''">
                and NAMEOID = #{nameoid}
            </if>
            <if test="btmname != null and btmname != ''">
                and BTMNAME = #{btmname}
            </if>
            <if test="lastr != null and lastr != ''">
                and LASTR = #{lastr}
            </if>
            <if test="firstr != null and firstr != ''">
                and FIRSTR = #{firstr}
            </if>
            <if test="lastv != null and lastv != ''">
                and LASTV = #{lastv}
            </if>
            <if test="firstv != null and firstv != ''">
                and FIRSTV = #{firstv}
            </if>
            <if test="creator != null and creator != ''">
                and CREATOR = #{creator}
            </if>
            <if test="createtime != null and createtime != ''">
                and CREATETIME = #{createtime}
            </if>
            <if test="revisionseq != null">
                and REVISIONSEQ = #{revisionseq}
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                and REVISIONVALUE = #{revisionvalue}
            </if>
            <if test="versionseq != null">
                and VERSIONSEQ = #{versionseq}
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                and VERSIONVALUE = #{versionvalue}
            </if>
            <if test="lctid != null and lctid != ''">
                and LCTID = #{lctid}
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                and LCSTATUS = #{lcstatus}
            </if>
            <if test="ts != null and ts != ''">
                and TS = #{ts}
            </if>
            <if test="name != null and name != ''">
                and NAME = #{name}
            </if>
            <if test="description != null and description != ''">
                and DESCRIPTION = #{description}
            </if>
            <if test="owner != null and owner != ''">
                and OWNER = #{owner}
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                and COPYFROMVERSION = #{copyfromversion}
            </if>
            <if test="ordernum != null">
                and ORDERNUM = #{ordernum}
            </if>
            <if test="filterfield != null and filterfield != ''">
                and FILTERFIELD = #{filterfield}
            </if>
            <if test="filtertype != null and filtertype != ''">
                and FILTERTYPE = #{filtertype}
            </if>
            <if test="filtervalue != null and filtervalue != ''">
                and FILTERVALUE = #{filtervalue}
            </if>
        </where>
        limit #{pageable.offset}, #{pageable.pageSize}
    </select>
    <!--统计总行数-->
    <select id="count" resultType="java.lang.Long">
        select count(1)
        from PL_CODE_SRCHCONDCONFIG
        <where>
            <if test="oid != null and oid != ''">
                and OID = #{oid}
            </if>
            <if test="revisionoid != null and revisionoid != ''">
                and REVISIONOID = #{revisionoid}
            </if>
            <if test="nameoid != null and nameoid != ''">
                and NAMEOID = #{nameoid}
            </if>
            <if test="btmname != null and btmname != ''">
                and BTMNAME = #{btmname}
            </if>
            <if test="lastr != null and lastr != ''">
                and LASTR = #{lastr}
            </if>
            <if test="firstr != null and firstr != ''">
                and FIRSTR = #{firstr}
            </if>
            <if test="lastv != null and lastv != ''">
                and LASTV = #{lastv}
            </if>
            <if test="firstv != null and firstv != ''">
                and FIRSTV = #{firstv}
            </if>
            <if test="creator != null and creator != ''">
                and CREATOR = #{creator}
            </if>
            <if test="createtime != null and createtime != ''">
                and CREATETIME = #{createtime}
            </if>
            <if test="revisionseq != null">
                and REVISIONSEQ = #{revisionseq}
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                and REVISIONVALUE = #{revisionvalue}
            </if>
            <if test="versionseq != null">
                and VERSIONSEQ = #{versionseq}
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                and VERSIONVALUE = #{versionvalue}
            </if>
            <if test="lctid != null and lctid != ''">
                and LCTID = #{lctid}
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                and LCSTATUS = #{lcstatus}
            </if>
            <if test="ts != null and ts != ''">
                and TS = #{ts}
            </if>
            <if test="name != null and name != ''">
                and NAME = #{name}
            </if>
            <if test="description != null and description != ''">
                and DESCRIPTION = #{description}
            </if>
            <if test="owner != null and owner != ''">
                and OWNER = #{owner}
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                and COPYFROMVERSION = #{copyfromversion}
            </if>
            <if test="ordernum != null">
                and ORDERNUM = #{ordernum}
            </if>
            <if test="filterfield != null and filterfield != ''">
                and FILTERFIELD = #{filterfield}
            </if>
            <if test="filtertype != null and filtertype != ''">
                and FILTERTYPE = #{filtertype}
            </if>
            <if test="filtervalue != null and filtervalue != ''">
                and FILTERVALUE = #{filtervalue}
            </if>
        </where>
    </select>
    <!--新增所有列-->
    <insert id="insert" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_SRCHCONDCONFIG(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FILTERFIELD, FILTERTYPE, FILTERVALUE)
        values (#{revisionoid}, #{nameoid}, #{btmname}, #{lastr}, #{firstr}, #{lastv}, #{firstv}, #{creator}, #{createtime}, #{revisionseq}, #{revisionvalue}, #{versionseq}, #{versionvalue}, #{lctid}, #{lcstatus}, #{ts}, #{name}, #{description}, #{owner}, #{copyfromversion}, #{ordernum}, #{filterfield}, #{filtertype}, #{filtervalue})
    </insert>
    <insert id="insertBatch" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_SRCHCONDCONFIG(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FILTERFIELD, FILTERTYPE, FILTERVALUE)
        values
        <foreach collection="entities" item="entity" separator=",">
        (#{entity.revisionoid}, #{entity.nameoid}, #{entity.btmname}, #{entity.lastr}, #{entity.firstr}, #{entity.lastv}, #{entity.firstv}, #{entity.creator}, #{entity.createtime}, #{entity.revisionseq}, #{entity.revisionvalue}, #{entity.versionseq}, #{entity.versionvalue}, #{entity.lctid}, #{entity.lcstatus}, #{entity.ts}, #{entity.name}, #{entity.description}, #{entity.owner}, #{entity.copyfromversion}, #{entity.ordernum}, #{entity.filterfield}, #{entity.filtertype}, #{entity.filtervalue})
        </foreach>
    </insert>
    <insert id="insertOrUpdateBatch" keyProperty="oid" useGeneratedKeys="true">
        insert into PL_CODE_SRCHCONDCONFIG(REVISIONOID, NAMEOID, BTMNAME, LASTR, FIRSTR, LASTV, FIRSTV, CREATOR, CREATETIME, REVISIONSEQ, REVISIONVALUE, VERSIONSEQ, VERSIONVALUE, LCTID, LCSTATUS, TS, NAME, DESCRIPTION, OWNER, COPYFROMVERSION, ORDERNUM, FILTERFIELD, FILTERTYPE, FILTERVALUE)
        values
        <foreach collection="entities" item="entity" separator=",">
            (#{entity.revisionoid}, #{entity.nameoid}, #{entity.btmname}, #{entity.lastr}, #{entity.firstr}, #{entity.lastv}, #{entity.firstv}, #{entity.creator}, #{entity.createtime}, #{entity.revisionseq}, #{entity.revisionvalue}, #{entity.versionseq}, #{entity.versionvalue}, #{entity.lctid}, #{entity.lcstatus}, #{entity.ts}, #{entity.name}, #{entity.description}, #{entity.owner}, #{entity.copyfromversion}, #{entity.ordernum}, #{entity.filterfield}, #{entity.filtertype}, #{entity.filtervalue})
        </foreach>
        on duplicate key update
        REVISIONOID = values(REVISIONOID),
        NAMEOID = values(NAMEOID),
        BTMNAME = values(BTMNAME),
        LASTR = values(LASTR),
        FIRSTR = values(FIRSTR),
        LASTV = values(LASTV),
        FIRSTV = values(FIRSTV),
        CREATOR = values(CREATOR),
        CREATETIME = values(CREATETIME),
        REVISIONSEQ = values(REVISIONSEQ),
        REVISIONVALUE = values(REVISIONVALUE),
        VERSIONSEQ = values(VERSIONSEQ),
        VERSIONVALUE = values(VERSIONVALUE),
        LCTID = values(LCTID),
        LCSTATUS = values(LCSTATUS),
        TS = values(TS),
        NAME = values(NAME),
        DESCRIPTION = values(DESCRIPTION),
        OWNER = values(OWNER),
        COPYFROMVERSION = values(COPYFROMVERSION),
        ORDERNUM = values(ORDERNUM),
        FILTERFIELD = values(FILTERFIELD),
        FILTERTYPE = values(FILTERTYPE),
        FILTERVALUE = values(FILTERVALUE)
    </insert>
    <!--通过主键修改数据-->
    <update id="update">
        update PL_CODE_SRCHCONDCONFIG
        <set>
            <if test="revisionoid != null and revisionoid != ''">
                REVISIONOID = #{revisionoid},
            </if>
            <if test="nameoid != null and nameoid != ''">
                NAMEOID = #{nameoid},
            </if>
            <if test="btmname != null and btmname != ''">
                BTMNAME = #{btmname},
            </if>
            <if test="lastr != null and lastr != ''">
                LASTR = #{lastr},
            </if>
            <if test="firstr != null and firstr != ''">
                FIRSTR = #{firstr},
            </if>
            <if test="lastv != null and lastv != ''">
                LASTV = #{lastv},
            </if>
            <if test="firstv != null and firstv != ''">
                FIRSTV = #{firstv},
            </if>
            <if test="creator != null and creator != ''">
                CREATOR = #{creator},
            </if>
            <if test="createtime != null and createtime != ''">
                CREATETIME = #{createtime},
            </if>
            <if test="revisionseq != null">
                REVISIONSEQ = #{revisionseq},
            </if>
            <if test="revisionvalue != null and revisionvalue != ''">
                REVISIONVALUE = #{revisionvalue},
            </if>
            <if test="versionseq != null">
                VERSIONSEQ = #{versionseq},
            </if>
            <if test="versionvalue != null and versionvalue != ''">
                VERSIONVALUE = #{versionvalue},
            </if>
            <if test="lctid != null and lctid != ''">
                LCTID = #{lctid},
            </if>
            <if test="lcstatus != null and lcstatus != ''">
                LCSTATUS = #{lcstatus},
            </if>
            <if test="ts != null and ts != ''">
                TS = #{ts},
            </if>
            <if test="name != null and name != ''">
                NAME = #{name},
            </if>
            <if test="description != null and description != ''">
                DESCRIPTION = #{description},
            </if>
            <if test="owner != null and owner != ''">
                OWNER = #{owner},
            </if>
            <if test="copyfromversion != null and copyfromversion != ''">
                COPYFROMVERSION = #{copyfromversion},
            </if>
            <if test="ordernum != null">
                ORDERNUM = #{ordernum},
            </if>
            <if test="filterfield != null and filterfield != ''">
                FILTERFIELD = #{filterfield},
            </if>
            <if test="filtertype != null and filtertype != ''">
                FILTERTYPE = #{filtertype},
            </if>
            <if test="filtervalue != null and filtervalue != ''">
                FILTERVALUE = #{filtervalue},
            </if>
        </set>
        where OID = #{oid}
    </update>
    <!--通过主键删除-->
    <delete id="deleteById">
        delete from PL_CODE_SRCHCONDCONFIG where OID = #{oid}
    </delete>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -22,5 +22,19 @@
        ${inSql}
    </select>
    <insert id="insertByBaseModel" parameterType="java.util.Map">
        insert into ${tableName}
        (
        <foreach collection="columnMap" item="value" index="key" separator=",">
            ${key}
        </foreach>
        )
        <foreach collection="mapList" item="columnMap" separator=" union all ">
            select  <foreach collection="columnMap" item="value" index="key" separator=",">
                       #{value}
                    </foreach>
            from dual
        </foreach>
    </insert>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml
@@ -2,7 +2,7 @@
<!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.DockingLogeMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingLog">
    <resultMap id="plDockingLogResultMap" type="com.vci.ubcs.code.entity.DockingLog">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
@@ -127,7 +127,7 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入元数据对象")
    public R submit(@Valid @RequestBody AttributeDTO dto) {
    public R submit(@RequestBody AttributeDTO dto) {
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return R.status(attributeService.submit(dto));
    }
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -53,9 +53,6 @@
    private final String REGEXP = "^[A-Za-z]+$";
    @Resource
    private BtmTypeMapper btmTypeMapper;
    @Override
    public boolean deleteLogic(@NotEmpty List<Long> ids) {
        return false;
@@ -86,17 +83,17 @@
     */
    @Override
    public boolean submit(AttributeDTO dto) {
        if (Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
        if (!Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
            throw new VciBaseException("属性名称{0}只能是英文",new Object[]{dto.getId()});
        }
        LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getId, dto.getId());
        Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(Attribute::getId, dto.getId()));
        Long count = baseMapper.selectCount((Func.isEmpty(dto.getOid())) ? wrapper : wrapper.notIn(Attribute::getOid, dto.getOid()));
        if (count > 0L) {
            throw new ServiceException("属性名已存在!");
        }
        Attribute omdAttribute = BeanUtil.copy(dto, Attribute.class);
        Attribute attribute = AttributeWrapper.build().copyBeforeSave(dto);
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return saveOrUpdate(omdAttribute);
        return saveOrUpdate(attribute);
    }
    /**
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
@@ -1,12 +1,18 @@
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.vci.ubcs.omd.dto.AttributeDTO;
import com.vci.ubcs.omd.entity.Attribute;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.system.cache.DictBizCache;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.StringUtil;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -32,12 +38,13 @@
    @Override
    public AttributeVO entityVO(Attribute entity) {
        AttributeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, AttributeVO.class));
        vo.setTypeValue(DictBizCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
        vo.setTypeValue(EnumCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
        if (StringUtil.isNotBlank(vo.getReferTypeCode())){
            vo.setReferTypeValue(DictBizCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
            vo.setReferTypeValue(EnumCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
        }
        vo.setDictValue(vo.getDictKey());
        vo.setTypeValue(vo.getTypeKey());
        if (StringUtil.isNotBlank(vo.getDictCode())) {
            vo.setDictValue(EnumCache.getValue(vo.getDictCode(),vo.getDictKey()));
        }
        return vo;
    }
@@ -49,4 +56,28 @@
    public List<AttributeVO> listEntityVO(List<Attribute> list) {
        return list.stream().map(this::entityVO).collect(Collectors.toList());
    }
    /**
     * åœ¨ä¿å­˜ä¹‹å‰è¦è®¾ç½®é»˜è®¤å±žæ€§
     * @param dto
     * @return
     */
    public Attribute copyBeforeSave(AttributeDTO dto) {
        Attribute attribute = BeanUtil.copy(dto, Attribute.class);
        Objects.requireNonNull(attribute);
        String currentUser = AuthUtil.getUserAccount();
        Date now = new Date();
        if (StringUtil.isBlank(dto.getOid())) {
            attribute.setBtmName(BtmTypeConstant.ATTRIBUTE);
            attribute.setCreator(currentUser);
            attribute.setCreateTime(now);
            attribute.setOwner(currentUser);
            attribute.setOid(VciBaseUtil.getPk());
        }
        attribute.setLastModifier(currentUser);
        attribute.setLastModifyTime(now);
        attribute.setTs(now);
        return attribute;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/EnumitemWrapper.java
@@ -54,6 +54,7 @@
        }
        return enumItemVO;
    }
    public List<EnumVO> listNodeVO(List<EnumItem> list) {
        List<EnumItem> collect = list.stream().map(omdEnumItem -> BeanUtil.copy(omdEnumItem, EnumItem.class)).collect(Collectors.toList());
        return ForestNodeMerger.merge((List)collect);
Source/UBCS/ubcs-service/ubcs-webservice/pom.xml
@@ -15,31 +15,33 @@
    <modelVersion>4.0.0</modelVersion>
    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
            <version>3.3.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.validation</groupId>
                    <artifactId>validation-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
            </exclusions>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>cn.easyproject</groupId>
            <artifactId>orai18n</artifactId>
            <version>${orai18n.version}</version>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-core-boot</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-annotations</artifactId>
            <version>2.0.9</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <artifactId>ubcs-webservice-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/GroupCodeApplyApplication.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
import org.springblade.core.cloud.client.UbcsCloudApplication;
import org.springblade.core.launch.UbcsApplication;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.context.annotation.ComponentScan;
/**
 * é›†å›¢ç ç”³è¯·æŽ¥å£å¯åЍ噍
 *
 * @author
 * ludc
 */
@UbcsCloudApplication
public class GroupCodeApplyApplication {
    public static void main(String[] args) {
        UbcsApplication.run(AppConstant.APPLICATION_NAME_PREFIX+"applyjtcodeservice", GroupCodeApplyApplication.class, args);
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/controller/DockingPreApplyCodeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,190 @@
package com.vci.ubcs.code.webservice.controller;
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.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.webservice.service.*;
import com.vci.ubcs.code.webservice.vo.*;
import com.vci.ubcs.code.webservice.wrapper.DockingPreApplyFormWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.code.webservice.entity.DockingPreApplyForm;
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.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
/**
 * ç¼–码信息 æŽ§åˆ¶å™¨
 *
 * @author xiejun
 * @since 2023-05-23
 */
@RestController
@AllArgsConstructor
@RequestMapping("/DockingPreApplyCode")
@Api(value = "集团属性映射配置", tags = "集团属性映射配置接口")
public class DockingPreApplyCodeController {
    /**
     * é›†å›¢å±žæ€§æ˜ å°„配置属性
     */
    private final IDockingPreAttrMappingService dockingPreAttrMappingService;
/**
 * é›†å›¢å±žæ€§æ˜ å°„配置属性
 */
    private final IGroupMdmInterService groupMdmInterService;
    /***
     * å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final IDockingPreAttrRangeService dockingPreAttrRangeService;
    /***
     * åˆ†ç±»å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final IDockingPreClassifyService dockingPreClassifyService;
    /***
     * å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final IDockingPreApplyFormService dockingPreApplyFormService;
    /***
     * å±žæ€§æžšä¸¾èŒƒå›´æœåŠ¡
     */
    private final ICodeClassifyClient codeClassifyClient;
    /**
     * æ ¹æ®ä¸»æ•°æ®ç¼–码oid获取集团属性映射信息
     * @param codeClassifyId ä¸»é”®
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     */
    @GetMapping("/gridAttrMapping")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "分类主键获取与集团模型属性映射关系", notes = "传入主数据:codeClassifyId,集团分类:sourceClassifyId")
    public R getDockingAttrMappingsByCodeClassId(String codeClassifyId,String sourceClassifyId){
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingService.getDockingAttrMappingsByCodeClassifyId(codeClassifyId,sourceClassifyId);
        return R.data(dockingPreAttrMappingVOList);
    }
    /**
     * æ ¹æ®é›†å›¢å±žæ€§id获取属性枚举范围
     * @param meatId ä¸»é”®
     * @return
     */
    @GetMapping("/gridAttrRanges")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "根据属性id获取属性枚举范围", notes = "传入")
    public R getDockingPreAttrRangesByMetaId(String meatId){
        List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList=dockingPreAttrRangeService.getDockingPreAttrRangesByMetaId(meatId);
        return R.data(dockingPreAttrRangeVOList);
    }
    /**
     * ç”³è¯·å•查询 è‡ªå®šä¹‰åˆ†é¡µ
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入dockingPreApplyForm")
    public R<IPage<DockingPreApplyFormVO>> page(DockingPreApplyForm dockingPreApplyForm, Query query) {
        IPage<DockingPreApplyForm> pages = dockingPreApplyFormService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingPreApplyForm));
        return R.data(DockingPreApplyFormWrapper.build().pageVO(pages));
    }
    /**
     * ä¿å­˜å±žæ€§æ˜ å°„配置组件
     * @param dockingPreAttrMappingVOList å±žæ€§æ˜ å°„配置数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/batchAddSave")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "保存属性映射配置", notes = "dockingPreAttrMappingVOList")
    public R batchSave(@Valid @RequestBody List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList){
        List<DockingPreAttrMappingVO> dockingPreAttrRangeVOS=new ArrayList<>();
        try {
             dockingPreAttrRangeVOS = dockingPreAttrMappingService.batchAddSave(dockingPreAttrMappingVOList);
        }catch (Exception e){
            return R.fail("集团集成属性映射配置保存失败:"+e.getMessage());
        }
        return R.data(dockingPreAttrRangeVOS);
    }
    /**
     * å‚ç…§æ ‘ é›†å›¢åˆ†ç±»ï¼ˆæ˜¯å¦åŒ…含属性)
     * @param treeQueryObject æ ‘形查询对象 conditionMap å­˜ä¸Š codeclsfid=主数据的分类oid
     * @return é›†å›¢åˆ†ç±»æ˜¾ç¤ºæ ‘
     */
    @GetMapping("/referTree")
    public List<Tree> referTree(@RequestBody TreeQueryObject treeQueryObject)  {
        return dockingPreClassifyService.treeCompanyGroupClassify(treeQueryObject);
    }
    /**
     * å‚ç…§æ ‘ ä¸»æ•°æ®åˆ†ç±»
     * @param treeQueryObject æ ‘形查询对象 conditionMap å­˜ä¸Š codeclsfid=主数据的分类oid
     * @return ä¸»é¢˜åº“分类显示树
     */
    @GetMapping("/referCodeClassifyTree")
    public List<Tree> referCodeClassifyTree(@RequestBody TreeQueryObject treeQueryObject)  {
        return codeClassifyClient.referCodeClassifyTree(treeQueryObject);
    }
    /**
     * å‚ç…§æ ‘ ä¸»æ•°æ®æ¨¡æ¿å±žæ€§ä¿¡æ¯
     * @param codeClassifyId ä¸»æ•°æ®åˆ†ç±»ä¸»é”®
     * @return ä¸»é¢˜åº“分类模板属性
     */
    @GetMapping("/referCodeClassifyTree")
    public List<CodeClassifyTemplateAttrVO>  listCodeAttributeByClassId(String codeClassifyId)  {
        return codeClassifyClient.listCodeAttributeByClassId(codeClassifyId);
    }
    /***
     * ç”³è¯·é›†å›¢ç¼–码
     * @return
     */
    @PostMapping( "/applyGroupCode")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "集团码申请", notes = "dockingPreAttrMappingVOList")
    public R applyGroupCode(String oids,String btmName){
        List<BaseModelVO> BaseModelVOs=new ArrayList<>();
        try {
            return groupMdmInterService.applyGroupCode(oids,btmName);
        }catch (Throwable e){
            return R.fail("集团码申请失败:"+e.getMessage());
        }
    }
    /***
     * åŒæ­¥é›†å›¢æ¨¡åž‹è§†å›¾
     * @return è¿”回执行结果信息
     */
    @PostMapping( "/syncClassifyModel")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "同步集团模型视图", notes = "同步集团模型视图->all:同步集团主模型,one:同步集团模型详细信息")
    public R syncClassifyModel(String classifyId,String operationType){
        try {
            return groupMdmInterService.syncClassifyModel(classifyId,operationType);
        }catch (VciBaseException e){
            return R.fail("同步集团模型视图失败:"+e.getMessage());
        }
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/feigh/MdmInterJtClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,397 @@
package com.vci.ubcs.code.webservice.feigh;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.webservice.entity.*;
import com.vci.ubcs.code.webservice.feign.IMdmInterJtClient;
import com.vci.ubcs.code.webservice.service.*;
import com.vci.ubcs.code.webservice.vo.*;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.*;
import java.util.stream.Collectors;
/***
 * æä¾›ä¸Žé›†å›¢ç”³è¯·feigh
 */
@NonDS
@ApiIgnore
@RestController
@AllArgsConstructor
@Slf4j
public class MdmInterJtClient implements IMdmInterJtClient {
    /**
     * é›†å›¢ç”³è¯·å•服务
     */
    private final IDockingPreApplyFormService dockingPreApplyFormService;
    /**
     * é›†å›¢åˆ†ç±»æ¨¡åž‹è§†å›¾æœåŠ¡
     */
    private final IDockingPreViewModelService dockingPreViewModelService;
    /**
     * é›†å›¢åˆ†ç±»å±žæ€§æœåŠ¡
     */
    private final IDockingPreMetaAttrService dockingPreMetaAttrService;
    /**
     * é›†å›¢ç”³è¯·å•服务
     */
    private final IDockingPreClassifyService dockingPreClassifyService;
    /**
     * é›†å›¢ç”³è¯·å•服务
     */
    private final IDockingPreAttrRangeService dockingPreAttrRangeService;
    /*
     * ä¸»æ•°æ®ä¸šåŠ¡æœåŠ¡
     */
    /**
     * èŽ·å–é›†å›¢é›†å›¢ç ï¼Œèµ‹å€¼åˆ°ä¸»æ•°æ®
     * @param dockingReturnStoreVO
     * @return è¿”回集成结果信息
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R getApplyGroupCode(DockingReturnStoreVO dockingReturnStoreVO) {
        log.info("获取集团集团码,赋值到主数据 start");
        try {
            List<BaseModel> editObjectList = new ArrayList();
            List<DockingPreApplyForm> dockingPreApplyFormList = new ArrayList();
            //String classId = javaObject.getClassId();
            //String sysName = javaObject.getSysName();
            List<MainData> mainDataList = dockingReturnStoreVO.getMainData();
            for (MainData mainData : mainDataList) {
                JSONObject jcontent = new JSONObject();
                //编码状态
                String formState = mainData.getFormState();
                //申请单
                String applyId = mainData.getApplyId();
                String customCoding = StringUtils.isBlank(mainData.getCustomCoding()) ? "" : mainData.getCustomCoding();//集团码
                String msg = "";
                log.info("申请单:"+applyId+",集团码:"+customCoding);
                boolean res = false;
                if ("1".equals(formState)) {
                    msg = "集团审核中";
                } else if ("2".equals(formState)) {
                    msg = "驳回";
                } else if ("3".equals(formState)) {
                    msg = "集团审核中";
                } else if ("4".equals(formState)) {
                    msg = "审核结束,赋码失败";
                } else if ("5".equals(formState)) {
                    res = true;
                    msg = "审核结束,赋码成功";
                } else if ("6".equals(formState)) {
                    msg = "待301赋码";
                } else if ("7".equals(formState)) {
                    res = true;
                    msg = "已赋码";
                } else if ("8".equals(formState)) {
                    res = true;
                    msg = "已赋码(沿用)";
                } else if ("9".equals(formState)) {
                    msg = "审核中";
                }
                jcontent.put("applyId", applyId);
                jcontent.put("formState", formState);
                jcontent.put("customCoding", customCoding);
                jcontent.put("msg", msg);
                List<DockingPreApplyForm> oldDockingPreApplyFormList = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda()
                    .eq(DockingPreApplyForm::getId, applyId));
                if (CollectionUtils.isEmpty(oldDockingPreApplyFormList)) {
                    continue; //// return false;
                }
                DockingPreApplyForm dockingPreApplyForm = oldDockingPreApplyFormList.get(0);
                dockingPreApplyForm.setMsg(msg);
                dockingPreApplyForm.setCode("1");
                if (res) {
                    dockingPreApplyForm.setGroupCode(customCoding);
                }
                //返回结果信息
                dockingPreApplyForm.setContent(jcontent.toJSONString());
                dockingPreApplyFormList.add(dockingPreApplyForm);
                if (res) {
                    String jdataid = dockingPreApplyForm.getDataOid();
                    String jdatabtmname = dockingPreApplyForm.getDataBtmName();
                    //此处需要查询业务数据,去更改
                    BaseModel baseModel = new BaseModel();
                    baseModel.setId(customCoding);
                    log.info("申请单:"+applyId+",集团码:"+customCoding+"编码:"+baseModel.getId());
                    editObjectList.add(baseModel);
                }
            }
            dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
            //调用主数据服务批量保存接口
        }catch (Throwable e){
            e.printStackTrace();
            return R.fail("集团码集成赋值失败"+e);
        }
        log.info("获取集团集团码,赋值到主数据 end");
        return R.success("集团码赋值成功");
    }
    /***
     * æŽ¥å—集团分类主模型数据
     * @param dockingClassifyModelAttrVO
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R pubMdmModel(DockingClassifyModelAttrVO dockingClassifyModelAttrVO) {
        log.info("");
        try {
            this.saveDatas(dockingClassifyModelAttrVO);
        }catch (Throwable e){
            e.printStackTrace();
            return R.fail("接受集团分类主模型数据失败"+e);
        }
        log.info("接受集团分类主模型数据 end");
        return R.success("接受集团分类主模型数据成功");
    }
    /***
     * ç»„织 ä¿å­˜æ•°æ®æ–¹æ³•
     * @param dockingClassifyModelAttrVO
     * @throws Throwable
     */
    private boolean saveDatas(DockingClassifyModelAttrVO dockingClassifyModelAttrVO) throws Throwable {
        List<DockingPreClassify> dockingPreClassifyArrayList=new ArrayList<>();
        try {
            DockingClassifyMainVO mainData = dockingClassifyModelAttrVO.getDataStructure();
            List<DockingClassifyVO> classList = mainData.getClassList();
            Map<String, List<DockingClassifyViewVO>> classInfoMap = mainData.getClassInfos();
            for (DockingClassifyVO jclassObject : classList) {
                String id =StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
                String className = StringUtils.isBlank(jclassObject.getClassName())?"":jclassObject.getClassName();
                String pid = StringUtils.isBlank(jclassObject.getPid())?"":jclassObject.getPid();
                String nodeLink = StringUtils.isBlank(jclassObject.getNodeLink())?"":jclassObject.getNodeLink();
                String nodeLinkName = StringUtils.isBlank(jclassObject.getNodeLinkName())?"":jclassObject.getNodeLinkName();
                String classNumber = StringUtils.isBlank(jclassObject.getClassNumber())?"":jclassObject.getClassNumber();
                //ClientBusinessObject classObject = objectOperation.readBusinessObjectById(id, "jclass");// èŽ·å–åˆ†ç±»ä¿¡æ¯
                 DockingPreClassify dockingPreClassify=dockingPreClassifyService.getById(id);
                log.info("classify:-------------->集团分类主机:"+id);
                log.info("classify:-------------->集团分类名称:"+className);
                log.info("classify:--------------> é›†å›¢åˆ†ç±»çˆ¶èŠ‚ç‚¹:"+pid);
                log.info("classify:-------------->链接:"+nodeLink);
                log.info("classify:-------------->链接名称:"+nodeLinkName);
                if (dockingPreClassify == null|| StringUtils.isBlank(dockingPreClassify.getOid())) {
                    dockingPreClassify = new DockingPreClassify();
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreClassify, MdmBtmTypeConstant.DOCKING_PRE_JCLASSIFY);
                } else {
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreClassify);
                }
                dockingPreClassify.setOid(id);
                dockingPreClassify.setName(className);
                dockingPreClassify.setPid(pid);
                dockingPreClassify.setId(classNumber);
                dockingPreClassify.setNodeLink(nodeLink);
                dockingPreClassify.setGetNodeLinkName(nodeLinkName);
                dockingPreClassify.setClassName(className);
                dockingPreClassifyArrayList.add(dockingPreClassify);
                // èŽ·å–å¯¹åº”çš„åˆ†ç±»è§†å›¾æ¨¡åž‹
                if (classInfoMap.containsKey(id)) {
                    List<DockingClassifyViewVO> list = classInfoMap.get(id);
                    getVilewMode(jclassObject, list);
                }
            }
            boolean res= dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyArrayList);
            return res;
        } catch (Throwable e) {
            e.printStackTrace();
            throw new Throwable("存储视图模型出现问题");
        }
    }
    /***
     * èŽ·å–åˆ†ç±»è§†å›¾
     *
     * @param jclassObject
     * @throws Throwable
     */
    private void getVilewMode(DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list)
        throws Throwable {
        String nodeLinkName = jclassObject.getNodeLinkName();
        try {
            String jclassId =StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
            Map<String, DockingPreViewModel> jviewmodelMap = new HashMap<String, DockingPreViewModel>();
            //Map<String, String> condtionMa = new HashMap<String, String>();
        //    condtionMa.put("jsourceclsfid", jclassId);
            List<DockingPreViewModel> dockingPreViewModelList= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,false));// æ ¹æ®åˆ†ç±»æŸ¥è¯¢æ¨¡åž‹è§†å›¾å¯¹è±¡
            for (DockingPreViewModel dockingPreViewModel : dockingPreViewModelList) {
                jviewmodelMap.put(dockingPreViewModel.getViewName(),dockingPreViewModel);
            }
            for (DockingClassifyViewVO viewInfo : list) {
                String viewName =StringUtils.isBlank(viewInfo.getViewName())?"":viewInfo.getViewName();
                String impactList = StringUtils.isBlank(viewInfo.getImpactList())?"":viewInfo.getImpactList();
                log.info("VilewMode:-------------->视图名称:"+viewName);
                log.info("VilewMode:-------------->影响编码项:"+impactList);
                log.info("VilewMode:--------------> é›†å›¢åˆ†ç±»ä¸»é”®:"+jclassId);
                List<DockingClassifyMetaAttrVO> metaList = viewInfo.getMetaList();
                DockingPreViewModel jviewModelObject = null;
                if (jviewmodelMap.containsKey(viewName)) {
                    jviewModelObject = jviewmodelMap.get(viewName);
                    //影响编码项的数据
                    jviewModelObject.setImpactList(impactList);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(jviewModelObject);
                } else {
                    jviewModelObject =new DockingPreViewModel();
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(jviewModelObject,MdmBtmTypeConstant.DOCKING_PRE_JVIEWMODEL);
                    jviewModelObject.setSourceClassifyId(jclassId);// é›†å›¢åˆ†ç±»id
                    jviewModelObject.setViewName(viewName);// é›†å›¢è§†å›¾åç§°
                    //影响编码项的数据
                    jviewModelObject.setImpactList(impactList);
                    dockingPreViewModelList.add(jviewModelObject);
                }
                // èŽ·å–æ¨¡åž‹è§†å›¾ä¸‹çš„å±žæ€§é›†
                // String oid = jviewModelObject.getOid();
                List<DockingPreMetaAttr>allDockingPreMetaAttrList=new ArrayList<>();
                getMetaAttrObject(metaList, jclassId, jviewModelObject, "root",allDockingPreMetaAttrList);
                //保存模型视图属性
                dockingPreMetaAttrService.saveOrUpdateBatch(allDockingPreMetaAttrList);
                //保存模型视图
                dockingPreViewModelService.saveOrUpdateBatch(dockingPreViewModelList);
            }
        } catch (Throwable e) {
            e.printStackTrace();
            throw new Throwable("组织分类" + nodeLinkName + "模型视图存储出现问题");
        }
    }
    /***
     * èŽ·å–æ¨¡åž‹è§†å›¾å±žæ€§
     * @throws Throwable
     */
    private void getMetaAttrObject(List<DockingClassifyMetaAttrVO> metaList,
                                   String jclassId, DockingPreViewModel jviewModelObject, String pid,List<DockingPreMetaAttr>allDockingPreMetaAttrList)throws Throwable {
        try {
            //// æ ¹æ®åˆ†ç±»æŸ¥è¯¢æ¨¡åž‹è§†å›¾å¯¹è±¡
            List<DockingPreMetaAttr> dockingPreMetaAttrList = dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda()
                .eq(DockingPreMetaAttr::getSourceClassifyId,jclassId).eq(DockingPreMetaAttr::getViewModelId,jviewModelObject.getOid())
                .eq(DockingPreMetaAttr:: getPid,pid));
                Map<String,DockingPreMetaAttr> jmetaattrMap = dockingPreMetaAttrList.stream().filter(
                s -> StringUtils.isNotBlank(s.getEnglishName())).collect(Collectors.toMap(s -> s.getEnglishName().toLowerCase(Locale.ROOT), t -> t));
            for (DockingClassifyMetaAttrVO dockingClassifyMetaAttrVO : metaList) {
                String chineseName =StringUtils.isBlank(dockingClassifyMetaAttrVO.getChineseName())?"":dockingClassifyMetaAttrVO.getChineseName();// å±žæ€§åç§°
                String englishName = StringUtils.isBlank(dockingClassifyMetaAttrVO.getEnglishName())?"":dockingClassifyMetaAttrVO.getEnglishName();// è‹±æ–‡åç§°
                String defaultValue = StringUtils.isBlank(dockingClassifyMetaAttrVO.getDefaultValue())?"":dockingClassifyMetaAttrVO.getDefaultValue();
                Integer metadataType =dockingClassifyMetaAttrVO.getMetadataType();// ç±»åž‹
                Integer necessaryConf = dockingClassifyMetaAttrVO.getNecessaryConf();// æ˜¯å¦å¿…å¡«
                Map<String, String> range = dockingClassifyMetaAttrVO.getRange()==null?new HashMap<String, String>():dockingClassifyMetaAttrVO.getRange();// å–值范围
                log.info("metaAttr:-------------->属性名称:"+chineseName);
                log.info("metaAttr:-------------->英文名称:"+englishName);
                log.info("metaAttr:-------------->默认值:"+defaultValue);
                log.info("metaAttr:--------------> ç±»åž‹:"+metadataType);
                log.info("metaAttr:-------------->  æ˜¯å¦å¿…å¡«:"+necessaryConf);
                DockingPreMetaAttr dockingPreMetaAttr = new DockingPreMetaAttr();
                if (jmetaattrMap.containsKey(englishName)) {
                    dockingPreMetaAttr = jmetaattrMap.get(englishName);
                    dockingPreMetaAttr.setChineseName(chineseName);
                    dockingPreMetaAttr.setDefaultValue(defaultValue);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreMetaAttr);
                } else {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreMetaAttr,MdmBtmTypeConstant.DOCKING_PRE_JMETAATRR);
                    dockingPreMetaAttr.setSourceClassifyId(jclassId);// é›†å›¢åˆ†ç±»id
                    dockingPreMetaAttr.setViewModelId(jviewModelObject.getOid());// é›†å›¢è§†å›¾æ¨¡åž‹id
                    dockingPreMetaAttr.setChineseName(chineseName);// å±žæ€§åç§°
                    dockingPreMetaAttr.setEnglishName(englishName);// å±žæ€§å­—段
                    dockingPreMetaAttr.setDefaultValue(defaultValue);// å±žæ€§åç§°
                    dockingPreMetaAttr.setMetaDataType(metadataType);// å±žæ€§ç±»åž‹
                    dockingPreMetaAttr.setNecesSaryConf(necessaryConf);// å±žæ€§å¿…填项
                    dockingPreMetaAttr.setPid(pid);// çˆ¶èŠ‚ç‚¹id
                }
                if(range!=null&&range.size()>0){
                    // èŽ·å–å±žæ€§å€¼åŸŸ
                    getRange(dockingPreMetaAttr, range);
                }
                /***
                 * èŽ·å–å­èŠ‚ç‚¹
                 */
                DockingClassifyMetaAttrVO compositeMeta = dockingClassifyMetaAttrVO.getCompositeMeta();
                if (compositeMeta != null) {
                    pid = StringUtils.isBlank(dockingPreMetaAttr.getOid())?"":dockingPreMetaAttr.getOid();// å½“前oid
                    List<DockingClassifyMetaAttrVO> childMetaList = new ArrayList<>();
                    childMetaList.add(compositeMeta);
                    getMetaAttrObject(childMetaList, jclassId,jviewModelObject, pid,allDockingPreMetaAttrList);
                }
            }
        } catch (Throwable e) {
            e.printStackTrace();
            log.error("组织模型视图"+ jviewModelObject.getViewName()
                + "属性存储出现问题" + e);
            throw new Throwable("组织模型视图"+ jviewModelObject.getViewName()
                + "属性存储出现问题" + e);
        }
    }
    /**
     * @throws Throwable
     *             * èŽ·å–å€¼åŸŸ
     * @param metaAttrObject
     * @param range
     * @throws
     */
    private void getRange(DockingPreMetaAttr metaAttrObject,Map<String, String> range) throws Throwable {
        String metaAttrOid =StringUtils.isBlank(metaAttrObject.getOid())?"":metaAttrObject.getOid();// å±žæ€§çš„oid
        String jchinesename = StringUtils.isBlank(metaAttrObject.getChineseName())?"":metaAttrObject.getChineseName();
        Map<String, DockingPreAttrRange> rangeMap = new HashMap<>();
        try {
            Map<String, String> condtionMa = new HashMap<String, String>();
            condtionMa.put("jmetalistid", metaAttrOid);
            List<DockingPreAttrRange> jmetaattrList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda()
                .eq(DockingPreAttrRange::getMetaListId,metaAttrOid));// æ ¹æ®åˆ†ç±»æŸ¥è¯¢æ¨¡åž‹è§†å›¾å¯¹è±¡
            rangeMap= jmetaattrList.stream().collect(Collectors.toMap(s -> StringUtils.isNotBlank(s.getNumText().toLowerCase(Locale.ROOT))?"":s.getNumText().toLowerCase(Locale.ROOT), t -> t));
            for (String rangeKey : range.keySet()) {
                DockingPreAttrRange rangeObject = new DockingPreAttrRange();
                String keyValue = StringUtils.isBlank(range.get(rangeKey))?"":range.get(rangeKey);
                log.info("range:-------------->显示值"+rangeKey+",内部值"+keyValue);
                if (rangeMap.containsKey(rangeKey)) {
                    rangeObject = rangeMap.get(rangeKey);
                    rangeObject.setNumTextValue(keyValue);
                    rangeObject.setNumText(rangeKey);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(rangeObject);
                } else {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(rangeObject,MdmBtmTypeConstant.DOCKING_PRE_JRANGE);
                    rangeObject.setNumTextValue(keyValue);
                    rangeObject.setNumText(rangeKey);
                    rangeObject.setTs(rangeObject.getLastModifyTime());
                    rangeObject.setMetaListId(metaAttrOid);
                    log.info("range:-------------->属性内部值:"+metaAttrOid);
                    log.info("range:-------------->时间:"+rangeObject.getLastModifyTime());
                    jmetaattrList.add(rangeObject);
                }
            }
            dockingPreAttrRangeService.saveOrUpdateBatch(jmetaattrList);
        } catch (Throwable e) {
            e.printStackTrace();
            log.info("组织属性:【" + jchinesename + "】值域出现问题"+ e);
            throw new Throwable("组织属性:【" + jchinesename + "】值域出现问题"+ e);
        }
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreApplyFormMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.webservice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreApplyForm;
public interface DockingPreApplyFormMapper extends BaseMapper<DockingPreApplyForm> {
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreAttrMappingMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.webservice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping;
public interface DockingPreAttrMappingMapper extends BaseMapper<DockingPreAttrMapping> {
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreAttrRangeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.webservice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange;
public interface DockingPreAttrRangeMapper  extends BaseMapper<DockingPreAttrRange> {
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreClassifyMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.vci.ubcs.code.webservice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreClassify;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface DockingPreClassifyMapper extends BaseMapper<DockingPreClassify> {
    /**
     * æŸ¥æ‰¾æ ‘形结构
     *
     * @param oid åˆ†ç±»çš„主键
     * @return æ•°æ®é›†åˆ
     */
    List<DockingPreClassify> selectCompanyGroupClassifyVOByTree(@Param("oid") String oid);
    /**
     * æ ¡éªŒæ˜¯å¦åŒ…含子节点
     *
     * @param oid åˆ†ç±»çš„主键
     * @return true è¡¨ç¤ºåŒ…含
     */
    Boolean checkHasChild(@Param("oid") String oid);
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreMetaAttrMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.webservice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
public interface DockingPreMetaAttrMapper  extends BaseMapper<DockingPreMetaAttr> {
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/mapper/DockingPreViewModelMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.webservice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreViewModel;
public interface DockingPreViewModelMapper extends BaseMapper<DockingPreViewModel> {
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreApplyFormService.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreApplyFormService.java ÐÞ¸Ä
@@ -1,7 +1,7 @@
package com.vci.ubcs.code.service;
package com.vci.ubcs.code.webservice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingPreApplyForm;
import com.vci.ubcs.code.webservice.entity.DockingPreApplyForm;
/***
 * é›†å›¢ç”³è¯·å•服务
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreAttrMappingService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.vci.ubcs.code.webservice.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.webservice.vo.DokingAttributeSerchVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.util.List;
/**
 * é›†å›¢é›†æˆé…ç½®æœåŠ¡
 * @author xiej
 * @date 2023-05-17
 */
public interface IDockingPreAttrMappingService extends IService<DockingPreAttrMapping> {
    /***
     * æ ¹æ®ä¸»æ•°æ®åˆ†ç±»ä¸»é”®èŽ·å–åˆ†ç±»ä¿¡æ¯é…ç½®
     * @param codeClassifyId
     * @return
     */
    List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId, String sourceClassifyId);
    /**
     * ä½¿ç”¨æŸ¥è¯¢å°è£…器来查询
     * @param wrapper æŸ¥è¯¢å°è£…器
     * @return æ•°æ®å¯¹è±¡
     */
    List<DockingPreAttrMapping> selectByWrapper(Wrapper wrapper);
    /**
     * ä¿å­˜å±žæ€§æ˜ å°„配置组件
     * @param dockingPreAttrMappingDTOS å±žæ€§æ˜ å°„配置数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    public  List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingVO> dockingPreAttrMappingDTOS)throws Exception;
    /***
     *校验属性映射是否配置过
     * @param targetClassifyId
     *  @param sourceClassifyId
     * @return
     */
    boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId,String sourceClassifyId);
    /***
     * å±žæ€§æŸ¥è¯¢
     * @return
     */
    public R search(DokingAttributeSerchVO dokingAttributeSerchVO);
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreAttrRangeService.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrRangeService.java ÐÞ¸Ä
@@ -1,9 +1,9 @@
package com.vci.ubcs.code.service;
package com.vci.ubcs.code.webservice.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO;
import java.util.List;
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreClassifyService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.vci.ubcs.code.webservice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.code.webservice.entity.DockingPreClassify;
import java.util.List;
/***
 * é›†å›¢åˆ†ç±»æœåŠ¡
 * @author xiejun
 * @date 2022-05-23
 */
public interface IDockingPreClassifyService extends IService<DockingPreClassify> {
    /**
     * æŸ¥è¯¢ä¸»é¢˜åº“分类 æ ‘
     * @param treeQueryObject æ ‘查询对象
     * @return ä¸»é¢˜åº“分类 æ˜¾ç¤ºæ ‘
     */
    List<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject);
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreMetaAttrService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.vci.ubcs.code.webservice.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.webservice.vo.DockingPreMetaAttrVO;
import java.util.List;
/***
 * é›†å›¢å±žæ€§æœåŠ¡
 * @author xiejun
 * @date 2023-05-23
 */
public interface IDockingPreMetaAttrService extends IService<DockingPreMetaAttr> {
    /***
     * æž„造器查询方式
     * @param wrapper æŸ¥è¯¢å°è£…器
     * @return
     */
    public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper);
    /***
     * æ ¹æ®viewModel查询模型视图属性
     */
    List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId);
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IDockingPreViewModelService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.vci.ubcs.code.webservice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.webservice.entity.DockingPreViewModel;
import com.vci.ubcs.code.webservice.vo.DockingPreViewModelVO;
import java.util.List;
/***
 * é›†å›¢åˆ†ç±»æ¨¡åž‹æœåŠ¡
 * @author xiejun
 * @date 2023-05-23
 */
public interface IDockingPreViewModelService extends IService<DockingPreViewModel> {
    /**
     * æ ¹æ®åˆ†ç±»id查询分类视图
     * @param classifyId é›†å›¢åˆ†ç±»id
     * @param isContainAttr æ˜¯å¦æŸ¥è¯¢å±žæ€§ï¼Œtrue: æ˜¯ï¼Œfalse,否
     * @return è¿”回分类模型视图集合对象
     */
    List<DockingPreViewModelVO> selectDockingPreViewModelByClassId(String classifyId, boolean isContainAttr);
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/IGroupMdmInterService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.vci.ubcs.code.webservice.service;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
/***
 * ä¸Žé›†å›¢é›†æˆæœåŠ¡
 * @author xiejun
 */
public interface IGroupMdmInterService {
    /***
     * ä¸»æ•°æ®åƒé›†å›¢ç”³è¯·ç¼–码
     * @param oids
     * @param btmName
     * @return è¿”回结果信息
     * @throws Throwable
     */
    public R applyGroupCode(String oids, String btmName)throws Throwable;
    /***
     * ä¸»æ•°æ®åƒé›†å›¢æ›´æ”¹ç¼–码
     * @param oids éœ€è¦ä¿®æ”¹çš„æ•°æ®ä¸»é”®æ•°ç»„
     * @param btmName ä¸šåŠ¡ç±»åž‹
     * @return è¿”回结果信息
     * @throws Throwable
     */
    public R receiveEditApply(String oids, String btmName)throws Throwable;
    /***
     * æŸ¥è¯¢åˆ†ç±»è¯¦ç»†æ¨¡åž‹è§†å›¾
     * @param jtclsfId:集团分类oid
     * @return è¿”回结果信息
     * @throws Throwable
     */
    public R queryClassModel(String jtclsfId)throws Throwable;
    /***
     * æŸ¥è¯¢åˆ†ç±»è¯¦ç»†æ¨¡åž‹è§†å›¾
     * @return è¿”回结果信息
     * @throws Throwable
     */
    public R queryMdmModel()throws Throwable;
    /***
     *同步集团模型视图
     * @param classifyId
     * @param operationType
     * @return
     */
    R syncClassifyModel(String classifyId, String operationType)throws VciBaseException;
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreApplyFormServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.vci.ubcs.code.webservice.service.impl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.webservice.mapper.DockingPreApplyFormMapper;
import com.vci.ubcs.code.webservice.entity.DockingPreApplyForm;
import com.vci.ubcs.code.webservice.service.IDockingPreApplyFormService;
import org.springframework.stereotype.Service;
/***
 *集团属性映射服务
 * @author xiejun
 * @date 2023-05-22
 */
@Service
public class DockingPreApplyFormServiceImpl extends ServiceImpl<DockingPreApplyFormMapper, DockingPreApplyForm> implements IDockingPreApplyFormService {
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrMappingServiceImpl.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java ÐÞ¸Ä
@@ -1,21 +1,28 @@
package com.vci.ubcs.code.service.impl;
package com.vci.ubcs.code.webservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper;
import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.wrapper.DockingPreAttrMappingWrapper;
import com.vci.ubcs.code.wrapper.DockingPreAttrRangeWrapper;
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.vo.DokingAttributeSerchVO;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrMappingWrapper;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrRangeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -32,31 +39,46 @@
 */
@Service
public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService {
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§å±žæ€§æ˜ å°„配置服务
     */
    @Autowired(required = false)
    DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
    private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
    /***
     * ä¸šåŠ¡æ•°æ®å±žæ€§æœåŠ¡
     */
    //@Autowired(required = false)
    //private  MdmEngineService mdmEngineService;
    /***
     * é›†å›¢å±žæ€§æœåŠ¡
     */
    @Autowired(required = false)
    IDockingPreMetaAttrService dockingPreMetaAttrService;
    private IDockingPreMetaAttrService dockingPreMetaAttrService;
    /***
     * å±žæ€§å–值范围服务
     */
    @Autowired(required = false)
    IDockingPreAttrRangeService dockingPreAttrRangeService;
    private IDockingPreAttrRangeService dockingPreAttrRangeService;
    /***
     * æ ¹æ®ä¸»æ•°æ®åˆ†ç±»ä¸»é”®èŽ·å–åˆ†ç±»ä¿¡æ¯é…ç½®
     * @param codeClassifyId
     * @return
     */
    @Override
    public List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId) {
    public List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId) {
        VciBaseUtil.alertNotNull(codeClassifyId,"主数据分类主键");
        VciBaseUtil.alertNotNull(sourceClassifyId,"集团分类主键");
        //首先获取分类模板属性,然后与属性配置坐比较,以防被有增删属性的可能
        List<DockingPreMetaAttr> dockingPreMetaAttrList=    dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,codeClassifyId));
        List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, codeClassifyId));
        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<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>();
@@ -66,6 +88,7 @@
            if(dockingPreAttrMappingMap.containsKey(attrOid)){
                dockingPreAttrMapping=    dockingPreAttrMappingMap.get(attrOid);
            }else{
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
                dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//属性主键
                dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//英文名称
                dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//中文名称
@@ -122,9 +145,9 @@
            }
        });
        //将属性取值范围转成数据持久层对象
        newDockingPreAttrRangeList=DockingPreAttrRangeWrapper.build().voentitys(newDockingPreAttrRangeVOList);
        newDockingPreAttrRangeList= DockingPreAttrRangeWrapper.build().voentitys(newDockingPreAttrRangeVOList);
        //将属性映射配置信息转换为需要数据持久层保存的对象
        newDockingPreAttrMapping=DockingPreAttrMappingWrapper.build().voentitys(dockingPreAttrMappingVOList);
        newDockingPreAttrMapping= DockingPreAttrMappingWrapper.build().voentitys(dockingPreAttrMappingVOList);
        List<DockingPreAttrRange> oldDockingPreAttrRangeList=new ArrayList<>();
        if(!org.springframework.util.CollectionUtils.isEmpty(attrIdList)) {
@@ -167,6 +190,31 @@
    }
    /***
     * æ ¹æ®ä¸»æ•°æ®oid检测是否属性映射配置
     * @param targetClassifyId
     * @param sourceClassifyId
     * @return
     * @throws Exception
     */
    @Override
    public boolean checkHasConfigByTragetCodeclassifyId(String targetClassifyId,String sourceClassifyId){
        Long count =0L;
        try {
            count = dockingPreAttrMappingMapper.selectCount(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, targetClassifyId).eq(DockingPreAttrMapping::getSourceClassifyId,sourceClassifyId));
        }catch (Throwable e){
            e.printStackTrace();;
        } finally {
            return  count>0?true:false;
        }
    }
    @Override
    public R search(DokingAttributeSerchVO dokingAttributeSerchVO) {
        return null;
    }
    /***
     * å¯¹è±¡è½¬æ¢
     * @param dockingPreAttrMappings
     * @return
@@ -184,4 +232,5 @@
            }
            return dockingPreAttrMappingVOList;
        }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreAttrRangeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.vci.ubcs.code.webservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.webservice.mapper.DockingPreAttrRangeMapper;
import com.vci.ubcs.code.webservice.service.IDockingPreAttrRangeService;
import com.vci.ubcs.code.webservice.wrapper.DockingPreAttrRangeWrapper;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/***
 *集团属性取值范围服务
 * @author xiejun
 * @date 2023-05-22
 */
@Service
@Slf4j
public class DockingPreAttrRangeServiceImpl extends ServiceImpl<DockingPreAttrRangeMapper, DockingPreAttrRange> implements IDockingPreAttrRangeService {
    @Autowired(required = false)
    DockingPreAttrRangeMapper dockingPreAttrRangeMapper;
    /***
     * æ ¹æ®é›†å›¢å±žæ€§ä¸»é”®æŸ¥è¯¢å…¶å–值范围
     * @param meatId
     * @return
     */
    @Override
    public List<DockingPreAttrRangeVO> getDockingPreAttrRangesByMetaId(String meatId) {
        log.info("查询集团属性->"+meatId+"取值范围start");
        VciBaseUtil.alertNotNull(meatId,"属性主键");
        List<DockingPreAttrRange> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().eq(DockingPreAttrRange::getMetaListId, meatId));
        log.info("查询集团属性->"+meatId+"取值范围end");
        return DockingPreAttrRangeWrapper.build().entityVOs(dockingPreAttrMappings);
    }
    /****
     * æž„造器查询方式
     * @param wrapper æŸ¥è¯¢å°è£…器
     * @return
     */
    @Override
    public List<DockingPreAttrRange> selectByWrapper(Wrapper wrapper) {
        return dockingPreAttrRangeMapper.selectList(wrapper);
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreClassifyServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
package com.vci.ubcs.code.webservice.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.webservice.mapper.DockingPreClassifyMapper;
import com.vci.ubcs.code.webservice.service.IDockingPreApplyFormService;
import com.vci.ubcs.code.webservice.service.IDockingPreAttrMappingService;
import com.vci.ubcs.code.webservice.service.IDockingPreClassifyService;
import com.vci.ubcs.code.webservice.service.IDockingPreViewModelService;
import com.vci.ubcs.code.webservice.wrapper.DockingPreClassifyWrapper;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.code.webservice.entity.DockingPreClassify;
import com.vci.ubcs.code.webservice.vo.DockingPreClassifyVO;
import com.vci.ubcs.code.webservice.vo.DockingPreViewModelVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
 * é›†å›¢åˆ†ç±»ä¸šåŠ¡æœåŠ¡
 * @author xiejun
 * @date 2023-05-23
 */
@Service
@Slf4j
public class DockingPreClassifyServiceImpl extends ServiceImpl<DockingPreClassifyMapper, DockingPreClassify> implements IDockingPreClassifyService {
    /**
     * ä¸Šçº§èŠ‚ç‚¹çš„å±žæ€§åç§°
     */
    public static  final String PARENT_FIELD_NAME = "pid";
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
    @Resource
    private DockingPreClassifyMapper dockingPreClassifyMapper;
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
    @Resource
    private IDockingPreViewModelService dockingPreViewModelService;
    /***
     *集团集成配置服务
     */
    @Resource
    private IDockingPreAttrMappingService dockingPreAttrMappingService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Resource
    private RevisionModelUtil revisionModelUtil;
    /***
     * é›†å›¢åˆ†ç±»æ ‘对象查
     *@param treeQueryObject é›†å›¢åˆ†ç±»æŸ¥è¯¢å¯¹è±¡
     *@return è¿”回分类树对象
     */
    @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<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();
            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);
                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);
            }
        }
    }
    /***
     * æ ¹æ®çˆ¶åˆ†ç±»id查询层级树数据对象集合
     * @param pid é›†å›¢åˆ†ç±»çš„oid
     * @return è¿”回层级树数据对象集合
     */
    private List<DockingPreClassifyVO> getCompanyGourpClassByParentId(String pid,boolean isContainView){
        log.info("根据父分类pid->"+pid+"查询层级树数据对象集合start...");
        List<DockingPreClassify> doList =dockingPreClassifyMapper.selectCompanyGroupClassifyVOByTree(pid);
        List<DockingPreClassifyVO>dockingPreClassifyVOS= DockingPreClassifyWrapper.build().entityVOs(doList);
        if(isContainView){
            dockingPreClassifyVOS.stream().forEach(dockingPreClassifyVO -> {
            List<DockingPreViewModelVO> dockingViewVOS=    dockingPreViewModelService.selectDockingPreViewModelByClassId(dockingPreClassifyVO.getOid(),isContainView);
                dockingPreClassifyVO.setDockingPreViewModelVOList(dockingViewVOS);
            });
        }
        log.info("根据父分类pid->"+pid+"查询层级树数据对象集合end...");
        return dockingPreClassifyVOS;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreMetaAttrServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.vci.ubcs.code.webservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.webservice.mapper.DockingPreMetaAttrMapper;
import com.vci.ubcs.code.webservice.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.webservice.wrapper.DockingPreMetaAttrWrapper;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.webservice.vo.DockingPreMetaAttrVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/***
 * é›†å›¢å±žæ€§æœåŠ¡
 * @author xiejun
 * @date 2023-05-23
 */
@Service
@Slf4j
public class DockingPreMetaAttrServiceImpl extends ServiceImpl<DockingPreMetaAttrMapper, DockingPreMetaAttr> implements IDockingPreMetaAttrService {
    @Autowired(required = false)
    DockingPreMetaAttrMapper dockingPreMetaAttrMapper;
    @Override
    public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper) {
        return dockingPreMetaAttrMapper.selectList(wrapper);
    }
    /***
     * æ ¹æ®æ¨¡åž‹è§†å›¾oid查询数据
     * @param viewModelId
     * @return è¿”回属性对象
     */
    @Override
    public List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId) {
        log.info("根据模型视图oid"+viewModelId+"查询数据 star");
        List<DockingPreMetaAttr> dockingPreMetaAttrList= selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,viewModelId));
        List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList= DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList);
        log.info("根据模型视图oid"+viewModelId+"查询数据 end");
        return dockingPreMetaAttrVOList;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/DockingPreViewModelServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.vci.ubcs.code.webservice.service.impl;
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.webservice.mapper.DockingPreViewModelMapper;
import com.vci.ubcs.code.webservice.service.IDockingPreMetaAttrService;
import com.vci.ubcs.code.webservice.service.IDockingPreViewModelService;
import com.vci.ubcs.code.webservice.wrapper.DockingPreMetaAttrWrapper;
import com.vci.ubcs.code.webservice.wrapper.DockingPreViewWrapper;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.webservice.entity.DockingPreViewModel;
import com.vci.ubcs.code.webservice.vo.DockingPreMetaAttrVO;
import com.vci.ubcs.code.webservice.vo.DockingPreViewModelVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/***
 * é›†å›¢æ¨¡åž‹æœåŠ¡
 * @author xiejun
 * @date 2023-05-23
 */
@Service
@Slf4j
public class DockingPreViewModelServiceImpl extends ServiceImpl<DockingPreViewModelMapper,DockingPreViewModel> implements IDockingPreViewModelService {
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§
     */
    @Resource
    private DockingPreViewModelMapper dockingPreViewModelMapper;
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§æŸ¥è¯¢æœåŠ¡
     */
    @Resource
    private IDockingPreMetaAttrService dockingPreMetaAttrService;
    /**
     * æ ¹æ®åˆ†ç±»id查询分类视图
     * @param classifyId é›†å›¢åˆ†ç±»id
     * @param isContainAttr æ˜¯å¦æŸ¥è¯¢å±žæ€§ï¼Œtrue: æ˜¯ï¼Œfalse,否
     * @return è¿”回分类模型视图集合对象
     */
    @Override
    public List<DockingPreViewModelVO> selectDockingPreViewModelByClassId(String classifyId, boolean isContainAttr) {
        log.info("根据分类id->"+classifyId+",查询分类视图statr");
        VciBaseUtil.alertNotNull(classifyId,"集团分类主键");
        List<DockingPreViewModel> dockingPreViewModels= dockingPreViewModelMapper.selectList(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,classifyId));
        List<DockingPreViewModelVO> dockingPreViewModelVOS= DockingPreViewWrapper.build().entityVOs(dockingPreViewModels);
        if(isContainAttr) {
            dockingPreViewModelVOS.stream().forEach(dockingPreViewModelVO -> {
                String viewModelVOOid=dockingPreViewModelVO.getOid();
                String sourceClassifyId=dockingPreViewModelVO.getSourceClassifyId();
                List<DockingPreMetaAttr> dockingPreMetaAttrList=dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId).eq(DockingPreMetaAttr::getViewModelId,viewModelVOOid));
                List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList= DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList);
                if(!CollectionUtils.isEmpty(dockingPreMetaAttrVOList)) {
                    dockingPreViewModelVO.setDockingPreMetaAttrVOList(dockingPreMetaAttrVOList);
                }
            });
        }
        log.info("根据分类id->"+classifyId+",查询分类视图end");
        return dockingPreViewModelVOS;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/service/impl/GroupMdmInterServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1011 @@
package com.vci.ubcs.code.webservice.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vci.ubcs.code.webservice.entity.*;
import com.vci.ubcs.code.webservice.vo.*;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.code.webservice.feign.MdmApplyGroupCodeProvider;
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;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/***
 * ä¸Žé›†å›¢é›†æˆæœåŠ¡
 * @author xiejun
 * @date 2023-05-26
 */
@Service
@Slf4j
public class GroupMdmInterServiceImpl implements IGroupMdmInterService {
    private String code="";
    private String msg="";
    @Value("${docking.apply.unitCode:41000}")
    public String dockingApplyUnitCode;
    @Value("${docking.apply.sysName:410-MDM}")
    public String dockingApplySysName;
    @Autowired(required = false)
    private MdmApplyGroupCodeProvider mdmApplyGroupCodeProvider;
    /***
     * é›†å›¢åˆ†ç±»æœåŠ¡
     */
    @Autowired(required = false)
    private IDockingPreClassifyService dockingPreClassifyService;
    /***
     * ç”³è¯·å•服务
     */
    @Autowired(required = false)
    private IDockingPreApplyFormService dockingPreApplyFormService;
    /***
     * æ¨¡åž‹è§†å›¾å•服务
     */
    @Autowired(required = false)
    private IDockingPreViewModelService dockingPreViewModelService;
    /***
     * é›†å›¢åˆ†ç±»å±žæ€§å±žæ€§æ˜ å°„配置服务
     */
    @Autowired(required = false)
    private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
    /***
     * å±žæ€§å–值范围服务
     */
    @Autowired(required = false)
    private IDockingPreAttrRangeService dockingPreAttrRangeService;
    /***
     * é›†å›¢å±žæ€§æœåŠ¡
     */
    @Autowired(required = false)
    private IDockingPreMetaAttrService dockingPreMetaAttrService;
    /***
     * ä¸»æ•°æ®åƒé›†å›¢ç”³è¯·ç¼–码
     * @param oids éœ€è¦ç”³è¯·çš„æ•°æ®ä¸»é”®æ•°ç»„
     * @param btmName ä¸šåŠ¡ç±»åž‹
     * @return è¿”回结果信息
     * @throws Exception
     */
    @Transactional(rollbackFor = VciBaseException.class)
    @Override
    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<>();
            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>();
                //组织数据
                dockingGroupDataVO = queryApplycodeDataObjects(1, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
                DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveAddApply(dockingGroupDataVO);
                code = resultDataObject.getCode();
                msg = resultDataObject.getMsg();
                if ("1".equals(resultDataObject.getCode())) {//结果正确的情况
                    List<DockingDataVO> dataObjectVOList = resultDataObject.getData();
                    dataObjectVOList.stream().forEach(dataObject -> {
                        boolean isEditDatas = false;
                        String code2 = dataObject.getCode();
                        DockingMainDataVO data2 = dataObject.getData();
                        String applyId = data2.getApplyId();//申请单id
                        String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//集团码段
                        msg = dataObject.getMsg();
                        if (code2.equals("1")) {//结果正确的情况
                            if (!"".equals(customCoding)) {
                                isEditDatas = true;
                            }
                        }
                        //需要修改的申请单数据
                        if (editDockingPreApplyFormMap.containsKey(applyId)) {
                            DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
                            dockingPreApplyForm.setCode(code2);
                            dockingPreApplyForm.setMsg("申请:" + msg);
                            dockingPreApplyForm.setGroupCode(customCoding);
                            ObjectMapper mp = new ObjectMapper();
                            String writeValueAsString = null;
                            try {
                                writeValueAsString = mp.writeValueAsString(dataObject);
                                dockingPreApplyForm.setContent(writeValueAsString);
                            } catch (JsonProcessingException e) {
                            }
                        }
                        //新增的申请单数据
                        if (addDockingPreApplyFormMap.containsKey(applyId)) {
                            DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
                            dockingPreApplyForm.setCode(code2);
                            dockingPreApplyForm.setMsg("申请:" + msg);
                            dockingPreApplyForm.setGroupCode(customCoding);
                            ObjectMapper mp = new ObjectMapper();
                            String writeValueAsString = null;
                            try {
                                writeValueAsString = mp.writeValueAsString(dataObject);
                                dockingPreApplyForm.setContent(writeValueAsString);
                            } catch (JsonProcessingException e) {
                            }
                        }
                        //如果有集团码则更新数据
                        if (isEditDatas) {
                            if (baseModelVOMap.containsKey(applyId)) {
                                BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
                                BaseModel baseModel = new BaseModel();
                                BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                baseModelVO.setId(customCoding);
                                updateCbos.add(baseModel);//更新数据集团code
                            }
                        }
                    });
                } else {
                    editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                        dockingPreApplyForm.setCode("2");
                        dockingPreApplyForm.setMsg("申请:" + msg);
                        dockingPreApplyForm.setContent("");
                        dockingPreApplyForm.setGroupCode("");
                        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
                    });
                    addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                        dockingPreApplyForm.setCode("2");
                        dockingPreApplyForm.setMsg("申请:" + msg);
                        dockingPreApplyForm.setContent("");
                        dockingPreApplyForm.setGroupCode("");
                        DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
                    });
                }
                if (editDockingPreApplyFormMap.size() > 0) {
                    dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//添加申请单数据
                }
                if (addDockingPreApplyFormMap.size() > 0) {
                    dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//需要修改的申请单数据
                }
                //保存表单数据
                dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
                //mdmEngineService.saveBatch(updateCbos);//保存数据
            }
            return R.success("申请接口调用成功");
        }catch (VciBaseException e){
            return R.success("申请接口调用成功"+e);
        }
    }
    /***
     * ä¸»æ•°æ®åƒé›†å›¢æ›´æ”¹ç¼–码
     * @param oids éœ€è¦ä¿®æ”¹çš„æ•°æ®ä¸»é”®æ•°ç»„
     * @param btmName ä¸šåŠ¡ç±»åž‹
     * @return è¿”回结果信息
     * @throws Throwable
     */
    @Transactional(rollbackFor = VciBaseException.class)
    @Override
    public R receiveEditApply(String oids, String btmName) throws VciBaseException {
        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<>();
        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>();
                //组织数据
                dockingGroupDataVO = queryApplycodeDataObjects(2, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
                DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveEditApply(dockingGroupDataVO);
                code = resultDataObject.getCode();
                msg = resultDataObject.getMsg();
                if ("1".equals(resultDataObject.getCode())) {//结果正确的情况
                    List<DockingDataVO> dataObjectVOList = resultDataObject.getData();
                    dataObjectVOList.stream().forEach(dataObject -> {
                        boolean isEditDatas = false;
                        String code2 = dataObject.getCode();
                        DockingMainDataVO data2 = dataObject.getData();
                        String applyId = data2.getApplyId();//申请单id
                        String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//集团码段
                        msg = dataObject.getMsg();
                        if (code2.equals("1")) {//结果正确的情况
                            if (!"".equals(customCoding)) {
                                isEditDatas = true;
                            }
                        }
                        //需要修改的申请单数据
                        if (editDockingPreApplyFormMap.containsKey(applyId)) {
                            DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
                            dockingPreApplyForm.setCode(code2);
                            dockingPreApplyForm.setMsg("修改:" + msg);
                            dockingPreApplyForm.setGroupCode(customCoding);
                            ObjectMapper mp = new ObjectMapper();
                            String writeValueAsString = null;
                            try {
                                writeValueAsString = mp.writeValueAsString(dataObject);
                                dockingPreApplyForm.setContent(writeValueAsString);
                            } catch (JsonProcessingException e) {
                            }
                        }
                        //新增的申请单数据
                        if (addDockingPreApplyFormMap.containsKey(applyId)) {
                            DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
                            dockingPreApplyForm.setCode(code2);
                            dockingPreApplyForm.setMsg("修改:" + msg);
                            dockingPreApplyForm.setGroupCode(customCoding);
                            ObjectMapper mp = new ObjectMapper();
                            String writeValueAsString = null;
                            try {
                                writeValueAsString = mp.writeValueAsString(dataObject);
                                dockingPreApplyForm.setContent(writeValueAsString);
                            } catch (JsonProcessingException e) {
                            }
                        }
                        //如果有集团码则更新数据
                        if (isEditDatas) {
                            if (baseModelVOMap.containsKey(applyId)) {
                                BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
                                BaseModel baseModel = new BaseModel();
                                BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                                baseModelVO.setId(customCoding);
                                updateCbos.add(baseModel);//更新数据集团code
                            }
                        }
                    });
                } else {
                    editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                        dockingPreApplyForm.setCode("2");
                        dockingPreApplyForm.setMsg("修改:" + msg);
                        dockingPreApplyForm.setContent("");
                        dockingPreApplyForm.setGroupCode("");
                        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
                    });
                    addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                        dockingPreApplyForm.setCode("2");
                        dockingPreApplyForm.setMsg("修改:" + msg);
                        dockingPreApplyForm.setContent("");
                        dockingPreApplyForm.setGroupCode("");
                        DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
                    });
                }
                if (editDockingPreApplyFormMap.size() > 0) {
                    dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//添加申请单数据
                }
                if (addDockingPreApplyFormMap.size() > 0) {
                    dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//需要修改的申请单数据
                }
                //保存表单数据
                dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
                //mdmEngineService.saveBatch(updateCbos);//保存数据
            }
            return R.success("申请接口调用成功");
        }catch (VciBaseException e){
            return R.fail("申请接口调用失败"+e.getMessage());
        }
    }
    /***
     * èŽ·å–é›†å›¢æ¨¡åž‹è¯¦ç»†ä¿¡æ¯æ‰§è¡Œä¿å­˜
     * @param groupClassifyId
     * @return
     * @throws VciBaseException
     */
    @Override
    public R queryClassModel(String groupClassifyId) throws Throwable {
        log.info("获取集团模型详细信息执行保存start");
        String message="执行成功!";
        try {
            if (StringUtils.isBlank(groupClassifyId)) {
                message = "参数:集团分类主键,为空!";
                log.info(message);
                throw new Throwable(message);
            }
            if (StringUtils.isBlank(dockingApplySysName)) {
                message = "获取系统标识" + dockingApplySysName + "为空,请查看配置!";
                log.info(message);
                throw new Throwable(message);
            }
            DockingModelQueryVO dockingModelQueryVO = new DockingModelQueryVO();
            dockingModelQueryVO.setClassId(groupClassifyId);
            dockingModelQueryVO.setSysName(dockingApplySysName);
            DockingQueryClassModelVO dockingQueryClassifyModelVO = mdmApplyGroupCodeProvider.queryClassModel(dockingModelQueryVO);
            if (dockingQueryClassifyModelVO != null) {
                int code = dockingQueryClassifyModelVO.getCode();
                message = dockingQueryClassifyModelVO.getMsg();
                if (code == 1) {
                    this.saveDatas(dockingQueryClassifyModelVO);
                } else {
                    log.info(message);
                    throw new Throwable(message);
                }
            }else{
                message="未获从集团获取到任何模型信息";
                log.info(message);
                throw new Throwable(message);
            }
            return R.success(message);
        }catch (Throwable e){
            e.printStackTrace();;
            log.error("获取数据模型详细信息失败"+e);
            R.fail(message);
        }
        log.info("获取集团模型详细信息执行保存end");
        return R.success(message);
    }
    /***
     * ä»Žé›†å›¢èŽ·å–ä¸»æ¨¡åž‹ä¿¡æ¯æ‰§è¡Œä¿å­˜
     * @return
     * @throws Throwable
     */
    @Override
    public R queryMdmModel() throws Throwable {
        String message="执行成功!";
        log.info("从集团获取主模型信息执行保存接口statr");
        try {
            if (StringUtils.isBlank(dockingApplySysName)) {
                message = "获取系统标识" + dockingApplySysName + "为空,请查看配置!";
                log.info(message);
                throw new Throwable(message);
            }
            DockingModelQueryVO dockingModelQueryVO = new DockingModelQueryVO();
            dockingModelQueryVO.setSysName(dockingApplySysName);
            DockingQueryModelVO dockingQueryModelVO=  mdmApplyGroupCodeProvider.queryMdmModel(dockingModelQueryVO);
            if (dockingQueryModelVO != null) {
                int code = dockingQueryModelVO.getCode();
                message = dockingQueryModelVO.getMsg();
                if (code == 1) {
                    List<DockingClassifyVO> dockingClassifyVOList=dockingQueryModelVO.getData();
                    List<DockingPreClassify>dockingPreClassifyList=new ArrayList<>();
                    dockingClassifyVOList.stream().forEach(dockingClassifyVO -> {
                        String id = StringUtils.isBlank(dockingClassifyVO.getId())?"":dockingClassifyVO.getId();
                        String className = StringUtils.isBlank(dockingClassifyVO.getClassName())?"":dockingClassifyVO.getClassName();
                        String classNumber = StringUtils.isBlank(dockingClassifyVO.getClassNumber())?"":dockingClassifyVO.getClassNumber();
                        String nodeLink = StringUtils.isBlank(dockingClassifyVO.getNodeLink())?"":dockingClassifyVO.getNodeLink();
                        String nodeLinkName = StringUtils.isBlank(dockingClassifyVO.getNodeLinkName())?"":dockingClassifyVO.getNodeLinkName();
                        String pid = StringUtils.isBlank(dockingClassifyVO.getPid())?"":dockingClassifyVO.getPid();
                        String version = StringUtils.isBlank(dockingClassifyVO.getVersion())?"":dockingClassifyVO.getVersion();
                        DockingPreClassify dockingPreClassify=    this.dockingPreClassifyService.getById(id);
                        log.info("classify:-------------->集团分类主机:"+id);
                        log.info("classify:-------------->集团分类名称:"+className);
                        log.info("classify:--------------> é›†å›¢åˆ†ç±»çˆ¶èŠ‚ç‚¹:"+pid);
                        log.info("classify:-------------->链接:"+nodeLink);
                        log.info("classify:-------------->集团分类代号:"+classNumber);
                        log.info("classify:-------------->链接名称:"+nodeLinkName);
                        log.info("classify:-------------->链接版本:"+version);
                        if (dockingPreClassify == null || StringUtils.isBlank(dockingPreClassify.getOid())) {
                            DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreClassify,MdmBtmTypeConstant.DOCKING_PRE_JCLASSIFY);
                        } else {
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreClassify);
                        }
                        dockingPreClassify.setOid(id);
                        dockingPreClassify.setName(className);
                        dockingPreClassify.setPid(pid);
                        dockingPreClassify.setId(classNumber);
                        dockingPreClassify.setNodeLink(nodeLink);
                        dockingPreClassify.setGetNodeLinkName(nodeLinkName);
                        dockingPreClassify.setClassName(className);
                        dockingPreClassify.setVersionValue(version);
                        dockingPreClassifyList.add(dockingPreClassify);
                    });
                    boolean res=    dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyList);
                    if(res){
                        R.success(message);
                    }else{
                        message="保存分类主模型失败";
                        throw new Throwable(message);
                    }
                } else {
                    log.info(message);
                    throw new Throwable(message);
                }
            }else{
                message="未获从集团获取到任何模型信息";
                log.info(message);
                throw new Throwable(message);
            }
            return R.success(message);
        }catch (Throwable e){
            e.printStackTrace();;
            log.error("获取数据模型失败"+e);
            R.fail(message);
        }
        log.info("从集团获取主模型信息执行保存接口end");
        return R.success(message);
    }
    /***
     * æŸ¥è¯¢ç”³è¯·å•状态
     * @param dataOids
     * @return æ‰§è¡Œç»“æžœ
     */
    public R queryApplyState(String dataOids) {
        String message="执行成功!";
        log.info("查询申请单状态接口statr");
        try {
            VciBaseUtil.alertNotNull(dataOids,"所查申请单数据主键");
            VciBaseUtil.alertNotNull(dockingApplySysName,"系统标识配置:docking.apply.unitCode");
            List<DockingPreApplyForm> dockingPreApplyFormList=    this.dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().in(DockingPreApplyForm::getDataOid, VciBaseUtil.str2List(dataOids)));
            dockingPreApplyFormList.stream().forEach(dockingPreApplyForm -> {
                dockingPreApplyForm.getId();
            });
        }catch (Throwable e){
            e.printStackTrace();;
            log.error("获取数据模型失败"+e);
            R.fail(message);
        }
        log.info("查询申请单状态接口end");
        return R.success(message);
    }
    /***
     * åŒæ­¥é›†å›¢æ¨¡åž‹ä¿¡æ¯
     * @param classifyId
     * @param operationType
     * @return è¿”回执行结果
     * @throws VciBaseException
     */
    @Override
    public R syncClassifyModel(String classifyId, String operationType) throws VciBaseException {
        VciBaseUtil.alertNotNull(operationType,"集成操作类型");
        try {
            if(operationType.equals("all")){
                return    queryMdmModel();
            }else{
                VciBaseUtil.alertNotNull(classifyId,"集团分类主键");
                return queryClassModel(classifyId);
            }
        } catch (Throwable e) {
            throw  new VciBaseException(e.getMessage());
        }
    }
//    /**
//     * åŒæ­¥ä¸»æ¨¡åž‹
//     * @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;
//        }
//
//    }
    /***
     * ç»„织 ä¿å­˜æ•°æ®æ–¹æ³•
     *
     * @param dockingQueryClassifyModelVO
     * @return
     * @throws Throwable
     * @throws
     * @throws Throwable
     */
    private boolean saveDatas(DockingQueryClassModelVO dockingQueryClassifyModelVO) throws Throwable {
        try {
            DockingClassifyMainVO mainData = dockingQueryClassifyModelVO.getMainData();
            List<DockingClassifyVO> classList = mainData.getClassList();
            Map<String,List<DockingClassifyViewVO>>classInfoMap = mainData.getClassInfos();
            ////initVCIInvocationInfo("1");
            List<DockingPreClassify> dockingPreClassifyArrayList=new ArrayList<>();
            for (DockingClassifyVO jclassObject : classList) {
                String id =StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
                String className = StringUtils.isBlank(jclassObject.getClassName())?"":jclassObject.getClassName();
                String pid = StringUtils.isBlank(jclassObject.getPid())?"":jclassObject.getPid();
                String nodeLink = StringUtils.isBlank(jclassObject.getNodeLink())?"":jclassObject.getNodeLink();
                String nodeLinkName = StringUtils.isBlank(jclassObject.getNodeLinkName())?"":jclassObject.getNodeLinkName();
                String classNumber = StringUtils.isBlank(jclassObject.getClassNumber())?"":jclassObject.getClassNumber();
                //根据分类查询模型视图对象
                DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(id);
                log.info("classify:-------------->集团分类主机:"+id);
                log.info("classify:-------------->集团分类名称:"+className);
                log.info("classify:--------------> é›†å›¢åˆ†ç±»çˆ¶èŠ‚ç‚¹:"+pid);
                log.info("classify:-------------->链接:"+nodeLink);
                log.info("classify:-------------->链接名称:"+nodeLinkName);
                if (dockingPreClassify == null || StringUtils.isBlank(dockingPreClassify.getOid())) {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreClassify,MdmBtmTypeConstant.DOCKING_PRE_JCLASSIFY);
                } else {
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreClassify);
                }
                dockingPreClassify.setOid(id);
                dockingPreClassify.setName(className);
                dockingPreClassify.setPid(pid);
                dockingPreClassify.setId(classNumber);
                dockingPreClassify.setNodeLink(nodeLink);
                dockingPreClassify.setGetNodeLinkName(nodeLinkName);
                dockingPreClassify.setClassName(className);
                dockingPreClassifyArrayList.add(dockingPreClassify);
                // èŽ·å–å¯¹åº”çš„åˆ†ç±»è§†å›¾æ¨¡åž‹
                if (classInfoMap.containsKey(id)) {
                    List<DockingClassifyViewVO> list = classInfoMap.get(id);
                    getVilewMode(jclassObject,list);
                }
            }
            boolean res= dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyArrayList);
            return res;
        } catch (Throwable e) {
            e.printStackTrace();
            throw new Throwable("存储视图模型出现问题");
        }
    }
    /***
     * èŽ·å–åˆ†ç±»è§†å›¾
     *
     * @param jclassObject
     * @throws Throwable
     */
    private void getVilewMode(DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list)
        throws Throwable {
        String nodeLinkName = jclassObject.getNodeLinkName();
        try {
            String jclassId = com.alibaba.cloud.commons.lang.StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
            Map<String, DockingPreViewModel> jviewmodelMap = new HashMap<String, DockingPreViewModel>();
            //Map<String, String> condtionMa = new HashMap<String, String>();
            //    condtionMa.put("jsourceclsfid", jclassId);
            List<DockingPreViewModel> dockingPreViewModelList= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,false));// æ ¹æ®åˆ†ç±»æŸ¥è¯¢æ¨¡åž‹è§†å›¾å¯¹è±¡
            for (DockingPreViewModel dockingPreViewModel : dockingPreViewModelList) {
                jviewmodelMap.put(dockingPreViewModel.getViewName(),dockingPreViewModel);
            }
            for (DockingClassifyViewVO viewInfo : list) {
                String viewName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(viewInfo.getViewName())?"":viewInfo.getViewName();
                String impactList = com.alibaba.cloud.commons.lang.StringUtils.isBlank(viewInfo.getImpactList())?"":viewInfo.getImpactList();
                log.info("VilewMode:-------------->视图名称:"+viewName);
                log.info("VilewMode:-------------->影响编码项:"+impactList);
                log.info("VilewMode:--------------> é›†å›¢åˆ†ç±»ä¸»é”®:"+jclassId);
                List<DockingClassifyMetaAttrVO> metaList = viewInfo.getMetaList();
                DockingPreViewModel jviewModelObject = null;
                if (jviewmodelMap.containsKey(viewName)) {
                    jviewModelObject = jviewmodelMap.get(viewName);
                    //影响编码项的数据
                    jviewModelObject.setImpactList(impactList);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(jviewModelObject);
                } else {
                    jviewModelObject =new DockingPreViewModel();
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(jviewModelObject,MdmBtmTypeConstant.DOCKING_PRE_JVIEWMODEL);
                    jviewModelObject.setSourceClassifyId(jclassId);// é›†å›¢åˆ†ç±»id
                    jviewModelObject.setViewName(viewName);// é›†å›¢è§†å›¾åç§°
                    //影响编码项的数据
                    jviewModelObject.setImpactList(impactList);
                    dockingPreViewModelList.add(jviewModelObject);
                }
                // èŽ·å–æ¨¡åž‹è§†å›¾ä¸‹çš„å±žæ€§é›†
                // String oid = jviewModelObject.getOid();
                List<DockingPreMetaAttr>allDockingPreMetaAttrList=new ArrayList<>();
                getMetaAttrObject(metaList, jclassId, jviewModelObject, "root",allDockingPreMetaAttrList);
                //保存模型视图属性
                dockingPreMetaAttrService.saveOrUpdateBatch(allDockingPreMetaAttrList);
                //保存模型视图
                dockingPreViewModelService.saveOrUpdateBatch(dockingPreViewModelList);
            }
        } catch (Throwable e) {
            e.printStackTrace();
            throw new Throwable("组织分类" + nodeLinkName + "模型视图存储出现问题");
        }
    }
    /***
     * èŽ·å–æ¨¡åž‹è§†å›¾å±žæ€§
     * @throws Throwable
     */
    private void getMetaAttrObject(List<DockingClassifyMetaAttrVO> metaList,
                                   String jclassId, DockingPreViewModel jviewModelObject, String pid,List<DockingPreMetaAttr>allDockingPreMetaAttrList)throws Throwable {
        try {
            //// æ ¹æ®åˆ†ç±»æŸ¥è¯¢æ¨¡åž‹è§†å›¾å¯¹è±¡
            List<DockingPreMetaAttr> dockingPreMetaAttrList = dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda()
                .eq(DockingPreMetaAttr::getSourceClassifyId,jclassId).eq(DockingPreMetaAttr::getViewModelId,jviewModelObject.getOid())
                .eq(DockingPreMetaAttr:: getPid,pid));
            Map<String,DockingPreMetaAttr> jmetaattrMap = dockingPreMetaAttrList.stream().filter(
                s -> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(s.getEnglishName())).collect(Collectors.toMap(s -> s.getEnglishName().toLowerCase(Locale.ROOT), t -> t));
            for (DockingClassifyMetaAttrVO dockingClassifyMetaAttrVO : metaList) {
                String chineseName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingClassifyMetaAttrVO.getChineseName())?"":dockingClassifyMetaAttrVO.getChineseName();// å±žæ€§åç§°
                String englishName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingClassifyMetaAttrVO.getEnglishName())?"":dockingClassifyMetaAttrVO.getEnglishName();// è‹±æ–‡åç§°
                String defaultValue = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingClassifyMetaAttrVO.getDefaultValue())?"":dockingClassifyMetaAttrVO.getDefaultValue();
                Integer metadataType =dockingClassifyMetaAttrVO.getMetadataType();// ç±»åž‹
                Integer necessaryConf = dockingClassifyMetaAttrVO.getNecessaryConf();// æ˜¯å¦å¿…å¡«
                Map<String, String> range = dockingClassifyMetaAttrVO.getRange()==null?new HashMap<String, String>():dockingClassifyMetaAttrVO.getRange();// å–值范围
                log.info("metaAttr:-------------->属性名称:"+chineseName);
                log.info("metaAttr:-------------->英文名称:"+englishName);
                log.info("metaAttr:-------------->默认值:"+defaultValue);
                log.info("metaAttr:--------------> ç±»åž‹:"+metadataType);
                log.info("metaAttr:-------------->  æ˜¯å¦å¿…å¡«:"+necessaryConf);
                DockingPreMetaAttr dockingPreMetaAttr = new DockingPreMetaAttr();
                if (jmetaattrMap.containsKey(englishName)) {
                    dockingPreMetaAttr = jmetaattrMap.get(englishName);
                    dockingPreMetaAttr.setChineseName(chineseName);
                    dockingPreMetaAttr.setDefaultValue(defaultValue);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreMetaAttr);
                } else {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreMetaAttr,MdmBtmTypeConstant.DOCKING_PRE_JMETAATRR);
                    dockingPreMetaAttr.setSourceClassifyId(jclassId);// é›†å›¢åˆ†ç±»id
                    dockingPreMetaAttr.setViewModelId(jviewModelObject.getOid());// é›†å›¢è§†å›¾æ¨¡åž‹id
                    dockingPreMetaAttr.setChineseName(chineseName);// å±žæ€§åç§°
                    dockingPreMetaAttr.setEnglishName(englishName);// å±žæ€§å­—段
                    dockingPreMetaAttr.setDefaultValue(defaultValue);// å±žæ€§åç§°
                    dockingPreMetaAttr.setMetaDataType(metadataType);// å±žæ€§ç±»åž‹
                    dockingPreMetaAttr.setNecesSaryConf(necessaryConf);// å±žæ€§å¿…填项
                    dockingPreMetaAttr.setPid(pid);// çˆ¶èŠ‚ç‚¹id
                }
                if(range!=null&&range.size()>0){
                    // èŽ·å–å±žæ€§å€¼åŸŸ
                    getRange(dockingPreMetaAttr, range);
                }
                /***
                 * èŽ·å–å­èŠ‚ç‚¹
                 */
                DockingClassifyMetaAttrVO compositeMeta = dockingClassifyMetaAttrVO.getCompositeMeta();
                if (compositeMeta != null) {
                    pid = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingPreMetaAttr.getOid())?"":dockingPreMetaAttr.getOid();// å½“前oid
                    List<DockingClassifyMetaAttrVO> childMetaList = new ArrayList<>();
                    childMetaList.add(compositeMeta);
                    getMetaAttrObject(childMetaList, jclassId,jviewModelObject, pid,allDockingPreMetaAttrList);
                }
            }
        } catch (Throwable e) {
            e.printStackTrace();
            log.error("组织模型视图"+ jviewModelObject.getViewName()
                + "属性存储出现问题" + e);
            throw new Throwable("组织模型视图"+ jviewModelObject.getViewName()
                + "属性存储出现问题" + e);
        }
    }
    /**
     * @throws Throwable
     *             * èŽ·å–å€¼åŸŸ
     * @param metaAttrObject
     * @param range
     * @throws
     */
    private void getRange(DockingPreMetaAttr metaAttrObject,Map<String, String> range) throws Throwable {
        String metaAttrOid = com.alibaba.cloud.commons.lang.StringUtils.isBlank(metaAttrObject.getOid())?"":metaAttrObject.getOid();// å±žæ€§çš„oid
        String jchinesename = com.alibaba.cloud.commons.lang.StringUtils.isBlank(metaAttrObject.getChineseName())?"":metaAttrObject.getChineseName();
        Map<String, DockingPreAttrRange> rangeMap = new HashMap<>();
        try {
            Map<String, String> condtionMa = new HashMap<String, String>();
            condtionMa.put("jmetalistid", metaAttrOid);
            List<DockingPreAttrRange> jmetaattrList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda()
                .eq(DockingPreAttrRange::getMetaListId,metaAttrOid));// æ ¹æ®åˆ†ç±»æŸ¥è¯¢æ¨¡åž‹è§†å›¾å¯¹è±¡
            rangeMap= jmetaattrList.stream().collect(Collectors.toMap(s -> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(s.getNumText().toLowerCase(Locale.ROOT))?"":s.getNumText().toLowerCase(Locale.ROOT), t -> t));
            for (String rangeKey : range.keySet()) {
                DockingPreAttrRange rangeObject = new DockingPreAttrRange();
                String keyValue = com.alibaba.cloud.commons.lang.StringUtils.isBlank(range.get(rangeKey))?"":range.get(rangeKey);
                log.info("range:-------------->显示值"+rangeKey+",内部值"+keyValue);
                if (rangeMap.containsKey(rangeKey)) {
                    rangeObject = rangeMap.get(rangeKey);
                    rangeObject.setNumTextValue(keyValue);
                    rangeObject.setNumText(rangeKey);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(rangeObject);
                } else {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(rangeObject,MdmBtmTypeConstant.DOCKING_PRE_JRANGE);
                    rangeObject.setNumTextValue(keyValue);
                    rangeObject.setNumText(rangeKey);
                    rangeObject.setTs(rangeObject.getLastModifyTime());
                    rangeObject.setMetaListId(metaAttrOid);
                    log.info("range:-------------->属性内部值:"+metaAttrOid);
                    log.info("range:-------------->时间:"+rangeObject.getLastModifyTime());
                    jmetaattrList.add(rangeObject);
                }
            }
            dockingPreAttrRangeService.saveOrUpdateBatch(jmetaattrList);
        } catch (Throwable e) {
            e.printStackTrace();
            log.info("组织属性:【" + jchinesename + "】值域出现问题"+ e);
            throw new Throwable("组织属性:【" + jchinesename + "】值域出现问题"+ e);
        }
    }
    /**
     * ç»„织数据
     * */
    private DockingGroupDataVO queryApplycodeDataObjects(int optationtype,List<BaseModelVO> codeWupins,Map<String,DockingPreApplyForm>   addDockingPreApplyFormMap,Map<String,DockingPreApplyForm>  editDockingPreApplyFormMap,Map<String,BaseModelVO>  codeWupinMap) throws VciBaseException{
        try {
            String curUserName = AuthUtil.getUser().getUserName();
            //申请的数据
            List<DockingMainData> mainDataList=new ArrayList<DockingMainData>();
            for (BaseModelVO dataBusinessObject : codeWupins) {
                String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
                String codeclsfid = dataBusinessObject.getData().getOrDefault("codeclsfid","");
                String btmName = dataBusinessObject.getBtmname();
                String oid = dataBusinessObject.getOid();
                DockingPreApplyForm dockingPreApplyForm = new DockingPreApplyForm();
                String dataOid = dataBusinessObject.getOid();
                Map<String, String> conditionsMap = new HashMap<String, String>();
                List<DockingPreApplyForm> applyFormObjects = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().eq(DockingPreApplyForm::getDataOid, dataOid).eq(DockingPreApplyForm::getOperationType, optationtype));
                String apllyCode = "";
                if (!CollectionUtils.isEmpty(applyFormObjects)) {
                    dockingPreApplyForm = applyFormObjects.get(0);
                    apllyCode = dockingPreApplyForm.getId();
                    editDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//申请单和申请单对象关系
                } else {
                    apllyCode = dockingApplyUnitCode + "-" + format;
                    dockingPreApplyForm.setId(apllyCode);
                    dockingPreApplyForm.setName("");
                    dockingPreApplyForm.setOperationType(optationtype+"");
                    dockingPreApplyForm.setDescription(dataBusinessObject.getDescription());//获取数据描述信息
                    dockingPreApplyForm.setDataOid(oid);
                    dockingPreApplyForm.setDataBtmName(btmName);
                    addDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//申请单和申请单对象关系
                }
                codeWupinMap.put(apllyCode, dataBusinessObject);//申请单和对应数据关系
                conditionsMap = new HashMap<String, String>();
                conditionsMap.put("jtargetclsfid", codeclsfid);//视图oid
                List<DockingPreAttrMapping> dockingPreAttrMappingList = dockingPreAttrMappingMapper.selectList(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid));
                if (CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
                    throw new Exception("根据所选的数据,没有找到对应的集团分类设置,请核对!");
                }
                String jsourceclsfid = dockingPreAttrMappingList.get(0).getSourceClassifyId();
                //获取数据模型分类信息
                DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(jsourceclsfid);
                DockingMainData mainData = new DockingMainData();
                mainData.setApplyEntId(dockingApplyUnitCode);//申请单位代码
                mainData.setApplyId(apllyCode);//申请单号
                mainData.setClassName(dockingPreClassify.getGetNodeLinkName());//分类名称
                mainData.setCreateBy(curUserName);//
                mainData.setSecretLevel("内部");//密级,默认为内部
                mainData.setViewInfos(getviewInfos(optationtype,dockingPreClassify, dataBusinessObject));//获取视图模型
                mainDataList.add(mainData);
            }
            //根据数据模型,组织所需要数据
            DockingGroupDataVO postParameters=new DockingGroupDataVO();
            postParameters.setSysName(dockingApplySysName);//系统标识
            postParameters.setMainData(mainDataList);//
            return postParameters;
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            throw new VciBaseException("查询数据出错"+e);
        }
    }
    /**
     * èŽ·å–æ¨¡åž‹è§†å›¾
     * @param dockingPreClassify
     * @param dataBusinessObject
     * @throws VciBaseException
     */
    private List<DockingViewVO>getviewInfos(int type, DockingPreClassify dockingPreClassify, BaseModelVO dataBusinessObject) throws Throwable{
        List<DockingViewVO> viewInfoList=new ArrayList<>();
        String jclassOid=    dockingPreClassify.getOid();
        List<DockingPreViewModel> dockingPreViewModels=new ArrayList<>();
        if(type==1) {
            //根据分类查询模型视图对象
            dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid).eq(DockingPreViewModel::getViewName,"编码视图"));
        }else{
            //根据分类查询模型视图对象
            dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid));
        }
        for (DockingPreViewModel dockingPreViewModel : dockingPreViewModels) {
            //组织数据属性信息
            DockingViewVO viewInfo=new DockingViewVO();
            viewInfo.setViewName(dockingPreViewModel.getViewName());//视图名称
            viewInfo.setViewValue(getViewValueList(dockingPreViewModel,jclassOid,dataBusinessObject));//视图
            viewInfoList.add(viewInfo);
        }
        return viewInfoList;
    }
    /***
     * èŽ·å–é…ç½®ä¿¡æ¯
     * @param dockingPreViewModel
     * @param jclassOid
     * @param dataBusinessObject
     * @return
     * @throws VciBaseException
     */
    private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModelVO 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)) {
            return viewValueList;
        }
        Map<String,DockingPreAttrMapping> jintegmappconfigMap=new HashMap<String, DockingPreAttrMapping>();
        for (DockingPreAttrMapping businessObject : dockingPreAttrMappingList) {
            jintegmappconfigMap.put(businessObject.getSourceAttrKey(), businessObject);
        }
        List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(
            Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,dockingPreViewModel.getOid())
                .eq(DockingPreMetaAttr::getSourceClassifyId,dockingPreViewModel.getSourceClassifyId()));
        Map<String,Object> viewValueMap=new HashMap<String,Object>();
        for (DockingPreMetaAttr dockingPreMetaAttr : dockingPreMetaAttrList) {
            String jenglishname=dockingPreMetaAttr.getEnglishName();////集团配置属性
            if(jintegmappconfigMap.containsKey(jenglishname)){
                DockingPreAttrMapping dockingPreAttrMapping=jintegmappconfigMap.get(jenglishname);
                String attrId = dockingPreAttrMapping.getTargetAttrId();//编码属性id
                String jtargetattrkey = dockingPreAttrMapping.getTargetAttrKey();//编码属性id
                Object newVaue=null;
                if(StringUtils.isNotBlank(jtargetattrkey)){
                    getAttrRange(dockingPreMetaAttr);//获取字段取值范围
                    String value=dataValueMap.get(jtargetattrkey)==null?"":dataValueMap.getOrDefault(jtargetattrkey,"");
                    newVaue = getVaue(dockingPreMetaAttr, value);
                }else{
                    newVaue = getVaue(dockingPreMetaAttr, "");
                }
                if(newVaue==null||"".equals(newVaue)){
                    newVaue= dockingPreMetaAttr.getDefaultValue();
                }
                viewValueMap.put(jenglishname, newVaue);
            }
        }
        viewValueList.add(viewValueMap);
        return viewValueList;
    }
    /***
     * èŽ·å–å±žæ€§æžšä¸¾æ˜ å°„é…ç½®
     */
    Map<String,Map<String, DockingPreAttrRange>> attrRangeMap=new HashMap<String, Map<String,DockingPreAttrRange>>();
    private void getAttrRange(DockingPreMetaAttr jmetaatter) throws Throwable{
        String jmetalistoid = jmetaatter.getOid();
        if(attrRangeMap.containsKey(jmetalistoid)) {
            return;
        }
        Map<String,String>conditionsMap=new HashMap<String, String>();
        conditionsMap.put("jmetalistid", jmetalistoid);//视图oid
        List<DockingPreAttrRange> dockingPreAttrRangeList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().eq(DockingPreAttrRange::getMetaListId, jmetalistoid));
        if (CollectionUtils.isEmpty(dockingPreAttrRangeList)) {
            return;
        }
        Map<String, DockingPreAttrRange> rangeMap = new HashMap<String, DockingPreAttrRange>();
        rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getNumTextValue(), t -> t, (o1, o2) -> o2));
        attrRangeMap.put(jmetalistoid, rangeMap);
    }
    /****
     * å€¼ç±»åž‹è½¬æ¢
     * @param jmetaatter
     * @param value
     * @return
     * @throws Throwable
     */
    private Object getVaue(DockingPreMetaAttr jmetaatter,String value) throws Throwable{
        //jmetadatatype    å…ƒæ•°æ®ç±»åž‹ï¼ˆ1 å­—符型, 2 æ•´åž‹, 3 é•¿æ•´åž‹, 4 å•精度, 5 åŒç²¾åº¦,6 æ—¥æœŸåž‹, 7 æ—¶é—´åž‹, 8 å¸ƒå°”åž‹, 9 æ–‡ä»¶, 10复合型)
        int jmetadatatype = jmetaatter.getMetaDataType();
        String jmetalistoid = jmetaatter.getOid();
        Map<String, DockingPreAttrRange> rangeMap=new HashMap<String, DockingPreAttrRange>();
        if(attrRangeMap.containsKey(jmetalistoid)){
            rangeMap = attrRangeMap.get(jmetalistoid);
            if(rangeMap.containsKey(value)){
                DockingPreAttrRange dockingPreAttrRange = rangeMap.get(value);
                value=dockingPreAttrRange.getNumText();//将编码属性域值转换成集团对应的域值
            }
        }
        if(jmetadatatype==1){//1 å­—符型
            return StringUtils.isBlank(value)?"":value;
        }else if(jmetadatatype==2){//2 æ•´åž‹
            return StringUtils.isBlank(value)?null:Integer.parseInt(value);
        }else if(jmetadatatype==3){//3 é•¿æ•´åž‹
            return StringUtils.isBlank(value)?null:Long.parseLong(value);
        }else if(jmetadatatype==4){//4 å•精度,
            return StringUtils.isBlank(value)?null:Float.parseFloat(value);
        }else if(jmetadatatype==5){// 5 åŒç²¾åº¦
            return StringUtils.isBlank(value)?null:Double.parseDouble(value);
        }else if(jmetadatatype==6){//6 æ—¥æœŸåž‹
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
            if(StringUtils.isBlank(value)) {
                return null;
            }else {
                try {
                    return simpleDateFormat.parse(value);
                } catch (ParseException e) {
                    throw new VciBaseException("date", new String[]{"日期格式转换错误"});
                }
            }
        }else if(jmetadatatype==7){//7 æ—¶é—´åž‹
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
            if(StringUtils.isBlank(value)) {
                return null;
            }else{
                try {
                    return simpleDateFormat.parse(value);
                } catch (ParseException e) {
                    throw new VciBaseException("date", new String[]{"日期格式转换错误"});
                }
            }
        }else    if(jmetadatatype==8){//8 å¸ƒå°”åž‹
            return value;
        }else if(jmetadatatype==9){//9 æ–‡ä»¶,
            return value;
        }else if(jmetadatatype==10){//10复合型
            return value;//符合型是什么东东如何处理
        }
        return value;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreApplyFormWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.vci.ubcs.code.webservice.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.webservice.entity.DockingPreApplyForm;
import com.vci.ubcs.code.webservice.vo.DockingPreApplyFormVO;
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;
/***
 * ç”³è¯·å•包装类
 * @author xiejun
 * @date 2023-05-23
 */
public class DockingPreApplyFormWrapper extends BaseEntityWrapper<DockingPreApplyForm, DockingPreApplyFormVO> {
    public static DockingPreApplyFormWrapper build() {
        return new DockingPreApplyFormWrapper();
    }
    @Override
    public DockingPreApplyFormVO entityVO(DockingPreApplyForm entity) {
        DockingPreApplyFormVO dockingPreApplyFormVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreApplyFormVO.class));
        return dockingPreApplyFormVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreApplyFormVO> entityVOs(Collection<DockingPreApplyForm> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreApplyFormVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreApplyForm> voentitys(Collection<DockingPreApplyFormVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreApplyForm>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreApplyForm voentity( DockingPreApplyFormVO vo) {
        DockingPreApplyForm entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreApplyForm.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreAttrMappingWrapper.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java ÐÞ¸Ä
@@ -1,10 +1,8 @@
package com.vci.ubcs.code.wrapper;
package com.vci.ubcs.code.webservice.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrMappingVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -12,6 +10,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/**
 *集团编码集成属性映射配置包装类
 *
@@ -31,14 +30,15 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrMappings
     * @param entitys
     * @return
     */
    public List<DockingPreAttrMappingVO> entityVOs(Collection<DockingPreAttrMapping> dockingPreAttrMappings) {
    public List<DockingPreAttrMappingVO> entityVOs(Collection<DockingPreAttrMapping> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrMappings)) {
            dockingPreAttrMappings.stream().forEach(dockingPreAttrMapping -> {
                dockingPreAttrMappingVOList.add(entityVO(dockingPreAttrMapping));
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(entity -> {
                dockingPreAttrMappingVOList.add(entityVO(entity));
            });
        }
        return dockingPreAttrMappingVOList;
@@ -46,14 +46,15 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrMappingVOS
     * @param vos
     * @return
     */
    public List<DockingPreAttrMapping> voentitys(Collection<DockingPreAttrMappingVO> dockingPreAttrMappingVOS) {
    public List<DockingPreAttrMapping> voentitys(Collection<DockingPreAttrMappingVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreAttrMapping> dockingPreAttrMappingList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrMappingVOS)) {
            dockingPreAttrMappingVOS.stream().forEach(dockingPreAttrMappingVO -> {
                dockingPreAttrMappingList.add(voentity(dockingPreAttrMappingVO));
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(vo -> {
                dockingPreAttrMappingList.add(voentity(vo));
            });
        }
        return dockingPreAttrMappingList;
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreAttrRangeWrapper.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java ÐÞ¸Ä
@@ -1,11 +1,8 @@
package com.vci.ubcs.code.wrapper;
package com.vci.ubcs.code.webservice.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.entity.DockingPreAttrRange;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
import com.vci.ubcs.code.webservice.entity.DockingPreAttrRange;
import com.vci.ubcs.code.webservice.vo.DockingPreAttrRangeVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
@@ -13,6 +10,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Objects;
/**
 *集团编码分类模型视图属性取值范围包装类
 *
@@ -32,14 +30,16 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrRanges
     * @param entitys
     * @return
     */
    public List<DockingPreAttrRangeVO> entityVOs(Collection<DockingPreAttrRange> dockingPreAttrRanges) {
    public List<DockingPreAttrRangeVO> entityVOs(Collection<DockingPreAttrRange> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrRanges)) {
            dockingPreAttrRanges.stream().forEach(dockingPreAttrRange -> {
                dockingPreAttrRangeVOList.add(entityVO(dockingPreAttrRange));
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(entity -> {
                dockingPreAttrRangeVOList.add(entityVO(entity));
            });
        }
        return dockingPreAttrRangeVOList;
@@ -47,14 +47,15 @@
    /***
     * æ•°ç»„对象转换
     * @param dockingPreAttrRangeVos
     * @param vos
     * @return
     */
    public List<DockingPreAttrRange> voentitys(Collection<DockingPreAttrRangeVO> dockingPreAttrRangeVos) {
    public List<DockingPreAttrRange> voentitys(Collection<DockingPreAttrRangeVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreAttrRange> dockingPreAttrRangeList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrRangeVos)) {
            dockingPreAttrRangeVos.stream().forEach(dockingPreAttrRangeVO -> {
                dockingPreAttrRangeList.add(voentity(dockingPreAttrRangeVO));
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(vo -> {
                dockingPreAttrRangeList.add(voentity(vo));
            });
        }
        return dockingPreAttrRangeList;
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreClassifyWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.vci.ubcs.code.webservice.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.webservice.entity.DockingPreClassify;
import com.vci.ubcs.code.webservice.vo.DockingPreClassifyVO;
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;
/**
 *集团编码分类包装类
 *
 * @author xiejun
 * @since 2023-05-23
 */
public class DockingPreClassifyWrapper extends BaseEntityWrapper<DockingPreClassify, DockingPreClassifyVO> {
    public static DockingPreClassifyWrapper build() {
        return new DockingPreClassifyWrapper();
    }
    @Override
    public DockingPreClassifyVO entityVO(DockingPreClassify entity) {
        DockingPreClassifyVO dockingPreClassifyVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreClassifyVO.class));
        return dockingPreClassifyVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreClassifyVO> entityVOs(Collection<DockingPreClassify> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreClassifyVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreClassify> voentitys(Collection<DockingPreClassifyVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreClassify>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreClassify voentity( DockingPreClassifyVO vo) {
        DockingPreClassify entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreClassify.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreMetaAttrWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.vci.ubcs.code.webservice.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr;
import com.vci.ubcs.code.webservice.vo.DockingPreMetaAttrVO;
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;
/**
 *集团编码申请模型属性包装类
 *
 * @author xiejun
 * @since 2023-05-23
 */
public class DockingPreMetaAttrWrapper extends BaseEntityWrapper<DockingPreMetaAttr, DockingPreMetaAttrVO> {
    public static DockingPreMetaAttrWrapper build() {
        return new DockingPreMetaAttrWrapper();
    }
    @Override
    public DockingPreMetaAttrVO entityVO(DockingPreMetaAttr entity) {
        DockingPreMetaAttrVO dockingPreMetaAttrVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreMetaAttrVO.class));
        return dockingPreMetaAttrVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreMetaAttrVO> entityVOs(Collection<DockingPreMetaAttr> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreMetaAttrVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreMetaAttr> voentitys(Collection<DockingPreMetaAttrVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreMetaAttr>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreMetaAttr voentity( DockingPreMetaAttrVO vo) {
        DockingPreMetaAttr entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreMetaAttr.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/code/webservice/wrapper/DockingPreViewWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.vci.ubcs.code.webservice.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.webservice.entity.DockingPreViewModel;
import com.vci.ubcs.code.webservice.vo.DockingPreViewModelVO;
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;
/**
 *集团编码申请视图包装类
 *
 * @author xiejun
 * @since 2023-05-23
 */
public class DockingPreViewWrapper  extends BaseEntityWrapper<DockingPreViewModel, DockingPreViewModelVO> {
    public static DockingPreViewWrapper build() {
        return new DockingPreViewWrapper();
    }
    @Override
    public DockingPreViewModelVO entityVO(DockingPreViewModel entity) {
        DockingPreViewModelVO dockingPreViewModelVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreViewModelVO.class));
        return dockingPreViewModelVO;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingPreViewModelVO> entityVOs(Collection<DockingPreViewModel> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingPreViewModelVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(dockingPreAttrRange -> {
                vos.add(entityVO(dockingPreAttrRange));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingPreViewModel> voentitys(Collection<DockingPreViewModelVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingPreViewModel>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingPreViewModel voentity( DockingPreViewModelVO vo) {
        DockingPreViewModel entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreViewModel.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/application-dev.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
#服务器端口
server:
  port: 36016
#数据源配置
spring:
  datasource:
    url: ${ubcs.datasource.mdm.dev.url}
    username: ${ubcs.datasource.mdm.dev.username}
    password: ${ubcs.datasource.mdm.dev.password}
#关闭驼峰命名映射
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false
  #集团集成配置信息
docking:
  apply:
    #集团提供的接口地址
    jtInterUrl: http://116.205.176.185:8099
    #系统厂家单位代码
    unitCode: 131460
    #系统标识
    sysName:  410-MDM
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/application-prod.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
#服务器端口
server:
  port: 8107
#数据源配置
spring:
  datasource:
    url: ${ubcs.datasource.mdm.dev.url}
    username: ${ubcs.datasource.mdm.dev.username}
    password: ${ubcs.datasource.mdm.dev.password}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/application-test.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
#服务器端口
server:
  port: 8107
#数据源配置
spring:
  datasource:
    url: ${ubcs.datasource.mdm.dev.url}
    username: ${ubcs.datasource.mdm.dev.username}
    password: ${ubcs.datasource.mdm.dev.password}
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreApplyFormMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml ÐÞ¸Ä
@@ -1,8 +1,8 @@
<?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.DockingPreApplyFormMapper">
<mapper namespace="com.vci.ubcs.code.webservice.mapper.DockingPreApplyFormMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreApplyForm">
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.webservice.entity.DockingPreApplyForm">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
@@ -33,6 +33,10 @@
        <result column="CONTENT" property="content"/>
        <result column="DATAOID" property="dataOid"/>
        <result column="DATABTMNAME" property="dataBtmName"/>
        <result column="MSG" property="msg"/>
        <result column="MSG" property="msg"  />
        <result column="OPERATIONTYPE" property="operationType" />
        <result column="GROUPCODE" property="groupCode" />
    </resultMap>
</mapper>
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreAttrMappingMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml ÐÞ¸Ä
@@ -1,8 +1,8 @@
<?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.DockingPreAttrMappingMapper">
<mapper namespace="com.vci.ubcs.code.webservice.mapper.DockingPreAttrMappingMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrMapping">
    <resultMap id="plDockingPreAttrMappingResultMap" type="com.vci.ubcs.code.webservice.entity.DockingPreAttrMapping">
            <result column="OID" property="oid"/>
            <result column="REVISIONOID" property="revisionOid"/>
            <result column="NAMEOID" property="nameOid"/>
@@ -36,7 +36,7 @@
            <result column="TARGETATTRID" property="targetAttrId"/>
            <result column="TARGETCLSFID" property="targetClassifyId"/>
            <result column="VIEWMODEID" property="viewModeId"/>
            <result column="VIEWMODENAME" property="viewModeName"/>
            <result column="VIEWMODENAME" property="viewModelName"/>
            <result column="TARGETATTRKEY" property="targetAttrKey"/>
            <result column="TARGETATTRNAME" property="targetAttrName"/>
            <result column="SOURCEATTRKEY" property="sourceAttrKey"/>
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreAttrRangeMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml ÐÞ¸Ä
@@ -1,8 +1,8 @@
<?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.DockingPreAttrRangeMapper">
<mapper namespace="com.vci.ubcs.code.webservice.mapper.DockingPreAttrRangeMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrRange">
    <resultMap id="plDockingPreAttrRangeResultMap" type="com.vci.ubcs.code.webservice.entity.DockingPreAttrRange">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreClassifyMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
<?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.webservice.mapper.DockingPreClassifyMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="plDockingClassifyResultMap" type="com.vci.ubcs.code.webservice.entity.DockingPreClassify">
        <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="CLASSNAME" property="className"/>
        <result column="NODELINK" property="nodeLink"/>
        <result column="NODELINKNAME" property="getNodeLinkName"/>
        <result column="PID" property="pid"/>
    </resultMap>
    <select id="selectCompanyGroupClassifyVOByTree" resultMap="plDockingClassifyResultMap">
        select codeclassify0.OID                 as oid,
        codeclassify0.REVISIONOID             as revisionoid,
        codeclassify0.NAMEOID              as nameOid,
        codeclassify0.BTMNAME            as btmname,
        codeclassify0.LASTR          as lastr,
        codeclassify0.FIRSTR              as firstr,
        codeclassify0.LASTV           as lastv,
        codeclassify0.FIRSTV           as firstv,
        codeclassify0.CREATOR           as creator,
        codeclassify0.CREATETIME           as createtime,
        codeclassify0.LASTMODIFIER           as lastmodifier,
        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
        codeclassify0.REVISIONRULE        as revisionrule,
        codeclassify0.VERSIONRULE        as versionrule,
        codeclassify0.REVISIONSEQ        as revisionseq,
        codeclassify0.REVISIONVALUE        as revisionvalue,
        codeclassify0.VERSIONSEQ        as versionseq,
        codeclassify0.VERSIONVALUE        as versionvalue,
        codeclassify0.LCTID        as lctid,
        codeclassify0.LCSTATUS              as lcstatus,
        codeclassify0.OID                   as oid,
        codeclassify0.TS                    as ts,
        codeclassify0.DESCRIPTION           as description,
        codeclassify0.OWNER                 as owner,
        codeclassify0.COPYFROMVERSION       as copyfromversion,
        codeclassify0.ID                    as id,
        codeclassify0.NAME                  as name,
        codeclassify0.CLASSNAME               as classname,
        codeclassify0.NODELINK   as nodelink,
        codeclassify0.NODELINKNAME   as nodelinkname,
        codeclassify0.PID   as pid
        from PL_CODE_JCLASSIFY codeclassify0
        <!--<where>-->
            <if test="oid != null and oid != ''">
                start with
                    codeclassify0.pid = '${oid}'
                connect by prior codeclassify0.oid =codeclassify0.pid
            </if>
          <!--  <if test="oid = null">
                codeclassify0.pid is null
            </if>-->
        <!--</where>-->
        order by id asc
    </select>
    <select id="checkHasChild" resultType="java.lang.Boolean">
        select count(oid) from PL_CODE_JCLASSIFY  where pid = #{oid}
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreMetaAttrMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml ÐÞ¸Ä
@@ -1,8 +1,8 @@
<?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.DockingPreMetaAttrMapper">
<mapper namespace="com.vci.ubcs.code.webservice.mapper.DockingPreMetaAttrMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreMetaAttr">
    <resultMap id="plDockingPreMetaAttrResultMap" type="com.vci.ubcs.code.webservice.entity.DockingPreMetaAttr">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-webservice/src/main/resources/mapper/DockingPreViewMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml ÐÞ¸Ä
@@ -1,8 +1,8 @@
<?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.DockingPreViewModelMapper">
<mapper namespace="com.vci.ubcs.code.webservice.mapper.DockingPreViewModelMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreViewModel">
    <resultMap id="plDockingPreViewModelResultMap" type="com.vci.ubcs.code.webservice.entity.DockingPreViewModel">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/data/applogs/xxl-job/xxl-job-admin.log
ÎļþÌ«´ó
Source/data/applogs/xxl-job/xxl-job-admin.log.2023-05-20.zip
Binary files differ
Source/data/applogs/xxl-job/xxl-job-admin.log.2023-05-26.zip
Binary files differ
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log
@@ -1,13 +1,93 @@
2023-05-20 00:08:12,304 INFO [nacos-grpc-client-executor-localhost-1081] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [3e635850-c2bd-4d08-b6fd-e5343c60783f] Receive server push request, request = ClientDetectionRequest, requestId = 140
2023-05-20 00:08:12,403 INFO [nacos-grpc-client-executor-localhost-1081] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [3e635850-c2bd-4d08-b6fd-e5343c60783f] Ack server push request, request = ClientDetectionRequest, requestId = 140
2023-05-20 00:48:54,086 WARN [XNIO-1 task-2] o.s.b.a.health.HealthEndpointSupport [HealthEndpointSupport.java : 181] Health contributor org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$AdaptedReactiveHealthContributors$1 (redis) took 336256ms to respond
2023-05-20 00:48:54,145 INFO [lettuce-eventExecutorLoop-1-15] i.l.core.protocol.ConnectionWatchdog [AbstractInternalLogger.java : 171] Reconnecting, last destination was /1.12.225.193:6379
2023-05-20 00:48:54,382 INFO [lettuce-nioEventLoop-6-3] i.l.c.protocol.ReconnectionHandler [ReconnectionHandler.java : 174] Reconnected to 1.12.225.193:6379
2023-05-20 00:48:56,127 INFO [nacos-grpc-client-executor-localhost-1093] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [c279855f-5634-4159-84ec-09347150fd37_config-0] Receive server push request, request = ClientDetectionRequest, requestId = 172
2023-05-20 00:48:56,130 INFO [nacos-grpc-client-executor-localhost-1084] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [3e635850-c2bd-4d08-b6fd-e5343c60783f] Receive server push request, request = ClientDetectionRequest, requestId = 176
2023-05-20 00:48:56,130 INFO [nacos-grpc-client-executor-localhost-1084] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [3e635850-c2bd-4d08-b6fd-e5343c60783f] Ack server push request, request = ClientDetectionRequest, requestId = 176
2023-05-20 00:48:56,131 INFO [nacos-grpc-client-executor-localhost-1093] c.alibaba.nacos.common.remote.client [LoggerUtils.java : 60] [c279855f-5634-4159-84ec-09347150fd37_config-0] Ack server push request, request = ClientDetectionRequest, requestId = 172
2023-05-20 00:49:14,980 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -31,8 +111,11 @@
    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-20 00:49:14,981 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-20 00:49:47,005 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -56,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-20 00:49:47,006 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-20 00:50:19,032 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -81,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-20 00:50:19,032 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-20 00:50:51,094 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -106,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-20 00:50:51,095 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-20 00:51:23,130 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -131,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-20 00:51:23,133 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-20 00:51:55,163 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -156,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-20 00:51:55,165 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-20 00:52:27,195 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -181,8 +264,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-20 00:52:27,196 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-20 00:52:59,238 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -206,8 +289,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-20 00:52:59,242 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-20 00:53:31,298 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -231,8 +314,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-20 00:53:31,299 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-20 00:54:03,322 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -256,8 +339,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-20 00:54:03,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-20 00:54:35,368 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -281,8 +364,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-20 00:54:35,369 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-20 00:55:07,411 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -306,8 +389,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-20 00:55:07,412 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-20 00:55:39,458 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -331,8 +414,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-20 00:55:39,462 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-20 00:56:11,496 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -356,8 +439,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-20 00:56:11,502 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-20 00:56:43,536 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -381,8 +464,12 @@
    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-20 00:56:43,537 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-20 00:57:15,582 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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)
@@ -406,339 +493,10 @@
    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-20 00:57:15,582 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-20 00:57:47,623 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-20 00:57:47,625 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-20 00:58:19,669 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-20 00:58:19,670 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-20 00:58:51,705 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-20 00:58:51,707 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-20 00:59:23,734 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-20 00:59:23,739 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-20 00:59:55,791 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-20 00:59:55,792 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-20 01:00:27,825 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-20 01:00:27,826 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-20 01:00:59,876 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-20 01:00:59,881 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-20 01:01:31,905 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-20 01:01:31,906 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-20 01:02:03,944 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-20 01:02:03,946 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-20 01:02:35,966 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-20 01:02:35,967 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-20 01:03:08,011 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-20 01:03:08,012 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-20 01:03:40,042 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-20 01:03:40,043 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-20 01:04:12,084 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-20 01:04:12,085 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-20 01:04:26,066 WARN [Thread-11] c.a.nacos.common.notify.NotifyCenter [NotifyCenter.java : 136] [NotifyCenter] Start destroying Publisher
2023-05-20 01:04:26,066 WARN [Thread-3] c.a.n.c.http.HttpClientBeanHolder [HttpClientBeanHolder.java : 108] [HttpClientBeanHolder] Start destroying common HttpClient
2023-05-20 01:04:26,068 WARN [Thread-11] c.a.nacos.common.notify.NotifyCenter [NotifyCenter.java : 153] [NotifyCenter] Destruction of the end
2023-05-20 01:04:26,074 WARN [Thread-3] c.a.n.c.http.HttpClientBeanHolder [HttpClientBeanHolder.java : 114] [HttpClientBeanHolder] Destruction of the end
2023-05-20 01:04:26,353 INFO [SpringApplicationShutdownHook] io.undertow [Undertow.java : 259] stopping server: Undertow - 2.2.18.Final
2023-05-20 01:04:26,453 INFO [SpringApplicationShutdownHook] io.undertow.servlet [ServletContextImpl.java : 382] Destroying Spring FrameworkServlet 'dispatcherServlet'
2023-05-20 01:04:26,471 ERROR [SpringApplicationShutdownHook] c.a.cloud.nacos.discovery.NacosWatch [NacosWatch.java : 180] namingService unsubscribe failed, properties:NacosDiscoveryProperties{serverAddr='localhost: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-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}
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)
@@ -762,8 +520,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-20 01:04:26,486 INFO [Thread-52] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 74] >>>>>>>>>>> xxl-rpc remoting server stop.
2023-05-20 01:04:28,532 ERROR [xxl-job, executor ExecutorRegistryThread] c.x.job.core.util.XxlJobRemotingUtil [XxlJobRemotingUtil.java : 146] Connection refused: connect
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
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
@@ -787,36 +545,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-20 01:04:28,533 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-20 01:04:28,533 INFO [xxl-job, executor ExecutorRegistryThread] c.x.j.c.t.ExecutorRegistryThread [ExecutorRegistryThread.java : 105] >>>>>>>>>>> xxl-job, executor registry thread destory.
2023-05-20 01:04:28,534 INFO [SpringApplicationShutdownHook] com.xxl.rpc.remoting.net.Server [NettyHttpServer.java : 110] >>>>>>>>>>> xxl-rpc remoting server destroy success.
2023-05-20 01:04:28,539 INFO [xxl-job, executor TriggerCallbackThread] c.x.j.c.thread.TriggerCallbackThread [TriggerCallbackThread.java : 96] >>>>>>>>>>> xxl-job, executor callback thread destory.
2023-05-20 01:04:28,539 INFO [Thread-51] c.x.j.c.thread.TriggerCallbackThread [TriggerCallbackThread.java : 126] >>>>>>>>>>> xxl-job, executor retry callback thread destory.
2023-05-20 01:04:28,567 INFO [SpringApplicationShutdownHook] c.a.c.n.r.NacosServiceRegistry [NacosServiceRegistry.java : 94] De-registering from Nacos Server now...
2023-05-20 01:04:28,572 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-20 01:04:28,575 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 255] com.alibaba.nacos.client.naming.cache.ServiceInfoHolder do shutdown begin
2023-05-20 01:04:28,576 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [FailoverReactor.java : 140] com.alibaba.nacos.client.naming.backups.FailoverReactor do shutdown begin
2023-05-20 01:04:28,577 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [FailoverReactor.java : 142] com.alibaba.nacos.client.naming.backups.FailoverReactor do shutdown stop
2023-05-20 01:04:28,577 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoHolder.java : 257] com.alibaba.nacos.client.naming.cache.ServiceInfoHolder do shutdown stop
2023-05-20 01:04:28,577 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 182] com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate do shutdown begin
2023-05-20 01:04:28,578 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoUpdateService.java : 130] com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService do shutdown begin
2023-05-20 01:04:28,911 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServiceInfoUpdateService.java : 132] com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService do shutdown stop
2023-05-20 01:04:28,912 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServerListManager.java : 192] com.alibaba.nacos.client.naming.core.ServerListManager do shutdown begin
2023-05-20 01:04:28,913 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 74] [NamingHttpClientManager] Start destroying NacosRestTemplate
2023-05-20 01:04:28,913 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 81] [NamingHttpClientManager] Destruction of the end
2023-05-20 01:04:28,913 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [ServerListManager.java : 197] com.alibaba.nacos.client.naming.core.ServerListManager do shutdown stop
2023-05-20 01:04:28,914 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientProxy.java : 527] com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy do shutdown begin
2023-05-20 01:04:28,914 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [BeatReactor.java : 162] com.alibaba.nacos.client.naming.beat.BeatReactor do shutdown begin
2023-05-20 01:04:28,914 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [BeatReactor.java : 164] com.alibaba.nacos.client.naming.beat.BeatReactor do shutdown stop
2023-05-20 01:04:28,914 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 74] [NamingHttpClientManager] Start destroying NacosRestTemplate
2023-05-20 01:04:28,914 WARN [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientManager.java : 81] [NamingHttpClientManager] Destruction of the end
2023-05-20 01:04:28,914 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingHttpClientProxy.java : 530] com.alibaba.nacos.client.naming.remote.http.NamingHttpClientProxy do shutdown stop
2023-05-20 01:04:28,915 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 453] Shutdown rpc client, set status to shutdown
2023-05-20 01:04:28,915 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 455] Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@20397823[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
2023-05-20 01:04:28,916 INFO [SpringApplicationShutdownHook] c.alibaba.nacos.common.remote.client [RpcClient.java : 592] Close current connection 1684500039323_127.0.0.1_55961
2023-05-20 01:04:28,920 INFO [nacos-grpc-client-executor-localhost-1279] c.a.n.c.r.client.grpc.GrpcClient [LoggerUtils.java : 60] [1684500039323_127.0.0.1_55961]Ignore complete event,isRunning:false,isAbandon=false
2023-05-20 01:04:28,934 INFO [SpringApplicationShutdownHook] c.a.n.c.r.client.grpc.GrpcClient [GrpcClient.java : 129] Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@389f1783[Running, pool size = 4, active threads = 0, queued tasks = 0, completed tasks = 1280]
2023-05-20 01:04:28,935 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingGrpcRedoService.java : 267] Shutdown grpc redo service executor java.util.concurrent.ScheduledThreadPoolExecutor@510facf0[Running, pool size = 1, active threads = 0, queued tasks = 1, completed tasks = 2052]
2023-05-20 01:04:28,935 INFO [SpringApplicationShutdownHook] c.a.n.c.a.r.i.CredentialWatcher [CredentialWatcher.java : 105] [null] CredentialWatcher is stopped
2023-05-20 01:04:28,936 INFO [SpringApplicationShutdownHook] c.a.n.c.a.r.i.CredentialService [CredentialService.java : 99] [null] CredentialService is freed
2023-05-20 01:04:28,936 INFO [SpringApplicationShutdownHook] com.alibaba.nacos.client.naming [NamingClientProxyDelegate.java : 189] com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate do shutdown stop
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
在上述文件截断后对比
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log.2023-05-20.zip Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log.2023-05-26.zip