From 82a410d9ec7a5d15eed27e9990cff371feab43a1 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 27 三月 2023 18:25:38 +0800
Subject: [PATCH] 新增编码规则服务
---
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java | 62
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateMapVO.java | 96
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataDaoImpl.java | 213
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntAuthorityDTO.java | 124
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeDefaultLC.java | 159
Source/BladeX/blade-service/blade-code/src/main/resources/application-dev.yml | 94
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTempMapItemController.java | 115
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeButtonDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntInfoDaoImpl.java | 212
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxxxxxxxx.json | 75
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyValueDO.java | 108
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateButtonDaoI.java | 127
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeBasicSecDaoI.java | 148
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeCutTypeEnum.java | 135
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeResembleRuleDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessTempDO.java | 169
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsErpClientUtil.java | 59
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeRuleVO.java | 72
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDataVO.java | 119
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java | 342
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSynonymVO.java | 103
Source/BladeX/blade-service/blade-code/pom.xml | 145
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeKeyAttrRepeatRuleDaoI.java | 148
Source/BladeX/blade-service/blade-code/src/main/resources/application.yml | 7
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java | 73
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/result.json | 10
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingServiceI.java | 89
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java | 261
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataDTO.java | 244
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyValueVO.java | 133
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeButtonUseEnum.java | 140
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDO.java | 26
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyDaoImpl.java | 517
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderSecDTO.java | 44
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateDO.java | 93
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataAttributeVO.java | 112
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDatasVO.java | 27
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodePhaseAttrDO.java | 93
Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml | 1
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeFixedValueDaoI.java | 127
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyProcessTempVO.java | 167
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionsVO.java | 26
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeRuleDO.java | 79
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateButtonServiceI.java | 133
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeApplySyncController.java | 169
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateAttrDTO.java | 1053 +
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeObjectDTO.java | 70
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/EnumVO.java | 25
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEnumIdConstant.java | 78
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingScheduling.java | 56
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyValueDaoImpl.java | 254
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSerialAlgorithmServiceI.java | 18
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateButtonDTO.java | 155
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateMapServiceImpl.java | 275
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java | 170
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyServiceImpl.java | 1019 +
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntParamDTO.java | 81
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/appcode.xml | 36
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodePhaseAttrDTO.java | 64
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithm.java | 37
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateAttrController.java | 165
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java | 11
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyProcessTempServiceI.java | 124
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeFixedValueServiceI.java | 124
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/tt.xml | 18
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateController.java | 191
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrMappingDTO.java | 200
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/LibraryVO.java | 49
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImProtRusultVO.java | 41
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyDaoI.java | 232
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeBasicSecDaoImpl.java | 268
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/result.json | 135
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeRuleDTO.java | 40
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeDataDTO.java | 24
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyController.java | 255
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateButtonDO.java | 135
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateMapDO.java | 114
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeTemplatePhaseServiceI.java | 138
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingDataSyncScheduling.java | 56
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeTemplatePhaseDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeGetValueTypeEnum.java | 130
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeKeyAttrRepeatRuleServiceI.java | 115
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotSaveDatVO.java | 55
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeTemplatePhaseDO.java | 81
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultSystemVO.java | 61
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodePhaseAttrDaoImpl.java | 244
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeAllCodeDaoImpl.java | 244
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSynonymServiceI.java | 101
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecLengthTypeEnum.java | 130
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeFixedValueDO.java | 93
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionVO.java | 60
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryClassifyVO.java | 23
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java | 726
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/PreApplyCodeOrderDTO.java | 106
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMap.java | 28
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeButtonServiceI.java | 115
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTempMapItemDTO.java | 184
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateServiceImpl.java | 1084 +
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMapMethod.java | 24
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryLibraryVO.java | 39
Source/BladeX/blade-service-api/blade-code-api/pom.xml | 66
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/tt.json | 62
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/UpdateSysInfoStatusDTO.java | 40
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntHeaderDaoImpl.java | 258
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSerialAlgorithmController.java | 34
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultJsonDTO.java | 21
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeUseButtonPositionTypeEnum.java | 130
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTempMapItemDO.java | 181
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlUtil.java | 769
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeTemplateAttrSqlBO.java | 132
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/classify.xml | 14
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeDuckingController.java | 286
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeKeyAttrRepeatRuleDTO.java | 99
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingLogeDTO.java | 179
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeResembleRuleDO.java | 137
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/HttpUtils.java | 194
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecTypeEnum.java | 157
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java | 212
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntAuthorityDaoImpl.java | 212
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeRuleServiceImpl.java | 679
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingDataDaoImpl.java | 212
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeRuleController.java | 166
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLifeCycleConstant.java | 26
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java | 19
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyProcessTempDTO.java | 152
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessPhaseDO.java | 127
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTempMapItemServiceI.java | 101
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithmMethod.java | 23
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTempMapItemVO.java | 210
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataVO.java | 19
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeFixedValueServiceImpl.java | 375
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeClassifyDTO.java | 112
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmDuckingConstant.java | 146
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeImprotDataGridVO.java | 4
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/update.json | 111
Source/BladeX/blade-service/blade-code/src/main/resources/application-prod.yml | 74
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodedataDTO.java | 27
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyValueController.java | 146
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeRuleDaoI.java | 155
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/po/CodeClassifyPO.java | 169
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeButtonDTO.java | 85
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyProcessTempDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeRuleDaoImpl.java | 273
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEngineConstant.java | 105
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeButtonController.java | 137
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSerialAlgorithmVO.java | 72
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmBtmTypeConstant.java | 169
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyProcessTempDaoImpl.java | 244
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeTemplatePhaseDTO.java | 80
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ProppertyVO.java | 56
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSynonymDO.java | 121
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionVO.java | 42
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSerialValueDaoI.java | 127
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSerialAlgorithmServiceImpl.java | 61
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingLogeDaoImpl.java | 213
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/clsfAttrMap.xml | 54
Source/BladeX/blade-service/pom.xml | 1
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoBseDTO.java | 46
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/CodeApplication.java | 36
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyProcessTempController.java | 130
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeKeyAttrRepeatRuleController.java | 116
Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java | 27
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeFixedValueController.java | 142
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderDTO.java | 92
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotDataVO.java | 132
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTempMapItemServiceImpl.java | 295
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfysVO.java | 21
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataInfoDTO.java | 126
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlData.java | 143
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeAllCodeDO.java | 168
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingTaskDaoImpl.java | 212
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeDataDTO.java | 28
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingDataDTO.java | 120
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxx.json | 24
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/xx.xml | 9
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingSyncServiceImpl.java | 630
Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java | 5
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/algorithm/CustomSerialAlgorithmExample.java | 20
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/GeneralMappingUtil.java | 30
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/gennerAttrMapUtil.java | 45
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfyVO.java | 83
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateMapServiceI.java | 100
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultVO.java | 21
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeClassifyFullInfoBO.java | 66
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLinkTypeConstant.java | 13
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeCompPreviewDTO.java | 42
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/RootDataVO.java | 58
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryData.java | 45
Source/BladeX/blade-service-api/pom.xml | 1
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeAllCodeDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateDaoI.java | 169
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTempMapItemDaoI.java | 127
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeFixedValueVO.java | 83
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeSynonymDTO.java | 104
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyVO.java | 263
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ClassifyVO.java | 112
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntBaseDTO.java | 26
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultDataVO.java | 47
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java | 8
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateDaoImpl.java | 319
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeTemplatePhaseController.java | 137
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeClassifyProcessUseEnum.java | 150
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeAllCodeLC.java | 165
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateAttrDO.java | 858 +
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsAxis2ClientUtil.java | 59
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java | 212
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeResembleRuleServiceI.java | 101
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateServiceI.java | 200
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/UserVO.java | 56
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/DateUtils.java | 527
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingSyncServiceI.java | 48
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/InterParameterVO.java | 21
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeBasicSecServiceI.java | 186
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultClassifyVO.java | 21
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/PropertyVO.java | 48
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeButtonDaoImpl.java | 244
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSynonymServiceImpl.java | 275
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java | 1071 +
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingTaskDTO.java | 197
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrMappingDaoImpl.java | 202
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java | 1
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/xxx.json | 68
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeBasicSecDO.java | 728
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeBasicSecServiceImpl.java | 831 +
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSerialValueDO.java | 88
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeExportAttrDTO.java | 134
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataObjectVO.java | 24
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeButtonVO.java | 98
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java | 212
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Json2XmlUtil.java | 121
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeDeleteBatchDTO.java | 49
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateMapDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeResembleRuleController.java | 115
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyServiceI.java | 240
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntParamDaoImpl.java | 257
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeKeyAttrRepeatRuleDO.java | 120
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/AttributeMapConfig.java | 33
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeBasicSecDTO.java | 669
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfysVO.java | 30
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java | 380
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeRuleLC.java | 144
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultSystemVO.java | 52
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeResembleRuleDTO.java | 118
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryClsfDO.java | 42
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/BackXml.java | 42
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateButtonController.java | 115
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportTemplateVO.java | 42
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeObjectDTO.java | 71
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionsVO.java | 48
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/JsonRootDataDTO.java | 21
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataCondtionsVO.java | 20
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyDO.java | 276
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodePhaseAttrVO.java | 77
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultClassfyVO.java | 60
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyDTO.java | 226
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSynonymController.java | 115
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateMapController.java | 115
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/tt.xml | 20
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodePhaseAttrServiceI.java | 107
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoDTO.java | 664
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeLibraryDTO.java | 50
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeJosnDTO.java | 21
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodePhaseAttrServiceImpl.java | 299
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java | 213
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrRangeDTO.java | 82
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodePhaseAttrController.java | 115
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportResultVO.java | 123
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotResembleVO.java | 66
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeTemplatePhaseVO.java | 83
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/RowDatas.java | 125
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeButtonDO.java | 125
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyValueServiceImpl.java | 479
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeLevelTypeEnum.java | 135
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateDTO.java | 104
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateVO.java | 105
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/data.json | 137
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeResembleRuleServiceImpl.java | 277
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryDO.java | 33
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSynonymDaoI.java | 127
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeBasicSecVO.java | 651
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeButtonServiceImpl.java | 322
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeTemplatePhaseServiceImpl.java | 506
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyProcessTempServiceImpl.java | 356
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotParmaDatVO.java | 41
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultData.java | 45
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeFixedValueDaoImpl.java | 219
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntBaseDaoImpl.java | 212
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingServiceImpl.java | 1103 +
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfyVO.java | 49
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateAttrServiceI.java | 133
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeRuleServiceI.java | 175
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeImprotDataDTO.java | 66
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/data.xml | 218
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Pro.java | 40
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeFixedValueDTO.java | 84
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntHeaderDTO.java | 80
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeResembleRuleVO.java | 119
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeClassifyTemplateLC.java | 144
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/PatternUtil.java | 49
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java | 98
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataObjectVO.java | 72
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyValueDaoI.java | 147
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeResembleRuleDaoImpl.java | 244
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyValueDTO.java | 104
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodePhaseAttrDaoI.java | 141
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java | 244
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeProDTO.java | 47
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeTemplatePhaseDaoImpl.java | 244
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateAttrDaoI.java | 127
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeBasicSecController.java | 190
Source/BladeX/blade-ops/blade-flow/src/main/resources/mapper/FlowMapper.xml | 53
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyValueServiceI.java | 152
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeMapRuleTypeEnum.java | 145
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateMapDTO.java | 96
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSynonymDaoImpl.java | 212
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java | 62
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingClassSyncScheduling.java | 56
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrRangeDaoImpl.java | 202
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyAttributeVO.java | 63
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataVO.java | 19
Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSerialValueDaoImpl.java | 212
Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/classfy.json | 18
322 files changed, 49,518 insertions(+), 48 deletions(-)
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/resources/mapper/FlowMapper.xml b/Source/BladeX/blade-ops/blade-flow/src/main/resources/mapper/FlowMapper.xml
new file mode 100644
index 0000000..a7af970
--- /dev/null
+++ b/Source/BladeX/blade-ops/blade-flow/src/main/resources/mapper/FlowMapper.xml
@@ -0,0 +1,53 @@
+<?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="org.springblade.flow.engine.mapper.FlowMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="flowModelResultMap" type="org.springblade.flow.engine.entity.FlowModel">
+ <result column="id" property="id"/>
+ <result column="name" property="name"/>
+ <result column="model_key" property="modelKey"/>
+ <result column="description" property="description"/>
+ <result column="model_comment" property="modelComment"/>
+ <result column="created" property="created"/>
+ <result column="created_by" property="createdBy"/>
+ <result column="last_updated" property="lastUpdated"/>
+ <result column="last_updated_by" property="lastUpdatedBy"/>
+ <result column="version" property="version"/>
+ <result column="model_editor_json" property="modelEditorJson"/>
+ <result column="thumbnail" property="thumbnail"/>
+ <result column="model_type" property="modelType"/>
+ <result column="tenant_id" property="tenantId"/>
+ </resultMap>
+
+ <select id="selectFlowPage" resultMap="flowModelResultMap">
+ SELECT
+ a.id,
+ a.name,
+ a.model_key,
+ a.description,
+ a.model_comment,
+ a.created,
+ a.created_by,
+ a.last_updated,
+ a.last_updated_by,
+ a.version,
+ a.model_editor_json,
+ a.thumbnail,
+ a.model_type,
+ a.tenant_id
+ FROM
+ ACT_DE_MODEL a
+ WHERE
+ 1 = 1
+ ORDER BY
+ a.created DESC
+ </select>
+
+ <select id="findByParentModelId" parameterType="string" resultMap="flowModelResultMap">
+ select model.* from ACT_DE_MODEL_RELATION modelrelation
+ inner join ACT_DE_MODEL model on modelrelation.model_id = model.id
+ where modelrelation.parent_model_id = #{_parameter}
+ </select>
+
+</mapper>
diff --git a/Source/BladeX/blade-service-api/blade-code-api/pom.xml b/Source/BladeX/blade-service-api/blade-code-api/pom.xml
new file mode 100644
index 0000000..40bedd7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/pom.xml
@@ -0,0 +1,66 @@
+<?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>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-service-api</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <artifactId>blade-code-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-starter-web</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-starter-poi</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-platform-web</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-platform-webservice</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.vci.mdm</groupId>
+ <artifactId>vci-mdm-wrj-webducking</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>de.odysseus.staxon</groupId>
+ <artifactId>staxon</artifactId>
+ <version>1.3</version>
+ </dependency>
+ </dependencies>
+ <packaging>jar</packaging>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <maven.compiler.source>8</maven.compiler.source>
+ <maven.compiler.target>8</maven.compiler.target>
+ </properties>
+
+</project>
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeClassifyFullInfoBO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeClassifyFullInfoBO.java
new file mode 100644
index 0000000..8f20b14
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeClassifyFullInfoBO.java
@@ -0,0 +1,66 @@
+package org.springblade.code.bo;
+
+import org.springblade.code.vo.pagemodel.CodeClassifyVO;
+
+import java.util.List;
+
+/**
+ * 涓婚搴撳垎绫荤浉鍏崇殑鍏ㄩ儴淇℃伅
+ * @author weidy
+ * @date 2022-2-25
+ */
+public class CodeClassifyFullInfoBO implements java.io.Serializable{
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 7416865011120729907L;
+ /**
+ * 涓婄骇鐨勫垎绫�
+ */
+ private List<CodeClassifyVO> parentClassifyVOs;
+
+ /**
+ * 椤跺眰鍒嗙被
+ */
+ private CodeClassifyVO topClassifyVO;
+
+ /**
+ * 褰撳墠鍒嗙被鐨勪俊鎭�
+ */
+ private CodeClassifyVO currentClassifyVO;
+
+
+ public List<CodeClassifyVO> getParentClassifyVOs() {
+ return parentClassifyVOs;
+ }
+
+ public void setParentClassifyVOs(List<CodeClassifyVO> parentClassifyVOs) {
+ this.parentClassifyVOs = parentClassifyVOs;
+ }
+
+ public CodeClassifyVO getTopClassifyVO() {
+ return topClassifyVO;
+ }
+
+ public void setTopClassifyVO(CodeClassifyVO topClassifyVO) {
+ this.topClassifyVO = topClassifyVO;
+ }
+
+ public CodeClassifyVO getCurrentClassifyVO() {
+ return currentClassifyVO;
+ }
+
+ public void setCurrentClassifyVO(CodeClassifyVO currentClassifyVO) {
+ this.currentClassifyVO = currentClassifyVO;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyFullInfo{" +
+ "parentClassifyVOs=" + parentClassifyVOs +
+ ", topClassifyVO=" + topClassifyVO +
+ ", currentClassifyVO=" + currentClassifyVO +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeTemplateAttrSqlBO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeTemplateAttrSqlBO.java
new file mode 100644
index 0000000..5c26424
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeTemplateAttrSqlBO.java
@@ -0,0 +1,132 @@
+package org.springblade.code.bo;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 妯℃澘灞炴�х殑Sql
+ * @author weidy
+ * @date 2022-04-11
+ */
+public class CodeTemplateAttrSqlBO implements java.io.Serializable{
+
+ /**
+ * 琛ㄥ悕
+ */
+ private String tableName;
+
+ /**
+ * 鏄电О
+ */
+ private String nickName;
+
+ /**
+ * 鍏宠仈鐨勮〃
+ */
+ private Map<String/**灞炴�у瓧娈�**/,String> joinTable;
+
+ /**
+ * 鍒嗛〉瀵硅薄
+ */
+ private PageHelper pageHelper;
+
+ /**
+ * 鍖呭惈鍒嗛〉鐨剆ql璇彞
+ */
+ private String sqlHasPage;
+
+ /**
+ * 涓嶅寘鍚垎椤电殑sql璇彞
+ */
+ private String sqlUnPage;
+
+ /**
+ * 鏌ヨ鎬绘暟鐨凷ql璇彞
+ */
+ private String sqlCount;
+
+ /**
+ * 鏈鏌ヨ鐨勫瓧娈�
+ */
+ private List<String> selectFieldList;
+
+ public String getTableName() {
+ return tableName;
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ public String getNickName() {
+ return nickName;
+ }
+
+ public void setNickName(String nickName) {
+ this.nickName = nickName;
+ }
+
+ public Map<String, String> getJoinTable() {
+ return joinTable;
+ }
+
+ public void setJoinTable(Map<String, String> joinTable) {
+ this.joinTable = joinTable;
+ }
+
+ public PageHelper getPageHelper() {
+ return pageHelper;
+ }
+
+ public void setPageHelper(PageHelper pageHelper) {
+ this.pageHelper = pageHelper;
+ }
+
+ public String getSqlHasPage() {
+ return sqlHasPage;
+ }
+
+ public void setSqlHasPage(String sqlHasPage) {
+ this.sqlHasPage = sqlHasPage;
+ }
+
+ public String getSqlUnPage() {
+ return sqlUnPage;
+ }
+
+ public void setSqlUnPage(String sqlUnPage) {
+ this.sqlUnPage = sqlUnPage;
+ }
+
+ public String getSqlCount() {
+ return sqlCount;
+ }
+
+ public void setSqlCount(String sqlCount) {
+ this.sqlCount = sqlCount;
+ }
+
+ public List<String> getSelectFieldList() {
+ return selectFieldList;
+ }
+
+ public void setSelectFieldList(List<String> selectFieldList) {
+ this.selectFieldList = selectFieldList;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeTemplateAttrSqlBO{" +
+ "tableName='" + tableName + '\'' +
+ ", nickName='" + nickName + '\'' +
+ ", joinTable=" + joinTable +
+ ", pageHelper=" + pageHelper +
+ ", sqlHasPage='" + sqlHasPage + '\'' +
+ ", sqlUnPage='" + sqlUnPage + '\'' +
+ ", sqlCount='" + sqlCount + '\'' +
+ ", selectFieldList=" + selectFieldList +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeBasicSecDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeBasicSecDTO.java
new file mode 100644
index 0000000..d968aca
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeBasicSecDTO.java
@@ -0,0 +1,669 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeBasicSecDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117949969514L;
+
+ /**
+ * 鐮佹绫诲瀷
+ */
+ private String sectype;
+
+ /**
+ * 鐮佹绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String sectypeText;
+
+ /**
+ * 缂栫爜瑙勫垯涓婚敭
+ */
+ private String pkCodeRule;
+
+ /**
+ * 鐮佹鎺掑簭鍙�
+ */
+ private Integer orderNum;
+
+ /**
+ * 寮曠敤鐨勪笟鍔$被鍨�
+ */
+ private String referBtmId;
+
+ /**
+ * 寮曠敤鐨勪笟鍔$被鍨嬪悕绉�
+ */
+ private String referBtmName;
+
+ /**
+ * 寮曠敤鐨勫睘鎬х殑鏂囨湰
+ */
+ private String referAttributeName;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ private String referAttributeId;
+
+ /**
+ * 鍙栧�艰鍒�
+ */
+ private String getValueClass ;
+
+ //鍓嶇杈撳叆鍚庤嚜鍔ㄥ姞鍏ュ埌鏋氫妇涓�
+ /**
+ * 鏃ユ湡鏍煎紡
+ */
+ private String codeDateFormatStr;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷
+ */
+ private String codeSecLengthType;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String codeSecLengthTypeText;
+
+ /**
+ * 鐮佹闀垮害
+ */
+ private String codeSecLength;
+
+
+ /**
+ * 灞傜骇绫诲瀷
+ */
+ private String codeLevelType;
+
+ /**
+ * 灞傜骇绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String codeLevelTypeText;
+
+ /**
+ * 灞傜骇鐨勫��
+ */
+ private Integer codeLevelValue;
+
+ /**
+ * 鍊兼埅鍙栭暱搴�
+ */
+ private Integer valueCutLength;
+
+ /**
+ * 瀛楃鎴彇绫诲瀷
+ */
+ private String valueCutType;
+
+ /**
+ * 瀛楃涓叉埅鍙栫被鍨嬫樉绀烘枃鏈�
+ */
+ private String valueCutTypeText;
+
+ /**
+ * 鍙栧�肩被鍨�
+ */
+ private String codeGetValueType;
+
+ /**
+ * 鍙栧�肩被鍨嬫樉绀烘枃鏈�
+ */
+ private String codeGetValueTypeText;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ф墍灞炵殑搴撳垎绫�
+ */
+ private String referCodeClassifyOid;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ф墍灞炲簱鍒嗙被鍚嶇О
+ */
+ private String referCodeClassifyOidName;
+
+ /**
+ * 鍙傜収鐨勭獥鍙i厤缃�
+ */
+ private String referConfig;
+
+ /**
+ * 鏄剧ず淇℃伅
+ */
+ private String referValueInfo;
+
+ /**
+ * 杩囨护鐨剆ql鍐呭
+ */
+ private String filterSql ;
+
+
+ /**
+ * 娴佹按鍙疯捣濮嬪��
+ */
+ private String serialStart;
+
+ /**
+ * 娴佹按鐨勬闀�
+ */
+ private Integer serialStep;
+
+
+ /**
+ * 缂栫爜琛ヤ綅鏂瑰紡
+ */
+ private String codeFillType;
+
+ /**
+ * 缂栫爜琛ヤ綅鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String codeFillTypeText;
+
+ /**
+ * 琛ヤ綅鏃剁殑瀛楃
+ */
+ private String codeFillSeparator;
+
+ /**
+ * 濉厖闀垮害
+ */
+ private String codeFillLength;
+
+ /**
+ * 涓婇檺
+ */
+ private Integer codeFillLimit;
+
+ /**
+ * 娴佹按鏄惁琛ョ爜
+ */
+ private String codeFillFlag;
+
+ /**
+ * 鑷畾涔夌殑娴佹按绠楁硶绫�
+ */
+ private String customCodeSerialClass;
+
+ /**
+ * 鏄惁鑷姩鍖归厤鍒嗙被鍊�
+ */
+ private String matchClassifyValueFlag;
+
+ /**
+ * 鐖跺垎绫荤爜娈典富閿�
+ */
+ private String parentClassifySecOid;
+
+ /**
+ * 鐖跺垎绫荤爜娈靛悕绉�
+ */
+ private String parentClassifySecText;
+
+
+ /**
+ * 鏄惁鍙互涓虹┖
+ */
+ private String nullableFlag;
+
+ /**
+ * 鏄惁鍙備笌缂栫爜
+ */
+ private String componentCodeFlag;
+
+ /**
+ * 鏄惁娴佹按渚濊禆
+ */
+ private String serialDependFlag;
+
+ /**
+ * 鏄惁鏄剧ず
+ */
+ private String displayFlag;
+
+ /**
+ * 娴佹按渚濊禆椤哄簭
+ */
+ private Integer serialDependOrder;
+
+ /**
+ * 閫夋嫨鐮佹淇℃伅鐨勪富閿泦鍚�
+ */
+ private String oidArr;
+ /**
+ * 鑾峰彇 鐮佹绫诲瀷
+ */
+ public String getSectype (){
+ return sectype;
+ }
+
+ /**
+ * 璁剧疆 鐮佹绫诲瀷
+ */
+ public void setSectype (String sectype){
+ this.sectype = sectype;
+ }
+
+ public String getSectypeText() {
+ return sectypeText;
+ }
+
+ public void setSectypeText(String sectypeText) {
+ this.sectypeText = sectypeText;
+ }
+
+ /**
+ * 鑾峰彇缂栫爜瑙勫垯涓婚敭
+ */
+ public String getPkCodeRule() {
+ return pkCodeRule;
+ }
+
+ /**
+ * 璁剧疆缂栫爜瑙勫垯涓婚敭
+ */
+ public void setPkCodeRule(String pkCodeRule) {
+ this.pkCodeRule = pkCodeRule;
+ }
+
+ /**
+ * 鑾峰彇鐮佹闀垮害绫诲瀷
+ */
+ public String getCodeSecLengthType() {
+ return codeSecLengthType;
+ }
+
+ /**
+ * 璁剧疆鐮佹闀垮害绫诲瀷
+ */
+ public void setCodeSecLengthType(String codeSecLengthType) {
+ this.codeSecLengthType = codeSecLengthType;
+ }
+
+ /**
+ * 鑾峰彇鐮佹闀垮害
+ */
+ public String getCodeSecLength() {
+ return codeSecLength;
+ }
+
+ /**
+ * 璁剧疆鐮佹闀垮害
+ */
+ public void setCodeSecLength(String codeSecLength) {
+ this.codeSecLength = codeSecLength;
+ }
+
+ public String getReferAttributeName() {
+ return referAttributeName;
+ }
+
+ public void setReferAttributeName(String referAttributeName) {
+ this.referAttributeName = referAttributeName;
+ }
+
+ public String getReferAttributeId() {
+ return referAttributeId;
+ }
+
+ public void setReferAttributeId(String referAttributeId) {
+ this.referAttributeId = referAttributeId;
+ }
+
+ public String getGetValueClass() {
+ return getValueClass;
+ }
+
+ public void setGetValueClass(String getValueClass) {
+ this.getValueClass = getValueClass;
+ }
+
+ public String getCodeDateFormatStr() {
+ return codeDateFormatStr;
+ }
+
+ public void setCodeDateFormatStr(String codeDateFormatStr) {
+ this.codeDateFormatStr = codeDateFormatStr;
+ }
+
+
+ public String getCodeLevelType() {
+ return codeLevelType;
+ }
+
+ public void setCodeLevelType(String codeLevelType) {
+ this.codeLevelType = codeLevelType;
+ }
+
+ public String getCodeLevelTypeText() {
+ return codeLevelTypeText;
+ }
+
+ public void setCodeLevelTypeText(String codeLevelTypeText) {
+ this.codeLevelTypeText = codeLevelTypeText;
+ }
+
+ public Integer getCodeLevelValue() {
+ return codeLevelValue;
+ }
+
+ public void setCodeLevelValue(Integer codeLevelValue) {
+ this.codeLevelValue = codeLevelValue;
+ }
+
+ public Integer getValueCutLength() {
+ return valueCutLength;
+ }
+
+ public void setValueCutLength(Integer valueCutLength) {
+ this.valueCutLength = valueCutLength;
+ }
+
+ public String getValueCutType() {
+ return valueCutType;
+ }
+
+ public void setValueCutType(String valueCutType) {
+ this.valueCutType = valueCutType;
+ }
+
+ public String getValueCutTypeText() {
+ return valueCutTypeText;
+ }
+
+ public void setValueCutTypeText(String valueCutTypeText) {
+ this.valueCutTypeText = valueCutTypeText;
+ }
+
+ public String getCodeGetValueType() {
+ return codeGetValueType;
+ }
+
+ public void setCodeGetValueType(String codeGetValueType) {
+ this.codeGetValueType = codeGetValueType;
+ }
+
+ public String getCodeGetValueTypeText() {
+ return codeGetValueTypeText;
+ }
+
+ public void setCodeGetValueTypeText(String codeGetValueTypeText) {
+ this.codeGetValueTypeText = codeGetValueTypeText;
+ }
+
+ public String getReferCodeClassifyOid() {
+ return referCodeClassifyOid;
+ }
+
+ public void setReferCodeClassifyOid(String referCodeClassifyOid) {
+ this.referCodeClassifyOid = referCodeClassifyOid;
+ }
+
+ public String getReferConfig() {
+ return referConfig;
+ }
+
+ public void setReferConfig(String referConfig) {
+ this.referConfig = referConfig;
+ }
+
+ public String getReferValueInfo() {
+ return referValueInfo;
+ }
+
+ public void setReferValueInfo(String referValueInfo) {
+ this.referValueInfo = referValueInfo;
+ }
+
+ public String getFilterSql() {
+ return filterSql;
+ }
+
+ public void setFilterSql(String filterSql) {
+ this.filterSql = filterSql;
+ }
+
+ public String getSerialStart() {
+ return serialStart;
+ }
+
+ public void setSerialStart(String serialStart) {
+ this.serialStart = serialStart;
+ }
+
+ public Integer getSerialStep() {
+ return serialStep;
+ }
+
+ public void setSerialStep(Integer serialStep) {
+ this.serialStep = serialStep;
+ }
+
+ public String getCodeFillType() {
+ return codeFillType;
+ }
+
+ public void setCodeFillType(String codeFillType) {
+ this.codeFillType = codeFillType;
+ }
+
+ public String getCodeFillTypeText() {
+ return codeFillTypeText;
+ }
+
+ public void setCodeFillTypeText(String codeFillTypeText) {
+ this.codeFillTypeText = codeFillTypeText;
+ }
+
+ public String getCodeFillSeparator() {
+ return codeFillSeparator;
+ }
+
+ public void setCodeFillSeparator(String codeFillSeparator) {
+ this.codeFillSeparator = codeFillSeparator;
+ }
+
+ public String getCodeFillLength() {
+ return codeFillLength;
+ }
+
+ public void setCodeFillLength(String codeFillLength) {
+ this.codeFillLength = codeFillLength;
+ }
+
+ public Integer getCodeFillLimit() {
+ return codeFillLimit;
+ }
+
+ public void setCodeFillLimit(Integer codeFillLimit) {
+ this.codeFillLimit = codeFillLimit;
+ }
+
+ public String getCodeFillFlag() {
+ return codeFillFlag;
+ }
+
+ public void setCodeFillFlag(String codeFillFlag) {
+ this.codeFillFlag = codeFillFlag;
+ }
+
+ public String getCustomCodeSerialClass() {
+ return customCodeSerialClass;
+ }
+
+ public void setCustomCodeSerialClass(String customCodeSerialClass) {
+ this.customCodeSerialClass = customCodeSerialClass;
+ }
+
+ public String getOidArr() {
+ return oidArr;
+ }
+
+ public void setOidArr(String oidArr) {
+ this.oidArr = oidArr;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getCodeSecLengthTypeText() {
+ return codeSecLengthTypeText;
+ }
+
+ public void setCodeSecLengthTypeText(String codeSecLengthTypeText) {
+ this.codeSecLengthTypeText = codeSecLengthTypeText;
+ }
+
+ public String getMatchClassifyValueFlag() {
+ return matchClassifyValueFlag;
+ }
+
+ public void setMatchClassifyValueFlag(String matchClassifyValueFlag) {
+ this.matchClassifyValueFlag = matchClassifyValueFlag;
+ }
+
+ public String getParentClassifySecOid() {
+ return parentClassifySecOid;
+ }
+
+ public void setParentClassifySecOid(String parentClassifySecOid) {
+ this.parentClassifySecOid = parentClassifySecOid;
+ }
+
+ public String getParentClassifySecText() {
+ return parentClassifySecText;
+ }
+
+ public void setParentClassifySecText(String parentClassifySecText) {
+ this.parentClassifySecText = parentClassifySecText;
+ }
+
+ public String getNullableFlag() {
+ return nullableFlag;
+ }
+
+ public void setNullableFlag(String nullableFlag) {
+ this.nullableFlag = nullableFlag;
+ }
+
+ public String getComponentCodeFlag() {
+ return componentCodeFlag;
+ }
+
+ public void setComponentCodeFlag(String componentCodeFlag) {
+ this.componentCodeFlag = componentCodeFlag;
+ }
+
+ public String getSerialDependFlag() {
+ return serialDependFlag;
+ }
+
+ public void setSerialDependFlag(String serialDependFlag) {
+ this.serialDependFlag = serialDependFlag;
+ }
+
+ public String getDisplayFlag() {
+ return displayFlag;
+ }
+
+ public void setDisplayFlag(String displayFlag) {
+ this.displayFlag = displayFlag;
+ }
+
+ public Integer getSerialDependOrder() {
+ return serialDependOrder;
+ }
+
+ public void setSerialDependOrder(Integer serialDependOrder) {
+ this.serialDependOrder = serialDependOrder;
+ }
+
+ public String getReferBtmId() {
+ return referBtmId;
+ }
+
+ public void setReferBtmId(String referBtmId) {
+ this.referBtmId = referBtmId;
+ }
+
+ public String getReferBtmName() {
+ return referBtmName;
+ }
+
+ public void setReferBtmName(String referBtmName) {
+ this.referBtmName = referBtmName;
+ }
+
+ public String getReferCodeClassifyOidName() {
+ return referCodeClassifyOidName;
+ }
+
+ public void setReferCodeClassifyOidName(String referCodeClassifyOidName) {
+ this.referCodeClassifyOidName = referCodeClassifyOidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeBasicSecDTO{" +
+ "sectype='" + sectype + '\'' +
+ ", sectypeText='" + sectypeText + '\'' +
+ ", pkCodeRule='" + pkCodeRule + '\'' +
+ ", orderNum=" + orderNum +
+ ", referBtmId='" + referBtmId + '\'' +
+ ", referBtmName='" + referBtmName + '\'' +
+ ", referAttributeName='" + referAttributeName + '\'' +
+ ", referAttributeId='" + referAttributeId + '\'' +
+ ", getValueClass='" + getValueClass + '\'' +
+ ", codeDateFormatStr='" + codeDateFormatStr + '\'' +
+ ", codeSecLengthType='" + codeSecLengthType + '\'' +
+ ", codeSecLengthTypeText='" + codeSecLengthTypeText + '\'' +
+ ", codeSecLength='" + codeSecLength + '\'' +
+ ", codeLevelType='" + codeLevelType + '\'' +
+ ", codeLevelTypeText='" + codeLevelTypeText + '\'' +
+ ", codeLevelValue=" + codeLevelValue +
+ ", valueCutLength=" + valueCutLength +
+ ", valueCutType='" + valueCutType + '\'' +
+ ", valueCutTypeText='" + valueCutTypeText + '\'' +
+ ", codeGetValueType='" + codeGetValueType + '\'' +
+ ", codeGetValueTypeText='" + codeGetValueTypeText + '\'' +
+ ", referCodeClassifyOid='" + referCodeClassifyOid + '\'' +
+ ", referCodeClassifyOidName='" + referCodeClassifyOidName + '\'' +
+ ", referConfig='" + referConfig + '\'' +
+ ", referValueInfo='" + referValueInfo + '\'' +
+ ", filterSql='" + filterSql + '\'' +
+ ", serialStart='" + serialStart + '\'' +
+ ", serialStep=" + serialStep +
+ ", codeFillType='" + codeFillType + '\'' +
+ ", codeFillTypeText='" + codeFillTypeText + '\'' +
+ ", codeFillSeparator='" + codeFillSeparator + '\'' +
+ ", codeFillLength='" + codeFillLength + '\'' +
+ ", codeFillLimit=" + codeFillLimit +
+ ", codeFillFlag='" + codeFillFlag + '\'' +
+ ", customCodeSerialClass='" + customCodeSerialClass + '\'' +
+ ", matchClassifyValueFlag='" + matchClassifyValueFlag + '\'' +
+ ", parentClassifySecOid='" + parentClassifySecOid + '\'' +
+ ", parentClassifySecText='" + parentClassifySecText + '\'' +
+ ", nullableFlag='" + nullableFlag + '\'' +
+ ", componentCodeFlag='" + componentCodeFlag + '\'' +
+ ", serialDependFlag='" + serialDependFlag + '\'' +
+ ", displayFlag='" + displayFlag + '\'' +
+ ", serialDependOrder=" + serialDependOrder +
+ ", oidArr='" + oidArr + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeButtonDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeButtonDTO.java
new file mode 100644
index 0000000..cc173b7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeButtonDTO.java
@@ -0,0 +1,85 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeButtonDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118494102363L;
+
+ /**
+ * 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ private String iconcls;
+
+ /**
+ * 鎵ц鐨刯s鍐呭
+ */
+ private String executejs;
+
+ /**
+ * 鎸夐挳鐨勪綅缃�
+ */
+ private String usedpositiontype;
+
+ /**
+ * 鑾峰彇 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ public String getIconcls (){
+ return iconcls;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ public void setIconcls (String iconcls){
+ this.iconcls = iconcls;
+ }
+
+ /**
+ * 鑾峰彇 鎵ц鐨刯s鍐呭
+ */
+ public String getExecutejs (){
+ return executejs;
+ }
+
+ /**
+ * 璁剧疆 鎵ц鐨刯s鍐呭
+ */
+ public void setExecutejs (String executejs){
+ this.executejs = executejs;
+ }
+
+ /**
+ * 鑾峰彇 鎸夐挳鐨勪綅缃�
+ */
+ public String getUsedpositiontype (){
+ return usedpositiontype;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐨勪綅缃�
+ */
+ public void setUsedpositiontype (String usedpositiontype){
+ this.usedpositiontype = usedpositiontype;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeButtonDTO{" +
+ "iconcls='" + iconcls +"',"+
+ "executejs='" + executejs +"',"+
+ "usedpositiontype='" + usedpositiontype +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyDTO.java
new file mode 100644
index 0000000..86dc156
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyDTO.java
@@ -0,0 +1,226 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+public class CodeClassifyDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118655590281L;
+
+ /**
+ * 灞炴�ф帓搴忓彿
+ */
+ private Integer ordernum;
+
+ /**
+ * 鎵�灞炰笟鍔$被鍨�
+ */
+ private String btmtypeid;
+
+ /**
+ * 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ private String btmtypename;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ private String coderuleoid;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿樉绀烘枃鏈�
+ */
+ private String coderuleoidName;
+ /**
+ * 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ private String codekeyattrrepeatoid;
+
+ /**
+ * 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鏄剧ず鏂囨湰
+ */
+ private String codekeyattrrepeatoidName;
+ /**
+ * 涓婄骇鏁版嵁鐨勪富閿�
+ */
+ private String parentcodeclassifyoid;
+
+ /**
+ * 鏄惁鍚敤涓嬬骇
+ */
+ private boolean ablechildren;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯涓婚敭
+ */
+ private String codeResembleRuleOid;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯鍚嶇О
+ */
+ private String codeResembleRuleOidName;
+
+ public boolean getAblechildren() {
+ return ablechildren;
+ }
+
+ public void setAblechildren(boolean ablechildren) {
+ this.ablechildren = ablechildren;
+ }
+
+ /**
+ * 鑾峰彇 灞炴�ф帓搴忓彿
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 灞炴�ф帓搴忓彿
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ /**
+ * 鑾峰彇 鎵�灞炰笟鍔$被鍨�
+ */
+ public String getBtmtypeid (){
+ return btmtypeid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炰笟鍔$被鍨�
+ */
+ public void setBtmtypeid (String btmtypeid){
+ this.btmtypeid = btmtypeid;
+ }
+
+ /**
+ * 鑾峰彇 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ public String getBtmtypename (){
+ return btmtypename;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ public void setBtmtypename (String btmtypename){
+ this.btmtypename = btmtypename;
+ }
+
+ /**
+ * 鑾峰彇 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ public String getCoderuleoid (){
+ return coderuleoid;
+ }
+
+ /**
+ * 璁剧疆 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ public void setCoderuleoid (String coderuleoid){
+ this.coderuleoid = coderuleoid;
+ }
+
+ /**
+ * 鑾峰彇缂栫爜瑙勫垯鐨勪富閿樉绀烘枃鏈�
+ */
+ public String getCoderuleoidName (){
+ return coderuleoidName;
+ }
+
+ /**
+ * 璁剧疆缂栫爜瑙勫垯鐨勪富閿樉绀烘枃鏈�
+ */
+ public void setCoderuleoidName (String coderuleoidName){
+ this.coderuleoidName = coderuleoidName;
+ }
+ /**
+ * 鑾峰彇 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ public String getCodekeyattrrepeatoid (){
+ return codekeyattrrepeatoid;
+ }
+
+ /**
+ * 璁剧疆 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ public void setCodekeyattrrepeatoid (String codekeyattrrepeatoid){
+ this.codekeyattrrepeatoid = codekeyattrrepeatoid;
+ }
+
+ /**
+ * 鑾峰彇鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鏄剧ず鏂囨湰
+ */
+ public String getCodekeyattrrepeatoidName (){
+ return codekeyattrrepeatoidName;
+ }
+
+ /**
+ * 璁剧疆鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鏄剧ず鏂囨湰
+ */
+ public void setCodekeyattrrepeatoidName (String codekeyattrrepeatoidName){
+ this.codekeyattrrepeatoidName = codekeyattrrepeatoidName;
+ }
+ /**
+ * 鑾峰彇 涓婄骇鏁版嵁鐨勪富閿�
+ */
+ public String getParentcodeclassifyoid (){
+ return parentcodeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婄骇鏁版嵁鐨勪富閿�
+ */
+ public void setParentcodeclassifyoid (String parentcodeclassifyoid){
+ this.parentcodeclassifyoid = parentcodeclassifyoid;
+ }
+
+ public boolean isAblechildren() {
+ return ablechildren;
+ }
+
+ public String getCodeResembleRuleOid() {
+ return codeResembleRuleOid;
+ }
+
+ public void setCodeResembleRuleOid(String codeResembleRuleOid) {
+ this.codeResembleRuleOid = codeResembleRuleOid;
+ }
+
+ public String getCodeResembleRuleOidName() {
+ return codeResembleRuleOidName;
+ }
+
+ public void setCodeResembleRuleOidName(String codeResembleRuleOidName) {
+ this.codeResembleRuleOidName = codeResembleRuleOidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyDTO{" +
+ "ordernum=" + ordernum +
+ ", btmtypeid='" + btmtypeid + '\'' +
+ ", btmtypename='" + btmtypename + '\'' +
+ ", coderuleoid='" + coderuleoid + '\'' +
+ ", coderuleoidName='" + coderuleoidName + '\'' +
+ ", codekeyattrrepeatoid='" + codekeyattrrepeatoid + '\'' +
+ ", codekeyattrrepeatoidName='" + codekeyattrrepeatoidName + '\'' +
+ ", parentcodeclassifyoid='" + parentcodeclassifyoid + '\'' +
+ ", ablechildren=" + ablechildren +
+ ", codeResembleRuleOid='" + codeResembleRuleOid + '\'' +
+ ", codeResembleRuleOidName='" + codeResembleRuleOidName + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyProcessTempDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyProcessTempDTO.java
new file mode 100644
index 0000000..d3ffbbd
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyProcessTempDTO.java
@@ -0,0 +1,152 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyProcessTempDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117374292084L;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeclassifyoid;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ private String codeclassifyoidName;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifyTemplateOid;
+ /**
+ * 娴佺▼妯℃澘鐢ㄩ��
+ */
+ private String codeprocessuse;
+
+ /**
+ * 娴佺▼妯℃澘鐢ㄩ�旀樉绀烘枃鏈�
+ */
+ private String codeprocessuseText;
+
+ /**
+ * 娴佺▼妯℃澘鐨勭増鏈�
+ */
+ private String processVersion;
+
+ /**
+ * 瀛樺偍鍏宠仈鐨勬ā鏉垮睘鎬т富閿�
+ */
+ private String codeTempAttrOidArr;
+
+ /**
+ * 瀛樺偍鍏宠仈鐨勬ā鏉垮睘鎬у悕绉�
+ */
+ private String codeTempAttrOidArrName;
+
+ /**
+ * 鑾峰彇 涓婚搴撳垎绫讳富閿�
+ */
+ public String getCodeclassifyoid (){
+ return codeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婚搴撳垎绫讳富閿�
+ */
+ public void setCodeclassifyoid (String codeclassifyoid){
+ this.codeclassifyoid = codeclassifyoid;
+ }
+
+ /**
+ * 鑾峰彇涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public String getCodeclassifyoidName (){
+ return codeclassifyoidName;
+ }
+
+ /**
+ * 璁剧疆涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public void setCodeclassifyoidName (String codeclassifyoidName){
+ this.codeclassifyoidName = codeclassifyoidName;
+ }
+ /**
+ * 鑾峰彇 娴佺▼妯℃澘鐢ㄩ��
+ */
+ public String getCodeprocessuse (){
+ return codeprocessuse;
+ }
+
+ /**
+ * 璁剧疆 娴佺▼妯℃澘鐢ㄩ��
+ */
+ public void setCodeprocessuse (String codeprocessuse){
+ this.codeprocessuse = codeprocessuse;
+ }
+
+ public String getCodeprocessuseText() {
+ return codeprocessuseText;
+ }
+
+ public void setCodeprocessuseText(String codeprocessuseText) {
+ this.codeprocessuseText = codeprocessuseText;
+ }
+
+ public String getProcessVersion() {
+ return processVersion;
+ }
+
+ public void setProcessVersion(String processVersion) {
+ this.processVersion = processVersion;
+ }
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ public String getCodeTempAttrOidArr() {
+ return codeTempAttrOidArr;
+ }
+
+ public void setCodeTempAttrOidArr(String codeTempAttrOidArr) {
+ this.codeTempAttrOidArr = codeTempAttrOidArr;
+ }
+
+ public String getCodeTempAttrOidArrName() {
+ return codeTempAttrOidArrName;
+ }
+
+ public void setCodeTempAttrOidArrName(String codeTempAttrOidArrName) {
+ this.codeTempAttrOidArrName = codeTempAttrOidArrName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyProcessTempDTO{" +
+ "codeclassifyoid='" + codeclassifyoid + '\'' +
+ ", codeclassifyoidName='" + codeclassifyoidName + '\'' +
+ ", classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", codeprocessuse='" + codeprocessuse + '\'' +
+ ", codeprocessuseText='" + codeprocessuseText + '\'' +
+ ", processVersion='" + processVersion + '\'' +
+ ", codeTempAttrOidArr='" + codeTempAttrOidArr + '\'' +
+ ", codeTempAttrOidArrName='" + codeTempAttrOidArrName + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTempMapItemDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTempMapItemDTO.java
new file mode 100644
index 0000000..416dc6d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTempMapItemDTO.java
@@ -0,0 +1,184 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-03-10
+ */
+public class CodeClassifyTempMapItemDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118229256252L;
+
+ /**
+ * 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ private String classifytemplateattroid;
+
+ /**
+ * 鏄犲皠瑙勫垯涓婚敭
+ */
+ private String classifytemplatemapoid;
+
+ /**
+ * 鏄犲皠瑙勫垯涓婚敭鏄剧ず鏂囨湰
+ */
+ private String classifytemplatemapoidName;
+ /**
+ * 闆嗗洟鐮佸睘鎬ey
+ */
+ private String groupcodeattrid;
+
+ /**
+ * 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ private String groupcodeattrname;
+
+ /**
+ * 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ private String switchclassname;
+
+ /**
+ * 杞崲鍏紡
+ */
+ private String switcheval;
+
+ /**
+ * 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ private String targetdateformat;
+
+
+ /**
+ * 鑾峰彇 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ public String getClassifytemplateattroid (){
+ return classifytemplateattroid;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ public void setClassifytemplateattroid (String classifytemplateattroid){
+ this.classifytemplateattroid = classifytemplateattroid;
+ }
+
+ /**
+ * 鑾峰彇 鏄犲皠瑙勫垯涓婚敭
+ */
+ public String getClassifytemplatemapoid (){
+ return classifytemplatemapoid;
+ }
+
+ /**
+ * 璁剧疆 鏄犲皠瑙勫垯涓婚敭
+ */
+ public void setClassifytemplatemapoid (String classifytemplatemapoid){
+ this.classifytemplatemapoid = classifytemplatemapoid;
+ }
+
+ /**
+ * 鑾峰彇鏄犲皠瑙勫垯涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getClassifytemplatemapoidName (){
+ return classifytemplatemapoidName;
+ }
+
+ /**
+ * 璁剧疆鏄犲皠瑙勫垯涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setClassifytemplatemapoidName (String classifytemplatemapoidName){
+ this.classifytemplatemapoidName = classifytemplatemapoidName;
+ }
+ /**
+ * 鑾峰彇 闆嗗洟鐮佸睘鎬ey
+ */
+ public String getGroupcodeattrid (){
+ return groupcodeattrid;
+ }
+
+ /**
+ * 璁剧疆 闆嗗洟鐮佸睘鎬ey
+ */
+ public void setGroupcodeattrid (String groupcodeattrid){
+ this.groupcodeattrid = groupcodeattrid;
+ }
+
+ /**
+ * 鑾峰彇 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ public String getGroupcodeattrname (){
+ return groupcodeattrname;
+ }
+
+ /**
+ * 璁剧疆 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ public void setGroupcodeattrname (String groupcodeattrname){
+ this.groupcodeattrname = groupcodeattrname;
+ }
+
+ /**
+ * 鑾峰彇 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ public String getSwitchclassname (){
+ return switchclassname;
+ }
+
+ /**
+ * 璁剧疆 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ public void setSwitchclassname (String switchclassname){
+ this.switchclassname = switchclassname;
+ }
+
+ /**
+ * 鑾峰彇 杞崲鍏紡
+ */
+ public String getSwitcheval (){
+ return switcheval;
+ }
+
+ /**
+ * 璁剧疆 杞崲鍏紡
+ */
+ public void setSwitcheval (String switcheval){
+ this.switcheval = switcheval;
+ }
+
+ /**
+ * 鑾峰彇 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ public String getTargetdateformat (){
+ return targetdateformat;
+ }
+
+ /**
+ * 璁剧疆 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ public void setTargetdateformat (String targetdateformat){
+ this.targetdateformat = targetdateformat;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTempMapItemDTO{" +
+ "classifytemplateattroid='" + classifytemplateattroid +"',"+
+ "classifytemplatemapoid='" + classifytemplatemapoid +"',"+
+ "classifytemplatemapoidName='" + classifytemplatemapoidName +"'," +
+ "groupcodeattrid='" + groupcodeattrid +"',"+
+ "groupcodeattrname='" + groupcodeattrname +"',"+
+ "switchclassname='" + switchclassname +"',"+
+ "switcheval='" + switcheval +"',"+
+ "targetdateformat='" + targetdateformat +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateAttrDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateAttrDTO.java
new file mode 100644
index 0000000..90f908e
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateAttrDTO.java
@@ -0,0 +1,1053 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateAttrDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118652601470L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifytemplateoid;
+
+ /**
+ * 鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ private String classifytemplateoidName;
+ /**
+ * 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿�
+ */
+ private String classifyattributeoid;
+
+ /**
+ * 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿樉绀烘枃鏈�
+ */
+ private String classifyattributeoidName;
+ /**
+ * 灞炴�х殑绫诲瀷
+ */
+ private String attributedatatype;
+
+ /**
+ * 鏄惁鍏抽敭灞炴��
+ */
+ private String keyattrflag;
+
+ /**
+ * 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ private String queryattrflag;
+
+ /**
+ * 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ private String seniorqueryattrflag;
+
+ /**
+ * 鐩镐技鏌ラ噸灞炴��
+ */
+ private String samerepeatattrflag;
+
+ /**
+ * 鏄惁鎺掑簭
+ */
+ private String sortattrflag;
+
+ /**
+ * 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ private String qrcodeflag;
+
+ /**
+ * 鏄惁鐢熸垚涓�缁寸爜
+ */
+ private String barcodeflag;
+
+ /**
+ * 缁勫悎瑙勫垯
+ */
+ private String componentrule;
+
+ /**
+ * 楠岃瘉瑙勫垯
+ */
+ private String verifyrule;
+
+ /**
+ * 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ private String classifyinvokelevel;
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ private String classifyinvokeattr;
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ private String classifyinvokeattrname;
+
+ /**
+ * 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ private String classifyinvokeeditflag;
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+ /**
+ * 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ private String formdisplayflag;
+
+ /**
+ * 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ private String tabledisplayflag;
+
+ /**
+ * 鎵�灞炲睘鎬у垎缁�
+ */
+ private String attributegroup;
+
+ /**
+ * 浣跨敤鏋氫妇娉ㄥ叆鐨勫瓧绗︿覆鏍煎紡
+ */
+ private String enumString;
+
+ /**
+ * 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ private String enumid;
+
+ /**
+ * 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ private String enumname;
+
+ /**
+ * 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ private String enumeditflag;
+
+ /**
+ * 鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�
+ */
+ private String referbtmid;
+
+ /**
+ * 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ private String referbtmname;
+
+ /**
+ * 鍙傜収绐楀彛閰嶇疆
+ */
+ private String referConfig;
+
+ /**
+ * 鏄惁蹇呰緭
+ */
+ private String requireflag;
+
+ /**
+ * 鏄惁鍙
+ */
+ private String readonlyflag;
+
+ /**
+ * 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ private Integer controllength;
+
+ /**
+ * 琛ㄥ崟閲屾樉绀虹殑鏍峰紡
+ */
+ private String formdisplaystyle;
+
+ /**
+ * 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ private String tabledisplaystyle;
+
+ /**
+ * 琛ㄥ崟涓秴閾炬帴鍐呭
+ */
+ private String formhref;
+
+ /**
+ * 琛ㄦ牸涓秴閾炬帴鍐呭
+ */
+ private String tablehref;
+
+ /**
+ * 灏忔暟绮惧害
+ */
+ private Integer precisionlength;
+
+ /**
+ * 灏忔暟鍒诲害
+ */
+ private Integer scalelength;
+
+ /**
+ * 鍙栧�艰寖鍥�
+ */
+ private String valuearea;
+
+ /**
+ * 鏃堕棿鏍煎紡
+ */
+ private String codedateformat;
+
+ /**
+ * 琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js
+ */
+ private String tabledisplayjs;
+
+ /**
+ * 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ private String textareaflag;
+
+ /**
+ * 棰勮鍥�
+ */
+ private String imageflag;
+
+ /**
+ * 榛樿鍊�
+ */
+ private String defaultvalue;
+
+ /**
+ * 鍓嶇紑
+ */
+ private String prefixvalue;
+
+ /**
+ * 鍚庣紑
+ */
+ private String suffixvalue;
+
+ /**
+ * 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ private String filtersourceattr;
+
+ /**
+ * 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ private String filtersourceattrname;
+
+ /**
+ * 灞炴�у垪琛ㄤ腑鐨勫搴�
+ */
+ private Integer attrTableWidth;
+ /**
+ * 璇存槑
+ */
+ @Column(columnDefinition = "璇存槑")
+ private String explain;
+
+ /**
+ * 閫夋嫨搴撴爣璇�
+ */
+ @Column(columnDefinition = "閫夋嫨搴撴爣璇�")
+ private String libraryIdentification;
+
+ /**
+ * 绾ц仈灞炴�х紪鍙�
+ */
+ @Column(columnDefinition = "绾ц仈灞炴�х紪鍙�")
+ private String parentCode;
+
+ /**
+ * 绾ц仈灞炴�у悕绉�
+ */
+ @Column(columnDefinition = "绾ц仈灞炴�у悕绉�")
+ private String parentName;
+
+ /**
+ * 绾ц仈鏌ヨ灞炴��
+ */
+ @Column(columnDefinition = "绾ц仈鏌ヨ灞炴��")
+ private String parentQueryAttr;
+
+ public String getExplain() {
+ return explain;
+ }
+
+ public void setExplain(String explain) {
+ this.explain = explain;
+ }
+
+ public String getLibraryIdentification() {
+ return libraryIdentification;
+ }
+
+ public void setLibraryIdentification(String libraryIdentification) {
+ this.libraryIdentification = libraryIdentification;
+ }
+
+ public String getParentCode() {
+ return parentCode;
+ }
+
+ public void setParentCode(String parentCode) {
+ this.parentCode = parentCode;
+ }
+
+ public String getParentName() {
+ return parentName;
+ }
+
+ public void setParentName(String parentName) {
+ this.parentName = parentName;
+ }
+
+ public String getParentQueryAttr() {
+ return parentQueryAttr;
+ }
+
+ public void setParentQueryAttr(String parentQueryAttr) {
+ this.parentQueryAttr = parentQueryAttr;
+ }
+
+ public String getEnumString() {
+ return enumString;
+ }
+
+ public void setEnumString(String enumString) {
+ this.enumString = enumString;
+ }
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉�
+ */
+ public String getClassifytemplateoid (){
+ return classifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉�
+ */
+ public void setClassifytemplateoid (String classifytemplateoid){
+ this.classifytemplateoid = classifytemplateoid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public String getClassifytemplateoidName (){
+ return classifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public void setClassifytemplateoidName (String classifytemplateoidName){
+ this.classifytemplateoidName = classifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿�
+ */
+ public String getClassifyattributeoid (){
+ return classifyattributeoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿�
+ */
+ public void setClassifyattributeoid (String classifyattributeoid){
+ this.classifyattributeoid = classifyattributeoid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿樉绀烘枃鏈�
+ */
+ public String getClassifyattributeoidName (){
+ return classifyattributeoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿樉绀烘枃鏈�
+ */
+ public void setClassifyattributeoidName (String classifyattributeoidName){
+ this.classifyattributeoidName = classifyattributeoidName;
+ }
+ /**
+ * 鑾峰彇 灞炴�х殑绫诲瀷
+ */
+ public String getAttributedatatype (){
+ return attributedatatype;
+ }
+
+ /**
+ * 璁剧疆 灞炴�х殑绫诲瀷
+ */
+ public void setAttributedatatype (String attributedatatype){
+ this.attributedatatype = attributedatatype;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁鍏抽敭灞炴��
+ */
+ public String getKeyattrflag (){
+ return keyattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鍏抽敭灞炴��
+ */
+ public void setKeyattrflag (String keyattrflag){
+ this.keyattrflag = keyattrflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ public String getQueryattrflag (){
+ return queryattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ public void setQueryattrflag (String queryattrflag){
+ this.queryattrflag = queryattrflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ public String getSeniorqueryattrflag (){
+ return seniorqueryattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ public void setSeniorqueryattrflag (String seniorqueryattrflag){
+ this.seniorqueryattrflag = seniorqueryattrflag;
+ }
+
+ /**
+ * 鑾峰彇 鐩镐技鏌ラ噸灞炴��
+ */
+ public String getSamerepeatattrflag (){
+ return samerepeatattrflag;
+ }
+
+ /**
+ * 璁剧疆 鐩镐技鏌ラ噸灞炴��
+ */
+ public void setSamerepeatattrflag (String samerepeatattrflag){
+ this.samerepeatattrflag = samerepeatattrflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁鎺掑簭
+ */
+ public String getSortattrflag (){
+ return sortattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鎺掑簭
+ */
+ public void setSortattrflag (String sortattrflag){
+ this.sortattrflag = sortattrflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ public String getQrcodeflag (){
+ return qrcodeflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ public void setQrcodeflag (String qrcodeflag){
+ this.qrcodeflag = qrcodeflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁鐢熸垚涓�缁寸爜
+ */
+ public String getBarcodeflag (){
+ return barcodeflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鐢熸垚涓�缁寸爜
+ */
+ public void setBarcodeflag (String barcodeflag){
+ this.barcodeflag = barcodeflag;
+ }
+
+ /**
+ * 鑾峰彇 缁勫悎瑙勫垯
+ */
+ public String getComponentrule (){
+ return componentrule;
+ }
+
+ /**
+ * 璁剧疆 缁勫悎瑙勫垯
+ */
+ public void setComponentrule (String componentrule){
+ this.componentrule = componentrule;
+ }
+
+ /**
+ * 鑾峰彇 楠岃瘉瑙勫垯
+ */
+ public String getVerifyrule (){
+ return verifyrule;
+ }
+
+ /**
+ * 璁剧疆 楠岃瘉瑙勫垯
+ */
+ public void setVerifyrule (String verifyrule){
+ this.verifyrule = verifyrule;
+ }
+
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ public String getClassifyinvokelevel (){
+ return classifyinvokelevel;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ public void setClassifyinvokelevel (String classifyinvokelevel){
+ this.classifyinvokelevel = classifyinvokelevel;
+ }
+
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ public String getClassifyinvokeattr (){
+ return classifyinvokeattr;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ public void setClassifyinvokeattr (String classifyinvokeattr){
+ this.classifyinvokeattr = classifyinvokeattr;
+ }
+
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ public String getClassifyinvokeattrname (){
+ return classifyinvokeattrname;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ public void setClassifyinvokeattrname (String classifyinvokeattrname){
+ this.classifyinvokeattrname = classifyinvokeattrname;
+ }
+
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ public String getClassifyinvokeeditflag (){
+ return classifyinvokeeditflag;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ public void setClassifyinvokeeditflag (String classifyinvokeeditflag){
+ this.classifyinvokeeditflag = classifyinvokeeditflag;
+ }
+
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ /**
+ * 鑾峰彇 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ public String getFormdisplayflag (){
+ return formdisplayflag;
+ }
+
+ /**
+ * 璁剧疆 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ public void setFormdisplayflag (String formdisplayflag){
+ this.formdisplayflag = formdisplayflag;
+ }
+
+ /**
+ * 鑾峰彇 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ public String getTabledisplayflag (){
+ return tabledisplayflag;
+ }
+
+ /**
+ * 璁剧疆 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ public void setTabledisplayflag (String tabledisplayflag){
+ this.tabledisplayflag = tabledisplayflag;
+ }
+
+ /**
+ * 鑾峰彇 鎵�灞炲睘鎬у垎缁�
+ */
+ public String getAttributegroup (){
+ return attributegroup;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炲睘鎬у垎缁�
+ */
+ public void setAttributegroup (String attributegroup){
+ this.attributegroup = attributegroup;
+ }
+
+ /**
+ * 鑾峰彇 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ public String getEnumid (){
+ return enumid;
+ }
+
+ /**
+ * 璁剧疆 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ public void setEnumid (String enumid){
+ this.enumid = enumid;
+ }
+
+ /**
+ * 鑾峰彇 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ public String getEnumname (){
+ return enumname;
+ }
+
+ /**
+ * 璁剧疆 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ public void setEnumname (String enumname){
+ this.enumname = enumname;
+ }
+
+ /**
+ * 鑾峰彇 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ public String getEnumeditflag (){
+ return enumeditflag;
+ }
+
+ /**
+ * 璁剧疆 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ public void setEnumeditflag (String enumeditflag){
+ this.enumeditflag = enumeditflag;
+ }
+
+ /**
+ * 鑾峰彇 鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�
+ */
+ public String getReferbtmid (){
+ return referbtmid;
+ }
+
+ /**
+ * 璁剧疆 鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�
+ */
+ public void setReferbtmid (String referbtmid){
+ this.referbtmid = referbtmid;
+ }
+
+ /**
+ * 鑾峰彇 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ public String getReferbtmname (){
+ return referbtmname;
+ }
+
+ /**
+ * 璁剧疆 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ public void setReferbtmname (String referbtmname){
+ this.referbtmname = referbtmname;
+ }
+
+
+ /**
+ * 鑾峰彇 鏄惁蹇呰緭
+ */
+ public String getRequireflag (){
+ return requireflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇呰緭
+ */
+ public void setRequireflag (String requireflag){
+ this.requireflag = requireflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁鍙
+ */
+ public String getReadonlyflag (){
+ return readonlyflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鍙
+ */
+ public void setReadonlyflag (String readonlyflag){
+ this.readonlyflag = readonlyflag;
+ }
+
+ /**
+ * 鑾峰彇 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ public Integer getControllength (){
+ return controllength;
+ }
+
+ /**
+ * 璁剧疆 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ public void setControllength (Integer controllength){
+ this.controllength = controllength;
+ }
+
+ /**
+ * 鑾峰彇 琛ㄥ崟閲屾樉绀虹殑鏍峰紡
+ */
+ public String getFormdisplaystyle (){
+ return formdisplaystyle;
+ }
+
+ /**
+ * 璁剧疆 琛ㄥ崟閲屾樉绀虹殑鏍峰紡
+ */
+ public void setFormdisplaystyle (String formdisplaystyle){
+ this.formdisplaystyle = formdisplaystyle;
+ }
+
+ /**
+ * 鑾峰彇 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ public String getTabledisplaystyle (){
+ return tabledisplaystyle;
+ }
+
+ /**
+ * 璁剧疆 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ public void setTabledisplaystyle (String tabledisplaystyle){
+ this.tabledisplaystyle = tabledisplaystyle;
+ }
+
+ /**
+ * 鑾峰彇 琛ㄥ崟涓秴閾炬帴鍐呭
+ */
+ public String getFormhref (){
+ return formhref;
+ }
+
+ /**
+ * 璁剧疆 琛ㄥ崟涓秴閾炬帴鍐呭
+ */
+ public void setFormhref (String formhref){
+ this.formhref = formhref;
+ }
+
+ /**
+ * 鑾峰彇 琛ㄦ牸涓秴閾炬帴鍐呭
+ */
+ public String getTablehref (){
+ return tablehref;
+ }
+
+ /**
+ * 璁剧疆 琛ㄦ牸涓秴閾炬帴鍐呭
+ */
+ public void setTablehref (String tablehref){
+ this.tablehref = tablehref;
+ }
+
+ /**
+ * 鑾峰彇 灏忔暟绮惧害
+ */
+ public Integer getPrecisionlength (){
+ return precisionlength;
+ }
+
+ /**
+ * 璁剧疆 灏忔暟绮惧害
+ */
+ public void setPrecisionlength (Integer precisionlength){
+ this.precisionlength = precisionlength;
+ }
+
+ /**
+ * 鑾峰彇 灏忔暟鍒诲害
+ */
+ public Integer getScalelength (){
+ return scalelength;
+ }
+
+ /**
+ * 璁剧疆 灏忔暟鍒诲害
+ */
+ public void setScalelength (Integer scalelength){
+ this.scalelength = scalelength;
+ }
+
+ /**
+ * 鑾峰彇 鍙栧�艰寖鍥�
+ */
+ public String getValuearea (){
+ return valuearea;
+ }
+
+ /**
+ * 璁剧疆 鍙栧�艰寖鍥�
+ */
+ public void setValuearea (String valuearea){
+ this.valuearea = valuearea;
+ }
+
+ /**
+ * 鑾峰彇 鏃堕棿鏍煎紡
+ */
+ public String getCodedateformat (){
+ return codedateformat;
+ }
+
+ /**
+ * 璁剧疆 鏃堕棿鏍煎紡
+ */
+ public void setCodedateformat (String codedateformat){
+ this.codedateformat = codedateformat;
+ }
+
+ /**
+ * 鑾峰彇 琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js
+ */
+ public String getTabledisplayjs (){
+ return tabledisplayjs;
+ }
+
+ /**
+ * 璁剧疆 琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js
+ */
+ public void setTabledisplayjs (String tabledisplayjs){
+ this.tabledisplayjs = tabledisplayjs;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ public String getTextareaflag (){
+ return textareaflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ public void setTextareaflag (String textareaflag){
+ this.textareaflag = textareaflag;
+ }
+
+ /**
+ * 鑾峰彇 棰勮鍥�
+ */
+ public String getImageflag (){
+ return imageflag;
+ }
+
+ /**
+ * 璁剧疆 棰勮鍥�
+ */
+ public void setImageflag (String imageflag){
+ this.imageflag = imageflag;
+ }
+
+ /**
+ * 鑾峰彇 榛樿鍊�
+ */
+ public String getDefaultvalue (){
+ return defaultvalue;
+ }
+
+ /**
+ * 璁剧疆 榛樿鍊�
+ */
+ public void setDefaultvalue (String defaultvalue){
+ this.defaultvalue = defaultvalue;
+ }
+
+ /**
+ * 鑾峰彇 鍓嶇紑
+ */
+ public String getPrefixvalue (){
+ return prefixvalue;
+ }
+
+ /**
+ * 璁剧疆 鍓嶇紑
+ */
+ public void setPrefixvalue (String prefixvalue){
+ this.prefixvalue = prefixvalue;
+ }
+
+ /**
+ * 鑾峰彇 鍚庣紑
+ */
+ public String getSuffixvalue (){
+ return suffixvalue;
+ }
+
+ /**
+ * 璁剧疆 鍚庣紑
+ */
+ public void setSuffixvalue (String suffixvalue){
+ this.suffixvalue = suffixvalue;
+ }
+
+ /**
+ * 鑾峰彇 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ public String getFiltersourceattr (){
+ return filtersourceattr;
+ }
+
+ /**
+ * 璁剧疆 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ public void setFiltersourceattr (String filtersourceattr){
+ this.filtersourceattr = filtersourceattr;
+ }
+
+ /**
+ * 鑾峰彇 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ public String getFiltersourceattrname (){
+ return filtersourceattrname;
+ }
+
+ /**
+ * 璁剧疆 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ public void setFiltersourceattrname (String filtersourceattrname){
+ this.filtersourceattrname = filtersourceattrname;
+ }
+
+ public Integer getAttrTableWidth() {
+ return attrTableWidth;
+ }
+
+ public void setAttrTableWidth(Integer attrTableWidth) {
+ this.attrTableWidth = attrTableWidth;
+ }
+
+ public String getReferConfig() {
+ return referConfig;
+ }
+
+ public void setReferConfig(String referConfig) {
+ this.referConfig = referConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateAttrDTO{" +
+ "classifytemplateoid='" + classifytemplateoid + '\'' +
+ ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
+ ", classifyattributeoid='" + classifyattributeoid + '\'' +
+ ", classifyattributeoidName='" + classifyattributeoidName + '\'' +
+ ", attributedatatype='" + attributedatatype + '\'' +
+ ", 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 + '\'' +
+ ", enumString='" + enumString + '\'' +
+ ", 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 + '\'' +
+ ", attrTableWidth=" + attrTableWidth +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateButtonDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateButtonDTO.java
new file mode 100644
index 0000000..37269b4
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateButtonDTO.java
@@ -0,0 +1,155 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateButtonDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119032349661L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifytemplateoid;
+
+ /**
+ * 鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ private String classifytemplateoidName;
+ /**
+ * 鎸夐挳鐨勪富閿�
+ */
+ private String classifybuttonoid;
+
+ /**
+ * 鎸夐挳鐨勪富閿樉绀烘枃鏈�
+ */
+ private String classifybuttonoidName;
+ /**
+ * 鎸夐挳鐢ㄩ��
+ */
+ private String buttonuse;
+
+ /**
+ * 鎸夐挳鐢ㄩ�旀樉绀哄璞�
+ */
+ private String buttonUseText;
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉�
+ */
+ public String getClassifytemplateoid (){
+ return classifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉�
+ */
+ public void setClassifytemplateoid (String classifytemplateoid){
+ this.classifytemplateoid = classifytemplateoid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public String getClassifytemplateoidName (){
+ return classifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public void setClassifytemplateoidName (String classifytemplateoidName){
+ this.classifytemplateoidName = classifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 鎸夐挳鐨勪富閿�
+ */
+ public String getClassifybuttonoid (){
+ return classifybuttonoid;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐨勪富閿�
+ */
+ public void setClassifybuttonoid (String classifybuttonoid){
+ this.classifybuttonoid = classifybuttonoid;
+ }
+
+ /**
+ * 鑾峰彇鎸夐挳鐨勪富閿樉绀烘枃鏈�
+ */
+ public String getClassifybuttonoidName (){
+ return classifybuttonoidName;
+ }
+
+ /**
+ * 璁剧疆鎸夐挳鐨勪富閿樉绀烘枃鏈�
+ */
+ public void setClassifybuttonoidName (String classifybuttonoidName){
+ this.classifybuttonoidName = classifybuttonoidName;
+ }
+ /**
+ * 鑾峰彇 鎸夐挳鐢ㄩ��
+ */
+ public String getButtonuse (){
+ return buttonuse;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐢ㄩ��
+ */
+ public void setButtonuse (String buttonuse){
+ this.buttonuse = buttonuse;
+ }
+
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ public String getButtonUseText() {
+ return buttonUseText;
+ }
+
+ public void setButtonUseText(String buttonUseText) {
+ this.buttonUseText = buttonUseText;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateButtonDTO{" +
+ "classifytemplateoid='" + classifytemplateoid + '\'' +
+ ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
+ ", classifybuttonoid='" + classifybuttonoid + '\'' +
+ ", classifybuttonoidName='" + classifybuttonoidName + '\'' +
+ ", buttonuse='" + buttonuse + '\'' +
+ ", buttonUseText='" + buttonUseText + '\'' +
+ ", ordernum=" + ordernum +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateDTO.java
new file mode 100644
index 0000000..883a256
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateDTO.java
@@ -0,0 +1,104 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120463849391L;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeclassifyoid;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ private String codeclassifyoidName;
+
+ /**
+ * 鎵�灞炰笟鍔$被鍨�
+ */
+ private String btmtypeid;
+
+ /**
+ * 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ private String btmtypename;
+
+ /**
+ * 鑾峰彇 鎵�灞炰笟鍔$被鍨�
+ */
+ public String getBtmtypeid (){
+ return btmtypeid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炰笟鍔$被鍨�
+ */
+ public void setBtmtypeid (String btmtypeid){
+ this.btmtypeid = btmtypeid;
+ }
+
+ /**
+ * 鑾峰彇 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ public String getBtmtypename (){
+ return btmtypename;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ public void setBtmtypename (String btmtypename){
+ this.btmtypename = btmtypename;
+ }
+
+ /**
+ * 鑾峰彇 涓婚搴撳垎绫讳富閿�
+ */
+ public String getCodeclassifyoid (){
+ return codeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婚搴撳垎绫讳富閿�
+ */
+ public void setCodeclassifyoid (String codeclassifyoid){
+ this.codeclassifyoid = codeclassifyoid;
+ }
+
+ /**
+ * 鑾峰彇涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public String getCodeclassifyoidName (){
+ return codeclassifyoidName;
+ }
+
+ /**
+ * 璁剧疆涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public void setCodeclassifyoidName (String codeclassifyoidName){
+ this.codeclassifyoidName = codeclassifyoidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateDTO{" +
+ "codeclassifyoid='" + codeclassifyoid +"',"+
+ "codeclassifyoidName='" + codeclassifyoidName +"'," +
+ "btmtypeid='" + btmtypeid +"',"+
+ "btmtypename='" + btmtypename +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateMapDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateMapDTO.java
new file mode 100644
index 0000000..24e1c6c
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateMapDTO.java
@@ -0,0 +1,96 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateMapDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117068736629L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifyTemplateOid;
+
+ /**
+ * 鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ private String classifyTemplateName;
+ /**
+ * 鏄犲皠瑙勫垯绫诲瀷
+ */
+ private String codemapruletype;
+
+ /**
+ * 鏄犲皠瑙勫垯绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String codemapruletypeText;
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉�
+ */
+ public String getClassifyTemplateOid (){
+ return classifyTemplateOid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉�
+ */
+ public void setClassifyTemplateOid (String classifyTemplateOid){
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public String getClassifyTemplateName (){
+ return classifyTemplateName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public void setClassifyTemplateName (String classifyTemplateName){
+ this.classifyTemplateName = classifyTemplateOid;
+ }
+ /**
+ * 鑾峰彇 鏄犲皠瑙勫垯绫诲瀷
+ */
+ public String getCodemapruletype (){
+ return codemapruletype;
+ }
+
+ /**
+ * 璁剧疆 鏄犲皠瑙勫垯绫诲瀷
+ */
+ public void setCodemapruletype (String codemapruletype){
+ this.codemapruletype = codemapruletype;
+ }
+
+ public String getCodemapruletypeText() {
+ return codemapruletypeText;
+ }
+
+ public void setCodemapruletypeText(String codemapruletypeText) {
+ this.codemapruletypeText = codemapruletypeText;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateMapDTO{" +
+ "classifytemplateoid='" + classifyTemplateOid + '\'' +
+ ", classifytemplateoidName='" + classifyTemplateName + '\'' +
+ ", codemapruletype='" + codemapruletype + '\'' +
+ ", codemapruletypeText='" + codemapruletypeText + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyValueDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyValueDTO.java
new file mode 100644
index 0000000..e94f6f2
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyValueDTO.java
@@ -0,0 +1,104 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyValueDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117098778726L;
+
+ /**
+ * 鍒嗙被鐮佹涓婚敭
+ */
+ private String codeclassifysecoid;
+
+ /**
+ * 鍒嗙被鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ private String codeclassifysecoidName;
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+ /**
+ * 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ private String parentclassifyvalueoid;
+
+
+ /**
+ * 鑾峰彇 鍒嗙被鐮佹涓婚敭
+ */
+ public String getCodeclassifysecoid (){
+ return codeclassifysecoid;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被鐮佹涓婚敭
+ */
+ public void setCodeclassifysecoid (String codeclassifysecoid){
+ this.codeclassifysecoid = codeclassifysecoid;
+ }
+
+ /**
+ * 鑾峰彇鍒嗙被鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getCodeclassifysecoidName (){
+ return codeclassifysecoidName;
+ }
+
+ /**
+ * 璁剧疆鍒嗙被鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setCodeclassifysecoidName (String codeclassifysecoidName){
+ this.codeclassifysecoidName = codeclassifysecoidName;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ /**
+ * 鑾峰彇 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ public String getParentclassifyvalueoid (){
+ return parentclassifyvalueoid;
+ }
+
+ /**
+ * 璁剧疆 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ public void setParentclassifyvalueoid (String parentclassifyvalueoid){
+ this.parentclassifyvalueoid = parentclassifyvalueoid;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeClassifyValueDTO{" +
+ "codeclassifysecoid='" + codeclassifysecoid +"',"+
+ "codeclassifysecoidName='" + codeclassifysecoidName +"'," +
+ "ordernum='" + ordernum +"',"+
+ "parentclassifyvalueoid='" + parentclassifyvalueoid +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeCompPreviewDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeCompPreviewDTO.java
new file mode 100644
index 0000000..111c4c5
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeCompPreviewDTO.java
@@ -0,0 +1,42 @@
+package org.springblade.code.dto;
+
+import java.util.Map;
+
+/**
+ * 缁勫悎瑙勫垯鐨勯瑙堟樉绀�
+ * @author weidy
+ * @date 2022-04-06
+ */
+public class CodeCompPreviewDTO implements java.io.Serializable{
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 7023496831561755321L;
+ /**
+ * 妯℃澘鐨勪富閿�
+ */
+ private String codeClassifyTemplateOid;
+
+ /**
+ * 褰撳墠鐨勮〃鍗曢噷鐨勫睘鎬у唴瀹�
+ */
+ private Map<String,String> data;
+
+ public String getCodeClassifyTemplateOid() {
+ return codeClassifyTemplateOid;
+ }
+
+ public void setCodeClassifyTemplateOid(String codeClassifyTemplateOid) {
+ this.codeClassifyTemplateOid = codeClassifyTemplateOid;
+ }
+
+
+ public Map<String, String> getData() {
+ return data;
+ }
+
+ public void setData(Map<String, String> data) {
+ this.data = data;
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeDeleteBatchDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeDeleteBatchDTO.java
new file mode 100644
index 0000000..c6f43ec
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeDeleteBatchDTO.java
@@ -0,0 +1,49 @@
+package org.springblade.code.dto;
+
+import java.util.List;
+
+/**
+ * 缂栫爜鍒犻櫎鐨勬暟鎹紶杈撳璞�
+ * @author weidy
+ * @date 2022-3-2
+ */
+public class CodeDeleteBatchDTO implements java.io.Serializable{
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -4153558541948865667L;
+ /**
+ * 鏁版嵁鐨勪富閿�
+ */
+ private List<String> oidList;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeClassifyOid;
+
+ public List<String> getOidList() {
+ return oidList;
+ }
+
+ public void setOidList(List<String> oidList) {
+ this.oidList = oidList;
+ }
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeDeleteBatchDTO{" +
+ "oidList=" + oidList +
+ ", codeClassifyOid='" + codeClassifyOid + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeExportAttrDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeExportAttrDTO.java
new file mode 100644
index 0000000..148bab2
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeExportAttrDTO.java
@@ -0,0 +1,134 @@
+package org.springblade.code.dto;
+
+import java.util.Map;
+
+/**
+ * 缂栫爜瀵煎嚭閰嶇疆鐨勪俊鎭�
+ * @author weidy
+ * @date 2022-03-2
+ */
+public class CodeExportAttrDTO implements java.io.Serializable{
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 2048221367839030718L;
+
+ /**
+ * 瑕佸鍑虹殑灞炴��,key鏄帓搴忥紝value鏄睘鎬х殑缂栧彿
+ */
+ private Map<Integer,String> attrIdIndexMap ;
+
+ /**
+ * 褰撳墠绗嚑椤�
+ */
+ private Integer page;
+
+ /**
+ * 姣忛〉鏄剧ず鏈�澶ф暟
+ */
+ private Integer limit;
+
+ /**
+ * 鎴鍒扮鍑犻〉
+ */
+ private Integer endPage;
+
+ /**
+ * 鎺掑簭鐨勫瓧娈�
+ */
+ private String sort;
+
+ /**
+ * 鎺掑簭鐨勯『搴�
+ */
+ private String order;
+
+ /**
+ * 鏌ヨ鏉′欢
+ */
+ private Map<String,String> conditionMap;
+
+ /**
+ * 鍒嗙被鐨勪富閿�
+ */
+ private String codeClassifyOid;
+
+ public Integer getEndPage() {
+ return endPage;
+ }
+
+ public void setEndPage(Integer endPage) {
+ this.endPage = endPage;
+ }
+
+ public Map<Integer, String> getAttrIdIndexMap() {
+ return attrIdIndexMap;
+ }
+
+ public void setAttrIdIndexMap(Map<Integer, String> attrIdIndexMap) {
+ this.attrIdIndexMap = attrIdIndexMap;
+ }
+
+ public Integer getPage() {
+ return page;
+ }
+
+ public void setPage(Integer page) {
+ this.page = page;
+ }
+
+ public Integer getLimit() {
+ return limit;
+ }
+
+ public void setLimit(Integer limit) {
+ this.limit = limit;
+ }
+
+ public String getSort() {
+ return sort;
+ }
+
+ public void setSort(String sort) {
+ this.sort = sort;
+ }
+
+ public String getOrder() {
+ return order;
+ }
+
+ public void setOrder(String order) {
+ this.order = order;
+ }
+
+ public Map<String, String> getConditionMap() {
+ return conditionMap;
+ }
+
+ public void setConditionMap(Map<String, String> conditionMap) {
+ this.conditionMap = conditionMap;
+ }
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeExportAttrDTO{" +
+ "attrIdIndexMap=" + attrIdIndexMap +
+ ", page=" + page +
+ ", limit=" + limit +
+ ", endPage=" + endPage +
+ ", sort='" + sort + '\'' +
+ ", order='" + order + '\'' +
+ ", conditionMap=" + conditionMap +
+ ", codeClassifyOid='" + codeClassifyOid + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeFixedValueDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeFixedValueDTO.java
new file mode 100644
index 0000000..4d897fb
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeFixedValueDTO.java
@@ -0,0 +1,84 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeFixedValueDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118504469968L;
+
+ /**
+ * 鍥哄畾鐮佹涓婚敭
+ */
+ private String codefixedsecoid;
+
+ /**
+ * 鍥哄畾鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ private String codefixedsecoidName;
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+
+ /**
+ * 鑾峰彇 鍥哄畾鐮佹涓婚敭
+ */
+ public String getCodefixedsecoid (){
+ return codefixedsecoid;
+ }
+
+ /**
+ * 璁剧疆 鍥哄畾鐮佹涓婚敭
+ */
+ public void setCodefixedsecoid (String codefixedsecoid){
+ this.codefixedsecoid = codefixedsecoid;
+ }
+
+ /**
+ * 鑾峰彇鍥哄畾鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getCodefixedsecoidName (){
+ return codefixedsecoidName;
+ }
+
+ /**
+ * 璁剧疆鍥哄畾鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setCodefixedsecoidName (String codefixedsecoidName){
+ this.codefixedsecoidName = codefixedsecoidName;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeFixedValueDTO{" +
+ "codefixedsecoid='" + codefixedsecoid +"',"+
+ "codefixedsecoidName='" + codefixedsecoidName +"'," +
+ "ordernum='" + ordernum +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeImprotDataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeImprotDataDTO.java
new file mode 100644
index 0000000..70c090f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeImprotDataDTO.java
@@ -0,0 +1,66 @@
+package org.springblade.code.dto;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class CodeImprotDataDTO implements java.io.Serializable{
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1880155181507713248L;
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeClassifyOid;
+
+ /**
+ * 妯℃澘鐨勪富閿�
+ */
+ private String templateOid;
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ private String codeRuleOid;
+ /**
+ * 鏁版嵁
+ */
+ private List<Map<String,String>> datas = new ArrayList<>();
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+ public String getTemplateOid() {
+ return templateOid;
+ }
+ public void setTemplateOid(String templateOid) {
+ this.templateOid = templateOid;
+ }
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+ public List<Map<String, String>> getDatas() {
+ return datas;
+ }
+
+ public void setDatas(List<Map<String, String>> datas) {
+ this.datas = datas;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImprotDatasVO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", templateOid='" + templateOid + '\'' +
+ ", codeRuleOid='" + codeRuleOid + '\'' +
+ ", datas=" + datas +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeKeyAttrRepeatRuleDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeKeyAttrRepeatRuleDTO.java
new file mode 100644
index 0000000..01cc36a
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeKeyAttrRepeatRuleDTO.java
@@ -0,0 +1,99 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeKeyAttrRepeatRuleDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118144488876L;
+
+ /**
+ * 鏄惁蹇界暐澶у皬鍐�
+ */
+ private String ignorecaseflag;
+
+ /**
+ * 鏄惁蹇界暐绌烘牸
+ */
+ private String ignorespaceflag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ private String ignoreallspaceflag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ private String ignorewidthflag;
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐澶у皬鍐�
+ */
+ public String getIgnorecaseflag (){
+ return ignorecaseflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐澶у皬鍐�
+ */
+ public void setIgnorecaseflag (String ignorecaseflag){
+ this.ignorecaseflag = ignorecaseflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐绌烘牸
+ */
+ public String getIgnorespaceflag (){
+ return ignorespaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐绌烘牸
+ */
+ public void setIgnorespaceflag (String ignorespaceflag){
+ this.ignorespaceflag = ignorespaceflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public String getIgnoreallspaceflag (){
+ return ignoreallspaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public void setIgnoreallspaceflag (String ignoreallspaceflag){
+ this.ignoreallspaceflag = ignoreallspaceflag;
+ }
+
+ public String getIgnorewidthflag() {
+ return ignorewidthflag;
+ }
+
+ public void setIgnorewidthflag(String ignorewidthflag) {
+ this.ignorewidthflag = ignorewidthflag;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeKeyAttrRepeatRuleDTO{" +
+ "ignorecaseflag='" + ignorecaseflag + '\'' +
+ ", ignorespaceflag='" + ignorespaceflag + '\'' +
+ ", ignoreallspaceflag='" + ignoreallspaceflag + '\'' +
+ ", ignorewidthflag='" + ignorewidthflag + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderDTO.java
new file mode 100644
index 0000000..95a90f5
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderDTO.java
@@ -0,0 +1,92 @@
+package org.springblade.code.dto;
+
+import com.vci.web.dto.BaseModelDTO;
+
+import java.util.List;
+
+/**
+ * 缂栫爜鐢宠鐨勪俊鎭�
+ * @author weidy
+ * @date 2022-2-28
+ */
+public class CodeOrderDTO extends BaseModelDTO {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1880155181507713245L;
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeClassifyOid;
+
+ /**
+ * 妯℃澘鐨勪富閿�
+ */
+ private String templateOid;
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ private String codeRuleOid;
+
+ /**
+ * 鏄惁鍦ㄦ祦绋嬩腑涓慨鏀�
+ */
+ private boolean editInProcess;
+
+ /**
+ * 鐮佹閫夋嫨鐨勪俊鎭�
+ */
+ private List<CodeOrderSecDTO> secDTOList;
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ public String getTemplateOid() {
+ return templateOid;
+ }
+
+ public void setTemplateOid(String templateOid) {
+ this.templateOid = templateOid;
+ }
+
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+
+ public List<CodeOrderSecDTO> getSecDTOList() {
+ return secDTOList;
+ }
+
+ public void setSecDTOList(List<CodeOrderSecDTO> secDTOList) {
+ this.secDTOList = secDTOList;
+ }
+
+ public boolean isEditInProcess() {
+ return editInProcess;
+ }
+
+ public void setEditInProcess(boolean editInProcess) {
+ this.editInProcess = editInProcess;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeOrderDTO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", templateOid='" + templateOid + '\'' +
+ ", codeRuleOid='" + codeRuleOid + '\'' +
+ ", editInProcess=" + editInProcess +
+ ", secDTOList=" + secDTOList +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderSecDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderSecDTO.java
new file mode 100644
index 0000000..fdafd21
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderSecDTO.java
@@ -0,0 +1,44 @@
+package org.springblade.code.dto;
+
+/**
+ * 缂栫爜鐢宠鐨勭爜娈电浉鍏充俊鎭�
+ * @author weidy
+ * @date 2022-02-28
+ */
+public class CodeOrderSecDTO implements java.io.Serializable{
+
+ /**
+ * 鐮佹鐨勪富閿�
+ */
+ private String secOid;
+
+ /**
+ * 鐮佹鍦ㄥ墠绔緭鍏ョ殑鍐呭
+ */
+ private String secValue;
+
+ public String getSecOid() {
+ return secOid;
+ }
+
+ public void setSecOid(String secOid) {
+ this.secOid = secOid;
+ }
+
+ public String getSecValue() {
+ return secValue;
+ }
+
+ public void setSecValue(String secValue) {
+ this.secValue = secValue;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeOrderSecDTO{" +
+ "secOid='" + secOid + '\'' +
+ ", secValue='" + secValue + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodePhaseAttrDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodePhaseAttrDTO.java
new file mode 100644
index 0000000..8757fd7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodePhaseAttrDTO.java
@@ -0,0 +1,64 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodePhaseAttrDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118720105671L;
+
+ /**
+ * 鎵�灞炴ā鏉块樁娈�
+ */
+ private String codephaseoid;
+
+ /**
+ * 鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+ */
+ private String codephaseoidName;
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉块樁娈�
+ */
+ public String getCodephaseoid (){
+ return codephaseoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉块樁娈�
+ */
+ public void setCodephaseoid (String codephaseoid){
+ this.codephaseoid = codephaseoid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+ */
+ public String getCodephaseoidName (){
+ return codephaseoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+ */
+ public void setCodephaseoidName (String codephaseoidName){
+ this.codephaseoidName = codephaseoidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodePhaseAttrDTO{" +
+ "codephaseoid='" + codephaseoid +"',"+
+ "codephaseoidName='" + codephaseoidName +"'," +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeResembleRuleDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeResembleRuleDTO.java
new file mode 100644
index 0000000..5ee214b
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeResembleRuleDTO.java
@@ -0,0 +1,118 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+public class CodeResembleRuleDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118908699390L;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ private String ignoreallspaceflag;
+
+ /**
+ * 鏄惁蹇界暐澶у皬鍐�
+ */
+ private String ignorecaseflag;
+
+ /**
+ * 鏄惁蹇界暐绌烘牸
+ */
+ private String ignorespaceflag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ private String ignorewidthflag;
+
+ /**
+ * 杩炴帴瀛楃
+ */
+ private String linkCharacter;
+
+ public String getLinkCharacter() {
+ return linkCharacter;
+ }
+
+ public void setLinkCharacter(String linkCharacter) {
+ this.linkCharacter = linkCharacter;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public String getIgnoreallspaceflag (){
+ return ignoreallspaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public void setIgnoreallspaceflag (String ignoreallspaceflag){
+ this.ignoreallspaceflag = ignoreallspaceflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐澶у皬鍐�
+ */
+ public String getIgnorecaseflag (){
+ return ignorecaseflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐澶у皬鍐�
+ */
+ public void setIgnorecaseflag (String ignorecaseflag){
+ this.ignorecaseflag = ignorecaseflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐绌烘牸
+ */
+ public String getIgnorespaceflag (){
+ return ignorespaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐绌烘牸
+ */
+ public void setIgnorespaceflag (String ignorespaceflag){
+ this.ignorespaceflag = ignorespaceflag;
+ }
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ public String getIgnorewidthflag (){
+ return ignorewidthflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ public void setIgnorewidthflag (String ignorewidthflag){
+ this.ignorewidthflag = ignorewidthflag;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeResembleRuleDTO{" +
+ "ignoreallspaceflag='" + ignoreallspaceflag + '\'' +
+ ", ignorecaseflag='" + ignorecaseflag + '\'' +
+ ", ignorespaceflag='" + ignorespaceflag + '\'' +
+ ", ignorewidthflag='" + ignorewidthflag + '\'' +
+ ", linkCharacter='" + linkCharacter + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeRuleDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeRuleDTO.java
new file mode 100644
index 0000000..3dd7f99
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeRuleDTO.java
@@ -0,0 +1,40 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeRuleDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117067738769L;
+
+ /**
+ * 鐮佹闆嗗悎
+ */
+ private List<CodeBasicSecDTO> elements;
+
+ public List<CodeBasicSecDTO> getElements() {
+ return elements;
+ }
+
+ public void setElements(List<CodeBasicSecDTO> elements) {
+ this.elements = elements;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeRuleDTO{" +
+ "elements=" + elements +
+ '}'+ super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeSynonymDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeSynonymDTO.java
new file mode 100644
index 0000000..e313bff
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeSynonymDTO.java
@@ -0,0 +1,104 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-02-17
+ */
+public class CodeSynonymDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117393017144L;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒�
+ */
+ private String codeclassifytemplateoid;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ private String codeclassifytemplateoidName;
+ /**
+ * 婧愬��
+ */
+ private String sourcevalue;
+
+ /**
+ * 鍚屼箟璇�
+ */
+ private String synonymvalue;
+
+
+ /**
+ * 鑾峰彇 鎵�灞炵紪鐮佽鍒�
+ */
+ public String getCodeclassifytemplateoid (){
+ return codeclassifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炵紪鐮佽鍒�
+ */
+ public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
+ this.codeclassifytemplateoid = codeclassifytemplateoid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public String getCodeclassifytemplateoidName (){
+ return codeclassifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
+ this.codeclassifytemplateoidName = codeclassifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 婧愬��
+ */
+ public String getSourcevalue (){
+ return sourcevalue;
+ }
+
+ /**
+ * 璁剧疆 婧愬��
+ */
+ public void setSourcevalue (String sourcevalue){
+ this.sourcevalue = sourcevalue;
+ }
+
+ /**
+ * 鑾峰彇 鍚屼箟璇�
+ */
+ public String getSynonymvalue (){
+ return synonymvalue;
+ }
+
+ /**
+ * 璁剧疆 鍚屼箟璇�
+ */
+ public void setSynonymvalue (String synonymvalue){
+ this.synonymvalue = synonymvalue;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeSynonymDTO{" +
+ "codeclassifytemplateoid='" + codeclassifytemplateoid +"',"+
+ "codeclassifytemplateoidName='" + codeclassifytemplateoidName +"'," +
+ "sourcevalue='" + sourcevalue +"',"+
+ "synonymvalue='" + synonymvalue +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeTemplatePhaseDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeTemplatePhaseDTO.java
new file mode 100644
index 0000000..8c89f38
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeTemplatePhaseDTO.java
@@ -0,0 +1,80 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeTemplatePhaseDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117809299474L;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒�
+ */
+ private String codeclassifytemplateoid;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ private String codeclassifytemplateoidName;
+
+ /**
+ * 鍖呭惈鐨勫睘鎬�
+ */
+ private List<CodePhaseAttrDTO> attributes;
+
+ /**
+ * 鑾峰彇 鎵�灞炵紪鐮佽鍒�
+ */
+ public String getCodeclassifytemplateoid (){
+ return codeclassifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炵紪鐮佽鍒�
+ */
+ public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
+ this.codeclassifytemplateoid = codeclassifytemplateoid;
+ }
+
+ /**
+ * 鑾峰彇鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public String getCodeclassifytemplateoidName (){
+ return codeclassifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
+ this.codeclassifytemplateoidName = codeclassifytemplateoidName;
+ }
+
+ public List<CodePhaseAttrDTO> getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List<CodePhaseAttrDTO> attributes) {
+ this.attributes = attributes;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeTemplatePhaseDTO{" +
+ "codeclassifytemplateoid='" + codeclassifytemplateoid + '\'' +
+ ", codeclassifytemplateoidName='" + codeclassifytemplateoidName + '\'' +
+ ", attributes=" + attributes +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingDataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingDataDTO.java
new file mode 100644
index 0000000..a229780
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingDataDTO.java
@@ -0,0 +1,120 @@
+package org.springblade.code.dto;
+
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 瑕佹帹閫佸緱鏁版嵁
+ * @author wangyi
+ * @date 2022-10-7
+ */
+public class DockingDataDTO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+
+ /**
+ * 绯荤粺鎺ュ彛oid
+ */
+ private String classifyoid;
+
+ /**
+ * 绯荤粺id
+ */
+ private String btmoid;
+
+ /**
+ * 绯荤粺id
+ */
+ private String btmid;
+
+ /**
+ * 绯荤粺id
+ */
+ private String sendtype;
+
+ /**
+ * 鏄惁鍒嗚В浠诲姟
+ */
+ private String sendflag;
+
+ /**
+ * 绯荤粺id
+ */
+ private String classifyid;
+
+ /**
+ * 绯荤粺id
+ */
+ private String classifyname;
+
+ public String getClassifyoid() {
+ return classifyoid;
+ }
+
+ public void setClassifyoid(String classifyoid) {
+ this.classifyoid = classifyoid;
+ }
+
+ public String getBtmoid() {
+ return btmoid;
+ }
+
+ public void setBtmoid(String btmoid) {
+ this.btmoid = btmoid;
+ }
+
+ public String getBtmid() {
+ return btmid;
+ }
+
+ public void setBtmid(String btmid) {
+ this.btmid = btmid;
+ }
+
+ public String getSendtype() {
+ return sendtype;
+ }
+
+ public void setSendtype(String sendtype) {
+ this.sendtype = sendtype;
+ }
+
+ public String getSendflag() {
+ return sendflag;
+ }
+
+ public void setSendflag(String sendflag) {
+ this.sendflag = sendflag;
+ }
+
+ public String getClassifyid() {
+ return classifyid;
+ }
+
+ public void setClassifyid(String classifyid) {
+ this.classifyid = classifyid;
+ }
+
+ public String getClassifyname() {
+ return classifyname;
+ }
+
+ public void setClassifyname(String classifyname) {
+ this.classifyname = classifyname;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingDataDO{" +
+ "classifyoid='" + classifyoid + '\'' +
+ ", btmoid='" + btmoid + '\'' +
+ ", btmid='" + btmid + '\'' +
+ ", sendtype='" + sendtype + '\'' +
+ ", sendflag='" + sendflag + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingLogeDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingLogeDTO.java
new file mode 100644
index 0000000..0b6f872
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingLogeDTO.java
@@ -0,0 +1,179 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public class DockingLogeDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120475192779L;
+
+ /**
+ * 鎺ュ彛鐘舵��
+ */
+ private String interfacestatus;
+
+ /**
+ * 鍙傛暟
+ */
+ private String paramstring;
+
+ /**
+ * 杩斿洖
+ */
+ private String returnstring;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ private String systemcode;
+
+ /**
+ * 绯荤粺鍚嶇О
+ */
+ private String systemname;
+
+ /**
+ * 绯荤粺id
+ */
+ private String systemoid;
+
+ /**
+ * 鎺ュ彛绫诲瀷
+ */
+ private String type;
+
+ /**
+ * 杩旇繕鎻愮ず
+ */
+ private String msg;
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ /**
+ * 鑾峰彇 鎺ュ彛鐘舵��
+ */
+ public String getInterfacestatus (){
+ return interfacestatus;
+ }
+
+ /**
+ * 璁剧疆 鎺ュ彛鐘舵��
+ */
+ public void setInterfacestatus (String interfacestatus){
+ this.interfacestatus = interfacestatus;
+ }
+
+ /**
+ * 鑾峰彇 鍙傛暟
+ */
+ public String getParamstring (){
+ return paramstring;
+ }
+
+ /**
+ * 璁剧疆 鍙傛暟
+ */
+ public void setParamstring (String paramstring){
+ this.paramstring = paramstring;
+ }
+
+ /**
+ * 鑾峰彇 杩斿洖
+ */
+ public String getReturnstring (){
+ return returnstring;
+ }
+
+ /**
+ * 璁剧疆 杩斿洖
+ */
+ public void setReturnstring (String returnstring){
+ this.returnstring = returnstring;
+ }
+
+ /**
+ * 鑾峰彇 绯荤粺缂栧彿
+ */
+ public String getSystemcode (){
+ return systemcode;
+ }
+
+ /**
+ * 璁剧疆 绯荤粺缂栧彿
+ */
+ public void setSystemcode (String systemcode){
+ this.systemcode = systemcode;
+ }
+
+ /**
+ * 鑾峰彇 绯荤粺鍚嶇О
+ */
+ public String getSystemname (){
+ return systemname;
+ }
+
+ /**
+ * 璁剧疆 绯荤粺鍚嶇О
+ */
+ public void setSystemname (String systemname){
+ this.systemname = systemname;
+ }
+
+ /**
+ * 鑾峰彇 绯荤粺id
+ */
+ public String getSystemoid (){
+ return systemoid;
+ }
+
+ /**
+ * 璁剧疆 绯荤粺id
+ */
+ public void setSystemoid (String systemoid){
+ this.systemoid = systemoid;
+ }
+
+ /**
+ * 鑾峰彇 鎺ュ彛绫诲瀷
+ */
+ public String getType (){
+ return type;
+ }
+
+ /**
+ * 璁剧疆 鎺ュ彛绫诲瀷
+ */
+ public void setType (String type){
+ this.type = type;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DockingLogeDTO{" +
+ "interfacestatus='" + interfacestatus + '\'' +
+ ", paramstring='" + paramstring + '\'' +
+ ", returnstring='" + returnstring + '\'' +
+ ", systemcode='" + systemcode + '\'' +
+ ", systemname='" + systemname + '\'' +
+ ", systemoid='" + systemoid + '\'' +
+ ", type='" + type + '\'' +
+ ", msg='" + msg + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataDTO.java
new file mode 100644
index 0000000..b7809c8
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataDTO.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public class DockingPreApplyDataDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119386802588L;
+
+ /**
+ * 鐢宠oid
+ */
+ private String preapplyoid;
+
+ /**
+ * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
+ */
+ private String uniquecode;
+
+ /**
+ * 涓婚搴撶紪鍙�
+ */
+ private String type;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ private String systemid;
+
+ /**
+ * 姝e湪浣跨敤鏍囧織
+ */
+ private String useddflag;
+
+ /**
+ * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被oid
+ */
+ private String classifyoid;
+
+ /**
+ * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被鍚嶇О
+ */
+ private String classifyname;
+
+ /**
+ * 鐢宠鎴愬姛鍚庣殑缂栫爜,鎴栬�呭凡缁忓瓨鍦ㄧ殑缂栫爜
+ */
+ private String num;
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ private String model;
+ /**
+ * 闆朵欢绫诲瀷
+ */
+ private String parttype;
+ /**
+ * 璁¢噺鍗曚綅
+ */
+ private String unit;
+
+ /**
+ * 鍗曢噸
+ */
+ private String weight;
+
+ /**
+ * 鏄惁閲嶈浠�
+ */
+ private String importantPart;
+
+ /**
+ * 鏄惁鍏抽敭浠�
+ */
+ private String keyPart;
+ /**
+ * 鏁版嵁澶勭悊杩斿洖鐘舵�佺爜
+ */
+ private String datacode;
+
+ /**
+ * 鏁版嵁澶勭悊杩斿洖淇℃伅
+ */
+ private String datamsg;
+
+ public String getPreapplyoid() {
+ return preapplyoid;
+ }
+
+ public void setPreapplyoid(String preapplyoid) {
+ this.preapplyoid = preapplyoid;
+ }
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getSystemid() {
+ return systemid;
+ }
+
+ public void setSystemid(String systemid) {
+ this.systemid = systemid;
+ }
+
+ public String getUseddflag() {
+ return useddflag;
+ }
+
+ public void setUseddflag(String useddflag) {
+ this.useddflag = useddflag;
+ }
+
+ public String getClassifyoid() {
+ return classifyoid;
+ }
+
+ public void setClassifyoid(String classifyoid) {
+ this.classifyoid = classifyoid;
+ }
+
+ public String getClassifyname() {
+ return classifyname;
+ }
+
+ public void setClassifyname(String classifyname) {
+ this.classifyname = classifyname;
+ }
+
+ public String getNum() {
+ return num;
+ }
+
+ public void setNum(String num) {
+ this.num = num;
+ }
+
+ public String getDatacode() {
+ return datacode;
+ }
+
+ public void setDatacode(String datacode) {
+ this.datacode = datacode;
+ }
+
+ public String getDatamsg() {
+ return datamsg;
+ }
+
+ public void setDatamsg(String datamsg) {
+ this.datamsg = datamsg;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public String getParttype() {
+ return parttype;
+ }
+
+ public void setParttype(String parttype) {
+ this.parttype = parttype;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getWeight() {
+ return weight;
+ }
+
+ public void setWeight(String weight) {
+ this.weight = weight;
+ }
+
+ public String getImportantPart() {
+ return importantPart;
+ }
+
+ public void setImportantPart(String importantPart) {
+ this.importantPart = importantPart;
+ }
+
+ public String getKeyPart() {
+ return keyPart;
+ }
+
+ public void setKeyPart(String keyPart) {
+ this.keyPart = keyPart;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreApplyDataDTO{" +
+ "preapplyoid='" + preapplyoid + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", type='" + type + '\'' +
+ ", systemid='" + systemid + '\'' +
+ ", useddflag='" + useddflag + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", num='" + num + '\'' +
+ ", model='" + model + '\'' +
+ ", parttype='" + parttype + '\'' +
+ ", unit='" + unit + '\'' +
+ ", weight='" + weight + '\'' +
+ ", importantPart='" + importantPart + '\'' +
+ ", keyPart='" + keyPart + '\'' +
+ ", datacode='" + datacode + '\'' +
+ ", datamsg='" + datamsg + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataInfoDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataInfoDTO.java
new file mode 100644
index 0000000..e9714d3
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataInfoDTO.java
@@ -0,0 +1,126 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public class DockingPreApplyDataInfoDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117408397326L;
+
+ /**
+ * data鐨刼id
+ */
+ private String dataoid;
+
+ /**
+ * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
+ */
+ private String uniquecode;
+
+ /**
+ * 灞炴�ey
+ */
+ private String key;
+
+ /**
+ * 灞炴�ey鍚箟
+ */
+ private String mean;
+
+ /**
+ * 灞炴�alue
+ */
+ private String value;
+
+
+ /**
+ * 鑾峰彇 data鐨刼id
+ */
+ public String getDataoid (){
+ return dataoid;
+ }
+
+ /**
+ * 璁剧疆 data鐨刼id
+ */
+ public void setDataoid (String dataoid){
+ this.dataoid = dataoid;
+ }
+
+ /**
+ * 鑾峰彇 灞炴�ey
+ */
+ public String getKey (){
+ return key;
+ }
+
+ /**
+ * 璁剧疆 灞炴�ey
+ */
+ public void setKey (String key){
+ this.key = key;
+ }
+
+ /**
+ * 鑾峰彇 灞炴�ey鍚箟
+ */
+ public String getMean (){
+ return mean;
+ }
+
+ /**
+ * 璁剧疆 灞炴�ey鍚箟
+ */
+ public void setMean (String mean){
+ this.mean = mean;
+ }
+
+ /**
+ * 鑾峰彇 鍞竴鏍囪瘑
+ */
+ public String getUniquecode (){
+ return uniquecode;
+ }
+
+ /**
+ * 璁剧疆 鍞竴鏍囪瘑
+ */
+ public void setUniquecode (String uniquecode){
+ this.uniquecode = uniquecode;
+ }
+
+ /**
+ * 鑾峰彇 灞炴�alue
+ */
+ public String getValue (){
+ return value;
+ }
+
+ /**
+ * 璁剧疆 灞炴�alue
+ */
+ public void setValue (String value){
+ this.value = value;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DockingPreApplyDataInfoDTO{" +
+ "dataoid='" + dataoid +"',"+
+ "key='" + key +"',"+
+ "mean='" + mean +"',"+
+ "uniquecode='" + uniquecode +"',"+
+ "value='" + value +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrMappingDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrMappingDTO.java
new file mode 100644
index 0000000..354f713
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrMappingDTO.java
@@ -0,0 +1,200 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
+ * @author xiejun
+ * @date 2023-01-06
+ */
+public class DockingPreAttrMappingDTO extends BaseModelVO {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6020487634341415429L;
+ /***
+ * 榛樿鍊�
+ */
+ private String jdefaultValue;
+
+ /***
+ * 榛樿鍊�
+ */
+ private String jmetaListId;
+ /**
+ * 婧愬垎绫籭d
+ */
+ private String jsourceClsfId;
+ /**
+ * 婧愬垎绫诲悕绉�
+ */
+ private String jsourceClsfName;
+ /**
+ * 婧愬睘鎬id
+ */
+ private String jtargetAttrId;
+
+ /**
+ * 鐩爣灞炴�id
+ */
+ private String jtargetClsfId;
+
+ /***
+ * 妯℃澘Id
+ */
+ private String jviewModeId;
+ /***
+ * 妯℃澘鍚嶇О
+ */
+ private String jviewModeName;
+
+ /***
+ * 鐩爣灞炴�у唴閮ㄥ悕绉�
+ */
+ private String jtargetAttrKey;
+
+ /***
+ * 鐩爣灞炴�у悕绉�
+ */
+ private String jtargetAttrName;
+
+ /***
+ * 鐩爣灞炴�у唴閮ㄥ悕绉�
+ */
+ private String jsourceAttrKey;
+
+ /***
+ * 鐩爣灞炴�у悕绉�
+ */
+ private String jsourceAttrName;
+ /**
+ * 灞炴�у彇鍊艰寖鍥�
+ */
+ private List<DockingPreAttrRangeDTO> dockingPreAttrRangeDTOS;
+
+ public String getJdefaultValue() {
+ return jdefaultValue;
+ }
+
+ public void setJdefaultValue(String jdefaultValue) {
+ this.jdefaultValue = jdefaultValue;
+ }
+
+ public String getJmetaListId() {
+ return jmetaListId;
+ }
+
+ public void setJmetaListId(String jmetaListId) {
+ this.jmetaListId = jmetaListId;
+ }
+
+ public String getJsourceClsfId() {
+ return jsourceClsfId;
+ }
+
+ public void setJsourceClsfId(String jsourceClsfId) {
+ this.jsourceClsfId = jsourceClsfId;
+ }
+
+ public String getJsourceClsfName() {
+ return jsourceClsfName;
+ }
+
+ public void setJsourceClsfName(String jsourceClsfName) {
+ this.jsourceClsfName = jsourceClsfName;
+ }
+
+ public String getJtargetAttrId() {
+ return jtargetAttrId;
+ }
+
+ public void setJtargetAttrId(String jtargetAttrId) {
+ this.jtargetAttrId = jtargetAttrId;
+ }
+
+ public String getJtargetClsfId() {
+ return jtargetClsfId;
+ }
+
+ public void setJtargetClsfId(String jtargetClsfId) {
+ this.jtargetClsfId = jtargetClsfId;
+ }
+
+ public String getJviewModeId() {
+ return jviewModeId;
+ }
+
+ public void setJviewModeId(String jviewModeId) {
+ this.jviewModeId = jviewModeId;
+ }
+
+ public String getJviewModeName() {
+ return jviewModeName;
+ }
+
+ public void setJviewModeName(String jviewModeName) {
+ this.jviewModeName = jviewModeName;
+ }
+
+ public String getJtargetAttrKey() {
+ return jtargetAttrKey;
+ }
+
+ public void setJtargetAttrKey(String jtargetAttrKey) {
+ this.jtargetAttrKey = jtargetAttrKey;
+ }
+
+ public String getJtargetAttrName() {
+ return jtargetAttrName;
+ }
+
+ public void setJtargetAttrName(String jtargetAttrName) {
+ this.jtargetAttrName = jtargetAttrName;
+ }
+
+ public String getJsourceAttrKey() {
+ return jsourceAttrKey;
+ }
+
+ public void setJsourceAttrKey(String jsourceAttrKey) {
+ this.jsourceAttrKey = jsourceAttrKey;
+ }
+
+ public String getJsourceAttrName() {
+ return jsourceAttrName;
+ }
+
+ public void setJsourceAttrName(String jsourceAttrName) {
+ this.jsourceAttrName = jsourceAttrName;
+ }
+
+ public List<DockingPreAttrRangeDTO> getDockingPreAttrRangeDTOS() {
+ return dockingPreAttrRangeDTOS;
+ }
+
+ public void setDockingPreAttrRangeDTOS(List<DockingPreAttrRangeDTO> dockingPreAttrRangeDTOS) {
+ this.dockingPreAttrRangeDTOS = dockingPreAttrRangeDTOS;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreAttrMappingDTO{" +
+ "jdefaultValue='" + jdefaultValue + '\'' +
+ ", jmetaListId='" + jmetaListId + '\'' +
+ ", jsourceClsfId='" + jsourceClsfId + '\'' +
+ ", jsourceClsfName='" + jsourceClsfName + '\'' +
+ ", jtargetAttrId='" + jtargetAttrId + '\'' +
+ ", jtargetClsfId='" + jtargetClsfId + '\'' +
+ ", jviewModeId='" + jviewModeId + '\'' +
+ ", jviewModeName='" + jviewModeName + '\'' +
+ ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
+ ", jtargetAttrName='" + jtargetAttrName + '\'' +
+ ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
+ ", jsourceAttrName='" + jsourceAttrName + '\'' +
+ ", dockingPreAttrRangeDTOS=" + dockingPreAttrRangeDTOS +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrRangeDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrRangeDTO.java
new file mode 100644
index 0000000..9cf54ff
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrRangeDTO.java
@@ -0,0 +1,82 @@
+package org.springblade.code.dto;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+public class DockingPreAttrRangeDTO extends BaseModelVO {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6020487634341415410L;
+ /***
+ *灞炴�d
+ */
+ private String jmetaListId;
+ /**
+ * 灞炴�ф灇涓炬樉绀哄悕绉�
+ */
+ private String jnumText;
+ /**
+ * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
+ */
+ private String jnumTextValue;
+
+ /**
+ * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
+ */
+ private String jtargeNumText;
+ /**
+ * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
+ */
+ private String jtargeNumTextValue;
+
+ public String getJnumText() {
+ return jnumText;
+ }
+
+ public void setJnumText(String jnumText) {
+ this.jnumText = jnumText;
+ }
+
+ public String getJnumTextValue() {
+ return jnumTextValue;
+ }
+
+ public void setJnumTextValue(String jnumTextValue) {
+ this.jnumTextValue = jnumTextValue;
+ }
+
+ public String getJtargeNumText() {
+ return jtargeNumText;
+ }
+
+ public void setJtargeNumText(String jtargeNumText) {
+ this.jtargeNumText = jtargeNumText;
+ }
+
+ public String getJtargeNumTextValue() {
+ return jtargeNumTextValue;
+ }
+
+ public void setJtargeNumTextValue(String jtargeNumTextValue) {
+ this.jtargeNumTextValue = jtargeNumTextValue;
+ }
+
+ public String getJmetaListId() {
+ return jmetaListId;
+ }
+
+ public void setJmetaListId(String jmetaListId) {
+ this.jmetaListId = jmetaListId;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreAttrRangeDTO{" +
+ "jmetaListId='" + jmetaListId + '\'' +
+ ", jnumText='" + jnumText + '\'' +
+ ", jnumTextValue='" + jnumTextValue + '\'' +
+ ", jtargeNumText='" + jtargeNumText + '\'' +
+ ", jtargeNumTextValue='" + jtargeNumTextValue + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingTaskDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingTaskDTO.java
new file mode 100644
index 0000000..e9a05ff
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingTaskDTO.java
@@ -0,0 +1,197 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public class DockingTaskDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120806149100L;
+
+ /**
+ * 绯荤粺鎺ュ彛oid
+ */
+ private String sysinfooid;
+
+ /**
+ * 绯荤粺id
+ */
+ private String systemoid;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ private String systemcode;
+
+ /**
+ * 绯荤粺鍚嶇О
+ */
+ private String systemname;
+
+ /**
+ * 鍒嗙被oid
+ */
+ private String classifyoid;
+
+ /**
+ * 鍒嗙被id
+ */
+ private String classifyid;
+
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ private String classifyname;
+
+ /**
+ * 涓氬姟绫诲瀷鏁版嵁oid
+ */
+ private String btmoid;
+
+ /**
+ * 涓氬姟绫诲瀷鏁版嵁oid
+ */
+ private String btmid;
+
+ /**
+ * uniquecode
+ */
+ private String uniquecode;
+
+ /**
+ * 鏄惁鍙戦�佹垚鍔�
+ */
+ private String sendflag;
+
+ private String sendtype;
+ /**
+ * 鏄惁鍙戦�佹垚鍔�
+ */
+ private String dataoid;
+
+ public String getDataoid() {
+ return dataoid;
+ }
+
+ public void setDataoid(String dataoid) {
+ this.dataoid = dataoid;
+ }
+ public String getSendtype() {
+ return sendtype;
+ }
+
+ public void setSendtype(String sendtype) {
+ this.sendtype = sendtype;
+ }
+ public String getSysinfooid() {
+ return sysinfooid;
+ }
+
+ public void setSysinfooid(String sysinfooid) {
+ this.sysinfooid = sysinfooid;
+ }
+
+ public String getSystemoid() {
+ return systemoid;
+ }
+
+ public void setSystemoid(String systemoid) {
+ this.systemoid = systemoid;
+ }
+
+ public String getSystemcode() {
+ return systemcode;
+ }
+
+ public void setSystemcode(String systemcode) {
+ this.systemcode = systemcode;
+ }
+
+ public String getSystemname() {
+ return systemname;
+ }
+
+ public void setSystemname(String systemname) {
+ this.systemname = systemname;
+ }
+
+ public String getClassifyoid() {
+ return classifyoid;
+ }
+
+ public void setClassifyoid(String classifyoid) {
+ this.classifyoid = classifyoid;
+ }
+ public String getClassifyid() {
+ return classifyid;
+ }
+
+ public void setClassifyid(String classifyid) {
+ this.classifyid = classifyid;
+ }
+ public String getClassifyname() {
+ return classifyname;
+ }
+
+ public void setClassifyname(String classifyname) {
+ this.classifyname = classifyname;
+ }
+
+ public String getBtmoid() {
+ return btmoid;
+ }
+
+ public void setBtmoid(String btmoid) {
+ this.btmoid = btmoid;
+ }
+ public String getBtmid() {
+ return btmid;
+ }
+
+ public void setBtmid(String btmid) {
+ this.btmid = btmid;
+ }
+
+ public String getSendflag() {
+ return sendflag;
+ }
+
+ public void setSendflag(String sendflag) {
+ this.sendflag = sendflag;
+ }
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingTaskDTO{" +
+ "sysinfooid='" + sysinfooid + '\'' +
+ ", systemoid='" + systemoid + '\'' +
+ ", systemcode='" + systemcode + '\'' +
+ ", systemname='" + systemname + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", btmoid='" + btmoid + '\'' +
+ ", btmo='" + btmid + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", sendflag='" + sendflag + '\'' +
+ ", sendtype='" + sendtype + '\'' +
+ ", dataoid='" + dataoid + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/PreApplyCodeOrderDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/PreApplyCodeOrderDTO.java
new file mode 100644
index 0000000..9ea3fdf
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/PreApplyCodeOrderDTO.java
@@ -0,0 +1,106 @@
+package org.springblade.code.dto;
+
+import com.vci.web.dto.BaseModelDTO;
+
+import java.util.List;
+
+/**
+ * 棰勭敵璇风紪鐮佺敵璇风殑淇℃伅
+ * @author weidy
+ * @date 2022-2-28
+ */
+public class PreApplyCodeOrderDTO extends BaseModelDTO {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1880155181507713245L;
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeClassifyOid;
+
+ /**
+ * 妯℃澘鐨勪富閿�
+ */
+ private String templateOid;
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ private String codeRuleOid;
+
+ /**
+ * 鏄惁鍦ㄦ祦绋嬩腑涓慨鏀�
+ */
+ private boolean editInProcess;
+
+ /**
+ * dockingpadata data鐨刼id
+ */
+ private String dataoid;
+
+ /**
+ * 鐮佹閫夋嫨鐨勪俊鎭�
+ */
+ private List<CodeOrderSecDTO> secDTOList;
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ public String getTemplateOid() {
+ return templateOid;
+ }
+
+ public void setTemplateOid(String templateOid) {
+ this.templateOid = templateOid;
+ }
+
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+
+ public List<CodeOrderSecDTO> getSecDTOList() {
+ return secDTOList;
+ }
+
+ public void setSecDTOList(List<CodeOrderSecDTO> secDTOList) {
+ this.secDTOList = secDTOList;
+ }
+
+ public boolean isEditInProcess() {
+ return editInProcess;
+ }
+
+ public void setEditInProcess(boolean editInProcess) {
+ this.editInProcess = editInProcess;
+ }
+
+ public String getDataoid() {
+ return dataoid;
+ }
+
+ public void setDataoid(String dataoid) {
+ this.dataoid = dataoid;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeOrderDTO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", templateOid='" + templateOid + '\'' +
+ ", codeRuleOid='" + codeRuleOid + '\'' +
+ ", editInProcess=" + editInProcess +
+ ", secDTOList=" + secDTOList +
+ ", dataoid=" + dataoid +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntAuthorityDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntAuthorityDTO.java
new file mode 100644
index 0000000..b363829
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntAuthorityDTO.java
@@ -0,0 +1,124 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public class SysIntAuthorityDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119813649189L;
+
+ /**
+ * 楠岃瘉浠ょ墝
+ */
+ private String token;
+
+ /**
+ * 璁よ瘉鏂瑰紡
+ */
+ private String type;
+
+ /**
+ * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String typeText;
+ /**
+ * 楠岃瘉鐢ㄦ埛
+ */
+ private String useraccount;
+
+ /**
+ * 楠岃瘉瀵嗙爜
+ */
+ private String usercode;
+
+
+ /**
+ * 鑾峰彇 楠岃瘉浠ょ墝
+ */
+ public String getToken (){
+ return token;
+ }
+
+ /**
+ * 璁剧疆 楠岃瘉浠ょ墝
+ */
+ public void setToken (String token){
+ this.token = token;
+ }
+
+ /**
+ * 鑾峰彇 璁よ瘉鏂瑰紡
+ */
+ public String getType (){
+ return type;
+ }
+
+ /**
+ * 璁剧疆 璁よ瘉鏂瑰紡
+ */
+ public void setType (String type){
+ this.type = type;
+ }
+
+ /**
+ * 鑾峰彇璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ public String getTypeText (){
+ return typeText;
+ }
+
+ /**
+ * 璁剧疆璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ public void setTypeText (String typeText){
+ this.typeText = typeText;
+ }
+ /**
+ * 鑾峰彇 楠岃瘉鐢ㄦ埛
+ */
+ public String getUseraccount (){
+ return useraccount;
+ }
+
+ /**
+ * 璁剧疆 楠岃瘉鐢ㄦ埛
+ */
+ public void setUseraccount (String useraccount){
+ this.useraccount = useraccount;
+ }
+
+ /**
+ * 鑾峰彇 楠岃瘉瀵嗙爜
+ */
+ public String getUsercode (){
+ return usercode;
+ }
+
+ /**
+ * 璁剧疆 楠岃瘉瀵嗙爜
+ */
+ public void setUsercode (String usercode){
+ this.usercode = usercode;
+ }
+
+
+ @Override
+ public String toString() {
+ return "SysIntAuthorityDTO{" +
+ "token='" + token +"',"+
+ "type='" + type +"',"+
+ "typeText='" + typeText + "'," +
+ "useraccount='" + useraccount +"',"+
+ "usercode='" + usercode +"',"+
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntBaseDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntBaseDTO.java
new file mode 100644
index 0000000..3cd36f9
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntBaseDTO.java
@@ -0,0 +1,26 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public class SysIntBaseDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117775925895L;
+
+
+
+ @Override
+ public String toString() {
+ return "SysIntBaseDTO{" +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntHeaderDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntHeaderDTO.java
new file mode 100644
index 0000000..af10f11
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntHeaderDTO.java
@@ -0,0 +1,80 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+public class SysIntHeaderDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117695864945L;
+
+ /**
+ * SysIntInfoDO 鐨刼id
+ */
+ private String infoOid;
+
+ /**
+ * 鍙傛暟key
+ */
+ private String headerkey;
+
+ /**
+ * 鍙傛暟value
+ */
+ private String headeralue;
+
+ /**
+ * 鏄惁浣跨敤
+ */
+ private String usedflag;
+
+ public String getInfoOid() {
+ return infoOid;
+ }
+
+ public void setInfoOid(String infoOid) {
+ this.infoOid = infoOid;
+ }
+
+ public String getHeaderkey() {
+ return headerkey;
+ }
+
+ public void setHeaderkey(String headerkey) {
+ this.headerkey = headerkey;
+ }
+
+ public String getHeaderalue() {
+ return headeralue;
+ }
+
+ public void setHeaderalue(String headeralue) {
+ this.headeralue = headeralue;
+ }
+
+ public String getUsedflag() {
+ return usedflag;
+ }
+
+ public void setUsedflag(String usedflag) {
+ this.usedflag = usedflag;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntHeaderDO{" +
+ "infoOid='" + infoOid + '\'' +
+ ", headerkey='" + headerkey + '\'' +
+ ", headeralue='" + headeralue + '\'' +
+ ", usedflag='" + usedflag + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoBseDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoBseDTO.java
new file mode 100644
index 0000000..1aeeb6b
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoBseDTO.java
@@ -0,0 +1,46 @@
+package org.springblade.code.dto;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+public class SysIntInfoBseDTO extends BaseModelVO {
+ private SysIntInfoDTO sysIntInfoDTO;
+
+ private List<SysIntParamDTO> sysIntParamDTO;
+
+ private List<SysIntHeaderDTO> sysIntHeaderDTOS;
+
+ public SysIntInfoDTO getSysIntInfoDTO() {
+ return sysIntInfoDTO;
+ }
+
+ public void setSysIntInfoDTO(SysIntInfoDTO sysIntInfoDTO) {
+ this.sysIntInfoDTO = sysIntInfoDTO;
+ }
+
+ public List<SysIntParamDTO> getSysIntParamDTO() {
+ return sysIntParamDTO;
+ }
+
+ public void setSysIntParamDTO(List<SysIntParamDTO> sysIntParamDTO) {
+ this.sysIntParamDTO = sysIntParamDTO;
+ }
+
+ public List<SysIntHeaderDTO> getSysIntHeaderDTOS() {
+ return sysIntHeaderDTOS;
+ }
+
+ public void setSysIntHeaderDTOS(List<SysIntHeaderDTO> sysIntHeaderDTOS) {
+ this.sysIntHeaderDTOS = sysIntHeaderDTOS;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntInfoBseDTO{" +
+ "sysIntInfoDTO=" + sysIntInfoDTO +
+ ", sysIntParamDTO=" + sysIntParamDTO +
+ ", sysIntHeaderDTOS=" + sysIntHeaderDTOS +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoDTO.java
new file mode 100644
index 0000000..6c4b3e0
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoDTO.java
@@ -0,0 +1,664 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public class SysIntInfoDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120053955466L;
+
+ /**
+ * 璁よ瘉鏂瑰紡
+ */
+ private String authorityoid;
+
+ /**
+ * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String authorityoidName;
+ /**
+ * 鎺ュ彛鍑芥暟
+ */
+ private String interfaceFunction;
+
+ /**
+ * 鎺ュ彛绫诲瀷
+ */
+ private String interfacetype;
+
+ /**
+ * 鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String interfacetypeText;
+ /**
+ * 鍙傛暟绫诲瀷
+ */
+ private String paramtype;
+
+ /**
+ * 鍙傛暟绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String paramtypeText;
+ /**
+ * 璇锋眰鏂瑰紡
+ */
+ private String requestmethod;
+
+ /**
+ * 璇锋眰鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String requestmethodText;
+ /**
+ * 鍒嗙被oid
+ */
+ private String classifyoid;
+ /**
+ * 鍚敤銆佸仠鐢╰rue/false锛屼笉鐢ㄥ钩鍙扮殑鏋氫妇锛屽噺灏戝骞冲彴鐨勮�﹀悎
+ */
+ private String usedflag;
+ /**
+ * 鎺ㄩ�佺郴缁無id
+ */
+ private String sysbaseoid;
+ /**
+ * 鎺ㄩ�佺郴缁熺紪鍙�
+ */
+ private String sysbaseid;
+ /**
+ * 鎺ㄩ�佺郴缁熷悕绉�
+ */
+ private String sysbasename;
+ /**
+ * 璇锋眰鍦板潃
+ */
+ private String requesturl;
+
+ /**
+ * 杩斿洖鍊肩被鍨�
+ */
+ private String returntype;
+
+ /**
+ * 杩斿洖鍊肩被鍨嬫樉绀烘枃鏈�
+ */
+ private String returntypeText;
+ /**
+ * 鏉ユ簮绯荤粺涓婚敭
+ */
+ private String sourcesystemoid;
+
+ /**
+ * 鏉ユ簮绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ private String sourcesystemoidName;
+
+ /**
+ * 鏉ユ簮绯荤粺鍚嶇О
+ */
+ private String sourceSysName;
+
+ /**
+ * 鏉ユ簮绯荤粺鏍囪瘑
+ */
+ private String sourceSysId;
+
+ /**
+ * 鐩爣绯荤粺涓婚敭
+ */
+ private String targetsystemoid;
+
+ /**
+ * 鐩爣绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ private String targetsystemoidName;
+
+ /**
+ * 鐩爣绯荤粺鍚嶇О
+ */
+ private String targetSysName;
+
+ /**
+ * 鐩爣绯荤粺鏍囪瘑
+ */
+ private String targetSysId;
+
+
+
+ /**
+ * 鎺ュ彛鎻忚堪
+ */
+ private String description;
+
+ /**
+ * 绫昏矾寰�
+ */
+ private String classPath;
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡
+ */
+ private String dataFlowType;
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡鐨勬樉绀哄瓧娈�
+ */
+ private String dataFlowTypeText;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨�
+ */
+ private String btmTypeId;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
+ */
+ private String btmTypeName;
+
+ /**
+ * 鍛藉悕绌洪棿
+ */
+ private String namespace;
+
+ /**
+ * soapAction
+ */
+ private String soapaction;
+
+ /**
+ * 鍙傛暟鍚嶇О
+ */
+ private String targName;
+
+ /**
+ * cxfaxis
+ */
+ private String cxfaxis;
+
+ /**
+ * 鍒嗙被id
+ */
+ private String classifyid;
+
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ private String classifyname;
+ /***
+ * 鍙傛暟淇℃伅瀵硅薄
+ */
+ private List<SysIntParamDTO> sysIntParamDTOs;
+ /***
+ * header淇℃伅瀵硅薄
+ */
+ private List<SysIntHeaderDTO> sysIntHeaderDTOS;
+
+ public String pushType;
+
+ public String getClassifyid() {
+ return classifyid;
+ }
+
+ public void setClassifyid(String classifyid) {
+ this.classifyid = classifyid;
+ }
+
+ public String getClassifyname() {
+ return classifyname;
+ }
+
+ public void setClassifyname(String classifyname) {
+ this.classifyname = classifyname;
+ }
+
+ public String getTargName() {
+ return targName;
+ }
+
+ public void setTargName(String targName) {
+ this.targName = targName;
+ }
+
+ public String getSoapaction() {
+ return soapaction;
+ }
+
+ public void setSoapaction(String soapaction) {
+ this.soapaction = soapaction;
+ }
+
+ public String getCxfaxis() {
+ return cxfaxis;
+ }
+
+ public void setCxfaxis(String cxfaxis) {
+ this.cxfaxis = cxfaxis;
+ }
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ public void setNamespace(String namespace) {
+ this.namespace = namespace;
+ }
+
+ public String getBtmTypeId() {
+ return btmTypeId;
+ }
+
+ public void setBtmTypeId(String btmTypeId) {
+ this.btmTypeId = btmTypeId;
+ }
+
+ public String getBtmTypeName() {
+ return btmTypeName;
+ }
+
+ public void setBtmTypeName(String btmTypeName) {
+ this.btmTypeName = btmTypeName;
+ }
+ /**
+ * 鑾峰彇 璁よ瘉鏂瑰紡
+ */
+ public String getAuthorityoid (){
+ return authorityoid;
+ }
+
+ /**
+ * 璁剧疆 璁よ瘉鏂瑰紡
+ */
+ public void setAuthorityoid (String authorityoid){
+ this.authorityoid = authorityoid;
+ }
+
+ /**
+ * 鑾峰彇璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ public String getAuthorityoidName (){
+ return authorityoidName;
+ }
+
+ /**
+ * 璁剧疆璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ public void setAuthorityoidName (String authorityoidName){
+ this.authorityoidName = authorityoidName;
+ }
+ /**
+ * 鑾峰彇 鎺ュ彛鍑芥暟
+ */
+ public String getInterfaceFunction (){
+ return interfaceFunction;
+ }
+
+ /**
+ * 璁剧疆 鎺ュ彛鍑芥暟
+ */
+ public void setInterfaceFunction (String interfaceFunction){
+ this.interfaceFunction = interfaceFunction;
+ }
+
+ /**
+ * 鑾峰彇 鎺ュ彛绫诲瀷
+ */
+ public String getInterfacetype (){
+ return interfacetype;
+ }
+
+ /**
+ * 璁剧疆 鎺ュ彛绫诲瀷
+ */
+ public void setInterfacetype (String interfacetype){
+ this.interfacetype = interfacetype;
+ }
+
+ /**
+ * 鑾峰彇鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
+ */
+ public String getInterfacetypeText (){
+ return interfacetypeText;
+ }
+
+ /**
+ * 璁剧疆鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
+ */
+ public void setInterfacetypeText (String interfacetypeText){
+ this.interfacetypeText = interfacetypeText;
+ }
+ /**
+ * 鑾峰彇 鍙傛暟绫诲瀷
+ */
+ public String getParamtype (){
+ return paramtype;
+ }
+
+ /**
+ * 璁剧疆 鍙傛暟绫诲瀷
+ */
+ public void setParamtype (String paramtype){
+ this.paramtype = paramtype;
+ }
+
+ /**
+ * 鑾峰彇鍙傛暟绫诲瀷鏄剧ず鏂囨湰
+ */
+ public String getParamtypeText (){
+ return paramtypeText;
+ }
+
+ /**
+ * 璁剧疆鍙傛暟绫诲瀷鏄剧ず鏂囨湰
+ */
+ public void setParamtypeText (String paramtypeText){
+ this.paramtypeText = paramtypeText;
+ }
+ /**
+ * 鑾峰彇 璇锋眰鏂瑰紡
+ */
+ public String getRequestmethod (){
+ return requestmethod;
+ }
+
+ /**
+ * 璁剧疆 璇锋眰鏂瑰紡
+ */
+ public void setRequestmethod (String requestmethod){
+ this.requestmethod = requestmethod;
+ }
+
+ /**
+ * 鑾峰彇璇锋眰鏂瑰紡鏄剧ず鏂囨湰
+ */
+ public String getRequestmethodText (){
+ return requestmethodText;
+ }
+
+ /**
+ * 璁剧疆璇锋眰鏂瑰紡鏄剧ず鏂囨湰
+ */
+ public void setRequestmethodText (String requestmethodText){
+ this.requestmethodText = requestmethodText;
+ }
+ /**
+ * 鑾峰彇 璇锋眰鍦板潃
+ */
+ public String getRequesturl (){
+ return requesturl;
+ }
+
+ /**
+ * 璁剧疆 璇锋眰鍦板潃
+ */
+ public void setRequesturl (String requesturl){
+ this.requesturl = requesturl;
+ }
+
+ /**
+ * 鑾峰彇 杩斿洖鍊肩被鍨�
+ */
+ public String getReturntype (){
+ return returntype;
+ }
+
+ /**
+ * 璁剧疆 杩斿洖鍊肩被鍨�
+ */
+ public void setReturntype (String returntype){
+ this.returntype = returntype;
+ }
+
+ /**
+ * 鑾峰彇杩斿洖鍊肩被鍨嬫樉绀烘枃鏈�
+ */
+ public String getReturntypeText (){
+ return returntypeText;
+ }
+
+ /**
+ * 璁剧疆杩斿洖鍊肩被鍨嬫樉绀烘枃鏈�
+ */
+ public void setReturntypeText (String returntypeText){
+ this.returntypeText = returntypeText;
+ }
+ /**
+ * 鑾峰彇 鏉ユ簮绯荤粺涓婚敭
+ */
+ public String getSourcesystemoid (){
+ return sourcesystemoid;
+ }
+
+ /**
+ * 璁剧疆 鏉ユ簮绯荤粺涓婚敭
+ */
+ public void setSourcesystemoid (String sourcesystemoid){
+ this.sourcesystemoid = sourcesystemoid;
+ }
+
+ /**
+ * 鑾峰彇鏉ユ簮绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getSourcesystemoidName (){
+ return sourcesystemoidName;
+ }
+
+ /**
+ * 璁剧疆鏉ユ簮绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setSourcesystemoidName (String sourcesystemoidName){
+ this.sourcesystemoidName = sourcesystemoidName;
+ }
+ /**
+ * 鑾峰彇 鐩爣绯荤粺涓婚敭
+ */
+ public String getTargetsystemoid (){
+ return targetsystemoid;
+ }
+
+ /**
+ * 璁剧疆 鐩爣绯荤粺涓婚敭
+ */
+ public void setTargetsystemoid (String targetsystemoid){
+ this.targetsystemoid = targetsystemoid;
+ }
+
+ /**
+ * 鑾峰彇鐩爣绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getTargetsystemoidName (){
+ return targetsystemoidName;
+ }
+
+ /**
+ * 璁剧疆鐩爣绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setTargetsystemoidName (String targetsystemoidName){
+ this.targetsystemoidName = targetsystemoidName;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getClassPath() {
+ return classPath;
+ }
+
+ public void setClassPath(String classPath) {
+ this.classPath = classPath;
+ }
+
+ public String getDataFlowType() {
+ return dataFlowType;
+ }
+
+ public void setDataFlowType(String dataFlowType) {
+ this.dataFlowType = dataFlowType;
+ }
+
+ public String getDataFlowTypeText() {
+ return dataFlowTypeText;
+ }
+
+ public void setDataFlowTypeText(String dataFlowTypeText) {
+ this.dataFlowTypeText = dataFlowTypeText;
+ }
+
+ public String getClassifyoid() {
+ return classifyoid;
+ }
+
+ public void setClassifyoid(String classifyoid) {
+ this.classifyoid = classifyoid;
+ }
+
+ public String getUsedflag() {
+ return usedflag;
+ }
+
+ public void setUsedflag(String usedflag) {
+ this.usedflag = usedflag;
+ }
+
+ public String getSysbaseoid() {
+ return sysbaseoid;
+ }
+
+ public void setSysbaseoid(String sysbaseoid) {
+ this.sysbaseoid = sysbaseoid;
+ }
+
+ public String getSysbasename() {
+ return sysbasename;
+ }
+
+ public void setSysbasename(String sysbasename) {
+ this.sysbasename = sysbasename;
+ }
+
+ public String getSysbaseid() {
+ return sysbaseid;
+ }
+
+ public void setSysbaseid(String sysbaseid) {
+ this.sysbaseid = sysbaseid;
+ }
+
+ public List<SysIntParamDTO> getSysIntParamDTOs() {
+ return sysIntParamDTOs;
+ }
+
+ public void setSysIntParamDTOs(List<SysIntParamDTO> sysIntParamDTOs) {
+ this.sysIntParamDTOs = sysIntParamDTOs;
+ }
+
+ public List<SysIntHeaderDTO> getSysIntHeaderDTOS() {
+ return sysIntHeaderDTOS;
+ }
+
+ public void setSysIntHeaderDTOS(List<SysIntHeaderDTO> sysIntHeaderDTOS) {
+ this.sysIntHeaderDTOS = sysIntHeaderDTOS;
+ }
+
+ public String getPushType() {
+ return pushType;
+ }
+
+ public void setPushType(String pushType) {
+ this.pushType = pushType;
+ }
+
+ public String getSourceSysName() {
+ return sourceSysName;
+ }
+
+ public void setSourceSysName(String sourceSysName) {
+ this.sourceSysName = sourceSysName;
+ }
+
+ public String getSourceSysId() {
+ return sourceSysId;
+ }
+
+ public void setSourceSysId(String sourceSysId) {
+ this.sourceSysId = sourceSysId;
+ }
+
+ public String getTargetSysName() {
+ return targetSysName;
+ }
+
+ public void setTargetSysName(String targetSysName) {
+ this.targetSysName = targetSysName;
+ }
+
+ public String getTargetSysId() {
+ return targetSysId;
+ }
+
+ public void setTargetSysId(String targetSysId) {
+ this.targetSysId = targetSysId;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntInfoDTO{" +
+ "authorityoid='" + authorityoid + '\'' +
+ ", authorityoidName='" + authorityoidName + '\'' +
+ ", interfaceFunction='" + interfaceFunction + '\'' +
+ ", interfacetype='" + interfacetype + '\'' +
+ ", interfacetypeText='" + interfacetypeText + '\'' +
+ ", paramtype='" + paramtype + '\'' +
+ ", paramtypeText='" + paramtypeText + '\'' +
+ ", requestmethod='" + requestmethod + '\'' +
+ ", requestmethodText='" + requestmethodText + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", usedflag='" + usedflag + '\'' +
+ ", sysbaseoid='" + sysbaseoid + '\'' +
+ ", sysbaseid='" + sysbaseid + '\'' +
+ ", sysbasename='" + sysbasename + '\'' +
+ ", requesturl='" + requesturl + '\'' +
+ ", returntype='" + returntype + '\'' +
+ ", returntypeText='" + returntypeText + '\'' +
+ ", sourcesystemoid='" + sourcesystemoid + '\'' +
+ ", sourcesystemoidName='" + sourcesystemoidName + '\'' +
+ ", sourceSysName='" + sourceSysName + '\'' +
+ ", sourceSysId='" + sourceSysId + '\'' +
+ ", targetsystemoid='" + targetsystemoid + '\'' +
+ ", targetsystemoidName='" + targetsystemoidName + '\'' +
+ ", targetSysName='" + targetSysName + '\'' +
+ ", targetSysId='" + targetSysId + '\'' +
+ ", description='" + description + '\'' +
+ ", classPath='" + classPath + '\'' +
+ ", dataFlowType='" + dataFlowType + '\'' +
+ ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
+ ", btmTypeId='" + btmTypeId + '\'' +
+ ", btmTypeName='" + btmTypeName + '\'' +
+ ", namespace='" + namespace + '\'' +
+ ", soapaction='" + soapaction + '\'' +
+ ", targName='" + targName + '\'' +
+ ", cxfaxis='" + cxfaxis + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", sysIntParamDTOs=" + sysIntParamDTOs +
+ ", sysIntHeaderDTOS=" + sysIntHeaderDTOS +
+ ", pushType='" + pushType + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntParamDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntParamDTO.java
new file mode 100644
index 0000000..9b13e88
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntParamDTO.java
@@ -0,0 +1,81 @@
+package org.springblade.code.dto;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+public class SysIntParamDTO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120661255093L;
+
+ /**
+ * SysIntInfoDO 鐨刼id
+ */
+ private String infoOid;
+
+ /**
+ * 鍙傛暟key
+ */
+ private String paramkey;
+
+ /**
+ * 鍙傛暟value
+ */
+ private String paramvalue;
+
+ /**
+ * 鏄惁浣跨敤
+ */
+ private String usedflag;
+
+
+ public String getInfoOid() {
+ return infoOid;
+ }
+
+ public void setInfoOid(String infoOid) {
+ this.infoOid = infoOid;
+ }
+
+ public String getParamkey() {
+ return paramkey;
+ }
+
+ public void setParamkey(String paramkey) {
+ this.paramkey = paramkey;
+ }
+
+ public String getParamvalue() {
+ return paramvalue;
+ }
+
+ public void setParamvalue(String paramvalue) {
+ this.paramvalue = paramvalue;
+ }
+
+ public String getUsedflag() {
+ return usedflag;
+ }
+
+ public void setUsedflag(String usedflag) {
+ this.usedflag = usedflag;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntParamDO{" +
+ "infoOid='" + infoOid + '\'' +
+ ", paramkey='" + paramkey + '\'' +
+ ", paramvalue='" + paramvalue + '\'' +
+ ", usedflag='" + usedflag + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/UpdateSysInfoStatusDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/UpdateSysInfoStatusDTO.java
new file mode 100644
index 0000000..30c677a
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/UpdateSysInfoStatusDTO.java
@@ -0,0 +1,40 @@
+package org.springblade.code.dto;
+
+public class UpdateSysInfoStatusDTO {
+ private String oid;
+ private String update;
+ private String ts;
+
+ public String getOid() {
+ return oid;
+ }
+
+ public void setOid(String oid) {
+ this.oid = oid;
+ }
+
+ public String getUpdate() {
+ return update;
+ }
+
+ public void setUpdate(String update) {
+ this.update = update;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ @Override
+ public String toString() {
+ return "SysInfoDTO{" +
+ "oid='" + oid + '\'' +
+ ", update='" + update + '\'' +
+ ", ts='" + ts + '\'' +
+ '}';
+ }
+
+
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/JsonRootDataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/JsonRootDataDTO.java
new file mode 100644
index 0000000..612eafc
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/JsonRootDataDTO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.dto.datapush.classify;
+
+
+public class JsonRootDataDTO {
+ private NodeDataDTO data;
+
+ public NodeDataDTO getData() {
+ return data;
+ }
+
+ public void setData(NodeDataDTO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "JsonRootDataDTO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeClassifyDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeClassifyDTO.java
new file mode 100644
index 0000000..a43f55f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeClassifyDTO.java
@@ -0,0 +1,112 @@
+package org.springblade.code.dto.datapush.classify;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("classify")
+public class NodeClassifyDTO {
+ /**
+ * 鍒嗙被id
+ */
+ @XStreamAsAttribute
+ private String id;
+ /***
+ * 鍒嗙被鍚嶇О
+ */
+ @XStreamAsAttribute
+ private String name;
+ /***
+ * 鐖惰妭鐐筰d
+ */
+ @XStreamAsAttribute
+ private String pid;
+ /***
+ * 鍒嗙被浠e彿
+ */
+ @XStreamAsAttribute
+ private String classCode;
+ /***
+ * 鎻忚堪
+ */
+ @XStreamAsAttribute
+ private String description;
+ /***
+ * 鍒嗙被閾炬帴璺緞
+ */
+ @XStreamAsAttribute
+ private String fullPathName;
+ /***
+ * 鍒嗙被鐘舵��
+ */
+ @XStreamAsAttribute
+ private String lcStatus;
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeClassifyDTO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", pid='" + pid + '\'' +
+ ", classCode='" + classCode + '\'' +
+ ", description='" + description + '\'' +
+ ", fullPathName='" + fullPathName + '\'' +
+ ", lcStatus='" + lcStatus + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeDataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeDataDTO.java
new file mode 100644
index 0000000..f715422
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeDataDTO.java
@@ -0,0 +1,24 @@
+package org.springblade.code.dto.datapush.classify;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+@XStreamAlias("data")
+public class NodeDataDTO {
+
+ private NodeLibraryDTO library;
+
+ public NodeLibraryDTO getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(NodeLibraryDTO library) {
+ this.library = library;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeDataDTO{" +
+ "library=" + library +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeLibraryDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeLibraryDTO.java
new file mode 100644
index 0000000..c227328
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeLibraryDTO.java
@@ -0,0 +1,50 @@
+package org.springblade.code.dto.datapush.classify;
+
+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 NodeLibraryDTO {
+ @XStreamAsAttribute
+ private String id;
+ @XStreamAsAttribute
+ private String name;
+ @XStreamImplicit
+ private List<NodeClassifyDTO> classify;
+
+ 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<NodeClassifyDTO> getClassify() {
+ return classify;
+ }
+
+ public void setClassify(List<NodeClassifyDTO> classify) {
+ this.classify = classify;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeLibraryDTO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", classify=" + classify +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/classfy.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/classfy.json
new file mode 100644
index 0000000..7b57d00
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/classfy.json
@@ -0,0 +1,18 @@
+{
+ "data": {
+ "library": {
+ "classify": [
+ {
+ "classCode": "0101",
+ "lcStatus": "Enabled",
+ "name": "涓绘満浜у搧",
+ "description": "涓绘満浜у搧1",
+ "pid": "01",
+ "id": "8EB35A1D-AB8B-2255-565C-84D309E0C62B"
+ }
+ ],
+ "name": "鐗╁搧",
+ "id": "D9CF223F-317D-71EB-BD11-433A94CAD9F3"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/data.xml b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/data.xml
new file mode 100644
index 0000000..e7584d5
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/data.xml
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<data>
+ <library id="D9CF223F-317D-71EB-BD11-433A94CAD9F3" name="鐗╁搧">
+ <classify id="1C7A2455-5831-1535-2A21-B4C1CC9C7C9D" name="鏍囧噯浠�" pid="02" classCode="02" description="" fullPathName="#02" lcStatus="Enabled"/>
+ <classify id="0C600A6A-6398-FC30-D13E-121201FDA908" name="鏈轰綋鏋勪欢" pid="0202" classCode="0202" description="鏈轰綋鏋勪欢" fullPathName="#02#0202" lcStatus="Enabled"/>
+ <classify id="07A245BB-1A7D-6380-49C5-0B2465BCE7D5" name="灞傛澘闄愬埗鍣ㄥ強鍏堕浂缁勪欢" pid="020205" classCode="020205" description="灞傛澘闄愬埗鍣ㄥ強鍏堕浂缁勪欢" fullPathName="#02#0202#020205" lcStatus="Enabled"/>
+ <classify id="18387448-E157-F341-2A04-7B9FC420003F" name="瑙掔墖" pid="020204" classCode="020204" description="瑙掔墖" fullPathName="#02#0202#020204" lcStatus="Enabled"/>
+ <classify id="226B19C5-AFA6-7823-E696-7796A931BDC5" name="鍏朵粬" pid="020207" classCode="020207" description="鍏朵粬" fullPathName="#02#0202#020207" lcStatus="Enabled"/>
+ <classify id="46B5DB5E-F783-DFE9-B48A-C4A367D02AC0" name="閿�" pid="020201" classCode="020201" description="閿�" fullPathName="#02#0202#020201" lcStatus="Enabled"/>
+ <classify id="6AE13517-FF46-3651-5893-407BB9E340DB" name="鏍囩墝" pid="020206" classCode="020206" description="鏍囩墝" fullPathName="#02#0202#020206" lcStatus="Enabled"/>
+ <classify id="82F2FD9E-6B52-64D2-3B6E-D6F74B050968" name="鍚堥〉銆侀�氭潯銆侀摪閾�" pid="020203" classCode="020203" description="鍚堥〉銆侀�氭潯銆侀摪閾�" fullPathName="#02#0202#020203" lcStatus="Enabled"/>
+ <classify id="B6C55202-A224-9098-6A82-E3FC5DEEF790" name="鍙g洊" pid="020202" classCode="020202" description="鍙g洊" fullPathName="#02#0202#020202" lcStatus="Enabled"/>
+ <classify id="155C9154-CBA2-8764-08C9-0D54E4E9727A" name="浼犲姩浠�" pid="0208" classCode="0208" description="浼犲姩浠�" fullPathName="#02#0208" lcStatus="Enabled"/>
+ <classify id="A3B59CA7-271E-95A5-7A51-AB70F111DB35" name="閿�" pid="020801" classCode="020801" description="閿�" fullPathName="#02#0208#020801" lcStatus="Enabled"/>
+ <classify id="C5FC4587-9732-418F-0866-46756EFD9957" name="鍏朵粬浼犲姩浠�" pid="020805" classCode="020805" description="鍏朵粬浼犲姩浠�" fullPathName="#02#0208#020805" lcStatus="Enabled"/>
+ <classify id="C6EC41D1-908E-D7CD-7224-25D7DBDD16B1" name="浼犲姩閾�" pid="020803" classCode="020803" description="浼犲姩閾�" fullPathName="#02#0208#020803" lcStatus="Enabled"/>
+ <classify id="E28CA126-BDF8-27DA-F661-187BC0F99B5C" name="浼犲姩甯�" pid="020804" classCode="020804" description="浼犲姩甯�" fullPathName="#02#0208#020804" lcStatus="Enabled"/>
+ <classify id="F6C1DF9D-9558-0B29-BA98-7D576C800FC4" name="榻胯疆" pid="020802" classCode="020802" description="榻胯疆" fullPathName="#02#0208#020802" lcStatus="Enabled"/>
+ <classify id="435B7B1E-99D4-6710-8A87-62809873A840" name="绠¤矾杩炴帴鍙婂瘑灏�" pid="0204" classCode="0204" description="绠¤矾杩炴帴鍙婂瘑灏�" fullPathName="#02#0204" lcStatus="Enabled"/>
+ <classify id="18F369E2-870B-B043-D4F5-C02031145366" name="鍏朵粬杩炴帴鍙婂瘑灏�" pid="020403" classCode="020403" description="鍏朵粬杩炴帴鍙婂瘑灏�" fullPathName="#02#0204#020403" lcStatus="Enabled"/>
+ <classify id="295FA6A0-29AA-0D0D-7414-B9F045745962" name="瀵肩杩炴帴" pid="020401" classCode="020401" description="瀵肩杩炴帴" fullPathName="#02#0204#020401" lcStatus="Enabled"/>
+ <classify id="A36BBBF5-7D8E-F47E-F343-949E5E489FE6" name="绠¤矾閰嶄欢" pid="020402" classCode="020402" description="绠¤矾閰嶄欢" fullPathName="#02#0204#020402" lcStatus="Enabled"/>
+ <classify id="81580E96-B28F-10F1-27E8-F2511F4F13E9" name="鐢垫皵銆佷华琛ㄦ爣鍑嗕欢" pid="0206" classCode="0206" description="鐢垫皵銆佷华琛ㄦ爣鍑嗕欢" fullPathName="#02#0206" lcStatus="Enabled"/>
+ <classify id="035E12F8-340F-5157-79F1-D7A99EA5974D" name="鍏朵粬鐢垫皵銆佷华琛ㄦ爣鍑嗕欢" pid="020606" classCode="020606" description="鍏朵粬鐢垫皵銆佷华琛ㄦ爣鍑嗕欢" fullPathName="#02#0206#020606" lcStatus="Enabled"/>
+ <classify id="59F6B61D-48D9-4AA8-DF1E-FC90111B1A78" name="浠〃鍑忛渿鍣�" pid="020604" classCode="020604" description="浠〃鍑忛渿鍣�" fullPathName="#02#0206#020604" lcStatus="Enabled"/>
+ <classify id="687AFB76-AB5F-CA5A-0524-851573D120C2" name="鐢电嚎鎺ュご銆佺瀛愬強鍘嬫帴" pid="020601" classCode="020601" description="鐢电嚎鎺ュご銆佺瀛愬強鍘嬫帴" fullPathName="#02#0206#020601" lcStatus="Enabled"/>
+ <classify id="8EB95F93-CB56-CE23-4CC7-893B1BFD3BD2" name="鎺ョ嚎鏉�" pid="020602" classCode="020602" description="鎺ョ嚎鏉�" fullPathName="#02#0206#020602" lcStatus="Enabled"/>
+ <classify id="9F967FDA-7FB7-3BBD-D66E-F765D0D17CB0" name="鎼帴绾�" pid="020603" classCode="020603" description="鎼帴绾�" fullPathName="#02#0206#020603" lcStatus="Enabled"/>
+ <classify id="9FA88B06-D959-CAD1-3A88-056B156EAC11" name="鎸夐挳淇濋櫓鍣�" pid="020605" classCode="020605" description="鎸夐挳淇濋櫓鍣�" fullPathName="#02#0206#020605" lcStatus="Enabled"/>
+ <classify id="8A520426-55F0-AFC7-806E-ADF3A98F7E18" name="绱у浐浠�" pid="0201" classCode="0201" description="绱у浐浠�" fullPathName="#02#0201" lcStatus="Enabled"/>
+ <classify id="003FBD37-9D69-073D-C197-C5A9ACEE5DDD" name="鍨湀" pid="020107" classCode="020107" description="鍨湀" fullPathName="#02#0201#020107" lcStatus="Enabled"/>
+ <classify id="1BB3AD73-5645-0ED0-213D-BD82E7BD2B1F" name="鍏朵粬绱у浐浠�" pid="020111" classCode="020111" description="鍏朵粬绱у浐浠�" fullPathName="#02#0201#020111" lcStatus="Enabled"/>
+ <classify id="28412305-0271-F0F0-8FAE-8A16F7EFA2F8" name="铻烘瘝" pid="020102" classCode="020102" description="铻烘瘝" fullPathName="#02#0201#020102" lcStatus="Enabled"/>
+ <classify id="2E10AD65-5100-2461-AC9E-5900CE83129B" name="铻洪拤" pid="020104" classCode="020104" description="铻洪拤" fullPathName="#02#0201#020104" lcStatus="Enabled"/>
+ <classify id="79CA8787-5525-52B3-1733-EC2410E06734" name="鑷攣铻烘瘝" pid="020110" classCode="020110" description="鑷攣铻烘瘝" fullPathName="#02#0201#020110" lcStatus="Enabled"/>
+ <classify id="913AE6A2-4B0C-E463-4CA0-2187FC235941" name="铻烘煴" pid="020103" classCode="020103" description="铻烘煴" fullPathName="#02#0201#020103" lcStatus="Enabled"/>
+ <classify id="B57A2FCB-6CC3-F063-9EE7-3377B455FD20" name="閽笣铻哄" pid="020109" classCode="020109" description="閽笣铻哄" fullPathName="#02#0201#020109" lcStatus="Enabled"/>
+ <classify id="D2DC11DD-B28A-8874-B656-10A1E0569FF3" name="铻烘爴" pid="020101" classCode="020101" description="铻烘爴" fullPathName="#02#0201#020101" lcStatus="Enabled"/>
+ <classify id="D40D7E08-B7B9-7F1E-7FA4-370023E24972" name="閾嗛拤" pid="020105" classCode="020105" description="閾嗛拤" fullPathName="#02#0201#020105" lcStatus="Enabled"/>
+ <classify id="DC14BB45-54C1-93CB-B41C-AF0D03443C02" name="鎸″湀" pid="020108" classCode="020108" description="鎸″湀" fullPathName="#02#0201#020108" lcStatus="Enabled"/>
+ <classify id="F68B2C03-696A-DB01-8847-5F45E7496EC1" name="閿�銆佽酱" pid="020106" classCode="020106" description="閿�銆佽酱" fullPathName="#02#0201#020106" lcStatus="Enabled"/>
+ <classify id="D440A156-5D21-4494-A136-2C099848B3CF" name="杞存壙" pid="0207" classCode="0207" description="杞存壙" fullPathName="#02#0207" lcStatus="Enabled"/>
+ <classify id="3230C8B8-6D39-B89C-BB32-576E25940FB0" name="閽㈢悆" pid="020702" classCode="020702" description="閽㈢悆" fullPathName="#02#0207#020702" lcStatus="Enabled"/>
+ <classify id="37D5DDB8-F1AA-1211-A350-1E83CC3DEFC5" name="鍏朵粬杞存壙闆剁粍浠�" pid="020703" classCode="020703" description="鍏朵粬杞存壙闆剁粍浠�" fullPathName="#02#0207#020703" lcStatus="Enabled"/>
+ <classify id="D80ABF56-3E36-610B-63F9-1FF0ECB2FD32" name="杞存壙" pid="020701" classCode="020701" description="杞存壙" fullPathName="#02#0207#020701" lcStatus="Enabled"/>
+ <classify id="D6BD1110-3EA9-DB40-1E67-EAC3824DF6DD" name="鍗$畭銆佽‖濂椼�佸脊绨�" pid="0203" classCode="0203" description="鍗$畭銆佽‖濂椼�佸脊绨�" fullPathName="#02#0203" lcStatus="Enabled"/>
+ <classify id="127C78EC-AD20-6E2F-2B25-5371EFD81E13" name="琛" pid="020302" classCode="020302" description="琛" fullPathName="#02#0203#020302" lcStatus="Enabled"/>
+ <classify id="1B269518-212F-013C-818E-F0DFC6EA9E13" name="寮圭哀" pid="020303" classCode="020303" description="寮圭哀" fullPathName="#02#0203#020303" lcStatus="Enabled"/>
+ <classify id="A81DC3A2-AAB0-C369-8354-1BCCCD059876" name="鍗$畭" pid="020301" classCode="020301" description="鍗$畭" fullPathName="#02#0203#020301" lcStatus="Enabled"/>
+ <classify id="E6AA0B5E-9B07-A000-FC95-8114C27BE8CE" name="鎿嶇旱绯荤粺鏍囧噯浠�" pid="0205" classCode="0205" description="鎿嶇旱绯荤粺鏍囧噯浠�" fullPathName="#02#0205" lcStatus="Enabled"/>
+ <classify id="4D151E9D-5761-D990-CC56-657FE1C4F320" name="閽笣缁宠繛鎺ヤ欢" pid="020501" classCode="020501" description="閽笣缁宠繛鎺ヤ欢" fullPathName="#02#0205#020501" lcStatus="Enabled"/>
+ <classify id="9125E074-02A3-8721-EA45-2C0547FDA3FA" name="鎷夋潌鎺ュご浠�" pid="020503" classCode="020503" description="鎷夋潌鎺ュご浠�" fullPathName="#02#0205#020503" lcStatus="Enabled"/>
+ <classify id="B6BDD21B-0E07-78CB-8773-5E0BE4D4C932" name="鍏朵粬鎿嶇旱绯荤粺鏍囧噯浠�" pid="020504" classCode="020504" description="鍏朵粬鎿嶇旱绯荤粺鏍囧噯浠�" fullPathName="#02#0205#020504" lcStatus="Enabled"/>
+ <classify id="C81DBA9F-0EB6-8B9A-3295-937B2172DC18" name="婊戣疆" pid="020502" classCode="020502" description="婊戣疆" fullPathName="#02#0205#020502" lcStatus="Enabled"/>
+ <classify id="535FC9B6-FE27-241F-5FCA-ED4DC17CF95B" name="浜у搧" pid="01" classCode="01" description="浜у搧" fullPathName="#01" lcStatus="Enabled"/>
+ <classify id="5B72F92C-39EF-3CEB-8474-6B561DC8402B" name="鍦伴潰绔�" pid="0102" classCode="0102" description="鍦伴潰绔�" fullPathName="#01#0102" lcStatus="Enabled"/>
+ <classify id="2F5F0CB1-12AB-5D73-657E-0C14B7ECF951" name="MNQ" pid="010205" classCode="010205" description="MNQ" fullPathName="#01#0102#010205" lcStatus="Enabled"/>
+ <classify id="56AE339C-9B2F-4298-6F9B-9F0615993DB1" name="CCS" pid="010201" classCode="010201" description="CCS" fullPathName="#01#0102#010201" lcStatus="Enabled"/>
+ <classify id="6B165D01-289D-6B94-8773-B8987D8B6A6C" name="DGPS" pid="010204" classCode="010204" description="DGPS" fullPathName="#01#0102#010204" lcStatus="Enabled"/>
+ <classify id="AB557DD1-44F7-6256-C772-254605D9E554" name="SGDT" pid="010203" classCode="010203" description="SGDT" fullPathName="#01#0102#010203" lcStatus="Enabled"/>
+ <classify id="FDB76D0A-D52B-45B6-47B4-89FE9C004ACD" name="DLS" pid="010202" classCode="010202" description="DLS" fullPathName="#01#0102#010202" lcStatus="Enabled"/>
+ <classify id="8EB35A1D-AB8B-2255-565C-84D309E0C62B" name="涓绘満浜у搧" pid="0101" classCode="0101" description="涓绘満浜у搧1" fullPathName="#01#0101" lcStatus="Enabled"/>
+ <classify id="4524E801-6CC6-92E8-1AC3-2AB9604E8F96" name="涓绘満浜у搧" pid="010100" classCode="010100" description="涓绘満浜у搧" fullPathName="#01#0101#010100" lcStatus="Enabled"/>
+ <classify id="C5F145AD-935D-FF2B-A7FC-EDFDB3BA6DA7" name="淇濋殰绯荤粺" pid="0103" classCode="0103" description="淇濋殰绯荤粺" fullPathName="#01#0103" lcStatus="Enabled"/>
+ <classify id="738C2B3D-8413-B956-7B13-E64BD18A996B" name="淇濋殰璁惧闆剁粍浠�" pid="010302" classCode="010302" description="淇濋殰璁惧闆剁粍浠�" fullPathName="#01#0103#010302" lcStatus="Enabled"/>
+ <classify id="76E8BD48-0EE4-3389-33DD-80CD8129BAD0" name="淇濋殰璁惧" pid="010301" classCode="010301" description="淇濋殰璁惧" fullPathName="#01#0103#010301" lcStatus="Enabled"/>
+ <classify id="8557B4D9-6F51-5AEF-93D8-048CB3D5A253" name="鍔充繚鐢ㄥ搧鍙婂姙鍏�楁潗" pid="09" classCode="09" description="鍔充繚鐢ㄥ搧鍙婂姙鍏�楁潗" fullPathName="#09" lcStatus="Enabled"/>
+ <classify id="272863C7-8FA7-AB6F-60DD-547EC72198A8" name="鍔充繚鐢ㄥ搧" pid="090100" classCode="090100" description="鍔充繚鐢ㄥ搧" fullPathName="#09#090100" lcStatus="Enabled"/>
+ <classify id="348BB65D-9BDE-501B-D7FD-EAAD692FBFD9" name="鍔炲叕鐢ㄥ搧" pid="090300" classCode="090300" description="鍔炲叕鐢ㄥ搧" fullPathName="#09#090300" lcStatus="Enabled"/>
+ <classify id="6C206159-26B1-ED9F-88F3-759A1E80839D" name="鍔炲叕鐢靛櫒" pid="090200" classCode="090200" description="鍔炲叕鐢靛櫒" fullPathName="#09#090200" lcStatus="Enabled"/>
+ <classify id="91CE2686-B6F0-B897-38B4-6A14471E6FB3" name="缁翠慨淇濋殰" pid="090500" classCode="090500" description="缁翠慨淇濋殰" fullPathName="#09#090500" lcStatus="Enabled"/>
+ <classify id="A494828E-4C83-BEF0-0F85-D980C2D7353B" name="妯″瀷" pid="090400" classCode="090400" description="妯″瀷" fullPathName="#09#090400" lcStatus="Enabled"/>
+ <classify id="90FD60B3-763D-1987-F9FD-35DB1B72309E" name="璧勪骇" pid="08" classCode="08" description="璧勪骇" fullPathName="#08" lcStatus="Enabled"/>
+ <classify id="3cc88fd4-858b-4683-b423-729bada6cf45" name="杩愯緭璁惧" pid="0807" classCode="0807" description="" fullPathName="#08#0807" lcStatus="Enabled"/>
+ <classify id="3c6621b7-ba2d-4a14-8ee0-ba6fc4b3510a" name="鍏朵粬杩愯緭宸ュ叿" pid="080702" classCode="080702" description="" fullPathName="#08#0807#080702" lcStatus="Enabled"/>
+ <classify id="4cf9ace6-811f-4caf-a84a-5e1154b38462" name="杞藉姹借溅" pid="080704" classCode="080704" description="" fullPathName="#08#0807#080704" lcStatus="Enabled"/>
+ <classify id="8751141e-aaba-47a2-bc0d-d8064e31474e" name="杞借揣姹借溅" pid="080703" classCode="080703" description="" fullPathName="#08#0807#080703" lcStatus="Enabled"/>
+ <classify id="96f7f32f-f2a6-4230-b504-39e1d55000e6" name="鐢靛姩杞�" pid="080701" classCode="080701" description="" fullPathName="#08#0807#080701" lcStatus="Enabled"/>
+ <classify id="6fb2fa85-dce6-4e8a-8f35-9352512dc2ce" name="鐢靛瓙璁惧" pid="0805" classCode="0805" description="" fullPathName="#08#0805" lcStatus="Enabled"/>
+ <classify id="503ce093-f400-4365-84a0-2f463d955c9f" name="娴嬮噺浠櫒浠〃" pid="080502" classCode="080502" description="" fullPathName="#08#0805#080502" lcStatus="Enabled"/>
+ <classify id="88c2932a-0d00-401a-90d0-482954562dfa" name="鍏朵粬鐢靛瓙璁惧" pid="080501" classCode="080501" description="" fullPathName="#08#0805#080501" lcStatus="Enabled"/>
+ <classify id="c34d3c1a-7b58-4919-86a1-886fce77eeab" name="閫氱敤鍙婅埅绌轰笓鐢ㄤ华鍣�" pid="080503" classCode="080503" description="" fullPathName="#08#0805#080503" lcStatus="Enabled"/>
+ <classify id="70d2805b-87bd-48ff-8daf-47713fe7f18b" name="鏈哄櫒璁惧" pid="0806" classCode="0806" description="" fullPathName="#08#0806" lcStatus="Enabled"/>
+ <classify id="56b8ee46-6fb3-4b30-8f71-0b9ed980d6f8" name="鍏朵粬鏈哄櫒璁惧" pid="080601" classCode="080601" description="" fullPathName="#08#0806#080601" lcStatus="Enabled"/>
+ <classify id="8ed4641d-2b8b-4989-bce9-ea33163fb673" name="璧烽噸璁惧" pid="080602" classCode="080602" description="" fullPathName="#08#0806#080602" lcStatus="Enabled"/>
+ <classify id="728eb26e-0d5a-4f05-9e5b-e9734d8fe5ca" name="鐢靛瓙鍔炲叕璁惧" pid="0801" classCode="0801" description="" fullPathName="#08#0801" lcStatus="Enabled"/>
+ <classify id="4ce0cd85-8352-4d3d-9829-a1f90120b5ab" name="鍏朵粬鍔炲叕璁惧" pid="080103" classCode="080103" description="" fullPathName="#08#0801#080103" lcStatus="Enabled"/>
+ <classify id="5ab8c015-ae96-499c-8908-3bb04ca0f258" name="鐢佃鏈�" pid="080101" classCode="080101" description="" fullPathName="#08#0801#080101" lcStatus="Enabled"/>
+ <classify id="957243e2-8fe9-4227-8627-061d3ceb033c" name="鎶曞奖浠�" pid="080104" classCode="080104" description="" fullPathName="#08#0801#080104" lcStatus="Enabled"/>
+ <classify id="9cf867b9-f1e3-488c-9c3d-646c9e428bb2" name="鎵撳嵃鏈�" pid="080102" classCode="080102" description="" fullPathName="#08#0801#080102" lcStatus="Enabled"/>
+ <classify id="78c6dba7-422f-42bc-899e-3bda5e046087" name="鏃犲舰璧勪骇" pid="0808" classCode="0808" description="" fullPathName="#08#0808" lcStatus="Enabled"/>
+ <classify id="134fd250-b3dd-4085-b775-0d169ff80477" name="鍟嗘爣" pid="080801" classCode="080801" description="" fullPathName="#08#0808#080801" lcStatus="Enabled"/>
+ <classify id="7648c951-a1bb-44c2-9af9-0cc450ff9197" name="鍏朵粬" pid="080804" classCode="080804" description="" fullPathName="#08#0808#080804" lcStatus="Enabled"/>
+ <classify id="97532f36-17dd-4625-bb50-f71241cd2b5c" name="钁椾綔鏉�" pid="080802" classCode="080802" description="" fullPathName="#08#0808#080802" lcStatus="Enabled"/>
+ <classify id="ac7f0bba-f4c3-4f93-b11d-b14c377b4d07" name="杞欢" pid="080803" classCode="080803" description="" fullPathName="#08#0808#080803" lcStatus="Enabled"/>
+ <classify id="80588849-b150-4f7e-8e50-2d2a1ef965c8" name="浼犲璁惧" pid="0802" classCode="0802" description="" fullPathName="#08#0802" lcStatus="Enabled"/>
+ <classify id="09392b5a-77d3-48f9-902c-6129e7a84d67" name="鍏朵粬浼犲璁惧" pid="080202" classCode="080202" description="" fullPathName="#08#0802#080202" lcStatus="Enabled"/>
+ <classify id="bb17b808-e4b7-4e1b-9a18-7391b908f980" name="杈撶數璁惧" pid="080201" classCode="080201" description="" fullPathName="#08#0802#080201" lcStatus="Enabled"/>
+ <classify id="a1d12e21-4e33-4887-8170-d4e45655c0f4" name="鍔ㄥ姏璁惧" pid="0803" classCode="0803" description="" fullPathName="#08#0803" lcStatus="Enabled"/>
+ <classify id="83c62b45-f373-4e90-b411-23b03fb4082c" name="绌哄帇璁惧" pid="080302" classCode="080302" description="" fullPathName="#08#0803#080302" lcStatus="Enabled"/>
+ <classify id="de01700c-5b48-4588-8e09-6b4eab498c17" name="鍏朵粬鍔ㄥ姏璁惧" pid="080303" classCode="080303" description="" fullPathName="#08#0803#080303" lcStatus="Enabled"/>
+ <classify id="f173f57b-bcb4-4261-a518-8f3d735b2136" name="绌鸿皟璁惧" pid="080301" classCode="080301" description="" fullPathName="#08#0803#080301" lcStatus="Enabled"/>
+ <classify id="dc3ee001-9a12-4cc6-8516-6723dcaf8fb1" name="璁$畻鏈哄強闄勫睘璁惧" pid="0804" classCode="0804" description="" fullPathName="#08#0804" lcStatus="Enabled"/>
+ <classify id="52b775db-8960-4d6e-a2a9-003a650d8acf" name="璁$畻鏈�" pid="080401" classCode="080401" description="" fullPathName="#08#0804#080401" lcStatus="Enabled"/>
+ <classify id="55885859-4275-49eb-904e-43a7e1cdbf17" name="璁$畻鏈洪檮灞炶澶�" pid="080402" classCode="080402" description="" fullPathName="#08#0804#080402" lcStatus="Enabled"/>
+ <classify id="b2609e88-83d5-4d47-bf55-eb43f9fe1c51" name="鍏朵粬" pid="080403" classCode="080403" description="" fullPathName="#08#0804#080403" lcStatus="Enabled"/>
+ <classify id="B911B6E4-9155-4805-E281-B17F7C67D163" name="鏉愭枡" pid="05" classCode="05" description="鏉愭枡" fullPathName="#05" lcStatus="Enabled"/>
+ <classify id="B57613D3-D7C2-9E3C-12CD-8D3CA61E5F92" name="閲戝睘鏉愭枡" pid="0501" classCode="0501" description="閲戝睘鏉愭枡" fullPathName="#05#0501" lcStatus="Enabled"/>
+ <classify id="1b9d91e8-f840-4391-889c-5c43f2152339" name="閿岄敗閽撮晬绛夐噾灞炴潗鏂�" pid="050107" classCode="050107" description="" fullPathName="#05#0501#050107" lcStatus="Enabled"/>
+ <classify id="643e6b26-5505-49a5-8824-ade2b4dc5ef8" name="閾舵潗" pid="050106" classCode="050106" description="" fullPathName="#05#0501#050106" lcStatus="Enabled"/>
+ <classify id="689b0a32-3350-4b56-9b99-3ff3c0a7e634" name="閽涙潗" pid="050105" classCode="050105" description="" fullPathName="#05#0501#050105" lcStatus="Enabled"/>
+ <classify id="7bb7ad2c-d991-4408-a817-f50d46c98520" name="閾濇潗" pid="050102" classCode="050102" description="" fullPathName="#05#0501#050102" lcStatus="Enabled"/>
+ <classify id="7fb1a2ff-8b0a-4720-b31c-effe2ec3899d" name="閽㈡潗" pid="050101" classCode="050101" description="" fullPathName="#05#0501#050101" lcStatus="Enabled"/>
+ <classify id="a0481cad-3d24-40d7-9f5c-e5ceb75a7477" name="閾滄潗" pid="050104" classCode="050104" description="" fullPathName="#05#0501#050104" lcStatus="Enabled"/>
+ <classify id="d1612ef9-e72c-4e41-a80f-f56a2bccfdca" name="闀佹潗" pid="050103" classCode="050103" description="" fullPathName="#05#0501#050103" lcStatus="Enabled"/>
+ <classify id="BDAF21DE-9BF1-D04B-932F-29A07CF05DC0" name="闈為噾灞炴潗鏂�" pid="0502" classCode="0502" description="闈為噾灞炴潗鏂�" fullPathName="#05#0502" lcStatus="Enabled"/>
+ <classify id="0f1ccfc9-25de-4b45-9a19-3d33fa714289" name="娑傛枡" pid="050205" classCode="050205" description="" fullPathName="#05#0502#050205" lcStatus="Enabled"/>
+ <classify id="217a062e-610e-4560-9444-ce4d5a0c2742" name="绾虹粐鏉愭枡" pid="050212" classCode="050212" description="" fullPathName="#05#0502#050212" lcStatus="Enabled"/>
+ <classify id="2b08870f-177a-4202-b299-c4cf26176c4f" name="姗¤兌" pid="050201" classCode="050201" description="" fullPathName="#05#0502#050201" lcStatus="Enabled"/>
+ <classify id="61a19147-16fa-464b-b057-21fde1b6baf5" name="鐕冩枡" pid="050210" classCode="050210" description="" fullPathName="#05#0502#050210" lcStatus="Enabled"/>
+ <classify id="6b68914d-d5c0-4da6-b613-89ec9b351a83" name="鍩虹鍖栧鍝�" pid="050211" classCode="050211" description="" fullPathName="#05#0502#050211" lcStatus="Enabled"/>
+ <classify id="75e7b9b1-cc91-4ffa-8d4a-c10b609f5b82" name="濉戞枡" pid="050202" classCode="050202" description="" fullPathName="#05#0502#050202" lcStatus="Enabled"/>
+ <classify id="7839e4e7-d86a-48d1-bd79-8e93a1a7be95" name="浜戞瘝" pid="050209" classCode="050209" description="" fullPathName="#05#0502#050209" lcStatus="Enabled"/>
+ <classify id="7ce86526-ba5c-403a-bbbd-79e43ef4fc48" name="瀵嗗皝鍓�" pid="050206" classCode="050206" description="" fullPathName="#05#0502#050206" lcStatus="Enabled"/>
+ <classify id="95ea9a03-a9f8-4285-ae4d-57cfa0f3ba4e" name="鐭虫鍙婄煶妫夌氦缁�" pid="050208" classCode="050208" description="" fullPathName="#05#0502#050208" lcStatus="Enabled"/>
+ <classify id="9aaddd7c-65cc-44fa-9ee8-b81bfceb94a9" name="鍏朵粬闈為噾灞炴潗鏂�" pid="050213" classCode="050213" description="" fullPathName="#05#0502#050213" lcStatus="Enabled"/>
+ <classify id="b83cda6c-319f-4dc9-9bc0-e5f5dd4b3c10" name="娑︽粦鏉愭枡" pid="050204" classCode="050204" description="" fullPathName="#05#0502#050204" lcStatus="Enabled"/>
+ <classify id="c59ed6e1-7175-4c06-a99f-5aca20ec6a4a" name="鐜荤拑鍙婄幓鐠冪氦缁�" pid="050207" classCode="050207" description="" fullPathName="#05#0502#050207" lcStatus="Enabled"/>
+ <classify id="d26b8ccd-0802-4195-80e3-b7ea861905d6" name="鑳剁矘鍓�" pid="050203" classCode="050203" description="" fullPathName="#05#0502#050203" lcStatus="Enabled"/>
+ <classify id="BF92B9BD-B469-A3F3-97EF-D17E7DCF0C02" name="鐢靛瓙鍏冨櫒浠�" pid="07" classCode="07" description="鐢靛瓙鍏冨櫒浠�" fullPathName="#07" lcStatus="Enabled"/>
+ <classify id="B3E45E87-62B3-896F-50AA-0989B8EBA354" name="鐢佃繛鎺ュ櫒" pid="0701" classCode="0701" description="鐢佃繛鎺ュ櫒" fullPathName="#07#0701" lcStatus="Enabled"/>
+ <classify id="1EE1982B-8458-54BD-F452-CB682EB935E6" name="鍦嗗舰杩炴帴鍣�" pid="070101" classCode="070101" description="鍦嗗舰杩炴帴鍣�" fullPathName="#07#0701#070101" lcStatus="Enabled"/>
+ <classify id="3E0A5B47-7E79-F800-0A1E-C376DDD9F55B" name="鍏朵粬" pid="070103" classCode="070103" description="鍏朵粬" fullPathName="#07#0701#070103" lcStatus="Enabled"/>
+ <classify id="58F783DC-8F76-C81B-2CF0-BE6B62D418C8" name="鐭╁舰杩炴帴鍣�" pid="070102" classCode="070102" description="鐭╁舰杩炴帴鍣�" fullPathName="#07#0701#070102" lcStatus="Enabled"/>
+ <classify id="D65E15F7-D0AF-4011-01DB-C3F0B124C4B4" name="01 涓�" pid="1" classCode="1" description="" fullPathName="#1" lcStatus="Enabled"/>
+ <classify id="DBED332C-3F47-B82B-E9D9-7F073207B97B" name="鎴愬搧鍙婇檮浠�" pid="04" classCode="04" description="" fullPathName="#04" lcStatus="Enabled"/>
+ <classify id="23d26641-cf95-4f76-8103-5775fcf150f5" name="鏈鸿浇鎴愬搧閰嶄欢" pid="0402" classCode="0402" description="" fullPathName="#04#0402" lcStatus="Enabled"/>
+ <classify id="EE9E1ED9-B9B5-978E-077F-D5BD9BC15EDA" name="鏈鸿浇鎴愬搧閰嶄欢" pid="040200" classCode="040200" description="" fullPathName="#04#0402#040200" lcStatus="Enabled"/>
+ <classify id="7f40472e-8031-4045-a343-6867cbb9b229" name="鍦伴潰绔欓厤濂楁垚鍝�" pid="0405" classCode="0405" description="" fullPathName="#04#0405" lcStatus="Enabled"/>
+ <classify id="C1F2DEEF-5D98-A247-74D6-0FE940C4500B" name="鍦伴潰绔欓厤濂楁垚鍝�" pid="040500" classCode="040500" description="" fullPathName="#04#0405#040500" lcStatus="Enabled"/>
+ <classify id="9ff5139e-582f-466c-85b2-10135aa48003" name="鏈鸿浇鎴愬搧" pid="0401" classCode="0401" description="" fullPathName="#04#0401" lcStatus="Enabled"/>
+ <classify id="01306647-0bf7-4bc6-baf6-6370cbcba923" name="鏈虹數绯荤粺" pid="040101" classCode="040101" description="" fullPathName="#04#0401#040101" lcStatus="Enabled"/>
+ <classify id="45f1f132-ed83-4a7c-a585-71e7327f4ba3" name="缁撴瀯绯荤粺鎴愬搧" pid="040110" classCode="040110" description="" fullPathName="#04#0401#040110" lcStatus="Enabled"/>
+ <classify id="649f3ee3-8de4-4b6f-8950-83b5a66ae57f" name="娑插帇绯荤粺" pid="040104" classCode="040104" description="" fullPathName="#04#0401#040104" lcStatus="Enabled"/>
+ <classify id="6fcec200-9165-4670-896f-1ed6219ed9f6" name="閾捐矾绯荤粺" pid="040106" classCode="040106" description="" fullPathName="#04#0401#040106" lcStatus="Enabled"/>
+ <classify id="77bb295e-bdc1-4b91-838a-0537a28dad55" name="璧疯惤鏋剁郴缁�" pid="040111" classCode="040111" description="" fullPathName="#04#0401#040111" lcStatus="Enabled"/>
+ <classify id="7e6c3763-4ee4-4ff0-a6ba-04bc5fca6ca4" name="渚涚數绯荤粺" pid="040102" classCode="040102" description="" fullPathName="#04#0401#040102" lcStatus="Enabled"/>
+ <classify id="9b778575-69d4-4846-9f14-5514b18e8173" name="浠诲姟绯荤粺" pid="040108" classCode="040108" description="" fullPathName="#04#0401#040108" lcStatus="Enabled"/>
+ <classify id="a1ab3694-6d69-45c2-9e07-2b65e8efd4bb" name="缁撳啺鎺㈡祴绯荤粺" pid="040112" classCode="040112" description="" fullPathName="#04#0401#040112" lcStatus="Enabled"/>
+ <classify id="c1f9a109-8962-4830-9e8c-93fba6bc50d3" name="鐜帶绯荤粺" pid="040105" classCode="040105" description="" fullPathName="#04#0401#040105" lcStatus="Enabled"/>
+ <classify id="e1202a9c-c64a-4f15-9420-41ee8267fed9" name="鍔ㄥ姏绯荤粺" pid="040107" classCode="040107" description="" fullPathName="#04#0401#040107" lcStatus="Enabled"/>
+ <classify id="ecfa428e-5228-4420-b9ec-2cc8379a863a" name="椋炵绯荤粺" pid="040109" classCode="040109" description="" fullPathName="#04#0401#040109" lcStatus="Enabled"/>
+ <classify id="fc1ee416-538a-48d9-8ffa-54dbb286c92c" name="鐕冩补绯荤粺" pid="040103" classCode="040103" description="" fullPathName="#04#0401#040103" lcStatus="Enabled"/>
+ <classify id="b23293cf-f432-43da-9288-a0ae3c4ffd69" name="楂橀绾挎潫" pid="0403" classCode="0403" description="" fullPathName="#04#0403" lcStatus="Enabled"/>
+ <classify id="1805629e-4755-4bb8-a257-34e7dea78ebd" name="浠诲姟绯荤粺" pid="040301" classCode="040301" description="" fullPathName="#04#0403#040301" lcStatus="Enabled"/>
+ <classify id="7e3e7c6d-0904-418d-a507-8e5ef2fe8e9f" name="閾捐矾绯荤粺" pid="040303" classCode="040303" description="" fullPathName="#04#0403#040303" lcStatus="Enabled"/>
+ <classify id="857a661f-bbda-4500-a871-d8b1cb464a3c" name="椋炵绯荤粺" pid="040302" classCode="040302" description="" fullPathName="#04#0403#040302" lcStatus="Enabled"/>
+ <classify id="b99618ce-afc4-4847-b126-d322594206f8" name="鎴愬搧鐢电紗" pid="0404" classCode="0404" description="" fullPathName="#04#0404" lcStatus="Enabled"/>
+ <classify id="26db9af0-c2a4-4715-81b8-0435677f90fc" name="1553B鎬荤嚎" pid="040401" classCode="040401" description="" fullPathName="#04#0404#040401" lcStatus="Enabled"/>
+ <classify id="4b479322-4abd-4883-8b71-8a5682ba94a9" name="1394B鎬荤嚎" pid="040402" classCode="040402" description="" fullPathName="#04#0404#040402" lcStatus="Enabled"/>
+ <classify id="e2592e74-42b2-4318-ad97-287792c72108" name="鍦伴潰绔欓厤濂楁垚鍝侀厤浠�" pid="0406" classCode="0406" description="" fullPathName="#04#0406" lcStatus="Enabled"/>
+ <classify id="CFD5B76C-E5A9-32F3-1723-A7ABC451B970" name="鍦伴潰绔欓厤濂楁垚鍝侀厤浠�" pid="040600" classCode="040600" description="" fullPathName="#04#0406#040600" lcStatus="Enabled"/>
+ <classify id="EDC5E467-C15D-E709-EB67-47FC3903F7C3" name="闆剁粍浠�" pid="03" classCode="03" description="闆剁粍浠�" fullPathName="#03" lcStatus="Enabled"/>
+ <classify id="30D5DB0B-E0F7-F56C-668C-2EE25EE11CBC" name="鎺ュご" pid="0303" classCode="0303" description="鎺ュご" fullPathName="#03#0303" lcStatus="Enabled"/>
+ <classify id="4305E553-69ED-8B67-6CF4-45D013841DAA" name="鍙戝姩鏈虹郴缁�" pid="030304" classCode="030304" description="鍙戝姩鏈虹郴缁�" fullPathName="#03#0303#030304" lcStatus="Enabled"/>
+ <classify id="57B02FC2-5D01-8D5D-FF1C-BEDBBB80E29C" name="娑插帇绯荤粺" pid="030302" classCode="030302" description="娑插帇绯荤粺" fullPathName="#03#0303#030302" lcStatus="Enabled"/>
+ <classify id="9FDC015A-BC9E-B6F4-7B37-E4A147EC1486" name="璧疯惤鏋剁郴缁�" pid="030303" classCode="030303" description="璧疯惤鏋剁郴缁�" fullPathName="#03#0303#030303" lcStatus="Enabled"/>
+ <classify id="DAC0B0C2-F041-31AA-1718-E4E08E1B0ADD" name="鐕冩补绯荤粺" pid="030301" classCode="030301" description="鐕冩补绯荤粺" fullPathName="#03#0303#030301" lcStatus="Enabled"/>
+ <classify id="ADC34B0C-5C42-CD0D-BA96-80B1007D5C6E" name="绾挎潫" pid="0304" classCode="0304" description="绾挎潫" fullPathName="#03#0304" lcStatus="Enabled"/>
+ <classify id="1F551A64-A86B-28EF-FED0-3A4BED64B90E" name="鍏朵粬" pid="030407" classCode="030407" description="鍏朵粬" fullPathName="#03#0304#030407" lcStatus="Enabled"/>
+ <classify id="27C429A4-3C90-1C56-B0CD-B08AE4CD9F37" name="椋炴帶绯荤粺" pid="030401" classCode="030401" description="椋炴帶绯荤粺" fullPathName="#03#0304#030401" lcStatus="Enabled"/>
+ <classify id="3A963DD0-B8E6-3B3A-1321-45A243DB32B9" name="娌圭绾挎潫" pid="030405" classCode="030405" description="娌圭绾挎潫" fullPathName="#03#0304#030405" lcStatus="Enabled"/>
+ <classify id="6A7382A0-2444-DF4F-6DED-49B65A73DB20" name="渚涚數绯荤粺" pid="030404" classCode="030404" description="渚涚數绯荤粺" fullPathName="#03#0304#030404" lcStatus="Enabled"/>
+ <classify id="6D156FAE-E836-5CF6-C970-CDC54F4907CF" name="鍔ㄥ姏绯荤粺" pid="030406" classCode="030406" description="鍔ㄥ姏绯荤粺" fullPathName="#03#0304#030406" lcStatus="Enabled"/>
+ <classify id="7893CB68-E7CA-FA42-4510-D93C4BA8B61D" name="浠诲姟绯荤粺" pid="030402" classCode="030402" description="浠诲姟绯荤粺" fullPathName="#03#0304#030402" lcStatus="Enabled"/>
+ <classify id="BB0DB7B3-0C69-5DD0-501E-D7CB6F58A83D" name="姝﹀櫒绯荤粺" pid="030403" classCode="030403" description="姝﹀櫒绯荤粺" fullPathName="#03#0304#030403" lcStatus="Enabled"/>
+ <classify id="B3C462E1-784D-9020-8E55-0DEFCC348346" name="鏈轰綋缁撴瀯浠�" pid="0301" classCode="0301" description="鏈轰綋缁撴瀯浠�" fullPathName="#03#0301" lcStatus="Enabled"/>
+ <classify id="232BBB7A-778F-8926-8A3E-CE38473C1D59" name="V灏鹃儴浠�" pid="030103" classCode="030103" description="V灏鹃儴浠�" fullPathName="#03#0301#030103" lcStatus="Enabled"/>
+ <classify id="3C934A32-161B-7E44-54AB-3BCB9D3D2988" name="鏈虹考閮ㄤ欢" pid="030102" classCode="030102" description="鏈虹考閮ㄤ欢" fullPathName="#03#0301#030102" lcStatus="Enabled"/>
+ <classify id="421867A5-041F-33B5-08BC-1B8ABAB6675C" name="鏈鸿韩閮ㄤ欢" pid="030104" classCode="030104" description="鏈鸿韩閮ㄤ欢" fullPathName="#03#0301#030104" lcStatus="Enabled"/>
+ <classify id="97394212-1972-DE46-7B49-6DD3092AB20C" name="鏈轰綋" pid="030101" classCode="030101" description="鏈轰綋" fullPathName="#03#0301#030101" lcStatus="Enabled"/>
+ <classify id="E2E0122F-4A2D-A746-8456-C9D9115ED0EA" name="瀵肩" pid="0302" classCode="0302" description="瀵肩" fullPathName="#03#0302" lcStatus="Enabled"/>
+ <classify id="77109B63-72AB-1434-6C61-00CE47E5FA6C" name="鐕冩补绯荤粺" pid="030201" classCode="030201" description="鐕冩补绯荤粺" fullPathName="#03#0302#030201" lcStatus="Enabled"/>
+ <classify id="89BF277E-BEDF-D1C7-25E8-3672F3355B7B" name="鍔ㄥ姏绯荤粺" pid="030204" classCode="030204" description="鍔ㄥ姏绯荤粺" fullPathName="#03#0302#030204" lcStatus="Enabled"/>
+ <classify id="CB3D9727-E2E2-98ED-6209-F998274EB498" name="璧疯惤鏋剁郴缁�" pid="030205" classCode="030205" description="璧疯惤鏋剁郴缁�" fullPathName="#03#0302#030205" lcStatus="Enabled"/>
+ <classify id="F16E2D3C-225B-8E0B-492B-FCD8075F5612" name="鐜帶绯荤粺" pid="030203" classCode="030203" description="鐜帶绯荤粺" fullPathName="#03#0302#030203" lcStatus="Enabled"/>
+ <classify id="F1A4FD56-84A1-677F-F205-4014590593D8" name="娑插帇绯荤粺" pid="030202" classCode="030202" description="娑插帇绯荤粺" fullPathName="#03#0302#030202" lcStatus="Enabled"/>
+ <classify id="E3C156CD-DC3A-854D-73C7-8839A6588B81" name="鑷埗浠�" pid="0305" classCode="0305" description="鑷埗浠�" fullPathName="#03#0305" lcStatus="Enabled"/>
+ <classify id="0b86cdc5-d846-4956-bd9d-0029fe0ea5f4" name="铻烘爴绫�" pid="030508" classCode="030508" description="" fullPathName="#03#0305#030508" lcStatus="Enabled"/>
+ <classify id="0cf6b4a3-e490-4c5f-a914-0cc3ba6f165f" name="鑳跺灚绫�" pid="030504" classCode="030504" description="" fullPathName="#03#0305#030504" lcStatus="Enabled"/>
+ <classify id="1db22304-b1a7-4808-86c7-f4440c987c2f" name="鏀灦绫�" pid="030514" classCode="030514" description="" fullPathName="#03#0305#030514" lcStatus="Enabled"/>
+ <classify id="22cbfec9-2b1f-4959-9c6a-889868911350" name="瀵嗗皝浠剁被" pid="030510" classCode="030510" description="" fullPathName="#03#0305#030510" lcStatus="Enabled"/>
+ <classify id="286abeda-4aa1-403f-944b-02eb0014c868" name="閿�绫�" pid="030511" classCode="030511" description="" fullPathName="#03#0305#030511" lcStatus="Enabled"/>
+ <classify id="2f790919-c3db-4645-b777-43cd312d85eb" name="瑙掔墖绫�" pid="030505" classCode="030505" description="" fullPathName="#03#0305#030505" lcStatus="Enabled"/>
+ <classify id="51616e6c-3fa7-4722-83a0-9b168a769b03" name="鍨湀绫�" pid="030503" classCode="030503" description="" fullPathName="#03#0305#030503" lcStatus="Enabled"/>
+ <classify id="53a1f8e9-89d1-47df-aa69-49355946af1c" name="鏀骇绫�" pid="030515" classCode="030515" description="" fullPathName="#03#0305#030515" lcStatus="Enabled"/>
+ <classify id="5c4d29c3-750c-4b10-8dd0-095d421fe1e2" name="鏀噦绫�" pid="030513" classCode="030513" description="" fullPathName="#03#0305#030513" lcStatus="Enabled"/>
+ <classify id="65c83ac5-5a18-4e1d-9e92-37b320024d0a" name="閰嶉噸绫�" pid="030509" classCode="030509" description="" fullPathName="#03#0305#030509" lcStatus="Enabled"/>
+ <classify id="7bc57b0b-7b2e-4905-85d9-5860fb4b005e" name="鏍囩墝绫�" pid="030501" classCode="030501" description="" fullPathName="#03#0305#030501" lcStatus="Enabled"/>
+ <classify id="a4310d25-b923-44ce-ba80-9c4636a6a07a" name="铻烘瘝绫�" pid="030507" classCode="030507" description="" fullPathName="#03#0305#030507" lcStatus="Enabled"/>
+ <classify id="ad1bf0ec-3fce-406c-9e11-66a8a9385c75" name="鍨墖绫�" pid="030502" classCode="030502" description="" fullPathName="#03#0305#030502" lcStatus="Enabled"/>
+ <classify id="cd0a35b0-7489-47c5-ba12-31b327cb92ad" name="鍗$畭绫�" pid="030506" classCode="030506" description="" fullPathName="#03#0305#030506" lcStatus="Enabled"/>
+ <classify id="f6204be3-8a23-4fee-b41a-94951e616856" name="鍏朵粬绫�" pid="030512" classCode="030512" description="" fullPathName="#03#0305#030512" lcStatus="Enabled"/>
+ <classify id="FF328862-4D62-CBAD-B28E-7FFB4E2C88C8" name="宸ヨ宸ュ叿" pid="06" classCode="06" description="宸ヨ宸ュ叿" fullPathName="#06" lcStatus="Enabled"/>
+ <classify id="4D2175B5-675F-5CA8-6B44-703081CA2B1A" name="閫氱敤宸ヨ宸ュ叿" pid="0601" classCode="0601" description="閫氱敤宸ヨ宸ュ叿" fullPathName="#06#0601" lcStatus="Enabled"/>
+ <classify id="0c94e793-e475-40ec-91b0-4498b85ab510" name="閽冲伐宸ュ叿" pid="060103" classCode="060103" description="" fullPathName="#06#0601#060103" lcStatus="Enabled"/>
+ <classify id="2307ef02-ca59-46fd-bbff-1e361cbd6cb7" name="鍒�鍏�" pid="060101" classCode="060101" description="" fullPathName="#06#0601#060101" lcStatus="Enabled"/>
+ <classify id="8446d37d-06a6-43f5-bcd9-7a8cf0781e2c" name="鐢靛姩姘斿姩宸ュ叿" pid="060104" classCode="060104" description="" fullPathName="#06#0601#060104" lcStatus="Enabled"/>
+ <classify id="86aaf0fc-91c3-4039-ace4-3f56425ff6a2" name="閲忓叿" pid="060102" classCode="060102" description="" fullPathName="#06#0601#060102" lcStatus="Enabled"/>
+ <classify id="ddd5fed4-5e65-4e9c-ade1-8b7c2aab01f8" name="纾ㄦ枡纾ㄥ叿" pid="060105" classCode="060105" description="" fullPathName="#06#0601#060105" lcStatus="Enabled"/>
+ <classify id="CA5A043A-0080-4278-9BA1-C688926EA0AA" name="涓撶敤宸ヨ宸ュ叿" pid="0602" classCode="0602" description="涓撶敤宸ヨ宸ュ叿" fullPathName="#06#0602" lcStatus="Enabled"/>
+ <classify id="01f43f72-13db-433e-87bd-b67e785cc201" name="杈呭姪宸ュ叿" pid="060204" classCode="060204" description="" fullPathName="#06#0602#060204" lcStatus="Enabled"/>
+ <classify id="051bb45e-7348-4fe2-9dca-d6d42356da55" name="閽冲伐瑁呴厤宸ュ叿" pid="060203" classCode="060203" description="" fullPathName="#06#0602#060203" lcStatus="Enabled"/>
+ <classify id="226627a4-6434-413d-a010-1d32bc267107" name="娴嬮噺宸ュ叿" pid="060201" classCode="060201" description="" fullPathName="#06#0602#060201" lcStatus="Enabled"/>
+ <classify id="8c7a165e-15f6-43fa-86ee-cbd9c5362aa1" name="澶瑰叿鍙婅澶�" pid="060202" classCode="060202" description="" fullPathName="#06#0602#060202" lcStatus="Enabled"/>
+ <classify id="d1a82116-39b9-4cf5-907c-f62a357ef32d" name="鍏朵粬宸ュ叿" pid="060205" classCode="060205" description="" fullPathName="#06#0602#060205" lcStatus="Enabled"/>
+ </library>
+</data>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeJosnDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeJosnDTO.java
new file mode 100644
index 0000000..658aaf3
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeJosnDTO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.dto.datapush.data;
+
+public class NodeJosnDTO {
+
+ private NodedataDTO data;
+
+ public NodedataDTO getData() {
+ return data;
+ }
+
+ public void setData(NodedataDTO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeJosnDTO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeObjectDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeObjectDTO.java
new file mode 100644
index 0000000..c486a78
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeObjectDTO.java
@@ -0,0 +1,71 @@
+package org.springblade.code.dto.datapush.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("object")
+public class NodeObjectDTO {
+ @XStreamAsAttribute
+ private String code="" ;
+ @XStreamAsAttribute
+ private String status="" ;
+ @XStreamAsAttribute
+ private String library="";
+ @XStreamAsAttribute
+ private String classCode="";
+ @XStreamImplicit
+ private List<NodeProDTO> pro;
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+
+ public String getClassCode() {
+ return classCode;
+ }
+
+ public void setClassCode(String classCode) {
+ this.classCode = classCode;
+ }
+
+ public List<NodeProDTO> getPro() {
+ return pro;
+ }
+
+ public void setPro(List<NodeProDTO> pro) {
+ this.pro = pro;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeObjectDTO{" +
+ "code='" + code + '\'' +
+ ", status='" + status + '\'' +
+ ", library='" + library + '\'' +
+ ", classCode='" + classCode + '\'' +
+ ", pro=" + pro +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeProDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeProDTO.java
new file mode 100644
index 0000000..412313b
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeProDTO.java
@@ -0,0 +1,47 @@
+package org.springblade.code.dto.datapush.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("pro")
+public class NodeProDTO {
+ @XStreamAsAttribute
+ private String filedName;
+ @XStreamAsAttribute
+ private String outname;
+ @XStreamAsAttribute
+ private String filedValue;
+
+ public String getFiledName() {
+ return filedName;
+ }
+
+ public void setFiledName(String filedName) {
+ this.filedName = filedName;
+ }
+
+ public String getOutname() {
+ return outname;
+ }
+
+ public void setOutname(String outname) {
+ this.outname = outname;
+ }
+
+ public String getFiledValue() {
+ return filedValue;
+ }
+
+ public void setFiledValue(String filedValue) {
+ this.filedValue = filedValue;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeProDTO{" +
+ "filedName='" + filedName + '\'' +
+ ", outname='" + outname + '\'' +
+ ", filedValue='" + filedValue + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodedataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodedataDTO.java
new file mode 100644
index 0000000..df4149d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodedataDTO.java
@@ -0,0 +1,27 @@
+package org.springblade.code.dto.datapush.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("data")
+public class NodedataDTO {
+ @XStreamImplicit
+ private List<NodeObjectDTO> object;
+
+ public List<NodeObjectDTO> getObject() {
+ return object;
+ }
+
+ public void setObject(List<NodeObjectDTO> object) {
+ this.object = object;
+ }
+
+ @Override
+ public String toString() {
+ return "NodedataDTO{" +
+ "object=" + object +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/data.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/data.json
new file mode 100644
index 0000000..3a07164
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/data.json
@@ -0,0 +1,137 @@
+{
+ "data": {
+ "object": {
+ "code": "0201040133",
+ "status": "Released",
+ "library": "wupin",
+ "classCode": "020104",
+ "pro": [
+ {
+ "filedName": "xbj",
+ "outname": "鏍囪"
+ },
+ {
+ "filedName": "xinghaoguige",
+ "outname": "瑙勬牸",
+ "filedValue": "M4"
+ },
+ {
+ "filedName": "lastmodifier",
+ "outname": "鏈�鍚庝慨鏀逛汉",
+ "filedValue": "weidy(榄忓ぇ鍕�)"
+ },
+ {
+ "filedName": "cpxs",
+ "outname": "浜у搧鍨嬪紡"
+ },
+ {
+ "filedName": "secondfl",
+ "outname": "浜岀骇绠$悊鍒嗙被",
+ "filedValue": "绱у浐浠�"
+ },
+ {
+ "filedName": "clph",
+ "outname": "鏉愭枡鐗屽彿",
+ "filedValue": "HB1-24321"
+ },
+ {
+ "filedName": "thrifl",
+ "outname": "涓夌骇绠$悊鍒嗙被",
+ "filedValue": "铻洪拤"
+ },
+ {
+ "filedName": "xbzjbmc",
+ "outname": "鏍囧噯绾у埆鍚嶇О"
+ },
+ {
+ "filedName": "firstfl",
+ "outname": "涓�绾х鐞嗗垎绫�",
+ "filedValue": "鏍囧噯浠�"
+ },
+ {
+ "filedName": "xgzccdgcd",
+ "outname": "鍏虫敞灏哄鐨勫叕宸甫"
+ },
+ {
+ "filedName": "zjxh",
+ "outname": "瀛愪欢搴忓彿"
+ },
+ {
+ "filedName": "bmcl",
+ "outname": "琛ㄩ潰澶勭悊",
+ "filedValue": "鐢甸晙"
+ },
+ {
+ "filedName": "id",
+ "outname": "鐗╂枡缂栫爜",
+ "filedValue": "0201040133"
+ },
+ {
+ "filedName": "createtime",
+ "outname": "鍒涘缓鏃堕棿",
+ "filedValue": "2022-12-23 17:12:50.635"
+ },
+ {
+ "filedName": "creator",
+ "outname": "鍒涘缓浜�",
+ "filedValue": "weidy(榄忓ぇ鍕�)"
+ },
+ {
+ "filedName": "xwlwwmc",
+ "outname": "鐗╁搧澶栨枃鍚嶇О"
+ },
+ {
+ "filedName": "xxndj",
+ "outname": "鎬ц兘绛夌骇"
+ },
+ {
+ "filedName": "xzjmc",
+ "outname": "瀛愪欢鍚嶇О"
+ },
+ {
+ "filedName": "beizhushuoming",
+ "outname": "澶囨敞璇存槑"
+ },
+ {
+ "filedName": "revisionvalue",
+ "outname": "鐗堟湰",
+ "filedValue": "1"
+ },
+ {
+ "filedName": "name",
+ "outname": "鐗╁搧涓枃鍚嶇О",
+ "filedValue": "鍗婂渾澶磋灪閽�1"
+ },
+ {
+ "filedName": "xfjjstj",
+ "outname": "闄勫姞鎶�鏈潯浠�"
+ },
+ {
+ "filedName": "xbxkxs",
+ "outname": "淇濋櫓瀛斿瀷寮�",
+ "filedValue": "鏃�"
+ },
+ {
+ "filedName": "lastmodifytime",
+ "outname": "鏈�鍚庝慨鏀规椂闂�",
+ "filedValue": "2022-12-23 17:12:50.635"
+ },
+ {
+ "filedName": "zhiliangbz",
+ "outname": "鏍囧噯鍙�",
+ "filedValue": "HB1-2431-M4*512"
+ },
+ {
+ "filedName": "materialclassify",
+ "outname": "鎵�灞炲垎绫讳唬鍙�",
+ "filedValue": "020104"
+ },
+ {
+ "filedName": "lcstatus",
+ "outname": "鐘舵��",
+ "filedValue": "Released"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/result.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/result.json
new file mode 100644
index 0000000..18f7d87
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/result.json
@@ -0,0 +1,10 @@
+{
+ "data": {
+ "object": {
+ "code": "0201040133",
+ "oid": "0000001",
+ "erroid": "0",
+ "msg": "娴嬭瘯鎴愬姛"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultJsonDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultJsonDTO.java
new file mode 100644
index 0000000..908b470
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultJsonDTO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.dto.datapush.result;
+
+
+public class ResultJsonDTO {
+ private ResultNodeDataDTO data;
+
+ public ResultNodeDataDTO getData() {
+ return data;
+ }
+
+ public void setData(ResultNodeDataDTO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultJsonDTO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeDataDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeDataDTO.java
new file mode 100644
index 0000000..896a094
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeDataDTO.java
@@ -0,0 +1,28 @@
+package org.springblade.code.dto.datapush.result;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("data")
+public class ResultNodeDataDTO {
+
+ @XStreamImplicit
+ private List<ResultNodeObjectDTO> object;
+
+ public List<ResultNodeObjectDTO> getObject() {
+ return object;
+ }
+
+ public void setObject(List<ResultNodeObjectDTO> object) {
+ this.object = object;
+ }
+
+ @Override
+ public String toString() {
+ return "NodeDataDTO{" +
+ "object=" + object +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeObjectDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeObjectDTO.java
new file mode 100644
index 0000000..279d642
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeObjectDTO.java
@@ -0,0 +1,70 @@
+package org.springblade.code.dto.datapush.result;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("object")
+public class ResultNodeObjectDTO {
+ /***
+ * 鏁版嵁缂栫爜
+ */
+ @XStreamAsAttribute
+ private String code;
+ /***
+ * 鏁版嵁oid
+ */
+ @XStreamAsAttribute
+ private String oid;
+ /***
+ * 閿欒鏍囪瘑
+ */
+ @XStreamAsAttribute
+ private String erroid;
+ /***
+ * 閿欒淇℃伅
+ */
+ @XStreamAsAttribute
+ private String msg;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getOid() {
+ return oid;
+ }
+
+ public void setOid(String oid) {
+ this.oid = oid;
+ }
+
+ public String getErroid() {
+ return erroid;
+ }
+
+ public void setErroid(String erroid) {
+ this.erroid = erroid;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultNodeObjectDTO{" +
+ "code='" + code + '\'' +
+ ", oid='" + oid + '\'' +
+ ", erroid='" + erroid + '\'' +
+ ", msg='" + msg + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/po/CodeClassifyPO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/po/CodeClassifyPO.java
new file mode 100644
index 0000000..bdd0018
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/po/CodeClassifyPO.java
@@ -0,0 +1,169 @@
+package org.springblade.code.po;
+
+import com.vci.starter.poi.annotation.ExcelColumn;
+
+/**
+ * 涓婚搴撳垎绫荤殑瀵煎叆瀵煎嚭瀵硅薄
+ * @author weidy
+ * @date 2022-04-01
+ */
+public class CodeClassifyPO implements java.io.Serializable{
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6101784029360306020L;
+ /**
+ * 鎵�鍦ㄦ暟鎹
+ */
+ @ExcelColumn(rowIndexColumn = true,value = "")
+ private String rowIndex;
+
+
+ /**
+ * 鍒嗙被缂栧彿
+ */
+ @ExcelColumn(value="鍒嗙被缂栧彿",nullable = false)
+ private String id;
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ @ExcelColumn(value="鍒嗙被鍚嶇О",nullable = false)
+ private String name;
+
+ /**
+ * 鎻忚堪
+ */
+ @ExcelColumn(value = "鎻忚堪")
+ private String description;
+
+ /**
+ * 缂栫爜瑙勫垯缂栧彿
+ */
+ @ExcelColumn(value = "缂栫爜瑙勫垯缂栧彿")
+ private String codeRuleId;
+
+ /**
+ * 涓氬姟绫诲瀷缂栧彿
+ */
+ @ExcelColumn(value = "涓氬姟绫诲瀷缂栧彿")
+ private String btmTypeId;
+
+ /**
+ * 鏌ラ噸瑙勫垯缂栧彿
+ */
+ @ExcelColumn(value = "鏌ラ噸瑙勫垯缂栧彿")
+ private String keyRepeatRuleId;
+
+ /**
+ * 鍒嗙被璺緞
+ */
+ @ExcelColumn(value = "鍒嗙被璺緞",nullable = false)
+ private String path;
+
+ /**
+ * 鐘舵�佹枃鏈�
+ */
+ @ExcelColumn(value = "鐘舵��")
+ private String lcStatusText;
+
+ /**
+ * 鐘舵��
+ */
+ private String lcStatus;
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getRowIndex() {
+ return rowIndex;
+ }
+
+ public void setRowIndex(String rowIndex) {
+ this.rowIndex = rowIndex;
+ }
+
+ 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 getCodeRuleId() {
+ return codeRuleId;
+ }
+
+ public void setCodeRuleId(String codeRuleId) {
+ this.codeRuleId = codeRuleId;
+ }
+
+ public String getBtmTypeId() {
+ return btmTypeId;
+ }
+
+ public void setBtmTypeId(String btmTypeId) {
+ this.btmTypeId = btmTypeId;
+ }
+
+ public String getKeyRepeatRuleId() {
+ return keyRepeatRuleId;
+ }
+
+ public void setKeyRepeatRuleId(String keyRepeatRuleId) {
+ this.keyRepeatRuleId = keyRepeatRuleId;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getLcStatusText() {
+ return lcStatusText;
+ }
+
+ public void setLcStatusText(String lcStatusText) {
+ this.lcStatusText = lcStatusText;
+ }
+
+ public String getLcStatus() {
+ return lcStatus;
+ }
+
+ public void setLcStatus(String lcStatus) {
+ this.lcStatus = lcStatus;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyPO{" +
+ "rowIndex='" + rowIndex + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", codeRuleId='" + codeRuleId + '\'' +
+ ", btmTypeId='" + btmTypeId + '\'' +
+ ", keyRepeatRuleId='" + keyRepeatRuleId + '\'' +
+ ", path='" + path + '\'' +
+ ", lcStatusText='" + lcStatusText + '\'' +
+ ", lcStatus='" + lcStatus + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeBasicSecVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeBasicSecVO.java
new file mode 100644
index 0000000..8a938e9
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeBasicSecVO.java
@@ -0,0 +1,651 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeBasicSecVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118400017877L;
+
+ /**
+ * 鐮佹绫诲瀷
+ */
+ private String sectype;
+
+
+ /**
+ * 鐮佹绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String sectypeText;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒�
+ */
+ private String pkCodeRule;
+
+ /**
+ * 鐮佹鎺掑簭鍙�
+ */
+ private Integer orderNum;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷
+ */
+ private String codeSecLengthType;
+ /**
+ * 鐮佹闀垮害绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String codeSecLengthTypeText;
+
+ /**
+ * 鐮佹闀垮害
+ */
+ private String codeSecLength;
+
+ /**
+ * 寮曠敤鐨勫睘鎬х殑鏂囨湰
+ */
+ private String referAttributeName;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ private String referAttributeId;
+
+ /**
+ * 鍙栧�艰鍒�
+ */
+ private String getValueClass ;
+
+ //鍓嶇杈撳叆鍚庤嚜鍔ㄥ姞鍏ュ埌鏋氫妇涓�
+ /**
+ * 鏃ユ湡鏍煎紡
+ */
+ private String codeDateFormatStr;
+
+ /**
+ * 灞傜骇绫诲瀷
+ */
+ private String codeLevelType;
+
+ /**
+ * 灞傜骇绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String codeLevelTypeText;
+
+ /**
+ * 灞傜骇鐨勫��
+ */
+ private Integer codeLevelValue;
+
+ /**
+ * 鍊兼埅鍙栭暱搴�
+ */
+ private Integer valueCutLength;
+
+ /**
+ * 瀛楃鎴彇绫诲瀷
+ */
+ private String valueCutType;
+
+ /**
+ * 瀛楃涓叉埅鍙栫被鍨嬫樉绀烘枃鏈�
+ */
+ private String valueCutTypeText;
+
+ /**
+ * 鍙栧�肩被鍨�
+ */
+ private String codeGetValueType;
+
+ /**
+ * 鍙栧�肩被鍨嬫樉绀烘枃鏈�
+ */
+ private String codeGetValueTypeText;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ф墍灞炵殑搴撳垎绫�
+ */
+ private String referCodeClassifyOid;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ф墍灞炲簱鍒嗙被鍚嶇О
+ */
+ private String referCodeClassifyOidName;
+
+ /**
+ * 寮曠敤鐨勪笟鍔$被鍨�
+ */
+ private String referBtmId;
+
+ /**
+ * 寮曠敤鐨勪笟鍔$被鍨嬪悕绉�
+ */
+ private String referBtmName;
+
+ /**
+ * 鍙傜収鐨勭獥鍙i厤缃�
+ */
+ private String referConfig;
+
+ /**
+ * 鏄剧ず淇℃伅
+ */
+ private String referValueInfo;
+
+ /**
+ * 杩囨护鐨剆ql鍐呭
+ */
+ private String filterSql ;
+
+
+ /**
+ * 娴佹按鍙疯捣濮嬪��
+ */
+ private String serialStart;
+
+ /**
+ * 娴佹按鐨勬闀�
+ */
+ private Integer serialStep;
+
+
+ /**
+ * 缂栫爜琛ヤ綅鏂瑰紡
+ */
+ private String codeFillType;
+
+ /**
+ * 缂栫爜琛ヤ綅鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String codeFillTypeText;
+
+ /**
+ * 琛ヤ綅鏃剁殑瀛楃
+ */
+ private String codeFillSeparator;
+
+ /**
+ * 濉厖闀垮害
+ */
+ private String codeFillLength;
+
+ /**
+ * 涓婇檺
+ */
+ private Integer codeFillLimit;
+
+ /**
+ * 娴佹按鏄惁琛ョ爜
+ */
+ private String codeFillFlag;
+
+ /**
+ * 鑷畾涔夌殑娴佹按绠楁硶绫�
+ */
+ private String customCodeSerialClass;
+
+ /**
+ * 鏄惁鑷姩鍖归厤鍒嗙被鍊�
+ */
+ private String matchClassifyValueFlag;
+
+ /**
+ * 鐖跺垎绫荤爜娈典富閿�
+ */
+ private String parentClassifySecOid;
+
+ /**
+ * 鐖跺垎绫荤爜娈靛悕绉�
+ */
+ private String parentClassifySecText;
+
+
+ /**
+ * 鏄惁鍙互涓虹┖
+ */
+ private String nullableFlag;
+
+ /**
+ * 鏄惁鍙備笌缂栫爜
+ */
+ private String componentCodeFlag;
+
+ /**
+ * 鏄惁娴佹按渚濊禆
+ */
+ private String serialDependFlag;
+
+ /**
+ * 鏄惁鏄剧ず
+ */
+ private String displayFlag;
+
+ /**
+ * 娴佹按渚濊禆椤哄簭
+ */
+ private Integer serialDependOrder;
+
+ /**
+ * 鍥哄畾鐮佺殑鐮佸�煎唴瀹�
+ */
+ private List<CodeFixedValueVO> fixedValueVOList;
+
+ public String getReferCodeClassifyOidName() {
+ return referCodeClassifyOidName;
+ }
+
+ public void setReferCodeClassifyOidName(String referCodeClassifyOidName) {
+ this.referCodeClassifyOidName = referCodeClassifyOidName;
+ }
+
+ public String getReferAttributeId() {
+ return referAttributeId;
+ }
+
+ public void setReferAttributeId(String referAttributeId) {
+ this.referAttributeId = referAttributeId;
+ }
+
+ //鍒嗙被鐨勫唴瀹逛笉鑳界洿鎺ユ斁锛屽洜涓哄彲鑳藉緢澶�
+
+ public String getPkCodeRule() {
+ return pkCodeRule;
+ }
+
+ public void setPkCodeRule(String pkCodeRule) {
+ this.pkCodeRule = pkCodeRule;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getCodeSecLengthTypeText() {
+ return codeSecLengthTypeText;
+ }
+
+ public void setCodeSecLengthTypeText(String codeSecLengthTypeText) {
+ this.codeSecLengthTypeText = codeSecLengthTypeText;
+ }
+
+ public String getMatchClassifyValueFlag() {
+ return matchClassifyValueFlag;
+ }
+
+ public void setMatchClassifyValueFlag(String matchClassifyValueFlag) {
+ this.matchClassifyValueFlag = matchClassifyValueFlag;
+ }
+
+ public String getParentClassifySecOid() {
+ return parentClassifySecOid;
+ }
+
+ public void setParentClassifySecOid(String parentClassifySecOid) {
+ this.parentClassifySecOid = parentClassifySecOid;
+ }
+
+ public String getParentClassifySecText() {
+ return parentClassifySecText;
+ }
+
+ public void setParentClassifySecText(String parentClassifySecText) {
+ this.parentClassifySecText = parentClassifySecText;
+ }
+
+ public String getNullableFlag() {
+ return nullableFlag;
+ }
+
+ public void setNullableFlag(String nullableFlag) {
+ this.nullableFlag = nullableFlag;
+ }
+
+ public String getComponentCodeFlag() {
+ return componentCodeFlag;
+ }
+
+ public void setComponentCodeFlag(String componentCodeFlag) {
+ this.componentCodeFlag = componentCodeFlag;
+ }
+
+ public String getSerialDependFlag() {
+ return serialDependFlag;
+ }
+
+ public void setSerialDependFlag(String serialDependFlag) {
+ this.serialDependFlag = serialDependFlag;
+ }
+
+ public String getDisplayFlag() {
+ return displayFlag;
+ }
+
+ public void setDisplayFlag(String displayFlag) {
+ this.displayFlag = displayFlag;
+ }
+
+ public Integer getSerialDependOrder() {
+ return serialDependOrder;
+ }
+
+ public void setSerialDependOrder(Integer serialDependOrder) {
+ this.serialDependOrder = serialDependOrder;
+ }
+
+ /**
+ * 璁剧疆 鐮佹绫诲瀷
+ */
+ public void setSectype (String sectype){
+ this.sectype = sectype;
+ }
+
+ public String getSectypeText() {
+ return sectypeText;
+ }
+
+ public void setSectypeText(String sectypeText) {
+ this.sectypeText = sectypeText;
+ }
+
+ public String getSectype() {
+ return sectype;
+ }
+
+ public String getCodeSecLengthType() {
+ return codeSecLengthType;
+ }
+
+ public void setCodeSecLengthType(String codeSecLengthType) {
+ this.codeSecLengthType = codeSecLengthType;
+ }
+
+ public String getCodeSecLength() {
+ return codeSecLength;
+ }
+
+ public void setCodeSecLength(String codeSecLength) {
+ this.codeSecLength = codeSecLength;
+ }
+
+ public String getGetValueClass() {
+ return getValueClass;
+ }
+
+ public void setGetValueClass(String getValueClass) {
+ this.getValueClass = getValueClass;
+ }
+
+ public String getCodeDateFormatStr() {
+ return codeDateFormatStr;
+ }
+
+ public void setCodeDateFormatStr(String codeDateFormatStr) {
+ this.codeDateFormatStr = codeDateFormatStr;
+ }
+
+ public String getCodeLevelType() {
+ return codeLevelType;
+ }
+
+ public void setCodeLevelType(String codeLevelType) {
+ this.codeLevelType = codeLevelType;
+ }
+
+ public String getCodeLevelTypeText() {
+ return codeLevelTypeText;
+ }
+
+ public void setCodeLevelTypeText(String codeLevelTypeText) {
+ this.codeLevelTypeText = codeLevelTypeText;
+ }
+
+ public Integer getCodeLevelValue() {
+ return codeLevelValue;
+ }
+
+ public void setCodeLevelValue(Integer codeLevelValue) {
+ this.codeLevelValue = codeLevelValue;
+ }
+
+ public Integer getValueCutLength() {
+ return valueCutLength;
+ }
+
+ public void setValueCutLength(Integer valueCutLength) {
+ this.valueCutLength = valueCutLength;
+ }
+
+ public String getValueCutType() {
+ return valueCutType;
+ }
+
+ public void setValueCutType(String valueCutType) {
+ this.valueCutType = valueCutType;
+ }
+
+ public String getValueCutTypeText() {
+ return valueCutTypeText;
+ }
+
+ public void setValueCutTypeText(String valueCutTypeText) {
+ this.valueCutTypeText = valueCutTypeText;
+ }
+
+ public String getCodeGetValueType() {
+ return codeGetValueType;
+ }
+
+ public void setCodeGetValueType(String codeGetValueType) {
+ this.codeGetValueType = codeGetValueType;
+ }
+
+ public String getCodeGetValueTypeText() {
+ return codeGetValueTypeText;
+ }
+
+ public void setCodeGetValueTypeText(String codeGetValueTypeText) {
+ this.codeGetValueTypeText = codeGetValueTypeText;
+ }
+
+ public String getReferCodeClassifyOid() {
+ return referCodeClassifyOid;
+ }
+
+ public void setReferCodeClassifyOid(String referCodeClassifyOid) {
+ this.referCodeClassifyOid = referCodeClassifyOid;
+ }
+
+ public String getReferConfig() {
+ return referConfig;
+ }
+
+ public void setReferConfig(String referConfig) {
+ this.referConfig = referConfig;
+ }
+
+ public String getReferValueInfo() {
+ return referValueInfo;
+ }
+
+ public void setReferValueInfo(String referValueInfo) {
+ this.referValueInfo = referValueInfo;
+ }
+
+ public String getFilterSql() {
+ return filterSql;
+ }
+
+ public void setFilterSql(String filterSql) {
+ this.filterSql = filterSql;
+ }
+
+ public String getSerialStart() {
+ return serialStart;
+ }
+
+ public void setSerialStart(String serialStart) {
+ this.serialStart = serialStart;
+ }
+
+ public Integer getSerialStep() {
+ return serialStep;
+ }
+
+ public void setSerialStep(Integer serialStep) {
+ this.serialStep = serialStep;
+ }
+
+ public String getCodeFillType() {
+ return codeFillType;
+ }
+
+ public void setCodeFillType(String codeFillType) {
+ this.codeFillType = codeFillType;
+ }
+
+ public String getCodeFillTypeText() {
+ return codeFillTypeText;
+ }
+
+ public void setCodeFillTypeText(String codeFillTypeText) {
+ this.codeFillTypeText = codeFillTypeText;
+ }
+
+ public String getCodeFillSeparator() {
+ return codeFillSeparator;
+ }
+
+ public void setCodeFillSeparator(String codeFillSeparator) {
+ this.codeFillSeparator = codeFillSeparator;
+ }
+
+ public String getCodeFillLength() {
+ return codeFillLength;
+ }
+
+ public void setCodeFillLength(String codeFillLength) {
+ this.codeFillLength = codeFillLength;
+ }
+
+ public Integer getCodeFillLimit() {
+ return codeFillLimit;
+ }
+
+ public void setCodeFillLimit(Integer codeFillLimit) {
+ this.codeFillLimit = codeFillLimit;
+ }
+
+ public String getCodeFillFlag() {
+ return codeFillFlag;
+ }
+
+ public void setCodeFillFlag(String codeFillFlag) {
+ this.codeFillFlag = codeFillFlag;
+ }
+
+ public String getCustomCodeSerialClass() {
+ return customCodeSerialClass;
+ }
+
+ public void setCustomCodeSerialClass(String customCodeSerialClass) {
+ this.customCodeSerialClass = customCodeSerialClass;
+ }
+
+
+ public List<CodeFixedValueVO> getFixedValueVOList() {
+ return fixedValueVOList;
+ }
+
+ public void setFixedValueVOList(List<CodeFixedValueVO> fixedValueVOList) {
+ this.fixedValueVOList = fixedValueVOList;
+ }
+
+ public String getReferAttributeName() {
+ return referAttributeName;
+ }
+
+ public void setReferAttributeName(String referAttributeName) {
+ this.referAttributeName = referAttributeName;
+ }
+
+ public String getReferBtmId() {
+ return referBtmId;
+ }
+
+ public void setReferBtmId(String referBtmId) {
+ this.referBtmId = referBtmId;
+ }
+
+ public String getReferBtmName() {
+ return referBtmName;
+ }
+
+ public void setReferBtmName(String referBtmName) {
+ this.referBtmName = referBtmName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeBasicSecVO{" +
+ "sectype='" + sectype + '\'' +
+ ", sectypeText='" + sectypeText + '\'' +
+ ", pkCodeRule='" + pkCodeRule + '\'' +
+ ", orderNum=" + orderNum +
+ ", codeSecLengthType='" + codeSecLengthType + '\'' +
+ ", codeSecLengthTypeText='" + codeSecLengthTypeText + '\'' +
+ ", codeSecLength='" + codeSecLength + '\'' +
+ ", referAttributeName='" + referAttributeName + '\'' +
+ ", referAttributeId='" + referAttributeId + '\'' +
+ ", getValueClass='" + getValueClass + '\'' +
+ ", codeDateFormatStr='" + codeDateFormatStr + '\'' +
+ ", codeLevelType='" + codeLevelType + '\'' +
+ ", codeLevelTypeText='" + codeLevelTypeText + '\'' +
+ ", codeLevelValue=" + codeLevelValue +
+ ", valueCutLength=" + valueCutLength +
+ ", valueCutType='" + valueCutType + '\'' +
+ ", valueCutTypeText='" + valueCutTypeText + '\'' +
+ ", codeGetValueType='" + codeGetValueType + '\'' +
+ ", codeGetValueTypeText='" + codeGetValueTypeText + '\'' +
+ ", referCodeClassifyOid='" + referCodeClassifyOid + '\'' +
+ ", referCodeClassifyOidName='" + referCodeClassifyOidName + '\'' +
+ ", referBtmId='" + referBtmId + '\'' +
+ ", referBtmName='" + referBtmName + '\'' +
+ ", referConfig='" + referConfig + '\'' +
+ ", referValueInfo='" + referValueInfo + '\'' +
+ ", filterSql='" + filterSql + '\'' +
+ ", serialStart='" + serialStart + '\'' +
+ ", serialStep=" + serialStep +
+ ", codeFillType='" + codeFillType + '\'' +
+ ", codeFillTypeText='" + codeFillTypeText + '\'' +
+ ", codeFillSeparator='" + codeFillSeparator + '\'' +
+ ", codeFillLength='" + codeFillLength + '\'' +
+ ", codeFillLimit=" + codeFillLimit +
+ ", codeFillFlag='" + codeFillFlag + '\'' +
+ ", customCodeSerialClass='" + customCodeSerialClass + '\'' +
+ ", matchClassifyValueFlag='" + matchClassifyValueFlag + '\'' +
+ ", parentClassifySecOid='" + parentClassifySecOid + '\'' +
+ ", parentClassifySecText='" + parentClassifySecText + '\'' +
+ ", nullableFlag='" + nullableFlag + '\'' +
+ ", componentCodeFlag='" + componentCodeFlag + '\'' +
+ ", serialDependFlag='" + serialDependFlag + '\'' +
+ ", displayFlag='" + displayFlag + '\'' +
+ ", serialDependOrder=" + serialDependOrder +
+ ", fixedValueVOList=" + fixedValueVOList +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeButtonVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeButtonVO.java
new file mode 100644
index 0000000..2aefd38
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeButtonVO.java
@@ -0,0 +1,98 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeButtonVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118774202884L;
+
+ /**
+ * 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ private String iconcls;
+
+
+ /**
+ * 鎵ц鐨刯s鍐呭
+ */
+ private String executejs;
+
+
+ /**
+ * 鎸夐挳鐨勪綅缃�
+ */
+ private String usedpositiontype;
+
+
+ /**
+ * 鎸夐挳鐨勪綅缃樉绀烘枃鏈�
+ */
+ private String usedpositiontypeText;
+
+ /**
+ * 鑾峰彇 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ public String getIconcls (){
+ return iconcls;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ public void setIconcls (String iconcls){
+ this.iconcls = iconcls;
+ }
+ /**
+ * 鑾峰彇 鎵ц鐨刯s鍐呭
+ */
+ public String getExecutejs (){
+ return executejs;
+ }
+
+ /**
+ * 璁剧疆 鎵ц鐨刯s鍐呭
+ */
+ public void setExecutejs (String executejs){
+ this.executejs = executejs;
+ }
+ /**
+ * 鑾峰彇 鎸夐挳鐨勪綅缃�
+ */
+ public String getUsedpositiontype (){
+ return usedpositiontype;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐨勪綅缃�
+ */
+ public void setUsedpositiontype (String usedpositiontype){
+ this.usedpositiontype = usedpositiontype;
+ }
+
+ public String getUsedpositiontypeText() {
+ return usedpositiontypeText;
+ }
+
+ public void setUsedpositiontypeText(String usedpositiontypeText) {
+ this.usedpositiontypeText = usedpositiontypeText;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeButtonVO{" +
+ "iconcls='" + iconcls + '\'' +
+ ", executejs='" + executejs + '\'' +
+ ", usedpositiontype='" + usedpositiontype + '\'' +
+ ", usedpositiontypeText='" + usedpositiontypeText + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyAttributeVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyAttributeVO.java
new file mode 100644
index 0000000..499cdfb
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyAttributeVO.java
@@ -0,0 +1,63 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撳垎绫绘墍闇�灞炴�ч泦鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyAttributeVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120914631514L;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeclassifyoid;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ private String codeclassifyoidName;
+
+
+ /**
+ * 鑾峰彇 涓婚搴撳垎绫讳富閿�
+ */
+ public String getCodeclassifyoid (){
+ return codeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婚搴撳垎绫讳富閿�
+ */
+ public void setCodeclassifyoid (String codeclassifyoid){
+ this.codeclassifyoid = codeclassifyoid;
+ }
+ /**
+ * 鑾峰彇涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public String getCodeclassifyoidName (){
+ return codeclassifyoidName;
+ }
+
+ /**
+ * 璁剧疆涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public void setCodeclassifyoidName (String codeclassifyoidName){
+ this.codeclassifyoidName = codeclassifyoidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyAttributeVO{" +
+ "codeclassifyoid='" + codeclassifyoid +"'," +
+ "codeclassifyoidName='" + codeclassifyoidName +"'," +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyProcessTempVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyProcessTempVO.java
new file mode 100644
index 0000000..c7df7c5
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyProcessTempVO.java
@@ -0,0 +1,167 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyProcessTempVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118047426785L;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeclassifyoid;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ private String codeclassifyoidName;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifyTemplateOid;
+
+ /**
+ * 娴佺▼妯℃澘鐢ㄩ��
+ */
+ private String codeprocessuse;
+
+ /**
+ * 娴佺▼妯℃澘鐢ㄩ�斿悕绉�
+ */
+ private String codeprocessuseText;
+
+ /**
+ * 娴佺▼妯℃澘鐨勭増鏈�
+ */
+ private String processVersion;
+
+ /**
+ * 鍏宠仈鐨勬ā鏉垮睘鎬х殑涓婚敭闆嗗悎瀛楃涓�
+ */
+ private String codeTempAttrOidArr;
+
+ /**
+ * 鍏宠仈鐨勬ā鏉垮睘鎬х殑鍚嶇О闆嗗悎瀛楃涓�
+ */
+ private String codeTempAttrOidArrName;
+
+ /**
+ * 鍏宠仈鐨勬ā鏉垮睘鎬�
+ */
+ private List<CodeClassifyTemplateAttrVO> attrList;
+
+ /**
+ * 鑾峰彇 涓婚搴撳垎绫讳富閿�
+ */
+ public String getCodeclassifyoid (){
+ return codeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婚搴撳垎绫讳富閿�
+ */
+ public void setCodeclassifyoid (String codeclassifyoid){
+ this.codeclassifyoid = codeclassifyoid;
+ }
+ /**
+ * 鑾峰彇涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public String getCodeclassifyoidName (){
+ return codeclassifyoidName;
+ }
+
+ /**
+ * 璁剧疆涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public void setCodeclassifyoidName (String codeclassifyoidName){
+ this.codeclassifyoidName = codeclassifyoidName;
+ }
+ /**
+ * 鑾峰彇 娴佺▼妯℃澘鐢ㄩ��
+ */
+ public String getCodeprocessuse (){
+ return codeprocessuse;
+ }
+
+ /**
+ * 璁剧疆 娴佺▼妯℃澘鐢ㄩ��
+ */
+ public void setCodeprocessuse (String codeprocessuse){
+ this.codeprocessuse = codeprocessuse;
+ }
+
+ public String getCodeprocessuseText() {
+ return codeprocessuseText;
+ }
+
+ public void setCodeprocessuseText(String codeprocessuseText) {
+ this.codeprocessuseText = codeprocessuseText;
+ }
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ public String getProcessVersion() {
+ return processVersion;
+ }
+
+ public void setProcessVersion(String processVersion) {
+ this.processVersion = processVersion;
+ }
+
+ public List<CodeClassifyTemplateAttrVO> getAttrList() {
+ return attrList;
+ }
+
+ public void setAttrList(List<CodeClassifyTemplateAttrVO> attrList) {
+ this.attrList = attrList;
+ }
+
+ public String getCodeTempAttrOidArr() {
+ return codeTempAttrOidArr;
+ }
+
+ public void setCodeTempAttrOidArr(String codeTempAttrOidArr) {
+ this.codeTempAttrOidArr = codeTempAttrOidArr;
+ }
+
+ public String getCodeTempAttrOidArrName() {
+ return codeTempAttrOidArrName;
+ }
+
+ public void setCodeTempAttrOidArrName(String codeTempAttrOidArrName) {
+ this.codeTempAttrOidArrName = codeTempAttrOidArrName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyProcessTempVO{" +
+ "codeclassifyoid='" + codeclassifyoid + '\'' +
+ ", codeclassifyoidName='" + codeclassifyoidName + '\'' +
+ ", classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", codeprocessuse='" + codeprocessuse + '\'' +
+ ", codeprocessuseText='" + codeprocessuseText + '\'' +
+ ", processVersion='" + processVersion + '\'' +
+ ", codeTempAttrOidArr='" + codeTempAttrOidArr + '\'' +
+ ", codeTempAttrOidArrName='" + codeTempAttrOidArrName + '\'' +
+ ", attrList=" + attrList +
+ '}' + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTempMapItemVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTempMapItemVO.java
new file mode 100644
index 0000000..1ffc7b4
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTempMapItemVO.java
@@ -0,0 +1,210 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-03-10
+ */
+public class CodeClassifyTempMapItemVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120984500249L;
+
+ /**
+ * 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ private String classifytemplateattroid;
+
+ /**
+ * 妯℃澘灞炴�ey
+ */
+ private String classifyAttrId;
+
+ /**
+ * 妯℃澘灞炴�у悕绉�
+ */
+ private String classifyAttrName;
+
+ /**
+ * 鏄犲皠瑙勫垯涓婚敭
+ */
+ private String classifytemplatemapoid;
+
+ /**
+ * 鏄犲皠瑙勫垯涓婚敭鏄剧ず鏂囨湰
+ */
+ private String classifytemplatemapoidName;
+
+ /**
+ * 闆嗗洟鐮佸睘鎬ey
+ */
+ private String groupcodeattrid;
+
+
+ /**
+ * 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ private String groupcodeattrname;
+
+
+ /**
+ * 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ private String switchclassname;
+
+
+ /**
+ * 杞崲鍏紡
+ */
+ private String switcheval;
+
+
+ /**
+ * 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ private String targetdateformat;
+
+
+
+ /**
+ * 鑾峰彇 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ public String getClassifytemplateattroid (){
+ return classifytemplateattroid;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ public void setClassifytemplateattroid (String classifytemplateattroid){
+ this.classifytemplateattroid = classifytemplateattroid;
+ }
+ /**
+ * 鑾峰彇 鏄犲皠瑙勫垯涓婚敭
+ */
+ public String getClassifytemplatemapoid (){
+ return classifytemplatemapoid;
+ }
+
+ /**
+ * 璁剧疆 鏄犲皠瑙勫垯涓婚敭
+ */
+ public void setClassifytemplatemapoid (String classifytemplatemapoid){
+ this.classifytemplatemapoid = classifytemplatemapoid;
+ }
+ /**
+ * 鑾峰彇鏄犲皠瑙勫垯涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getClassifytemplatemapoidName (){
+ return classifytemplatemapoidName;
+ }
+
+ /**
+ * 璁剧疆鏄犲皠瑙勫垯涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setClassifytemplatemapoidName (String classifytemplatemapoidName){
+ this.classifytemplatemapoidName = classifytemplatemapoidName;
+ }
+ /**
+ * 鑾峰彇 闆嗗洟鐮佸睘鎬ey
+ */
+ public String getGroupcodeattrid (){
+ return groupcodeattrid;
+ }
+
+ /**
+ * 璁剧疆 闆嗗洟鐮佸睘鎬ey
+ */
+ public void setGroupcodeattrid (String groupcodeattrid){
+ this.groupcodeattrid = groupcodeattrid;
+ }
+ /**
+ * 鑾峰彇 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ public String getGroupcodeattrname (){
+ return groupcodeattrname;
+ }
+
+ /**
+ * 璁剧疆 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ public void setGroupcodeattrname (String groupcodeattrname){
+ this.groupcodeattrname = groupcodeattrname;
+ }
+ /**
+ * 鑾峰彇 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ public String getSwitchclassname (){
+ return switchclassname;
+ }
+
+ /**
+ * 璁剧疆 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ public void setSwitchclassname (String switchclassname){
+ this.switchclassname = switchclassname;
+ }
+ /**
+ * 鑾峰彇 杞崲鍏紡
+ */
+ public String getSwitcheval (){
+ return switcheval;
+ }
+
+ /**
+ * 璁剧疆 杞崲鍏紡
+ */
+ public void setSwitcheval (String switcheval){
+ this.switcheval = switcheval;
+ }
+ /**
+ * 鑾峰彇 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ public String getTargetdateformat (){
+ return targetdateformat;
+ }
+
+ /**
+ * 璁剧疆 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ public void setTargetdateformat (String targetdateformat){
+ this.targetdateformat = targetdateformat;
+ }
+
+ public String getClassifyAttrId() {
+ return classifyAttrId;
+ }
+
+ public void setClassifyAttrId(String classifyAttrId) {
+ this.classifyAttrId = classifyAttrId;
+ }
+
+ public String getClassifyAttrName() {
+ return classifyAttrName;
+ }
+
+ public void setClassifyAttrName(String classifyAttrName) {
+ this.classifyAttrName = classifyAttrName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTempMapItemVO{" +
+ "classifytemplateattroid='" + classifytemplateattroid + '\'' +
+ ", classifyAttrId='" + classifyAttrId + '\'' +
+ ", classifyAttrName='" + classifyAttrName + '\'' +
+ ", classifytemplatemapoid='" + classifytemplatemapoid + '\'' +
+ ", classifytemplatemapoidName='" + classifytemplatemapoidName + '\'' +
+ ", groupcodeattrid='" + groupcodeattrid + '\'' +
+ ", groupcodeattrname='" + groupcodeattrname + '\'' +
+ ", switchclassname='" + switchclassname + '\'' +
+ ", switcheval='" + switcheval + '\'' +
+ ", targetdateformat='" + targetdateformat + '\'' +
+ '}' + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
new file mode 100644
index 0000000..3e81f47
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
@@ -0,0 +1,1071 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateAttrVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119806919617L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifytemplateoid;
+
+ /**
+ * 鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ private String classifytemplateoidName;
+
+ /**
+ * 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿�
+ */
+ private String classifyattributeoid;
+
+ /**
+ * 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿樉绀烘枃鏈�
+ */
+ private String classifyattributeoidName;
+
+ /**
+ * 灞炴�х殑绫诲瀷
+ */
+ private String attributedatatype;
+
+ /**
+ * 灞炴�х被鍨嬫樉绀�
+ */
+ private String attributeDataTypeText;
+
+
+ /**
+ * 鏄惁鍏抽敭灞炴��
+ */
+ private String keyattrflag;
+
+
+ /**
+ * 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ private String queryattrflag;
+
+
+ /**
+ * 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ private String seniorqueryattrflag;
+
+
+ /**
+ * 鐩镐技鏌ラ噸灞炴��
+ */
+ private String samerepeatattrflag;
+
+
+ /**
+ * 鏄惁鎺掑簭
+ */
+ private String sortattrflag;
+
+
+ /**
+ * 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ private String qrcodeflag;
+
+
+ /**
+ * 鏄惁鐢熸垚涓�缁寸爜
+ */
+ private String barcodeflag;
+
+
+ /**
+ * 缁勫悎瑙勫垯
+ */
+ private String componentrule;
+
+
+ /**
+ * 楠岃瘉瑙勫垯
+ */
+ private String verifyrule;
+
+
+ /**
+ * 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ private String classifyinvokelevel;
+
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ private String classifyinvokeattr;
+
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ private String classifyinvokeattrname;
+
+
+ /**
+ * 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ private String classifyinvokeeditflag;
+
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+
+ /**
+ * 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ private String formdisplayflag;
+
+
+ /**
+ * 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ private String tabledisplayflag;
+
+
+ /**
+ * 鎵�灞炲睘鎬у垎缁�
+ */
+ private String attributegroup;
+
+
+ /**
+ * 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ private String enumid;
+
+
+ /**
+ * 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ private String enumname;
+
+
+ /**
+ * 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ private String enumeditflag;
+
+
+ /**
+ * 鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�
+ */
+ private String referbtmid;
+
+
+ /**
+ * 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ private String referbtmname;
+
+
+ /**
+ * 鍙傜収绐楀彛閰嶇疆
+ */
+ private String referConfig;
+
+
+ /**
+ * 鏄惁蹇呰緭
+ */
+ private String requireflag;
+
+
+ /**
+ * 鏄惁鍙
+ */
+ private String readonlyflag;
+
+
+ /**
+ * 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ private Integer controllength;
+
+
+ /**
+ * 琛ㄥ崟閲屾樉绀虹殑鏍峰紡
+ */
+ private String formdisplaystyle;
+
+
+ /**
+ * 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ private String tabledisplaystyle;
+
+
+ /**
+ * 琛ㄥ崟涓秴閾炬帴鍐呭
+ */
+ private String formhref;
+
+
+ /**
+ * 琛ㄦ牸涓秴閾炬帴鍐呭
+ */
+ private String tablehref;
+
+
+ /**
+ * 灏忔暟绮惧害
+ */
+ private Integer precisionlength;
+
+
+ /**
+ * 灏忔暟鍒诲害
+ */
+ private Integer scalelength;
+
+
+ /**
+ * 鍙栧�艰寖鍥�
+ */
+ private String valuearea;
+
+
+ /**
+ * 鏃堕棿鏍煎紡
+ */
+ private String codedateformat;
+
+
+ /**
+ * 琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js
+ */
+ private String tabledisplayjs;
+
+
+ /**
+ * 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ private String textareaflag;
+
+
+ /**
+ * 棰勮鍥�
+ */
+ private String imageflag;
+
+
+ /**
+ * 榛樿鍊�
+ */
+ private String defaultvalue;
+
+
+ /**
+ * 鍓嶇紑
+ */
+ private String prefixvalue;
+
+
+ /**
+ * 鍚庣紑
+ */
+ private String suffixvalue;
+
+
+ /**
+ * 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ private String filtersourceattr;
+
+
+ /**
+ * 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ private String filtersourceattrname;
+
+ /**
+ * 浣跨敤鏋氫妇娉ㄥ叆鐨勫瓧绗︿覆鏍煎紡
+ */
+ private String enumString;
+
+ /**
+ * 灞炴�у垪琛ㄤ腑鐨勫搴�
+ */
+ private Integer attrTableWidth;
+
+ /**
+ * 璇存槑
+ */
+ @Column(columnDefinition = "璇存槑")
+ private String explain;
+
+ /**
+ * 閫夋嫨搴撴爣璇�
+ */
+ @Column(columnDefinition = "閫夋嫨搴撴爣璇�")
+ private String libraryIdentification;
+
+ /**
+ * 绾ц仈灞炴�х紪鍙�
+ */
+ @Column(columnDefinition = "绾ц仈灞炴�х紪鍙�")
+ private String parentCode;
+
+ /**
+ * 绾ц仈灞炴�у悕绉�
+ */
+ @Column(columnDefinition = "绾ц仈灞炴�у悕绉�")
+ private String parentName;
+
+ /**
+ * 绾ц仈鏌ヨ灞炴��
+ */
+ @Column(columnDefinition = "绾ц仈鏌ヨ灞炴��")
+ private String parentQueryAttr;
+
+ public String getExplain() {
+ return explain;
+ }
+
+ public void setExplain(String explain) {
+ this.explain = explain;
+ }
+
+ public String getLibraryIdentification() {
+ return libraryIdentification;
+ }
+
+ public void setLibraryIdentification(String libraryIdentification) {
+ this.libraryIdentification = libraryIdentification;
+ }
+
+ public String getParentCode() {
+ return parentCode;
+ }
+
+ public void setParentCode(String parentCode) {
+ this.parentCode = parentCode;
+ }
+
+ public String getParentName() {
+ return parentName;
+ }
+
+ public void setParentName(String parentName) {
+ this.parentName = parentName;
+ }
+
+ public String getParentQueryAttr() {
+ return parentQueryAttr;
+ }
+
+ public void setParentQueryAttr(String parentQueryAttr) {
+ this.parentQueryAttr = parentQueryAttr;
+ }
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉�
+ */
+ public String getClassifytemplateoid (){
+ return classifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉�
+ */
+ public void setClassifytemplateoid (String classifytemplateoid){
+ this.classifytemplateoid = classifytemplateoid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public String getClassifytemplateoidName (){
+ return classifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public void setClassifytemplateoidName (String classifytemplateoidName){
+ this.classifytemplateoidName = classifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿�
+ */
+ public String getClassifyattributeoid (){
+ return classifyattributeoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿�
+ */
+ public void setClassifyattributeoid (String classifyattributeoid){
+ this.classifyattributeoid = classifyattributeoid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿樉绀烘枃鏈�
+ */
+ public String getClassifyattributeoidName (){
+ return classifyattributeoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炲垎绫讳腑鐨勫睘鎬т富閿樉绀烘枃鏈�
+ */
+ public void setClassifyattributeoidName (String classifyattributeoidName){
+ this.classifyattributeoidName = classifyattributeoidName;
+ }
+ /**
+ * 鑾峰彇 灞炴�х殑绫诲瀷
+ */
+ public String getAttributedatatype (){
+ return attributedatatype;
+ }
+
+ /**
+ * 璁剧疆 灞炴�х殑绫诲瀷
+ */
+ public void setAttributedatatype (String attributedatatype){
+ this.attributedatatype = attributedatatype;
+ }
+ /**
+ * 鑾峰彇 鏄惁鍏抽敭灞炴��
+ */
+ public String getKeyattrflag (){
+ return keyattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鍏抽敭灞炴��
+ */
+ public void setKeyattrflag (String keyattrflag){
+ this.keyattrflag = keyattrflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ public String getQueryattrflag (){
+ return queryattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ public void setQueryattrflag (String queryattrflag){
+ this.queryattrflag = queryattrflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ public String getSeniorqueryattrflag (){
+ return seniorqueryattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ public void setSeniorqueryattrflag (String seniorqueryattrflag){
+ this.seniorqueryattrflag = seniorqueryattrflag;
+ }
+ /**
+ * 鑾峰彇 鐩镐技鏌ラ噸灞炴��
+ */
+ public String getSamerepeatattrflag (){
+ return samerepeatattrflag;
+ }
+
+ /**
+ * 璁剧疆 鐩镐技鏌ラ噸灞炴��
+ */
+ public void setSamerepeatattrflag (String samerepeatattrflag){
+ this.samerepeatattrflag = samerepeatattrflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁鎺掑簭
+ */
+ public String getSortattrflag (){
+ return sortattrflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鎺掑簭
+ */
+ public void setSortattrflag (String sortattrflag){
+ this.sortattrflag = sortattrflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ public String getQrcodeflag (){
+ return qrcodeflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ public void setQrcodeflag (String qrcodeflag){
+ this.qrcodeflag = qrcodeflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁鐢熸垚涓�缁寸爜
+ */
+ public String getBarcodeflag (){
+ return barcodeflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鐢熸垚涓�缁寸爜
+ */
+ public void setBarcodeflag (String barcodeflag){
+ this.barcodeflag = barcodeflag;
+ }
+ /**
+ * 鑾峰彇 缁勫悎瑙勫垯
+ */
+ public String getComponentrule (){
+ return componentrule;
+ }
+
+ /**
+ * 璁剧疆 缁勫悎瑙勫垯
+ */
+ public void setComponentrule (String componentrule){
+ this.componentrule = componentrule;
+ }
+ /**
+ * 鑾峰彇 楠岃瘉瑙勫垯
+ */
+ public String getVerifyrule (){
+ return verifyrule;
+ }
+
+ /**
+ * 璁剧疆 楠岃瘉瑙勫垯
+ */
+ public void setVerifyrule (String verifyrule){
+ this.verifyrule = verifyrule;
+ }
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ public String getClassifyinvokelevel (){
+ return classifyinvokelevel;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ public void setClassifyinvokelevel (String classifyinvokelevel){
+ this.classifyinvokelevel = classifyinvokelevel;
+ }
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ public String getClassifyinvokeattr (){
+ return classifyinvokeattr;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ public void setClassifyinvokeattr (String classifyinvokeattr){
+ this.classifyinvokeattr = classifyinvokeattr;
+ }
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ public String getClassifyinvokeattrname (){
+ return classifyinvokeattrname;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ public void setClassifyinvokeattrname (String classifyinvokeattrname){
+ this.classifyinvokeattrname = classifyinvokeattrname;
+ }
+ /**
+ * 鑾峰彇 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ public String getClassifyinvokeeditflag (){
+ return classifyinvokeeditflag;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ public void setClassifyinvokeeditflag (String classifyinvokeeditflag){
+ this.classifyinvokeeditflag = classifyinvokeeditflag;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+ /**
+ * 鑾峰彇 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ public String getFormdisplayflag (){
+ return formdisplayflag;
+ }
+
+ /**
+ * 璁剧疆 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ public void setFormdisplayflag (String formdisplayflag){
+ this.formdisplayflag = formdisplayflag;
+ }
+ /**
+ * 鑾峰彇 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ public String getTabledisplayflag (){
+ return tabledisplayflag;
+ }
+
+ /**
+ * 璁剧疆 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ public void setTabledisplayflag (String tabledisplayflag){
+ this.tabledisplayflag = tabledisplayflag;
+ }
+ /**
+ * 鑾峰彇 鎵�灞炲睘鎬у垎缁�
+ */
+ public String getAttributegroup (){
+ return attributegroup;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炲睘鎬у垎缁�
+ */
+ public void setAttributegroup (String attributegroup){
+ this.attributegroup = attributegroup;
+ }
+ /**
+ * 鑾峰彇 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ public String getEnumid (){
+ return enumid;
+ }
+
+ /**
+ * 璁剧疆 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ public void setEnumid (String enumid){
+ this.enumid = enumid;
+ }
+ /**
+ * 鑾峰彇 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ public String getEnumname (){
+ return enumname;
+ }
+
+ /**
+ * 璁剧疆 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ public void setEnumname (String enumname){
+ this.enumname = enumname;
+ }
+ /**
+ * 鑾峰彇 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ public String getEnumeditflag (){
+ return enumeditflag;
+ }
+
+ /**
+ * 璁剧疆 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ public void setEnumeditflag (String enumeditflag){
+ this.enumeditflag = enumeditflag;
+ }
+ /**
+ * 鑾峰彇 鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�
+ */
+ public String getReferbtmid (){
+ return referbtmid;
+ }
+
+ /**
+ * 璁剧疆 鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�
+ */
+ public void setReferbtmid (String referbtmid){
+ this.referbtmid = referbtmid;
+ }
+ /**
+ * 鑾峰彇 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ public String getReferbtmname (){
+ return referbtmname;
+ }
+
+ /**
+ * 璁剧疆 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ public void setReferbtmname (String referbtmname){
+ this.referbtmname = referbtmname;
+ }
+
+ public String getReferConfig() {
+ return referConfig;
+ }
+
+ public void setReferConfig(String referConfig) {
+ this.referConfig = referConfig;
+ }
+
+ /**
+
+ /**
+ * 鑾峰彇 鏄惁蹇呰緭
+ */
+ public String getRequireflag (){
+ return requireflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇呰緭
+ */
+ public void setRequireflag (String requireflag){
+ this.requireflag = requireflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁鍙
+ */
+ public String getReadonlyflag (){
+ return readonlyflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鍙
+ */
+ public void setReadonlyflag (String readonlyflag){
+ this.readonlyflag = readonlyflag;
+ }
+ /**
+ * 鑾峰彇 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ public Integer getControllength (){
+ return controllength;
+ }
+
+ /**
+ * 璁剧疆 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ public void setControllength (Integer controllength){
+ this.controllength = controllength;
+ }
+ /**
+ * 鑾峰彇 琛ㄥ崟閲屾樉绀虹殑鏍峰紡
+ */
+ public String getFormdisplaystyle (){
+ return formdisplaystyle;
+ }
+
+ /**
+ * 璁剧疆 琛ㄥ崟閲屾樉绀虹殑鏍峰紡
+ */
+ public void setFormdisplaystyle (String formdisplaystyle){
+ this.formdisplaystyle = formdisplaystyle;
+ }
+ /**
+ * 鑾峰彇 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ public String getTabledisplaystyle (){
+ return tabledisplaystyle;
+ }
+
+ /**
+ * 璁剧疆 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ public void setTabledisplaystyle (String tabledisplaystyle){
+ this.tabledisplaystyle = tabledisplaystyle;
+ }
+ /**
+ * 鑾峰彇 琛ㄥ崟涓秴閾炬帴鍐呭
+ */
+ public String getFormhref (){
+ return formhref;
+ }
+
+ /**
+ * 璁剧疆 琛ㄥ崟涓秴閾炬帴鍐呭
+ */
+ public void setFormhref (String formhref){
+ this.formhref = formhref;
+ }
+ /**
+ * 鑾峰彇 琛ㄦ牸涓秴閾炬帴鍐呭
+ */
+ public String getTablehref (){
+ return tablehref;
+ }
+
+ /**
+ * 璁剧疆 琛ㄦ牸涓秴閾炬帴鍐呭
+ */
+ public void setTablehref (String tablehref){
+ this.tablehref = tablehref;
+ }
+ /**
+ * 鑾峰彇 灏忔暟绮惧害
+ */
+ public Integer getPrecisionlength (){
+ return precisionlength;
+ }
+
+ /**
+ * 璁剧疆 灏忔暟绮惧害
+ */
+ public void setPrecisionlength (Integer precisionlength){
+ this.precisionlength = precisionlength;
+ }
+ /**
+ * 鑾峰彇 灏忔暟鍒诲害
+ */
+ public Integer getScalelength (){
+ return scalelength;
+ }
+
+ /**
+ * 璁剧疆 灏忔暟鍒诲害
+ */
+ public void setScalelength (Integer scalelength){
+ this.scalelength = scalelength;
+ }
+ /**
+ * 鑾峰彇 鍙栧�艰寖鍥�
+ */
+ public String getValuearea (){
+ return valuearea;
+ }
+
+ /**
+ * 璁剧疆 鍙栧�艰寖鍥�
+ */
+ public void setValuearea (String valuearea){
+ this.valuearea = valuearea;
+ }
+ /**
+ * 鑾峰彇 鏃堕棿鏍煎紡
+ */
+ public String getCodedateformat (){
+ return codedateformat;
+ }
+
+ /**
+ * 璁剧疆 鏃堕棿鏍煎紡
+ */
+ public void setCodedateformat (String codedateformat){
+ this.codedateformat = codedateformat;
+ }
+ /**
+ * 鑾峰彇 琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js
+ */
+ public String getTabledisplayjs (){
+ return tabledisplayjs;
+ }
+
+ /**
+ * 璁剧疆 琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js
+ */
+ public void setTabledisplayjs (String tabledisplayjs){
+ this.tabledisplayjs = tabledisplayjs;
+ }
+ /**
+ * 鑾峰彇 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ public String getTextareaflag (){
+ return textareaflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ public void setTextareaflag (String textareaflag){
+ this.textareaflag = textareaflag;
+ }
+ /**
+ * 鑾峰彇 棰勮鍥�
+ */
+ public String getImageflag (){
+ return imageflag;
+ }
+
+ /**
+ * 璁剧疆 棰勮鍥�
+ */
+ public void setImageflag (String imageflag){
+ this.imageflag = imageflag;
+ }
+ /**
+ * 鑾峰彇 榛樿鍊�
+ */
+ public String getDefaultvalue (){
+ return defaultvalue;
+ }
+
+ /**
+ * 璁剧疆 榛樿鍊�
+ */
+ public void setDefaultvalue (String defaultvalue){
+ this.defaultvalue = defaultvalue;
+ }
+ /**
+ * 鑾峰彇 鍓嶇紑
+ */
+ public String getPrefixvalue (){
+ return prefixvalue;
+ }
+
+ /**
+ * 璁剧疆 鍓嶇紑
+ */
+ public void setPrefixvalue (String prefixvalue){
+ this.prefixvalue = prefixvalue;
+ }
+ /**
+ * 鑾峰彇 鍚庣紑
+ */
+ public String getSuffixvalue (){
+ return suffixvalue;
+ }
+
+ /**
+ * 璁剧疆 鍚庣紑
+ */
+ public void setSuffixvalue (String suffixvalue){
+ this.suffixvalue = suffixvalue;
+ }
+ /**
+ * 鑾峰彇 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ public String getFiltersourceattr (){
+ return filtersourceattr;
+ }
+
+ public String getAttributeDataTypeText() {
+ return attributeDataTypeText;
+ }
+
+ public void setAttributeDataTypeText(String attributeDataTypeText) {
+ this.attributeDataTypeText = attributeDataTypeText;
+ }
+
+ /**
+ * 璁剧疆 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ public void setFiltersourceattr (String filtersourceattr){
+ this.filtersourceattr = filtersourceattr;
+ }
+ /**
+ * 鑾峰彇 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ public String getFiltersourceattrname (){
+ return filtersourceattrname;
+ }
+
+ /**
+ * 璁剧疆 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ public void setFiltersourceattrname (String filtersourceattrname){
+ this.filtersourceattrname = filtersourceattrname;
+ }
+
+ public String getEnumString() {
+ return enumString;
+ }
+
+ public void setEnumString(String enumString) {
+ this.enumString = enumString;
+ }
+
+
+ public Integer getAttrTableWidth() {
+ return attrTableWidth;
+ }
+
+ public void setAttrTableWidth(Integer attrTableWidth) {
+ this.attrTableWidth = attrTableWidth;
+ }
+
+ @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 +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
new file mode 100644
index 0000000..13fe415
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
@@ -0,0 +1,170 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateButtonVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118535405378L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifytemplateoid;
+
+ /**
+ * 鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ private String classifytemplateoidName;
+
+ /**
+ * 鎸夐挳鐨勪富閿�
+ */
+ private String classifybuttonoid;
+
+ /**
+ * 鎸夐挳鐨勪富閿樉绀烘枃鏈�
+ */
+ private String classifybuttonoidName;
+
+ /**
+ * 鎸夐挳鐢ㄩ��
+ */
+ private String buttonuse;
+
+ /**
+ * 鎸夐挳鐢ㄩ�旀樉绀哄璞�
+ */
+ private String buttonUseText;
+
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+ /**
+ * 鎸夐挳鐨勭浉鍏冲唴瀹�
+ */
+ private CodeButtonVO buttonVO;
+
+
+
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉�
+ */
+ public String getClassifytemplateoid (){
+ return classifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉�
+ */
+ public void setClassifytemplateoid (String classifytemplateoid){
+ this.classifytemplateoid = classifytemplateoid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public String getClassifytemplateoidName (){
+ return classifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public void setClassifytemplateoidName (String classifytemplateoidName){
+ this.classifytemplateoidName = classifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 鎸夐挳鐨勪富閿�
+ */
+ public String getClassifybuttonoid (){
+ return classifybuttonoid;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐨勪富閿�
+ */
+ public void setClassifybuttonoid (String classifybuttonoid){
+ this.classifybuttonoid = classifybuttonoid;
+ }
+ /**
+ * 鑾峰彇鎸夐挳鐨勪富閿樉绀烘枃鏈�
+ */
+ public String getClassifybuttonoidName (){
+ return classifybuttonoidName;
+ }
+
+ /**
+ * 璁剧疆鎸夐挳鐨勪富閿樉绀烘枃鏈�
+ */
+ public void setClassifybuttonoidName (String classifybuttonoidName){
+ this.classifybuttonoidName = classifybuttonoidName;
+ }
+ /**
+ * 鑾峰彇 鎸夐挳鐢ㄩ��
+ */
+ public String getButtonuse (){
+ return buttonuse;
+ }
+
+ /**
+ * 璁剧疆 鎸夐挳鐢ㄩ��
+ */
+ public void setButtonuse (String buttonuse){
+ this.buttonuse = buttonuse;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ public String getButtonUseText() {
+ return buttonUseText;
+ }
+
+ public void setButtonUseText(String buttonUseText) {
+ this.buttonUseText = buttonUseText;
+ }
+
+ public CodeButtonVO getButtonVO() {
+ return buttonVO;
+ }
+
+ public void setButtonVO(CodeButtonVO buttonVO) {
+ this.buttonVO = buttonVO;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateButtonVO{" +
+ "classifytemplateoid='" + classifytemplateoid + '\'' +
+ ", classifytemplateoidName='" + classifytemplateoidName + '\'' +
+ ", classifybuttonoid='" + classifybuttonoid + '\'' +
+ ", classifybuttonoidName='" + classifybuttonoidName + '\'' +
+ ", buttonuse='" + buttonuse + '\'' +
+ ", buttonUseText='" + buttonUseText + '\'' +
+ ", ordernum=" + ordernum +
+ ", buttonVO=" + buttonVO +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateMapVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateMapVO.java
new file mode 100644
index 0000000..893fd17
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateMapVO.java
@@ -0,0 +1,96 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateMapVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120808516800L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ private String classifyTemplateOid;
+
+ /**
+ * 鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ private String classifyTemplateName;
+
+ /**
+ * 鏄犲皠瑙勫垯绫诲瀷
+ */
+ private String codemapruletype;
+
+
+ /**
+ * 鏄犲皠瑙勫垯绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String codemapruletypeText;
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉�
+ */
+ public String getClassifyTemplateOid (){
+ return classifyTemplateOid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉�
+ */
+ public void setClassifyTemplateOid (String classifyTemplateOid){
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public String getClassifyTemplateName (){
+ return classifyTemplateName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉挎樉绀烘枃鏈�
+ */
+ public void setClassifyTemplateName (String classifyTemplateName){
+ this.classifyTemplateName = classifyTemplateName;
+ }
+ /**
+ * 鑾峰彇 鏄犲皠瑙勫垯绫诲瀷
+ */
+ public String getCodemapruletype (){
+ return codemapruletype;
+ }
+
+ /**
+ * 璁剧疆 鏄犲皠瑙勫垯绫诲瀷
+ */
+ public void setCodemapruletype (String codemapruletype){
+ this.codemapruletype = codemapruletype;
+ }
+
+ public String getCodemapruletypeText() {
+ return codemapruletypeText;
+ }
+
+ public void setCodemapruletypeText(String codemapruletypeText) {
+ this.codemapruletypeText = codemapruletypeText;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateMapVO{" +
+ "classifytemplateoid='" + classifyTemplateOid + '\'' +
+ ", classifytemplateoidName='" + classifyTemplateName + '\'' +
+ ", codemapruletype='" + codemapruletype + '\'' +
+ ", codemapruletypeText='" + codemapruletypeText + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateVO.java
new file mode 100644
index 0000000..84e5c05
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateVO.java
@@ -0,0 +1,105 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyTemplateVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118684061936L;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeclassifyoid;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ private String codeclassifyoidName;
+
+ /**
+ * 鍖呭惈鐨勫睘鎬у唴瀹�
+ */
+ private List<CodeClassifyTemplateAttrVO> attributes;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨�
+ */
+ private String btmTypeId;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ private String btmTypeName;
+
+ public String getBtmTypeId() {
+ return btmTypeId;
+ }
+
+ public void setBtmTypeId(String btmTypeId) {
+ this.btmTypeId = btmTypeId;
+ }
+
+ public String getBtmTypeName() {
+ return btmTypeName;
+ }
+
+ public void setBtmTypeName(String btmTypeName) {
+ this.btmTypeName = btmTypeName;
+ }
+
+ /**
+ * 鑾峰彇 涓婚搴撳垎绫讳富閿�
+ */
+ public String getCodeclassifyoid (){
+ return codeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婚搴撳垎绫讳富閿�
+ */
+ public void setCodeclassifyoid (String codeclassifyoid){
+ this.codeclassifyoid = codeclassifyoid;
+ }
+ /**
+ * 鑾峰彇涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public String getCodeclassifyoidName (){
+ return codeclassifyoidName;
+ }
+
+ /**
+ * 璁剧疆涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ public void setCodeclassifyoidName (String codeclassifyoidName){
+ this.codeclassifyoidName = codeclassifyoidName;
+ }
+
+ public List<CodeClassifyTemplateAttrVO> getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List<CodeClassifyTemplateAttrVO> attributes) {
+ this.attributes = attributes;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateVO{" +
+ "codeclassifyoid='" + codeclassifyoid + '\'' +
+ ", codeclassifyoidName='" + codeclassifyoidName + '\'' +
+ ", attributes=" + attributes +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyVO.java
new file mode 100644
index 0000000..7679381
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyVO.java
@@ -0,0 +1,263 @@
+package org.springblade.code.vo.pagemodel;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 涓婚搴撳垎绫绘樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+public class CodeClassifyVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119254063830L;
+
+ /**
+ * 灞炴�ф帓搴忓彿
+ */
+ private Integer ordernum;
+
+
+ /**
+ * 鎵�灞炰笟鍔$被鍨�
+ */
+ private String btmtypeid;
+
+
+ /**
+ * 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ private String btmtypename;
+
+
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ private String coderuleoid;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿樉绀烘枃鏈�
+ */
+ private String coderuleoidName;
+
+ /**
+ * 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ private String codekeyattrrepeatoid;
+
+ /**
+ * 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鏄剧ず鏂囨湰
+ */
+ private String codekeyattrrepeatoidName;
+
+ /**
+ * 涓婄骇鏁版嵁鐨勪富閿�
+ */
+ private String parentcodeclassifyoid;
+
+ /**
+ * 鏁版嵁鎵�鍦ㄧ殑灞傜骇
+ */
+ private Integer dataLevel;
+
+ /**
+ * 灞傜骇鐨勮矾寰�
+ */
+ private String path;
+
+ /***
+ * 鍚嶇О璺緞
+ */
+ private String namePath;
+ /***
+ * 浠g爜璺緞
+ */
+ private String idPath;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯涓婚敭
+ */
+ private String codeResembleRuleOid;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯鍚嶇О
+ */
+ private String codeResembleRuleOidName;
+
+ public String getCodeResembleRuleOid() {
+ return codeResembleRuleOid;
+ }
+
+ public void setCodeResembleRuleOid(String codeResembleRuleOid) {
+ this.codeResembleRuleOid = codeResembleRuleOid;
+ }
+
+ public String getCodeResembleRuleOidName() {
+ return codeResembleRuleOidName;
+ }
+
+ public void setCodeResembleRuleOidName(String codeResembleRuleOidName) {
+ this.codeResembleRuleOidName = codeResembleRuleOidName;
+ }
+
+ /**
+ * 鑾峰彇 灞炴�ф帓搴忓彿
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 灞炴�ф帓搴忓彿
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+ /**
+ * 鑾峰彇 鎵�灞炰笟鍔$被鍨�
+ */
+ public String getBtmtypeid (){
+ return btmtypeid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炰笟鍔$被鍨�
+ */
+ public void setBtmtypeid (String btmtypeid){
+ this.btmtypeid = btmtypeid;
+ }
+ /**
+ * 鑾峰彇 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ public String getBtmtypename (){
+ return btmtypename;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炰笟鍔$被鍨嬪悕绉�
+ */
+ public void setBtmtypename (String btmtypename){
+ this.btmtypename = btmtypename;
+ }
+ /**
+ * 鑾峰彇 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ public String getCoderuleoid (){
+ return coderuleoid;
+ }
+
+ /**
+ * 璁剧疆 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ public void setCoderuleoid (String coderuleoid){
+ this.coderuleoid = coderuleoid;
+ }
+ /**
+ * 鑾峰彇缂栫爜瑙勫垯鐨勪富閿樉绀烘枃鏈�
+ */
+ public String getCoderuleoidName (){
+ return coderuleoidName;
+ }
+
+ /**
+ * 璁剧疆缂栫爜瑙勫垯鐨勪富閿樉绀烘枃鏈�
+ */
+ public void setCoderuleoidName (String coderuleoidName){
+ this.coderuleoidName = coderuleoidName;
+ }
+ /**
+ * 鑾峰彇 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ public String getCodekeyattrrepeatoid (){
+ return codekeyattrrepeatoid;
+ }
+
+ /**
+ * 璁剧疆 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ public void setCodekeyattrrepeatoid (String codekeyattrrepeatoid){
+ this.codekeyattrrepeatoid = codekeyattrrepeatoid;
+ }
+ /**
+ * 鑾峰彇鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鏄剧ず鏂囨湰
+ */
+ public String getCodekeyattrrepeatoidName (){
+ return codekeyattrrepeatoidName;
+ }
+
+ /**
+ * 璁剧疆鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鏄剧ず鏂囨湰
+ */
+ public void setCodekeyattrrepeatoidName (String codekeyattrrepeatoidName){
+ this.codekeyattrrepeatoidName = codekeyattrrepeatoidName;
+ }
+ /**
+ * 鑾峰彇 涓婄骇鏁版嵁鐨勪富閿�
+ */
+ public String getParentcodeclassifyoid (){
+ return parentcodeclassifyoid;
+ }
+
+ /**
+ * 璁剧疆 涓婄骇鏁版嵁鐨勪富閿�
+ */
+ public void setParentcodeclassifyoid (String parentcodeclassifyoid){
+ this.parentcodeclassifyoid = parentcodeclassifyoid;
+ }
+
+ public Integer getDataLevel() {
+ return dataLevel;
+ }
+
+ public void setDataLevel(Integer dataLevel) {
+ this.dataLevel = dataLevel;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getNamePath() {
+ return namePath;
+ }
+
+ public void setNamePath(String namePath) {
+ this.namePath = namePath;
+ }
+
+ public String getIdPath() {
+ return idPath;
+ }
+
+ public void setIdPath(String idPath) {
+ this.idPath = idPath;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyVO{" +
+ "ordernum=" + ordernum +
+ ", btmtypeid='" + btmtypeid + '\'' +
+ ", btmtypename='" + btmtypename + '\'' +
+ ", coderuleoid='" + coderuleoid + '\'' +
+ ", coderuleoidName='" + coderuleoidName + '\'' +
+ ", codekeyattrrepeatoid='" + codekeyattrrepeatoid + '\'' +
+ ", codekeyattrrepeatoidName='" + codekeyattrrepeatoidName + '\'' +
+ ", parentcodeclassifyoid='" + parentcodeclassifyoid + '\'' +
+ ", dataLevel=" + dataLevel +
+ ", path='" + path + '\'' +
+ ", namePath='" + namePath + '\'' +
+ ", idPath='" + idPath + '\'' +
+ ", codeResembleRuleOid='" + codeResembleRuleOid + '\'' +
+ ", codeResembleRuleOidName='" + codeResembleRuleOidName + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyValueVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyValueVO.java
new file mode 100644
index 0000000..19cfe39
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyValueVO.java
@@ -0,0 +1,133 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeClassifyValueVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117941539567L;
+
+ /**
+ * 鍒嗙被鐮佹涓婚敭
+ */
+ private String codeclassifysecoid;
+
+ /**
+ * 鍒嗙被鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ private String codeclassifysecoidName;
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+ /**
+ * 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ private String parentclassifyvalueoid;
+
+ /**
+ * 鍒嗙被鐮佸�间腑鐨勭紪鍙�
+ */
+ private String id;
+
+ /**
+ * 鍒嗙被鐮佸�间腑鐨勫悕绉�
+ */
+ private String name;
+
+ /**
+ * 鑾峰彇 鍒嗙被鐮佹涓婚敭
+ */
+ public String getCodeclassifysecoid (){
+ return codeclassifysecoid;
+ }
+
+ /**
+ * 璁剧疆 鍒嗙被鐮佹涓婚敭
+ */
+ public void setCodeclassifysecoid (String codeclassifysecoid){
+ this.codeclassifysecoid = codeclassifysecoid;
+ }
+ /**
+ * 鑾峰彇鍒嗙被鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getCodeclassifysecoidName (){
+ return codeclassifysecoidName;
+ }
+
+ /**
+ * 璁剧疆鍒嗙被鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setCodeclassifysecoidName (String codeclassifysecoidName){
+ this.codeclassifysecoidName = codeclassifysecoidName;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+ /**
+ * 鑾峰彇 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ public String getParentclassifyvalueoid (){
+ return parentclassifyvalueoid;
+ }
+
+ /**
+ * 璁剧疆 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ public void setParentclassifyvalueoid (String parentclassifyvalueoid){
+ this.parentclassifyvalueoid = parentclassifyvalueoid;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeClassifyValueVO{" +
+ "codeclassifysecoid='" + codeclassifysecoid + '\'' +
+ ", codeclassifysecoidName='" + codeclassifysecoidName + '\'' +
+ ", ordernum=" + ordernum +
+ ", parentclassifyvalueoid='" + parentclassifyvalueoid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeFixedValueVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeFixedValueVO.java
new file mode 100644
index 0000000..e68aefc
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeFixedValueVO.java
@@ -0,0 +1,83 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeFixedValueVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117767594607L;
+
+ /**
+ * 鍥哄畾鐮佹涓婚敭
+ */
+ private String codefixedsecoid;
+
+ /**
+ * 鍥哄畾鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ private String codefixedsecoidName;
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+
+
+ /**
+ * 鑾峰彇 鍥哄畾鐮佹涓婚敭
+ */
+ public String getCodefixedsecoid (){
+ return codefixedsecoid;
+ }
+
+ /**
+ * 璁剧疆 鍥哄畾鐮佹涓婚敭
+ */
+ public void setCodefixedsecoid (String codefixedsecoid){
+ this.codefixedsecoid = codefixedsecoid;
+ }
+ /**
+ * 鑾峰彇鍥哄畾鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public String getCodefixedsecoidName (){
+ return codefixedsecoidName;
+ }
+
+ /**
+ * 璁剧疆鍥哄畾鐮佹涓婚敭鏄剧ず鏂囨湰
+ */
+ public void setCodefixedsecoidName (String codefixedsecoidName){
+ this.codefixedsecoidName = codefixedsecoidName;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeFixedValueVO{" +
+ "codefixedsecoid='" + codefixedsecoid +"'," +
+ "codefixedsecoidName='" + codefixedsecoidName +"'," +
+ "ordernum='" + ordernum +"'," +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImProtRusultVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImProtRusultVO.java
new file mode 100644
index 0000000..9681415
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImProtRusultVO.java
@@ -0,0 +1,41 @@
+package org.springblade.code.vo.pagemodel;
+
+public class CodeImProtRusultVO {
+
+ private String redisUuid;
+ private String fileOid="";
+ private String filePath;
+
+ public String getRedisUuid() {
+ return redisUuid;
+ }
+
+ public void setRedisUuid(String redisUuid) {
+ this.redisUuid = redisUuid;
+ }
+
+ public String getFileOid() {
+ return fileOid;
+ }
+
+ public void setFileOid(String fileOid) {
+ this.fileOid = fileOid;
+ }
+
+ public String getFilePath() {
+ return filePath;
+ }
+
+ public void setFilePath(String filePath) {
+ this.filePath = filePath;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImProtRusultVO{" +
+ "redisUuid='" + redisUuid + '\'' +
+ ", fileOid='" + fileOid + '\'' +
+ ", filePath='" + filePath + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportResultVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportResultVO.java
new file mode 100644
index 0000000..a2d227d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportResultVO.java
@@ -0,0 +1,123 @@
+package org.springblade.code.vo.pagemodel;
+
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.*;
+
+/**
+ * 瀵煎叆缂栫爜淇℃伅鐨勬墽琛岀粨鏋�
+ * @author weidy
+ * @date 2022-3-6
+ */
+public class CodeImportResultVO implements java.io.Serializable{
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6938911732592877094L;
+
+ /**
+ * 鏄惁鎴愬姛鐨�
+ */
+ private boolean success ;
+ /**
+ * 鍏抽敭灞炴�ф牎楠岃鍒欑殑淇℃伅
+ */
+ private String keyAttrRuleInfo;
+
+ /**
+ * 鍏抽敭灞炴�ф牎楠屽悗锛岄噸澶嶇殑琛屽彿
+ */
+ private Set<String> keyAttrRepeatRowIndexList = new HashSet<>();
+
+ /***
+ * 鏍规嵁鍏抽敭鐔熸倝鏌ヨ鐨勯噸澶嶇殑鏁版嵁瀵硅薄
+ */
+ private Map<String, List<ClientBusinessObject>> indexTODataMap=new HashMap<>();
+
+ /**
+ * excel鑷韩閲嶅鐨勮鍙�
+ */
+ private Set<String> selfRepeatRowIndexList = new HashSet<>();
+
+ /**
+ * 鏁版嵁鐨勫唴瀹规湁绌虹殑琛屽彿
+ */
+ private Set<String> nullRowIndexList = new HashSet<>();
+
+ /**
+ * 娌℃湁閫氳繃楠岃瘉鐨勮鍙�
+ */
+ private Set<String> unPassVerifyRowIndexSet = new HashSet<>();
+
+ public Set<String> getUnPassVerifyRowIndexSet() {
+ return unPassVerifyRowIndexSet;
+ }
+
+ public void setUnPassVerifyRowIndexSet(Set<String> unPassVerifyRowIndexSet) {
+ this.unPassVerifyRowIndexSet = unPassVerifyRowIndexSet;
+ }
+
+ public Set<String> getNullRowIndexList() {
+ return nullRowIndexList;
+ }
+
+ public void setNullRowIndexList(Set<String> nullRowIndexList) {
+ this.nullRowIndexList = nullRowIndexList;
+ }
+
+ public String getKeyAttrRuleInfo() {
+ return keyAttrRuleInfo;
+ }
+
+ public void setKeyAttrRuleInfo(String keyAttrRuleInfo) {
+ this.keyAttrRuleInfo = keyAttrRuleInfo;
+ }
+
+ public Set<String> getKeyAttrRepeatRowIndexList() {
+ return keyAttrRepeatRowIndexList;
+ }
+
+ public void setKeyAttrRepeatRowIndexList(Set<String> keyAttrRepeatRowIndexList) {
+ this.keyAttrRepeatRowIndexList = keyAttrRepeatRowIndexList;
+ }
+
+ public Set<String> getSelfRepeatRowIndexList() {
+ return selfRepeatRowIndexList;
+ }
+
+ public void setSelfRepeatRowIndexList(Set<String> selfRepeatRowIndexList) {
+ this.selfRepeatRowIndexList = selfRepeatRowIndexList;
+ }
+
+ public Map<String,List<ClientBusinessObject>> getIndexTODataMap() {
+ return indexTODataMap;
+ }
+
+ public void setIndexTODataMap(Map<String, List<ClientBusinessObject>> indexTODataMap) {
+ this.indexTODataMap = indexTODataMap;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImportResultVO{" +
+ "success=" + success +
+ ", keyAttrRuleInfo='" + keyAttrRuleInfo + '\'' +
+ ", keyAttrRepeatRowIndexList=" + keyAttrRepeatRowIndexList +
+ ", indexTODataMap=" + indexTODataMap +
+ ", selfRepeatRowIndexList=" + selfRepeatRowIndexList +
+ ", nullRowIndexList=" + nullRowIndexList +
+ ", unPassVerifyRowIndexSet=" + unPassVerifyRowIndexSet +
+ '}';
+ }
+
+
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportTemplateVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportTemplateVO.java
new file mode 100644
index 0000000..8194569
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportTemplateVO.java
@@ -0,0 +1,42 @@
+package org.springblade.code.vo.pagemodel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CodeImportTemplateVO {
+ private List<ColumnVO> cloNamesList=new ArrayList<>();
+ private CodeClassifyTemplateVO codeClassifyTemplateVO;
+ private CodeClassifyVO codeClassifyVO;
+ public List<ColumnVO> getCloNamesList() {
+ return cloNamesList;
+ }
+
+ public void setCloNamesList(List<ColumnVO> cloNamesList) {
+ this.cloNamesList = cloNamesList;
+ }
+
+ public CodeClassifyTemplateVO getCodeClassifyTemplateVO() {
+ return codeClassifyTemplateVO;
+ }
+
+ public void setCodeClassifyTemplateVO(CodeClassifyTemplateVO codeClassifyTemplateVO) {
+ this.codeClassifyTemplateVO = codeClassifyTemplateVO;
+ }
+
+ public CodeClassifyVO getCodeClassifyVO() {
+ return codeClassifyVO;
+ }
+
+ public void setCodeClassifyVO(CodeClassifyVO codeClassifyVO) {
+ this.codeClassifyVO = codeClassifyVO;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImportTemplateVO{" +
+ "cloNamesList=" + cloNamesList +
+ ", codeClassifyTemplateVO=" + codeClassifyTemplateVO +
+ ", codeClassifyVO=" + codeClassifyVO +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotDataVO.java
new file mode 100644
index 0000000..d669ea6
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotDataVO.java
@@ -0,0 +1,132 @@
+package org.springblade.code.vo.pagemodel;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/***
+ *
+ */
+public class CodeImprotDataVO implements Serializable {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1880155181507713247L;
+ /***
+ * 鏁版嵁鍦╡xecl涓殑浣嶇疆
+ */
+ private String rowIndex;
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ private String codeClassifyOid;
+
+ /**
+ * 妯℃澘鐨勪富閿�
+ */
+ private String templateOid;
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ private String codeRuleOid;
+
+ /***
+ * 鍐呴儴瀛楁
+ */
+
+ private List<String> fields = new ArrayList();
+
+ /**
+ * 鍒楀悕
+ */
+ private List<String> colNames = new ArrayList();
+ /**
+ * 鏁版嵁
+ */
+ private List<Map<String,String>> datas = new ArrayList<>();
+ private CodeClassifyTemplateVO codeClassifyTemplateVO;
+ private CodeClassifyVO codeClassifyVO;
+
+ public CodeClassifyTemplateVO getCodeClassifyTemplateVO() {
+ return codeClassifyTemplateVO;
+ }
+
+ public void setCodeClassifyTemplateVO(CodeClassifyTemplateVO codeClassifyTemplateVO) {
+ this.codeClassifyTemplateVO = codeClassifyTemplateVO;
+ }
+
+ public CodeClassifyVO getCodeClassifyVO() {
+ return codeClassifyVO;
+ }
+
+ public void setCodeClassifyVO(CodeClassifyVO codeClassifyVO) {
+ this.codeClassifyVO = codeClassifyVO;
+ }
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+ public String getTemplateOid() {
+ return templateOid;
+ }
+ public void setTemplateOid(String templateOid) {
+ this.templateOid = templateOid;
+ }
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+ public List<Map<String, String>> getDatas() {
+ return datas;
+ }
+
+ public void setDatas(List<Map<String, String>> datas) {
+ this.datas = datas;
+ }
+
+ public List<String> getColNames() {
+ return colNames;
+ }
+
+ public void setColNames(List<String> colNames) {
+ this.colNames = colNames;
+ }
+
+ public String getRowIndex() {
+ return rowIndex;
+ }
+
+ public void setRowIndex(String rowIndex) {
+ this.rowIndex = rowIndex;
+ }
+
+ public List<String> getFields() {
+ return fields;
+ }
+
+ public void setFields(List<String> fields) {
+ this.fields = fields;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImprotDataVO{" +
+ "rowIndex='" + rowIndex + '\'' +
+ ", codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", templateOid='" + templateOid + '\'' +
+ ", codeRuleOid='" + codeRuleOid + '\'' +
+ ", fields=" + fields +
+ ", colNames=" + colNames +
+ ", datas=" + datas +
+ ", codeClassifyTemplateVO=" + codeClassifyTemplateVO +
+ ", codeClassifyVO=" + codeClassifyVO +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotParmaDatVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotParmaDatVO.java
new file mode 100644
index 0000000..8b9e211
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotParmaDatVO.java
@@ -0,0 +1,41 @@
+package org.springblade.code.vo.pagemodel;
+
+import java.util.List;
+
+public class CodeImprotParmaDatVO {
+ private List<CodeImprotSaveDatVO> codeImprotSaveDatVOList;
+ private String classifyAttr;
+ private Boolean isImprot;
+
+ public List<CodeImprotSaveDatVO> getCodeImprotSaveDatVOList() {
+ return codeImprotSaveDatVOList;
+ }
+
+ public void setCodeImprotSaveDatVOList(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList) {
+ this.codeImprotSaveDatVOList = codeImprotSaveDatVOList;
+ }
+
+ public String getClassifyAttr() {
+ return classifyAttr;
+ }
+
+ public void setClassifyAttr(String classifyAttr) {
+ this.classifyAttr = classifyAttr;
+ }
+
+ public Boolean getImprot() {
+ return isImprot;
+ }
+
+ public void setImprot(Boolean improt) {
+ isImprot = improt;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImprotParmaDatVO{" +
+ "codeImprotSaveDatVOList=" + codeImprotSaveDatVOList +
+ ", isImprot=" + isImprot +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotResembleVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotResembleVO.java
new file mode 100644
index 0000000..e3b1d6a
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotResembleVO.java
@@ -0,0 +1,66 @@
+package org.springblade.code.vo.pagemodel;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class CodeImprotResembleVO {
+ private String path;
+ private List<String> fields=new ArrayList<>();
+ private Map<String, String> conditionMap = new HashMap<>();
+ private List<String> rownIndex=new ArrayList<>();
+ private List<Map<String,String>>dataList=new ArrayList<>();
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public Map<String, String> getConditionMap() {
+ return conditionMap;
+ }
+
+ public void setConditionMap(Map<String, String> conditionMap) {
+ this.conditionMap = conditionMap;
+ }
+
+ public List<String> getRownIndex() {
+ return rownIndex;
+ }
+
+ public void setRownIndex(List<String> rownIndex) {
+ this.rownIndex = rownIndex;
+ }
+
+ public List<String> getFields() {
+ return fields;
+ }
+
+ public void setFields(List<String> fields) {
+ this.fields = fields;
+ }
+
+ public List<Map<String, String>> getDataList() {
+ return dataList;
+ }
+
+ public void setDataList(List<Map<String, String>> dataList) {
+ this.dataList = dataList;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeImprotResembleVO{" +
+ "path='" + path + '\'' +
+ ", fields=" + fields +
+ ", conditionMap=" + conditionMap +
+ ", rownIndex=" + rownIndex +
+ ", dataList=" + dataList +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotSaveDatVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotSaveDatVO.java
new file mode 100644
index 0000000..c919067
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotSaveDatVO.java
@@ -0,0 +1,55 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.mdm.dto.CodeOrderDTO;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class CodeImprotSaveDatVO {
+ /**
+ * 缂栫爜鐢宠瀵硅薄
+ */
+ private CodeOrderDTO orderDTO;
+ /**
+ * 鍒楀悕锛堟眽瀛楋級
+ */
+ private List<String> Clos=new ArrayList<>();
+ /***
+ * 鍒楄〃鏁版嵁
+ */
+ private List<Map<String,String>> dataList=new ArrayList<>();
+
+ public CodeOrderDTO getOrderDTO() {
+ return orderDTO;
+ }
+
+ public void setOrderDTO(CodeOrderDTO orderDTO) {
+ this.orderDTO = orderDTO;
+ }
+
+ public List<String> getClos() {
+ return Clos;
+ }
+
+ public void setClos(List<String> clos) {
+ Clos = clos;
+ }
+
+ public List<Map<String, String>> getDataList() {
+ return dataList;
+ }
+
+ public void setDataList(List<Map<String, String>> dataList) {
+ this.dataList = dataList;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeImprotSaveDatVO{" +
+ "orderDTO=" + orderDTO +
+ ", Clos=" + Clos +
+ ", dataList=" + dataList +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java
new file mode 100644
index 0000000..809a32e
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java
@@ -0,0 +1,98 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeKeyAttrRepeatRuleVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118009866089L;
+
+ /**
+ * 鏄惁蹇界暐澶у皬鍐�
+ */
+ private String ignorecaseflag;
+
+
+ /**
+ * 鏄惁蹇界暐绌烘牸
+ */
+ private String ignorespaceflag;
+
+
+ /**
+ * 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ private String ignoreallspaceflag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ private String ignorewidthflag;
+
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐澶у皬鍐�
+ */
+ public String getIgnorecaseflag (){
+ return ignorecaseflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐澶у皬鍐�
+ */
+ public void setIgnorecaseflag (String ignorecaseflag){
+ this.ignorecaseflag = ignorecaseflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁蹇界暐绌烘牸
+ */
+ public String getIgnorespaceflag (){
+ return ignorespaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐绌烘牸
+ */
+ public void setIgnorespaceflag (String ignorespaceflag){
+ this.ignorespaceflag = ignorespaceflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public String getIgnoreallspaceflag (){
+ return ignoreallspaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public void setIgnoreallspaceflag (String ignoreallspaceflag){
+ this.ignoreallspaceflag = ignoreallspaceflag;
+ }
+
+ public String getIgnorewidthflag() {
+ return ignorewidthflag;
+ }
+
+ public void setIgnorewidthflag(String ignorewidthflag) {
+ this.ignorewidthflag = ignorewidthflag;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeKeyAttrRepeatRuleVO{" +
+ "ignorecaseflag='" + ignorecaseflag + '\'' +
+ ", ignorespaceflag='" + ignorespaceflag + '\'' +
+ ", ignoreallspaceflag='" + ignoreallspaceflag + '\'' +
+ ", ignorewidthflag='" + ignorewidthflag + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodePhaseAttrVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodePhaseAttrVO.java
new file mode 100644
index 0000000..52b6e9e
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodePhaseAttrVO.java
@@ -0,0 +1,77 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 闃舵鐨勫睘鎬ф樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodePhaseAttrVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117417389038L;
+
+ /**
+ * 鎵�灞炴ā鏉块樁娈�
+ */
+ private String codephaseoid;
+
+ /**
+ * 鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+ */
+ private String codephaseoidName;
+
+ /**
+ * 灞炴�х殑鍒嗙粍鍚嶇О
+ */
+ private String attrGroupName;
+
+
+ /**
+ * 鑾峰彇 鎵�灞炴ā鏉块樁娈�
+ */
+ public String getCodephaseoid (){
+ return codephaseoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炴ā鏉块樁娈�
+ */
+ public void setCodephaseoid (String codephaseoid){
+ this.codephaseoid = codephaseoid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+ */
+ public String getCodephaseoidName (){
+ return codephaseoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+ */
+ public void setCodephaseoidName (String codephaseoidName){
+ this.codephaseoidName = codephaseoidName;
+ }
+
+ public String getAttrGroupName() {
+ return attrGroupName;
+ }
+
+ public void setAttrGroupName(String attrGroupName) {
+ this.attrGroupName = attrGroupName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodePhaseAttrVO{" +
+ "codephaseoid='" + codephaseoid + '\'' +
+ ", codephaseoidName='" + codephaseoidName + '\'' +
+ ", attrGroupName='" + attrGroupName + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeResembleRuleVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeResembleRuleVO.java
new file mode 100644
index 0000000..2b96e90
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeResembleRuleVO.java
@@ -0,0 +1,119 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+public class CodeResembleRuleVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119066298945L;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ private String ignoreallspaceflag;
+
+
+ /**
+ * 鏄惁蹇界暐澶у皬鍐�
+ */
+ private String ignorecaseflag;
+
+
+ /**
+ * 鏄惁蹇界暐绌烘牸
+ */
+ private String ignorespaceflag;
+
+
+ /**
+ * 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ private String ignorewidthflag;
+
+ /**
+ * 杩炴帴瀛楃
+ */
+ private String linkCharacter;
+
+
+
+ /**
+ * 鑾峰彇 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public String getIgnoreallspaceflag (){
+ return ignoreallspaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ public void setIgnoreallspaceflag (String ignoreallspaceflag){
+ this.ignoreallspaceflag = ignoreallspaceflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁蹇界暐澶у皬鍐�
+ */
+ public String getIgnorecaseflag (){
+ return ignorecaseflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐澶у皬鍐�
+ */
+ public void setIgnorecaseflag (String ignorecaseflag){
+ this.ignorecaseflag = ignorecaseflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁蹇界暐绌烘牸
+ */
+ public String getIgnorespaceflag (){
+ return ignorespaceflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐绌烘牸
+ */
+ public void setIgnorespaceflag (String ignorespaceflag){
+ this.ignorespaceflag = ignorespaceflag;
+ }
+ /**
+ * 鑾峰彇 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ public String getIgnorewidthflag (){
+ return ignorewidthflag;
+ }
+
+ /**
+ * 璁剧疆 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ public void setIgnorewidthflag (String ignorewidthflag){
+ this.ignorewidthflag = ignorewidthflag;
+ }
+
+ public String getLinkCharacter() {
+ return linkCharacter;
+ }
+
+ public void setLinkCharacter(String linkCharacter) {
+ this.linkCharacter = linkCharacter;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeResembleRuleVO{" +
+ "ignoreallspaceflag='" + ignoreallspaceflag + '\'' +
+ ", ignorecaseflag='" + ignorecaseflag + '\'' +
+ ", ignorespaceflag='" + ignorespaceflag + '\'' +
+ ", ignorewidthflag='" + ignorewidthflag + '\'' +
+ ", linkCharacter='" + linkCharacter + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeRuleVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeRuleVO.java
new file mode 100644
index 0000000..40bfe4f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeRuleVO.java
@@ -0,0 +1,72 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeRuleVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117684483406L;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勭紪鍙�
+ */
+ private String id;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勫悕绉�
+ */
+ private String name;
+
+ /**
+ * 缂栫爜鐨勭爜娈典俊鎭�
+ */
+ private List<CodeBasicSecVO> secVOList;
+
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List<CodeBasicSecVO> getSecVOList() {
+ return secVOList;
+ }
+
+ public void setSecVOList(List<CodeBasicSecVO> secVOList) {
+ this.secVOList = secVOList;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeRuleVO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", secVOList=" + secVOList +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSerialAlgorithmVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSerialAlgorithmVO.java
new file mode 100644
index 0000000..e9b90c4
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSerialAlgorithmVO.java
@@ -0,0 +1,72 @@
+package org.springblade.code.vo.pagemodel;
+
+/**
+ * 娴佹按绠楁硶绫荤殑鏄剧ず淇℃伅
+ * @author weidy
+ * @date 2022-2-17
+ */
+public class CodeSerialAlgorithmVO implements java.io.Serializable{
+
+ /**
+ * 绠楁硶缂栧彿
+ */
+ private String id;
+
+ /**
+ * 绫荤殑鍏ㄨ矾寰�
+ */
+ private String classFullName;
+
+ /**
+ * 绫荤殑鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 鎻忚堪
+ */
+ private String description;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getClassFullName() {
+ return classFullName;
+ }
+
+ public void setClassFullName(String classFullName) {
+ this.classFullName = classFullName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeSerialAlgorithmVO{" +
+ "id='" + id + '\'' +
+ ", classFullName='" + classFullName + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSynonymVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSynonymVO.java
new file mode 100644
index 0000000..7adc609
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSynonymVO.java
@@ -0,0 +1,103 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 鍚屼箟璇嶉厤缃樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-02-17
+ */
+public class CodeSynonymVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118039132189L;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒�
+ */
+ private String codeclassifytemplateoid;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ private String codeclassifytemplateoidName;
+
+ /**
+ * 婧愬��
+ */
+ private String sourcevalue;
+
+
+ /**
+ * 鍚屼箟璇�
+ */
+ private String synonymvalue;
+
+
+
+ /**
+ * 鑾峰彇 鎵�灞炵紪鐮佽鍒�
+ */
+ public String getCodeclassifytemplateoid (){
+ return codeclassifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炵紪鐮佽鍒�
+ */
+ public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
+ this.codeclassifytemplateoid = codeclassifytemplateoid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public String getCodeclassifytemplateoidName (){
+ return codeclassifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
+ this.codeclassifytemplateoidName = codeclassifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 婧愬��
+ */
+ public String getSourcevalue (){
+ return sourcevalue;
+ }
+
+ /**
+ * 璁剧疆 婧愬��
+ */
+ public void setSourcevalue (String sourcevalue){
+ this.sourcevalue = sourcevalue;
+ }
+ /**
+ * 鑾峰彇 鍚屼箟璇�
+ */
+ public String getSynonymvalue (){
+ return synonymvalue;
+ }
+
+ /**
+ * 璁剧疆 鍚屼箟璇�
+ */
+ public void setSynonymvalue (String synonymvalue){
+ this.synonymvalue = synonymvalue;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeSynonymVO{" +
+ "codeclassifytemplateoid='" + codeclassifytemplateoid +"'," +
+ "codeclassifytemplateoidName='" + codeclassifytemplateoidName +"'," +
+ "sourcevalue='" + sourcevalue +"'," +
+ "synonymvalue='" + synonymvalue +"'," +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeTemplatePhaseVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeTemplatePhaseVO.java
new file mode 100644
index 0000000..c8efa6f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeTemplatePhaseVO.java
@@ -0,0 +1,83 @@
+package org.springblade.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 妯℃澘闃舵鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public class CodeTemplatePhaseVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117825912259L;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒�
+ */
+ private String codeclassifytemplateoid;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ private String codeclassifytemplateoidName;
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ private Integer ordernum;
+
+
+
+ /**
+ * 鑾峰彇 鎵�灞炵紪鐮佽鍒�
+ */
+ public String getCodeclassifytemplateoid (){
+ return codeclassifytemplateoid;
+ }
+
+ /**
+ * 璁剧疆 鎵�灞炵紪鐮佽鍒�
+ */
+ public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
+ this.codeclassifytemplateoid = codeclassifytemplateoid;
+ }
+ /**
+ * 鑾峰彇鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public String getCodeclassifytemplateoidName (){
+ return codeclassifytemplateoidName;
+ }
+
+ /**
+ * 璁剧疆鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
+ */
+ public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
+ this.codeclassifytemplateoidName = codeclassifytemplateoidName;
+ }
+ /**
+ * 鑾峰彇 鐮佸�煎簭鍙�
+ */
+ public Integer getOrdernum (){
+ return ordernum;
+ }
+
+ /**
+ * 璁剧疆 鐮佸�煎簭鍙�
+ */
+ public void setOrdernum (Integer ordernum){
+ this.ordernum = ordernum;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeTemplatePhaseVO{" +
+ "codeclassifytemplateoid='" + codeclassifytemplateoid +"'," +
+ "codeclassifytemplateoidName='" + codeclassifytemplateoidName +"'," +
+ "ordernum='" + ordernum +"'," +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDataVO.java
new file mode 100644
index 0000000..2be451f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDataVO.java
@@ -0,0 +1,119 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+/**
+ * 鍒嗙被鏁版嵁淇℃伅
+ */
+@XStreamAlias("object")
+public class ApplyDataVO {
+ /***
+ * 杈撳叆涓婚敭
+ */
+ @XStreamAsAttribute
+ private String id;
+ /**
+ * 缂栫爜
+ */
+ @XStreamAsAttribute
+ private String code;
+ /**
+ * 鐘舵��
+ */
+ @XStreamAsAttribute
+ private String status;
+ /**
+ * 鏁版嵁鎿嶄綔绫诲瀷
+ */
+ @XStreamAsAttribute
+ private String operate;
+ /***
+ * 鍒涘缓鑰�
+ */
+ @XStreamAsAttribute
+ private String creator;
+
+ /**
+ * 鏇存敼鑰�
+ */
+ @XStreamAsAttribute
+ private String editor;
+ /***
+ * 鏁版嵁灞炴�у璞�
+ */
+ @XStreamImplicit
+ private List<ProppertyVO> prop;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getOperate() {
+ return operate;
+ }
+
+ public void setOperate(String operate) {
+ this.operate = operate;
+ }
+
+ public List<ProppertyVO> getProp() {
+ return prop;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getEditor() {
+ return editor;
+ }
+
+ public void setEditor(String editor) {
+ this.editor = editor;
+ }
+
+ public void setProp(List<ProppertyVO> prop) {
+ this.prop = prop;
+ }
+
+ @Override
+ public String toString() {
+ return "ApplyDataVO{" +
+ "id='" + id + '\'' +
+ ", code='" + code + '\'' +
+ ", status='" + status + '\'' +
+ ", operate='" + operate + '\'' +
+ ", creator='" + creator + '\'' +
+ ", editor='" + editor + '\'' +
+ ", prop=" + prop +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDatasVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDatasVO.java
new file mode 100644
index 0000000..69eed5e
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDatasVO.java
@@ -0,0 +1,27 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("objects")
+public class ApplyDatasVO {
+ @XStreamImplicit
+ private List<ApplyDataVO> object;
+
+ public List<ApplyDataVO> getObject() {
+ return object;
+ }
+
+ public void setObject(List<ApplyDataVO> object) {
+ this.object = object;
+ }
+
+ @Override
+ public String toString() {
+ return "ApplyDatasVO{" +
+ "object=" + object +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfyVO.java
new file mode 100644
index 0000000..8126bbf
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfyVO.java
@@ -0,0 +1,83 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+/**
+ * 鍒嗙被淇℃伅
+ */
+@XStreamAlias("classify")
+public class ClassfyVO {
+ /**
+ * 鍒嗙被浠e彿
+ */
+ @XStreamAsAttribute
+ private String classCode;
+ /**
+ * 搴撲唬鍙�
+ */
+ @XStreamAsAttribute
+ private String library;
+ /**
+ * 绫昏矾寰�
+ */
+ @XStreamAsAttribute
+ private String fullclsfNamePath;
+ /**
+ * 鐮佹淇℃伅
+ */
+ private SectionsVO sections;
+
+ private ApplyDatasVO objects;
+
+ public String getClassCode() {
+ return classCode;
+ }
+
+ public void setClassCode(String classCode) {
+ this.classCode = classCode;
+ }
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+
+ public String getFullclsfNamePath() {
+ return fullclsfNamePath;
+ }
+
+ public void setFullclsfNamePath(String fullclsfNamePath) {
+ this.fullclsfNamePath = fullclsfNamePath;
+ }
+
+ public SectionsVO getSections() {
+ return sections;
+ }
+
+ public void setSections(SectionsVO sections) {
+ this.sections = sections;
+ }
+
+ public ApplyDatasVO getObjects() {
+ return objects;
+ }
+
+ public void setObjects(ApplyDatasVO objects) {
+ this.objects = objects;
+ }
+
+ @Override
+ public String toString() {
+ return "ClassVO{" +
+ "classCode='" + classCode + '\'' +
+ ", library='" + library + '\'' +
+ ", fullclsfNamePath='" + fullclsfNamePath + '\'' +
+ ", sections=" + sections +
+ ", objects=" + objects +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfysVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfysVO.java
new file mode 100644
index 0000000..628fb7c
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfysVO.java
@@ -0,0 +1,30 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("classifys")
+public class ClassfysVO {
+ /**
+ *鍒嗙被淇℃伅
+ */
+ @XStreamImplicit
+ private List<ClassfyVO> classify;
+
+ public List<ClassfyVO> getClassify() {
+ return classify;
+ }
+
+ public void setClassify(List<ClassfyVO> classify) {
+ this.classify = classify;
+ }
+
+ @Override
+ public String toString() {
+ return "ClassfysVO{" +
+ "classify=" + classify +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/InterParameterVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/InterParameterVO.java
new file mode 100644
index 0000000..57b8390
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/InterParameterVO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.vo.universalInter.apply;
+
+/***
+ * 闆嗘垚鎺ュ彛鍙傛暟锛堢敵璇�/鏇存柊锛岀姸鎬侊級
+ */
+public class InterParameterVO {
+ private RootDataVO data;
+ public RootDataVO getData() {
+ return data;
+ }
+ public void setData(RootDataVO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "InterParameterVO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ProppertyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ProppertyVO.java
new file mode 100644
index 0000000..3fe730a
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ProppertyVO.java
@@ -0,0 +1,56 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("prop")
+public class ProppertyVO {
+ /**
+ * 灞炴�у瓧娈�
+ */
+ @XStreamAsAttribute
+ private String key;
+ /**
+ * 灞炴�ф樉绀哄悕绉�
+ */
+ @XStreamAsAttribute
+ private String text;
+ /**
+ * 灞炴�у��
+ */
+ @XStreamAsAttribute
+ private String value;
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return "ProppertyVO{" +
+ "key='" + key + '\'' +
+ ", text='" + text + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/RootDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/RootDataVO.java
new file mode 100644
index 0000000..ce185fd
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/RootDataVO.java
@@ -0,0 +1,58 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+/**
+ *鏁版嵁淇℃伅
+ */
+@XStreamAlias("data")
+public class RootDataVO {
+ /***
+ * 闆嗘垚绯荤粺鏍囪瘑
+ */
+ @XStreamAsAttribute
+ private String systemId;
+ /**
+ * 鎿嶄綔鐢ㄦ埛淇℃伅
+ */
+ private UserVO user;
+ /***
+ * 鏁版嵁淇℃伅
+ */
+ private ClassfysVO classifys;
+
+
+ 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;
+ }
+
+ public ClassfysVO getClassifys() {
+ return classifys;
+ }
+
+ public void setClassifys(ClassfysVO classifys) {
+ this.classifys = classifys;
+ }
+
+ @Override
+ public String toString() {
+ return "InterParameterVO{" +
+ "systemId='" + systemId + '\'' +
+ ", user=" + user +
+ ", classifys=" + classifys +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionVO.java
new file mode 100644
index 0000000..02abdef
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionVO.java
@@ -0,0 +1,42 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("section")
+public class SectionVO {
+ /**
+ * 鐮佹鍚嶇О
+ */
+ @XStreamAsAttribute
+ private String name;
+ /***
+ * 鐮佹鍊�
+ */
+ @XStreamAsAttribute
+ private String value;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return "SectionVO{" +
+ "name='" + name + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionsVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionsVO.java
new file mode 100644
index 0000000..21e537c
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionsVO.java
@@ -0,0 +1,26 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("sections")
+public class SectionsVO {
+ @XStreamImplicit
+ private List<SectionVO> section;
+ public List<SectionVO> getSection() {
+ return section;
+ }
+
+ public void setSection(List<SectionVO> section) {
+ this.section = section;
+ }
+
+ @Override
+ public String toString() {
+ return "SectionsVO{" +
+ "section=" + section +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/UserVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/UserVO.java
new file mode 100644
index 0000000..17a5bef
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/UserVO.java
@@ -0,0 +1,56 @@
+package org.springblade.code.vo.universalInter.apply;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("user")
+public class UserVO {
+ /**
+ * 鍒涘缓/鏇存敼浜鸿处鍙�
+ */
+ @XStreamAsAttribute
+ private String userName;
+ /**
+ * 鍒涘缓/鏇存敼浜烘樉绀哄悕绉�
+ */
+ @XStreamAsAttribute
+ private String trueName;
+ /**
+ * 鍒涘缓/鏇存敼浜烘搷浣滄満鍣╥p
+ */
+ @XStreamAsAttribute
+ private String ip;
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getTrueName() {
+ return trueName;
+ }
+
+ public void setTrueName(String trueName) {
+ this.trueName = trueName;
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ @Override
+ public String toString() {
+ return "UserVO{" +
+ "userName='" + userName + '\'' +
+ ", trueName='" + trueName + '\'' +
+ ", ip='" + ip + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java
new file mode 100644
index 0000000..b0fb889
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java
@@ -0,0 +1,73 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+/**
+ * 灞炴�ф槧灏�
+ */
+@XStreamAlias("clsf")
+public class ClsfAttrMappingDO {
+ /***
+ * 鏁版嵁婧愮郴缁熷唴閮ㄥ瓧娈�
+ */
+ @XStreamAsAttribute
+ private String sourceKey="";
+ /***
+ * 鏁版嵁婧愮郴缁熷悕绉�
+ */
+ @XStreamAsAttribute
+ private String sourceName="";
+ /***
+ * 鐩爣绯荤粺鍐呴儴瀛楁
+ */
+ @XStreamAsAttribute
+ private String targetKey="" ;
+ /***
+ * 鐩爣绯荤粺鍐呴儴鍚嶇О
+ */
+ @XStreamAsAttribute
+ private String targetName="";
+
+ public String getSourceKey() {
+ return sourceKey;
+ }
+
+ public void setSourceKey(String sourceKey) {
+ this.sourceKey = sourceKey;
+ }
+
+ public String getSourceName() {
+ return sourceName;
+ }
+
+ public void setSourceName(String sourceName) {
+ this.sourceName = sourceName;
+ }
+
+ public String getTargetKey() {
+ return targetKey;
+ }
+
+ public void setTargetKey(String targetKey) {
+ this.targetKey = targetKey;
+ }
+
+ public String getTargetName() {
+ return targetName;
+ }
+
+ public void setTargetName(String targetName) {
+ this.targetName = targetName;
+ }
+
+ @Override
+ public String toString() {
+ return "ClsfAttrMappingDO{" +
+ "sourceKey='" + sourceKey + '\'' +
+ ", sourceName='" + sourceName + '\'' +
+ ", targetKey='" + targetKey + '\'' +
+ ", targetName='" + targetName + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataAttributeVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataAttributeVO.java
new file mode 100644
index 0000000..b8b746b
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataAttributeVO.java
@@ -0,0 +1,112 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+public class DataAttributeVO {
+ /**
+ * 瀛楁鍚�
+ */
+ private String field;
+ /***
+ * 灞炴�ф樉绀哄悕绉�
+ */
+ private String text;
+
+ /**
+ * 蹇呭~
+ */
+ private boolean required;
+
+ /**
+ * 鍏抽敭灞炴��
+ */
+ private boolean keyAttr;
+
+
+ /**
+ * 榛樿鍊�
+ */
+ private String defaultValue;
+
+ /**
+ * 鍊�
+ */
+ private String value;
+
+ /**
+ * 鍓嶇紑
+ */
+ private String prefix;
+
+ /**
+ * 鍓嶇紑
+ */
+ private String suffix;
+
+ public String getField() {
+ return field;
+ }
+
+ public void setField(String field) {
+ this.field = field;
+ }
+
+ public boolean isRequired() {
+ return required;
+ }
+
+ public void setRequired(boolean required) {
+ this.required = required;
+ }
+
+ public boolean isKeyAttr() {
+ return keyAttr;
+ }
+
+ public void setKeyAttr(boolean keyAttr) {
+ this.keyAttr = keyAttr;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getSuffix() {
+ return suffix;
+ }
+
+ public void setSuffix(String suffix) {
+ this.suffix = suffix;
+ }
+
+ @Override
+ public String toString() {
+ return "DataObjectVO{" +
+ "field='" + field + '\'' +
+ ", required=" + required +
+ ", keyAttr=" + keyAttr +
+ ", defaultValue='" + defaultValue + '\'' +
+ ", value='" + value + '\'' +
+ ", prefix='" + prefix + '\'' +
+ ", suffix='" + suffix + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataObjectVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataObjectVO.java
new file mode 100644
index 0000000..6ae4a41
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataObjectVO.java
@@ -0,0 +1,24 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DataObjectVO {
+ private List<String> colName = new ArrayList();
+ private List<RowDatas> rowData = new ArrayList();
+
+ public List<String> getColName() {
+ return colName;
+ }
+
+ public void setColName(List<String> colName) {
+ this.colName = colName;
+ }
+ public List<RowDatas> getRowData() {
+ return rowData;
+ }
+
+ public void setRowData(List<RowDatas> rowData) {
+ this.rowData = rowData;
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/GeneralMappingUtil.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/GeneralMappingUtil.java
new file mode 100644
index 0000000..8d82fc7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/GeneralMappingUtil.java
@@ -0,0 +1,30 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+public class GeneralMappingUtil {
+
+ private static GeneralMappingUtil newInstance=null;
+ public static GeneralMappingUtil getNewInstance() {
+ if(newInstance==null){
+ newInstance=new GeneralMappingUtil();
+ }
+ return newInstance;
+ }
+
+ /***
+ * 閫氳繃绯荤粺鏍囪瘑鑾峰彇瀵瑰簲鐨勯泦鎴愬睘鎬ф槧灏�
+ * @param system
+ */
+ private void getLibraryClsfAttrMapping(String system){
+ try {
+ /** String fileNamePath=LocalFileUtil.getProjectFolder();
+ fileNamePath+=File.separator+"mdmInMapXml"+File.separator+"clsfAttrMap.xml";
+ String clasAttrXml= LocalFileUtil.readContentForFile(fileNamePath);
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(ApplyCodeDO.class);
+ xStream.autodetectAnnotations(true);
+ ApplyCodeDO applyCodeDO = (ApplyCodeDO) xStream.fromXML(clasAttrXml);**/
+ }catch (Throwable e){
+ new Throwable("璇诲彇灞炴�ф槧灏勬枃浠跺嚭閿�!");
+ }
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryClsfDO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryClsfDO.java
new file mode 100644
index 0000000..83e594c
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryClsfDO.java
@@ -0,0 +1,42 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+/***
+ * 搴撹妭鐐�
+ */
+@XStreamAlias("clsf")
+public class LibraryClsfDO {
+ @XStreamAsAttribute
+ private String library;
+ @XStreamImplicit(itemFieldName="prop")
+ private List<ClsfAttrMappingDO> prop;
+
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+ public List<ClsfAttrMappingDO> getProp() {
+ return prop;
+ }
+
+ public void setProp(List<ClsfAttrMappingDO> prop) {
+ this.prop = prop;
+ }
+
+ @Override
+ public String toString() {
+ return "LibraryClsfDO{" +
+ "library='" + library + '\'' +
+ ", prop=" + prop +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryDO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryDO.java
new file mode 100644
index 0000000..9649f7f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryDO.java
@@ -0,0 +1,33 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+/***
+ * 搴撹妭鐐�
+ */
+@XStreamAlias("clsfs")
+public class LibraryDO {
+ /***
+ * 搴撹妭鐐�
+ */
+ @XStreamImplicit(itemFieldName="clsf")
+ private List<LibraryClsfDO> clsf;
+
+ public List<LibraryClsfDO> getClsf() {
+ return clsf;
+ }
+
+ public void setClsf(List<LibraryClsfDO> clsf) {
+ this.clsf = clsf;
+ }
+
+ @Override
+ public String toString() {
+ return "LibraryDO{" +
+ "clsf=" + clsf +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/RowDatas.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/RowDatas.java
new file mode 100644
index 0000000..bcaeb27
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/RowDatas.java
@@ -0,0 +1,125 @@
+package org.springblade.code.vo.universalInter.attrmap;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class RowDatas {
+ /**
+ * 鏁版嵁id
+ */
+ private String oid;
+ /***
+ * 鍒涘缓鑰�
+ */
+ private String creator;
+ /***
+ * 鏇存敼鑰�
+ */
+ private String editor;
+ /**
+ * 鏁版嵁浣嶇疆
+ */
+ private String rowIndex;
+ /***
+ * 鎿嶄綔绫诲瀷
+ */
+ private String operation;
+ /**
+ * 鏁版嵁鐘舵��
+ */
+ private String status;
+ /***
+ * 缂栫爜
+ */
+ private String code;
+
+ private Map<Integer, String> data = new HashMap();
+
+ private Map<String, String> filedValue = new HashMap();
+
+ public String getOid() {
+ return oid;
+ }
+
+ public void setOid(String oid) {
+ this.oid = oid;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getEditor() {
+ return editor;
+ }
+
+ public void setEditor(String editor) {
+ this.editor = editor;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getRowIndex() {
+ return rowIndex;
+ }
+
+ public void setRowIndex(String rowIndex) {
+ this.rowIndex = rowIndex;
+ }
+
+ public Map<Integer, String> getData() {
+ return data;
+ }
+
+ public void setData(Map<Integer, String> data) {
+ this.data = data;
+ }
+
+ public Map<String, String> getFiledValue() {
+ return filedValue;
+ }
+
+ public void setFiledValue(Map<String, String> filedValue) {
+ this.filedValue = filedValue;
+ }
+
+ @Override
+ public String toString() {
+ return "RowDatas{" +
+ "oid='" + oid + '\'' +
+ ", creator='" + creator + '\'' +
+ ", editor='" + editor + '\'' +
+ ", rowIndex='" + rowIndex + '\'' +
+ ", operation='" + operation + '\'' +
+ ", status='" + status + '\'' +
+ ", code='" + code + '\'' +
+ ", data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/appcode.xml b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/appcode.xml
new file mode 100644
index 0000000..9fa5094
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/appcode.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<data systemId="MPM">
+ <user userName="weidy" trueName="" ip="127.0.0.1"/>
+ <classifys>
+ <classify classCode="020101" library="wupin" fullclsfNamePath="鐗╁搧##VCI##鏍囧噯浠�##VCI##铻烘爴">
+ <sections>
+ <section name="灞傜骇鐮佹" value="020101"></section>
+ </sections>
+ <objects>
+ <object code="" id="0023401" status="Editing" operate="create" creator="weidy" >
+ <prop key="name" text="鍚嶇О" value="娓╁害璋冭妭鍣�2333"/>
+ <prop key="use" text="瑙勬牸" value="GB-002599"/>
+ </object>
+ <object code="" id="0023402" status="Editing" operate="create" creator="weidy">
+ <prop key="name" text="鎵�灞炵粨鏋�" value="娓╁害璋冭妭鍣�"/>
+ <prop key="use" text="瑙勬牸" value="GB-00257"/>
+ </object>
+ </objects>
+ </classify>
+ <classify classCode="020102" library="wupin" fullclsfNamePath="鐗╁搧##VCI##鏍囧噯浠�##VCI##铻烘瘝">
+ <sections>
+ <section name="灞傜骇鐮佹" value="020102"></section>
+ </sections>
+ <objects>
+ <object code="" id="0023403" status="Editing" operate="create" creator="weidy">
+ <prop key="name" text="鍚嶇О" value="娓╁害璋冭妭鍣�2"/>
+ <prop key="use" text="瑙勬牸" value="GB-00255"/>
+ </object>
+ <object code="" id="0023404" status="Editing" operate="create" creator="weidy">
+ <prop key="name" text="鎵�灞炵粨鏋�" value="qwqw"/>
+ <prop key="use" text="瑙勬牸" value="GB-0026"/>
+ </object>
+ </objects>
+ </classify>
+ </classifys>
+</data>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/clsfAttrMap.xml b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/clsfAttrMap.xml
new file mode 100644
index 0000000..854294d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/clsfAttrMap.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<clsfs>
+ <clsf library="StdLib">
+ <prop sourceKey="lcstatus" sourceName="鐘舵��" targetKey="lcstatus" targetName="鐘舵��"/>
+ <prop sourceKey="id" sourceName="鐗╂枡缂栫爜" targetKey="id" targetName="鐗╂枡缂栫爜"/>
+ <prop sourceKey="partName" sourceName="鍚嶇О" targetKey="name" targetName="鐗╁搧涓枃鍚嶇О"/>
+ <prop sourceKey="materialclassify" sourceName="鎵�灞炲垎绫讳唬鍙�" targetKey=" materialclassify" targetName="鎵�灞炲垎绫讳唬鍙�"/>
+ <prop sourceKey="firstfl" sourceName="涓�绾х鐞嗗垎绫�" targetKey="firstfl" targetName="涓�绾х鐞嗗垎绫�"/>
+ <prop sourceKey="secondfl" sourceName="浜岀骇绠$悊鍒嗙被" targetKey="secondfl" targetName="浜岀骇绠$悊鍒嗙被"/>
+ <prop sourceKey="thrifl" sourceName="涓夌骇绠$悊鍒嗙被" targetKey="thrifl" targetName="涓夌骇绠$悊鍒嗙被"/>
+ <prop sourceKey="瑙勬牸" sourceName="瑙勬牸" targetKey="xinghaoguige" targetName="瑙勬牸"/>
+ <prop sourceKey="zhiliangbz" sourceName="鏍囧噯鍙�" targetKey="zhiliangbz" targetName="鏍囧噯鍙�"/>
+ <prop sourceKey="beizhushuoming" sourceName="澶囨敞璇存槑" targetKey="beizhushuoming" targetName="澶囨敞璇存槑"/>
+ <prop sourceKey="revisionvalue" sourceName="鐗堟湰" targetKey="revisionvalue" targetName="鐗堟湰"/>
+ <prop sourceKey="creator" sourceName="鍒涘缓浜�" targetKey=" creator " targetName="鍒涘缓浜�"/>
+ <prop sourceKey="createtime" sourceName="鍒涘缓鏃堕棿" targetKey="createtime" targetName="鍒涘缓鏃堕棿"/>
+ <prop sourceKey="lastmodifier" sourceName="鏈�鍚庝慨鏀逛汉" targetKey="lastmodifier" targetName="鏈�鍚庝慨鏀逛汉"/>
+ <prop sourceKey="lastmodifytime" sourceName="鏈�鍚庝慨鏀规椂闂�" targetKey="lastmodifytime" targetName="鏈�鍚庝慨鏀规椂闂�"/>
+ <prop sourceKey="琛ㄩ潰澶勭悊" sourceName="琛ㄩ潰澶勭悊" targetKey="bmcl" targetName="琛ㄩ潰澶勭悊"/>
+ <prop sourceKey="partNo" sourceName="鐗屽彿" targetKey="clph" targetName="鏉愭枡鐗屽彿"/>
+ <prop sourceKey="cpxs" sourceName="浜у搧鍨嬪紡" targetKey="cpxs" targetName="浜у搧鍨嬪紡"/>
+ <prop sourceKey="xbj" sourceName="鏍囪 " targetKey="xbj" targetName="鏍囪"/>
+ <prop sourceKey="淇濋櫓瀛斿瀷寮�" sourceName="淇濋櫓瀛斿瀷寮�" targetKey="xbxkxs" targetName="淇濋櫓瀛斿瀷寮�"/>
+ <prop sourceKey="xbzjbmc" sourceName="鏍囧噯绾у埆鍚嶇О" targetKey="xbzjbmc" targetName="鏍囧噯绾у埆鍚嶇О"/>
+ <prop sourceKey="xfjjstj" sourceName="闄勫姞鎶�鏈潯浠�" targetKey="xfjjstj" targetName="闄勫姞鎶�鏈潯浠� "/>
+ <prop sourceKey="xgzccdgcd" sourceName="鍏虫敞灏哄鐨勫叕宸甫" targetKey="xgzccdgcd" targetName="鍏虫敞灏哄鐨勫叕宸甫"/>
+ <prop sourceKey="xwlwwmc" sourceName="鐗╁搧澶栨枃鍚嶇О" targetKey="xwlwwmc" targetName="鐗╁搧澶栨枃鍚嶇О"/>
+ <prop sourceKey="xxndj" sourceName="鎬ц兘绛夌骇" targetKey="xxndj" targetName="鎬ц兘绛夌骇"/>
+ <prop sourceKey="xzjmc" sourceName="瀛愪欢鍚嶇О" targetKey="xzjmc" targetName="瀛愪欢鍚嶇О"/>
+ <prop sourceKey="zjxh" sourceName="瀛愪欢搴忓彿" targetKey="zjxh" targetName="瀛愪欢搴忓彿"/>
+ </clsf>
+ <clsf library="CP">
+ <prop sourceKey= "lcstatus" sourceName= "鐘舵��" targetKey= "lcstatus" targetName= "鐘舵��" />
+ <prop sourceKey= "id" sourceName= "鐗╁搧缂栫爜" targetKey= "id" targetName= "鐗╁搧缂栫爜" />
+ <prop sourceKey= "firstfl" sourceName= "涓�绾х鐞嗗垎绫�" targetKey= "firstfl" targetName= "涓�绾х鐞嗗垎绫�" />
+ <prop sourceKey= "secondfl" sourceName= "浜岀骇绠$悊鍒嗙被" targetKey= "secondfl" targetName= "浜岀骇绠$悊鍒嗙被" />
+ <prop sourceKey= "thrifl" sourceName= "涓夌骇绠$悊鍒嗙被" targetKey= "thrifl" targetName= "涓夌骇绠$悊鍒嗙被" />
+ <prop sourceKey= "description" sourceName= "澶囨敞璇存槑" targetKey= "description" targetName= "澶囨敞璇存槑" />
+ <prop sourceKey= "revisionvalue" sourceName= "鐗堟湰" targetKey= "revisionvalue" targetName= "鐗堟湰" />
+ <prop sourceKey= "creator" sourceName= "鍒涘缓浜�" targetKey= "creator" targetName= "鍒涘缓浜�" />
+ <prop sourceKey= "createtime" sourceName= "鍒涘缓鏃堕棿" targetKey= "createtime" targetName= "鍒涘缓鏃堕棿" />
+ <prop sourceKey= "lastmodifier" sourceName= "鏈�鍚庝慨鏀逛汉" targetKey= "lastmodifier" targetName= "鏈�鍚庝慨鏀逛汉" />
+ <prop sourceKey= "lastmodifytime" sourceName= "鏈�鍚庝慨鏀规椂闂�" targetKey= "lastmodifytime" targetName= "鏈�鍚庝慨鏀规椂闂�" />
+ <prop sourceKey= "jsbmc" sourceName= "璁惧鍚嶇О" targetKey= "jsbmc" targetName= "璁惧鍚嶇О" />
+ <prop sourceKey= "jsbxh" sourceName= "璁惧鍨嬪彿" targetKey= "jsbxh" targetName= "璁惧鍨嬪彿" />
+ <prop sourceKey= "jsccj" sourceName= "鐢熶骇鍘傚" targetKey= "jsccj" targetName= "鐢熶骇鍘傚" />
+ <prop sourceKey= "jssxt" sourceName= "鎵�灞炵郴缁�" targetKey= "jssxt" targetName= "鎵�灞炵郴缁�" />
+ <prop sourceKey= "jszgl" sourceName= "涓夎酱鎯噺" targetKey= "jszgl" targetName= "涓夎酱鎯噺" />
+ <prop sourceKey= "jzl" sourceName= "閲嶉噺" targetKey= "jzl" targetName= "閲嶉噺" />
+ <prop sourceKey= "jzrxx" sourceName= "璐d换淇℃伅" targetKey= "jzrxx" targetName= "璐d换淇℃伅" />
+ <prop sourceKey= "jzxzb" sourceName= "閲嶅績鍧愭爣" targetKey= "jzxzb" targetName= "閲嶅績鍧愭爣" />
+ <prop sourceKey= "jjzyq" sourceName= "鍑忛渿瑕佹眰" targetKey= "jjzyq" targetName= "鍑忛渿瑕佹眰" />
+ </clsf>
+</clsfs>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/tt.xml b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/tt.xml
new file mode 100644
index 0000000..1323403
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/tt.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<data systemId="MPM">
+ <user userName="weidy" trueName="榄忓ぇ鍕�" ip="127.0.0.1"/>
+ <classifys>
+ <classify classCode="020101" library="wupin" fullclsfNamePath="鐗╁搧##VCI##鏍囧噯浠�##VCI##铻烘爴">
+ <objects>
+ <object code="02010100013" id="02010100013" status="TakeBack" operate="editstatus" editor="weidy" >
+ <prop key="name" text="鍚嶇О" value="娓╁害璋冭妭鍣�1"/>
+ <prop key="use" text="涓昏鍔熻兘" value="瀵肩數杩炴帴1"/>
+ </object>
+ <object code="02010100012" id="02010100012" status="TakeBack" operate="editstatus" editor="weidy">
+ <prop key="name" text="鎵�灞炵粨鏋�" value="娓╁害璋冭妭鍣�2"/>
+ <prop key="use" text="涓昏鍔熻兘" value="瀵肩數杩炴帴2"/>
+ </object>
+ </objects>
+ </classify>
+ </classifys>
+</data>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxx.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxx.json
new file mode 100644
index 0000000..67100ad
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxx.json
@@ -0,0 +1,24 @@
+{
+ "condtions": {
+ "systemId": "MPM",
+ "user": {
+ "userName": "weidy",
+ "ip": "127.0.0.1"
+ },
+ "condtion": {
+ "classCode": "020101",
+ "library": "wupin",
+ "queryFileds": "id,name,zhiliangbz,clph,firstfl,secondfl,thrifl",
+ "pro": [
+ {
+ "filedName": "name",
+ "filedValue": "鍙戝姩鏈�"
+ },
+ {
+ "filedName": "zhiliangbz",
+ "filedValue": "223"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxxxxxxxx.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxxxxxxxx.json
new file mode 100644
index 0000000..3b2d5e7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxxxxxxxx.json
@@ -0,0 +1,75 @@
+{
+ "data": {
+ "classifys": {
+ "classify": [
+ {
+ "classCode": "020104",
+ "fullclsfNamePath": "",
+ "library": "StdLib",
+ "objects": {
+ "object": [
+ {
+ "code": "",
+ "creator": "weidy",
+ "id": "201",
+ "operate": "create",
+ "prop": [
+ {
+ "key": "partNo",
+ "text": "鐗屽彿",
+ "value": "HB1-221"
+ },
+ {
+ "key": "partName",
+ "text": "鍚嶇О",
+ "value": "鍗婂渾澶磋灪閽�"
+ },
+ {
+ "key": "PartNumber",
+ "text": "",
+ "value": "HB1-221-M4*5"
+ },
+ {
+ "key": "鐗屽彿",
+ "text": "",
+ "value": "HB1-221"
+ },
+ {
+ "key": "瑙勬牸",
+ "text": "",
+ "value": "M4"
+ },
+ {
+ "key": "琛ㄩ潰澶勭悊",
+ "text": "",
+ "value": "鐢甸晙"
+ },
+ {
+ "key": "淇濋櫓瀛斿瀷寮�",
+ "text": "",
+ "value": "鏃�"
+ }
+ ],
+ "status": "Published"
+ }
+ ]
+ },
+ "sections": {
+ "section": [
+ {
+ "name": "灞傜骇鐮佹",
+ "value": "020104"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "systemId": "RLM",
+ "user": {
+ "ip": "0:0:0:0:0:0:0:1",
+ "trueName": "weidy",
+ "userName": "weidy"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ClassifyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ClassifyVO.java
new file mode 100644
index 0000000..289a3e8
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ClassifyVO.java
@@ -0,0 +1,112 @@
+package org.springblade.code.vo.universalInter.classify;
+
+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;
+ /***
+ * 鐖惰妭鐐筰d
+ */
+ @XStreamAsAttribute
+ private String pid;
+ /***
+ * 鍒嗙被浠e彿
+ */
+ @XStreamAsAttribute
+ private String classCode;
+ /***
+ * 鎻忚堪
+ */
+ @XStreamAsAttribute
+ private String description;
+ /***
+ * 鍒嗙被閾炬帴璺緞
+ */
+ @XStreamAsAttribute
+ private String fullPathName;
+ /***
+ * 鍒嗙被鐘舵��
+ */
+ @XStreamAsAttribute
+ private String lcStatus;
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "ClassifyVO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", pid='" + pid + '\'' +
+ ", classCode='" + classCode + '\'' +
+ ", description='" + description + '\'' +
+ ", fullPathName='" + fullPathName + '\'' +
+ ", lcStatus='" + lcStatus + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/LibraryVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/LibraryVO.java
new file mode 100644
index 0000000..2451bb3
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/LibraryVO.java
@@ -0,0 +1,49 @@
+package org.springblade.code.vo.universalInter.classify;
+
+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;
+
+ 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 +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryClassifyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryClassifyVO.java
new file mode 100644
index 0000000..5e86abb
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryClassifyVO.java
@@ -0,0 +1,23 @@
+package org.springblade.code.vo.universalInter.classify;
+
+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 +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryData.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryData.java
new file mode 100644
index 0000000..8df8b8a
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryData.java
@@ -0,0 +1,45 @@
+package org.springblade.code.vo.universalInter.classify;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.vci.mdm.model.universalInter.apply.UserVO;
+
+@XStreamAlias("data")
+public class QueryData {
+ @XStreamAsAttribute
+ private String systemId;
+ private UserVO userVo;
+ 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 getUserVo() {
+ return userVo;
+ }
+
+ public void setUserVo(UserVO userVo) {
+ this.userVo = userVo;
+ }
+
+ @Override
+ public String toString() {
+ return "QueryData{" +
+ "systemId='" + systemId + '\'' +
+ ", library=" + library +
+ '}';
+ }
+}
+
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryLibraryVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryLibraryVO.java
new file mode 100644
index 0000000..8852d6d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryLibraryVO.java
@@ -0,0 +1,39 @@
+package org.springblade.code.vo.universalInter.classify;
+
+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 +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultClassifyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultClassifyVO.java
new file mode 100644
index 0000000..550cbe1
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultClassifyVO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.vo.universalInter.classify;
+
+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 +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultData.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultData.java
new file mode 100644
index 0000000..3970c1d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultData.java
@@ -0,0 +1,45 @@
+package org.springblade.code.vo.universalInter.classify;
+
+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 +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/classify.xml b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/classify.xml
new file mode 100644
index 0000000..6c0fd68
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/classify.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<data>
+ <code>0</code>
+ <msg>鎴愬姛!</msg>
+ <library id="wupin" name="">
+ <classify id="535FC9B6-FE27-241F-5FCA-ED4DC17CF95B" name="浜у搧" pid="D9CF223F-317D-71EB-BD11-433A94CAD9F3" classCode="01" description="浜у搧" lcStatus="Enabled"/>
+ <classify id="8EB35A1D-AB8B-2255-565C-84D309E0C62B" name="涓绘満浜у搧" pid="535FC9B6-FE27-241F-5FCA-ED4DC17CF95B" classCode="0101" description="涓绘満浜у搧" lcStatus="Enabled"/>
+ <classify id="4524E801-6CC6-92E8-1AC3-2AB9604E8F96" name="涓绘満浜у搧" pid="8EB35A1D-AB8B-2255-565C-84D309E0C62B" classCode="010100" description="涓绘満浜у搧" lcStatus="Enabled"/>
+ <classify id="5B72F92C-39EF-3CEB-8474-6B561DC8402B" name="鍦伴潰绔�" pid="535FC9B6-FE27-241F-5FCA-ED4DC17CF95B" classCode="0102" description="鍦伴潰绔�" lcStatus="Enabled"/>
+ <classify id="56AE339C-9B2F-4298-6F9B-9F0615993DB1" name="CCS" pid="5B72F92C-39EF-3CEB-8474-6B561DC8402B" classCode="010201" description="CCS" lcStatus="Enabled"/>
+ <classify id="FDB76D0A-D52B-45B6-47B4-89FE9C004ACD" name="DLS" pid="5B72F92C-39EF-3CEB-8474-6B561DC8402B" classCode="010202" description="DLS" lcStatus="Enabled"/>
+ <classify id="AB557DD1-44F7-6256-C772-254605D9E554" name="SGDT" pid="5B72F92C-39EF-3CEB-8474-6B561DC8402B" classCode="010203" description="SGDT" lcStatus="Enabled"/>
+ </library>
+</data>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/xxx.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/xxx.json
new file mode 100644
index 0000000..8fcaf13
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/xxx.json
@@ -0,0 +1,68 @@
+{
+ "resultData": {
+ "msg": "鎴愬姛!",
+ "code": "0",
+ "library": {
+ "classify": [
+ {
+ "classCode": "01",
+ "lcStatus": "Enabled",
+ "name": "浜у搧",
+ "description": "浜у搧",
+ "pid": "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
+ "id": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B"
+ },
+ {
+ "classCode": "0101",
+ "lcStatus": "Enabled",
+ "name": "涓绘満浜у搧",
+ "description": "涓绘満浜у搧",
+ "pid": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
+ "id": "8EB35A1D-AB8B-2255-565C-84D309E0C62B"
+ },
+ {
+ "classCode": "010100",
+ "lcStatus": "Enabled",
+ "name": "涓绘満浜у搧",
+ "description": "涓绘満浜у搧",
+ "pid": "8EB35A1D-AB8B-2255-565C-84D309E0C62B",
+ "id": "4524E801-6CC6-92E8-1AC3-2AB9604E8F96"
+ },
+ {
+ "classCode": "0102",
+ "lcStatus": "Enabled",
+ "name": "鍦伴潰绔�",
+ "description": "鍦伴潰绔�",
+ "pid": "535FC9B6-FE27-241F-5FCA-ED4DC17CF95B",
+ "id": "5B72F92C-39EF-3CEB-8474-6B561DC8402B"
+ },
+ {
+ "classCode": "010201",
+ "lcStatus": "Enabled",
+ "name": "CCS",
+ "description": "CCS",
+ "pid": "5B72F92C-39EF-3CEB-8474-6B561DC8402B",
+ "id": "56AE339C-9B2F-4298-6F9B-9F0615993DB1"
+ },
+ {
+ "classCode": "010202",
+ "lcStatus": "Enabled",
+ "name": "DLS",
+ "description": "DLS",
+ "pid": "5B72F92C-39EF-3CEB-8474-6B561DC8402B",
+ "id": "FDB76D0A-D52B-45B6-47B4-89FE9C004ACD"
+ },
+ {
+ "classCode": "010203",
+ "lcStatus": "Enabled",
+ "name": "SGDT",
+ "description": "SGDT",
+ "pid": "5B72F92C-39EF-3CEB-8474-6B561DC8402B",
+ "id": "AB557DD1-44F7-6256-C772-254605D9E554"
+ }
+ ],
+ "name": "",
+ "id": "wupin"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionVO.java
new file mode 100644
index 0000000..f05a681
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionVO.java
@@ -0,0 +1,60 @@
+package org.springblade.code.vo.universalInter.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("condtion")
+public class CondtionVO {
+ @XStreamAsAttribute
+ private String classCode;
+ @XStreamAsAttribute
+ private String library;
+ @XStreamAsAttribute
+ private String queryFileds;
+ @XStreamImplicit
+ private List<PropertyVO> pro;
+ public String getClassCode() {
+ return classCode;
+ }
+
+ public void setClassCode(String classCode) {
+ this.classCode = classCode;
+ }
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+
+ public String getQueryFileds() {
+ return queryFileds;
+ }
+
+ public void setQueryFileds(String queryFileds) {
+ this.queryFileds = queryFileds;
+ }
+
+ public List<PropertyVO> getPro() {
+ return pro;
+ }
+
+ public void setPro(List<PropertyVO> pro) {
+ this.pro = pro;
+ }
+
+ @Override
+ public String toString() {
+ return "CondtionVO{" +
+ "classCode='" + classCode + '\'' +
+ ", library='" + library + '\'' +
+ ", queryFileds='" + queryFileds + '\'' +
+ ", pro=" + pro +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionsVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionsVO.java
new file mode 100644
index 0000000..534ad93
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionsVO.java
@@ -0,0 +1,48 @@
+package org.springblade.code.vo.universalInter.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.vci.mdm.model.universalInter.apply.UserVO;
+
+@XStreamAlias("condtions")
+public class CondtionsVO {
+ @XStreamAsAttribute
+ private String systemId;
+
+ private UserVO user;
+
+ private CondtionVO condtion;
+
+ 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;
+ }
+
+ public CondtionVO getCondtion() {
+ return condtion;
+ }
+
+ public void setCondtion(CondtionVO condtion) {
+ this.condtion = condtion;
+ }
+
+ @Override
+ public String toString() {
+ return "CondtionsVO{" +
+ "systemId='" + systemId + '\'' +
+ ", user=" + user +
+ ", condtion=" + condtion +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataCondtionsVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataCondtionsVO.java
new file mode 100644
index 0000000..4a4795d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataCondtionsVO.java
@@ -0,0 +1,20 @@
+package org.springblade.code.vo.universalInter.data;
+
+public class DataCondtionsVO {
+ private CondtionsVO condtions;
+
+ public CondtionsVO getCondtions() {
+ return condtions;
+ }
+
+ public void setCondtions(CondtionsVO condtions) {
+ this.condtions = condtions;
+ }
+
+ @Override
+ public String toString() {
+ return "DataCondtionsVO{" +
+ "condtions=" + condtions +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataObjectVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataObjectVO.java
new file mode 100644
index 0000000..8e36472
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataObjectVO.java
@@ -0,0 +1,72 @@
+package org.springblade.code.vo.universalInter.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("object")
+public class DataObjectVO {
+ @XStreamAsAttribute
+ private String code;
+ @XStreamAsAttribute
+ private String status;
+ @XStreamAsAttribute
+ private String library;
+ @XStreamAsAttribute
+ private String classCode;
+ @XStreamImplicit
+ private List<PropertyVO> pro;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+
+ public String getClassCode() {
+ return classCode;
+ }
+
+ public void setClassCode(String classCode) {
+ this.classCode = classCode;
+ }
+
+ public List<PropertyVO> getPro() {
+ return pro;
+ }
+
+ public void setPro(List<PropertyVO> pro) {
+ this.pro = pro;
+ }
+
+ @Override
+ public String toString() {
+ return "DataObjectVO{" +
+ "code='" + code + '\'' +
+ ", status='" + status + '\'' +
+ ", library='" + library + '\'' +
+ ", classCode='" + classCode + '\'' +
+ ", pro=" + pro +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/PropertyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/PropertyVO.java
new file mode 100644
index 0000000..08c096a
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/PropertyVO.java
@@ -0,0 +1,48 @@
+package org.springblade.code.vo.universalInter.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("pro")
+public class PropertyVO {
+ @XStreamAsAttribute
+ private String filedName;
+ @XStreamAsAttribute
+ private String outname;
+
+ @XStreamAsAttribute
+ private String filedValue;
+
+ public String getFiledName() {
+ return filedName;
+ }
+
+ public void setFiledName(String filedName) {
+ this.filedName = filedName;
+ }
+
+ public String getFiledValue() {
+ return filedValue;
+ }
+
+ public void setFiledValue(String filedValue) {
+ this.filedValue = filedValue;
+ }
+
+ public String getOutname() {
+ return outname;
+ }
+
+ public void setOutname(String outname) {
+ this.outname = outname;
+ }
+
+ @Override
+ public String toString() {
+ return "PropertyVO{" +
+ "filedName='" + filedName + '\'' +
+ ", outname='" + outname + '\'' +
+ ", filedValue='" + filedValue + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultDataVO.java
new file mode 100644
index 0000000..b6a91f7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultDataVO.java
@@ -0,0 +1,47 @@
+package org.springblade.code.vo.universalInter.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("data")
+public class ResultDataVO {
+ private String errorid;
+ private String msg;
+ @XStreamImplicit
+ private List<DataObjectVO> object;
+
+ public List<DataObjectVO> getObject() {
+ return object;
+ }
+
+ public void setObject(List<DataObjectVO> object) {
+ this.object = object;
+ }
+
+ 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 "ResultDataVO{" +
+ "errorid='" + errorid + '\'' +
+ ", msg='" + msg + '\'' +
+ ", object=" + object +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultVO.java
new file mode 100644
index 0000000..afd9528
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultVO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.vo.universalInter.data;
+
+public class ResultVO {
+
+ private ResultDataVO data;
+
+ public ResultDataVO getData() {
+ return data;
+ }
+
+ public void setData(ResultDataVO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultVO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/result.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/result.json
new file mode 100644
index 0000000..d9d24f7
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/result.json
@@ -0,0 +1,135 @@
+{
+ "data": {
+ "classifys": {
+ "classify": [
+ {
+ "classCode": "010301",
+ "fullclsfNamePath": "",
+ "library": "EqpLib",
+ "objects": {
+ "object": [
+ {
+ "code": "",
+ "creator": "weidy",
+ "id": "20",
+ "operate": "create",
+ "prop": [
+ {
+ "key": "fpNo",
+ "text": "璁惧鍨嬪彿",
+ "value": "11sdsa22"
+ },
+ {
+ "key": "fpName",
+ "text": "璁惧鍚嶇О",
+ "value": "椤堕《椤堕《12"
+ },
+ {
+ "key": "manufacturer",
+ "text": "鐢熶骇鍘傚",
+ "value": "鍛滃憸鍛滃憸2"
+ },
+ {
+ "key": "belongSystem",
+ "text": "鎵�灞炵郴缁�",
+ "value": "鍛滃憸鍛滃憸2"
+ },
+ {
+ "key": "responsibilityInfo",
+ "text": "璐d换浜轰俊鎭�",
+ "value": "鏂囧憙鍛冨憙2"
+ },
+ {
+ "key": "fpWeight",
+ "text": "閲嶉噺锛圞G锛�",
+ "value": "12"
+ },
+ {
+ "key": "gravityX",
+ "text": "閲嶅績X",
+ "value": "22"
+ },
+ {
+ "key": "gravityY",
+ "text": "閲嶅績Y",
+ "value": "32"
+ },
+ {
+ "key": "gravityZ",
+ "text": "閲嶅績Z",
+ "value": "42"
+ },
+ {
+ "key": "inertiaX",
+ "text": "杞姩鎯噺X",
+ "value": "52"
+ },
+ {
+ "key": "inertiaY",
+ "text": "杞姩鎯噺Y",
+ "value": "62"
+ },
+ {
+ "key": "inertiaZ",
+ "text": "杞姩鎯噺Z",
+ "value": "72"
+ },
+ {
+ "key": "inertiaXY",
+ "text": "杞姩鎯噺XY",
+ "value": "82"
+ },
+ {
+ "key": "inertiaYZ",
+ "text": "杞姩鎯噺YZ",
+ "value": "92"
+ },
+ {
+ "key": "inertiaXZ",
+ "text": "杞姩鎯噺XZ",
+ "value": "102"
+ },
+ {
+ "key": "operatingTemperatureLimit",
+ "text": "宸ヤ綔娓╁害闄愬埗",
+ "value": "162"
+ },
+ {
+ "key": "equipmentPower",
+ "text": "璁惧鍔熺巼锛堜緵鐢靛姛鐜囥�佽緪灏勫姛鐜囷級",
+ "value": "172"
+ },
+ {
+ "key": "electricModel",
+ "text": "鐢佃繛鎺ュ櫒鍨嬪彿",
+ "value": "182"
+ },
+ {
+ "key": "fpAgreement",
+ "text": "鎴愬搧鍗忚涔�",
+ "value": "192"
+ }
+ ],
+ "status": "Released"
+ }
+ ]
+ },
+ "sections": {
+ "section": [
+ {
+ "name": "灞傜骇鐮佹",
+ "value": "010301"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "systemId": "RLM",
+ "user": {
+ "ip": "0:0:0:0:0:0:0:1",
+ "trueName": "weidy",
+ "userName": "weidy"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/xx.xml b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/xx.xml
new file mode 100644
index 0000000..3f4ad46
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/xx.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<data>
+ <object>
+ <code>01001</code>
+ <oid>0001</oid>
+ <erroid>0</erroid>
+ <msg>娴嬭瘯鎴愬姛</msg>
+ </object>
+</data>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfyVO.java
new file mode 100644
index 0000000..0dc0365
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfyVO.java
@@ -0,0 +1,49 @@
+package org.springblade.code.vo.universalInter.result.json;
+
+public class JSONResultClassfyVO {
+ private String classCode;
+ private String library;
+ private String fullclsfNamePath;
+ private JSONResultDataObjectDO objects;
+ public String getClassCode() {
+ return classCode;
+ }
+
+ public void setClassCode(String classCode) {
+ this.classCode = classCode;
+ }
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+
+ public String getFullclsfNamePath() {
+ return fullclsfNamePath;
+ }
+
+ public void setFullclsfNamePath(String fullclsfNamePath) {
+ this.fullclsfNamePath = fullclsfNamePath;
+ }
+
+ public JSONResultDataObjectDO getObjects() {
+ return objects;
+ }
+
+ public void setObjects(JSONResultDataObjectDO objects) {
+ this.objects = objects;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultClassfyVO{" +
+ "classCode='" + classCode + '\'' +
+ ", library='" + library + '\'' +
+ ", fullclsfNamePath='" + fullclsfNamePath + '\'' +
+ ", objects=" + objects +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfysVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfysVO.java
new file mode 100644
index 0000000..da0269f
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfysVO.java
@@ -0,0 +1,21 @@
+package org.springblade.code.vo.universalInter.result.json;
+
+import java.util.List;
+public class JSONResultClassfysVO {
+ private List<JSONResultClassfyVO> classify;
+
+ public List<JSONResultClassfyVO> getClassify() {
+ return classify;
+ }
+
+ public void setClassify(List<JSONResultClassfyVO> classify) {
+ this.classify = classify;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultClassfysVO{" +
+ "classfy=" + classify +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDO.java
new file mode 100644
index 0000000..336fa55
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDO.java
@@ -0,0 +1,26 @@
+package org.springblade.code.vo.universalInter.result.json;
+
+import java.util.List;
+
+/***
+ * objects鑺傜偣
+ * @author xj
+ */
+public class JSONResultDataObjectDO {
+ /***
+ * objects涓嬫暟鎹璞�
+ */
+ private List<JSONResultDataObjectDetailDO> object ;
+ public List<JSONResultDataObjectDetailDO> getObject() {
+ return object;
+ }
+ public void setObject(List<JSONResultDataObjectDetailDO> object) {
+ this.object = object;
+ }
+ @Override
+ public String toString() {
+ return "ResultDataObjectDO{" +
+ "object=" + object +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java
new file mode 100644
index 0000000..af09a28
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java
@@ -0,0 +1,62 @@
+package org.springblade.code.vo.universalInter.result.json;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+/***
+ * object鑺傜偣
+ * @author xj
+ */
+@XStreamAlias("obect")
+public class JSONResultDataObjectDetailDO {
+ @XStreamAsAttribute
+ private String id;
+ @XStreamAsAttribute
+ private String errorid;
+ @XStreamAsAttribute
+ private String code;
+ @XStreamAlias("msg")
+ private String msg;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getErrorid() {
+ return errorid;
+ }
+
+ public void setErrorid(String errorid) {
+ this.errorid = errorid;
+ }
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultDataObjectDetailDO{" +
+ "id='" + id + '\'' +
+ ", errorid='" + errorid + '\'' +
+ ", code='" + code + '\'' +
+ ", msg='" + msg + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataVO.java
new file mode 100644
index 0000000..dd2584d
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataVO.java
@@ -0,0 +1,19 @@
+package org.springblade.code.vo.universalInter.result.json;
+public class JSONResultDataVO {
+ private JSONResultSystemVO data;
+
+ public JSONResultSystemVO getData() {
+ return data;
+ }
+
+ public void setData(JSONResultSystemVO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultDataVO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultSystemVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultSystemVO.java
new file mode 100644
index 0000000..489f0bb
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultSystemVO.java
@@ -0,0 +1,52 @@
+package org.springblade.code.vo.universalInter.result.json;
+
+/***
+ * 杩斿洖缁撴灉瀵硅薄
+ */
+public class JSONResultSystemVO {
+ /***
+ * 閿欒鏍囪瘑
+ */
+ private String errorid;
+ /***
+ * 娑堟伅
+ */
+ private String msg;
+ /**
+ * 杩斿洖缁撴灉瀵硅薄
+ */
+ private JSONResultClassfysVO classifys;
+
+ 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;
+ }
+
+ public JSONResultClassfysVO getClassifys() {
+ return classifys;
+ }
+
+ public void setClassifys(JSONResultClassfysVO classifys) {
+ this.classifys = classifys;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultSystemVO{" +
+ "errorid='" + errorid + '\'' +
+ ", msg='" + msg + '\'' +
+ ", classifys=" + classifys +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/tt.json b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/tt.json
new file mode 100644
index 0000000..848d6d3
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/tt.json
@@ -0,0 +1,62 @@
+{
+ "data": {
+ "classifys": {
+ "classfy": [
+ {
+ "fullclsfNamePath": "鐗╁搧##VCI##鏍囧噯浠�##VCI##铻烘爴",
+ "classCode": "020101",
+ "library": "wupin",
+ "objecs": {
+ "object": [
+ {
+ "msg": ";鍏抽敭灞炴�ч噸澶�",
+ "code": "",
+ "errorid": "1",
+ "id": "0023401"
+ },
+ {
+ "msg": ";鍏抽敭灞炴�ч噸澶�;灞炴�鐗╂枡绫诲瀷]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�;鍙傛暟灞炴�鏍哥畻鍒嗙被]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�璁¢噺鍗曚綅]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�渚涘簲鍟哴鐨勫�煎湪绯荤粺涓笉瀛樺湪;",
+ "code": "",
+ "errorid": "1",
+ "id": "71467898-22DB-0D63-3D27-86FD7A124D25"
+ },
+ {
+ "msg": ";鍏抽敭灞炴�ч噸澶�;灞炴�鐗╂枡绫诲瀷]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�;鍙傛暟灞炴�鏍哥畻鍒嗙被]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�璁¢噺鍗曚綅]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�渚涘簲鍟哴鐨勫�煎湪绯荤粺涓笉瀛樺湪;;灞炴�鐗╂枡绫诲瀷]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�;鍙傛暟灞炴�鏍哥畻鍒嗙被]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�璁¢噺鍗曚綅]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�渚涘簲鍟哴鐨勫�煎湪绯荤粺涓笉瀛樺湪;",
+ "code": "",
+ "errorid": "1",
+ "id": "A9B58A76-751E-C96C-D410-CD4B5DD53800"
+ }
+ ]
+ }
+ },
+ {
+ "fullclsfNamePath": "鐗╁搧##VCI##鏍囧噯浠�##VCI##铻烘瘝",
+ "classCode": "020102",
+ "library": "wupin",
+ "objecs": {
+ "object": [
+ {
+ "msg": ";鍏抽敭灞炴�ч噸澶�",
+ "code": "",
+ "errorid": "1",
+ "id": "0023401"
+ },
+ {
+ "msg": ";鍏抽敭灞炴�ч噸澶�;灞炴�鐗╂枡绫诲瀷]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�;鍙傛暟灞炴�鏍哥畻鍒嗙被]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�璁¢噺鍗曚綅]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�渚涘簲鍟哴鐨勫�煎湪绯荤粺涓笉瀛樺湪;",
+ "code": "",
+ "errorid": "1",
+ "id": "454997A3-2F9F-73FC-3BFB-B33DEC77DC73"
+ },
+ {
+ "msg": ";鍏抽敭灞炴�ч噸澶�;灞炴�鐗╂枡绫诲瀷]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�;鍙傛暟灞炴�鏍哥畻鍒嗙被]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�璁¢噺鍗曚綅]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�渚涘簲鍟哴鐨勫�煎湪绯荤粺涓笉瀛樺湪;;灞炴�鐗╂枡绫诲瀷]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�;鍙傛暟灞炴�鏍哥畻鍒嗙被]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�璁¢噺鍗曚綅]鐨勫�煎湪绯荤粺涓笉瀛樺湪;鍙傛暟灞炴�渚涘簲鍟哴鐨勫�煎湪绯荤粺涓笉瀛樺湪;",
+ "code": "",
+ "errorid": "1",
+ "id": "39ABD489-177C-2894-EF16-1249F7625FC5"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultClassfyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultClassfyVO.java
new file mode 100644
index 0000000..93bd32b
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultClassfyVO.java
@@ -0,0 +1,60 @@
+package org.springblade.code.vo.universalInter.result.xml;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+import java.util.List;
+
+@XStreamAlias("classfy")
+public class XMLResultClassfyVO {
+ @XStreamAsAttribute
+ private String classCode;
+ @XStreamAsAttribute
+ private String library;
+ @XStreamAsAttribute
+ private String fullclsfNamePath;
+ @XStreamAlias("objects")
+ private List<XMLResultDataObjectDetailDO> objects;
+
+ public String getClassCode() {
+ return classCode;
+ }
+
+ public void setClassCode(String classCode) {
+ this.classCode = classCode;
+ }
+
+ public String getLibrary() {
+ return library;
+ }
+
+ public void setLibrary(String library) {
+ this.library = library;
+ }
+
+ public String getFullclsfNamePath() {
+ return fullclsfNamePath;
+ }
+
+ public void setFullclsfNamePath(String fullclsfNamePath) {
+ this.fullclsfNamePath = fullclsfNamePath;
+ }
+
+ public List<XMLResultDataObjectDetailDO> getObjects() {
+ return objects;
+ }
+
+ public void setObjects(List<XMLResultDataObjectDetailDO> objects) {
+ this.objects = objects;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultClassfyVO{" +
+ "classCode='" + classCode + '\'' +
+ ", library='" + library + '\'' +
+ ", fullclsfNamePath='" + fullclsfNamePath + '\'' +
+ ", objects=" + objects +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java
new file mode 100644
index 0000000..ccc44fc
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java
@@ -0,0 +1,62 @@
+package org.springblade.code.vo.universalInter.result.xml;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+/***
+ * object鑺傜偣
+ * @author xj
+ */
+@XStreamAlias("object")
+public class XMLResultDataObjectDetailDO {
+ @XStreamAsAttribute
+ private String id;
+ @XStreamAsAttribute
+ private String errorid;
+ @XStreamAsAttribute
+ private String code;
+ @XStreamAlias("msg")
+ private String msg;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getErrorid() {
+ return errorid;
+ }
+
+ public void setErrorid(String errorid) {
+ this.errorid = errorid;
+ }
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultDataObjectDetailDO{" +
+ "id='" + id + '\'' +
+ ", errorid='" + errorid + '\'' +
+ ", code='" + code + '\'' +
+ ", msg='" + msg + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataVO.java
new file mode 100644
index 0000000..0bc8b18
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataVO.java
@@ -0,0 +1,19 @@
+package org.springblade.code.vo.universalInter.result.xml;
+
+public class XMLResultDataVO {
+ private XMLResultSystemVO data;
+ public XMLResultSystemVO getData() {
+ return data;
+ }
+
+ public void setData(XMLResultSystemVO data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultDataVO{" +
+ "data=" + data +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultSystemVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultSystemVO.java
new file mode 100644
index 0000000..a8129bb
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultSystemVO.java
@@ -0,0 +1,61 @@
+package org.springblade.code.vo.universalInter.result.xml;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+import java.util.List;
+
+/***
+ * 杩斿洖缁撴灉瀵硅薄
+ */
+@XStreamAlias("data")
+public class XMLResultSystemVO {
+ /***
+ * 閿欒鏍囪瘑
+ */
+ @XStreamAsAttribute
+ private String errorid;
+ /***
+ * 娑堟伅
+ */
+ @XStreamAlias("msg")
+ private String msg;
+ /**
+ * 杩斿洖缁撴灉瀵硅薄
+ */
+ @XStreamAlias("classifys")
+ private List<XMLResultClassfyVO> classifys;
+
+ 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;
+ }
+
+ public List<XMLResultClassfyVO> getClassifys() {
+ return classifys;
+ }
+
+ public void setClassifys(List<XMLResultClassfyVO> classifys) {
+ this.classifys = classifys;
+ }
+
+ @Override
+ public String toString() {
+ return "ResultSystemVO{" +
+ "errorid='" + errorid + '\'' +
+ ", msg='" + msg + '\'' +
+ ", classifys=" + classifys +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service-api/pom.xml b/Source/BladeX/blade-service-api/pom.xml
index 1dbd39c..b4a57f8 100644
--- a/Source/BladeX/blade-service-api/pom.xml
+++ b/Source/BladeX/blade-service-api/pom.xml
@@ -21,6 +21,7 @@
<module>blade-scope-api</module>
<module>blade-system-api</module>
<module>blade-user-api</module>
+ <module>blade-code-api</module>
</modules>
<dependencies>
diff --git a/Source/BladeX/blade-service/blade-code/pom.xml b/Source/BladeX/blade-service/blade-code/pom.xml
new file mode 100644
index 0000000..7c468a7
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/pom.xml
@@ -0,0 +1,145 @@
+<?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>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-service</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <artifactId>blade-code</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <properties>
+ <maven.compiler.source>8</maven.compiler.source>
+ <maven.compiler.target>8</maven.compiler.target>
+ <axis2.version>1.7.9</axis2.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-platform-web</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-platform-webservice</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.vci.mdm</groupId>
+ <artifactId>vci-mdm-wrj-webducking</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>de.odysseus.staxon</groupId>
+ <artifactId>staxon</artifactId>
+ <version>1.3</version>
+ </dependency>
+
+ <!--axis2 begin -->
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-adb</artifactId>
+ <version>${axis2.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-kernel</artifactId>
+ <version>${axis2.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-transport-http</artifactId>
+ <version>${axis2.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax-servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-transport-local</artifactId>
+ <version>${axis2.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-jaxws</artifactId>
+ <version>${axis2.version}</version>
+ </dependency>
+ <!--axis2 end -->
+
+ <!--webservice鐨勫唴瀹�-->
+ <dependency>
+ <groupId>com.vci</groupId>
+ <artifactId>vci-platform-webservice</artifactId>
+ <version>2022.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-cloud</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-code-api</artifactId>
+ <version>3.0.1.RELEASE</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.8</version>
+ <executions>
+ <execution>
+ <id>copy</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <excludeGroupIds>com.vci.platform</excludeGroupIds>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>3.0.2</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <classpathPrefix>lib/</classpathPrefix>
+ </manifest>
+ </archive>
+ <excludes>
+ <exclude>application-dev.yml</exclude>
+ <exclude>application-prod.yml</exclude>
+ <exclude>application.yml</exclude>
+ <exclude>properties/conf.properties</exclude>
+ <exclude>properties/eventConf.properties</exclude>
+ <exclude>lib/*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/CodeApplication.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/CodeApplication.java
new file mode 100644
index 0000000..0d962af
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/CodeApplication.java
@@ -0,0 +1,36 @@
+/*
+ * 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 org.springblade.code;
+
+import org.springblade.core.cloud.client.BladeCloudApplication;
+import org.springblade.core.launch.BladeApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * Desk鍚姩鍣�
+ *
+ * @author ludc
+ */
+@BladeCloudApplication
+public class CodeApplication {
+
+ public static void main(String[] args) {
+ BladeApplication.run(AppConstant.APPLICATION_DESK_NAME, CodeApplication.class, args);
+ }
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingClassSyncScheduling.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingClassSyncScheduling.java
new file mode 100644
index 0000000..c3d10f2
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingClassSyncScheduling.java
@@ -0,0 +1,56 @@
+package org.springblade.code.Scheduling;
+
+import com.vci.mdm.service.CodeDuckingSyncServiceI;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 闆嗘垚浠诲姟瀹氭椂鍣�
+ * 鎻掑叆dockingtask涓�
+ * 浠巇ockingtask涓彇鍑烘潵鏁版嵁锛屾帹閫佸嚭鍘荤殑鎿嶄綔
+ */
+@Component
+public class DockingClassSyncScheduling {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Resource
+ private CodeDuckingSyncServiceI codeDuckingSyncServiceI;
+
+ @Value("${clsfSyncPush.isStart:false}")
+ public boolean CLSF_SYNC_PUSH_ISSTARE;
+
+ /**
+ * 鏄惁鍒濆鍖栧畬鎴愪簡
+ */
+ public static volatile String FINISH_INIT = "false";
+
+ /**
+ * 鍦ㄥ垵濮嬪寲瀹屾垚鍚庢墽琛�
+ */
+ @PostConstruct()
+ public void onInit(){
+ FINISH_INIT = "true";
+ }
+
+ //榛樿姣忓垎閽熸墽琛屾柟娉�
+ @Scheduled(cron = "${clsfSyncPush.cronTime:0 0/10 * * * ?}")
+ public void scheduled() {
+ if(CLSF_SYNC_PUSH_ISSTARE && BooleanEnum.TRUE.getValue().equalsIgnoreCase(FINISH_INIT)) {
+ codeDuckingSyncServiceI.DockingClassSyncScheduing();
+ SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
+ String time = formatter.format(new Date());
+ String outinfo = "============鍦� "+time+" 鎵ц浜嗗垎绫婚泦鎴愭帹閫�";
+ logger.info(outinfo);
+ }
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingDataSyncScheduling.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingDataSyncScheduling.java
new file mode 100644
index 0000000..38f6e7d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingDataSyncScheduling.java
@@ -0,0 +1,56 @@
+package org.springblade.code.Scheduling;
+
+import com.vci.mdm.service.CodeDuckingSyncServiceI;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 闆嗘垚浠诲姟瀹氭椂鍣�
+ * 鎻掑叆dockingtask涓�
+ * 浠巇ockingtask涓彇鍑烘潵鏁版嵁锛屾帹閫佸嚭鍘荤殑鎿嶄綔
+ */
+@Component
+public class DockingDataSyncScheduling {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Resource
+ private CodeDuckingSyncServiceI codeDuckingSyncServiceI;
+
+ @Value("${dataSyncPush.isStart:false}")
+ public boolean DATA_SYNC_PUSH_ISSTARE;
+
+ /**
+ * 鏄惁鍒濆鍖栧畬鎴愪簡
+ */
+ public static volatile String FINISH_INIT = "false";
+
+ /**
+ * 鍦ㄥ垵濮嬪寲瀹屾垚鍚庢墽琛�
+ */
+ @PostConstruct()
+ public void onInit(){
+ FINISH_INIT = "true";
+ }
+
+ //榛樿姣忓垎閽熸墽琛屾柟娉�
+ @Scheduled(cron = "${dataSyncPush.cronTime:0 0/10 * * * ?}")
+ public void scheduled() {
+ if(DATA_SYNC_PUSH_ISSTARE && BooleanEnum.TRUE.getValue().equalsIgnoreCase(FINISH_INIT)) {
+ codeDuckingSyncServiceI.DockingDataSyncScheduing();
+ SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
+ String time = formatter.format(new Date());
+ String outinfo = "============鍦� "+time+" 鎵ц浜嗕富鏁版嵁闆嗘垚鏁版嵁鎺ㄩ��";
+ logger.info(outinfo);
+ }
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingScheduling.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingScheduling.java
new file mode 100644
index 0000000..81b8f41
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingScheduling.java
@@ -0,0 +1,56 @@
+package org.springblade.code.Scheduling;
+
+import com.vci.mdm.service.CodeDuckingServiceI;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 闆嗘垚浠诲姟瀹氭椂鍣�
+ * 鎻掑叆dockingtask涓�
+ * 浠巇ockingtask涓彇鍑烘潵鏁版嵁锛屾帹閫佸嚭鍘荤殑鎿嶄綔
+ */
+@Component
+public class DockingScheduling {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Resource
+ private CodeDuckingServiceI codeDuckingServiceI;
+
+ @Value("${docking.insertCache2:false}")
+ public boolean INSERT_CACHE2;
+
+ /**
+ * 鏄惁鍒濆鍖栧畬鎴愪簡
+ */
+ public static volatile String FINISH_INIT = "false";
+
+ /**
+ * 鍦ㄥ垵濮嬪寲瀹屾垚鍚庢墽琛�
+ */
+ @PostConstruct()
+ public void onInit(){
+ FINISH_INIT = "true";
+ }
+
+ //榛樿姣忓垎閽熸墽琛屾柟娉�
+ @Scheduled(cron = "${docking.cron:0 0/10 * * * ?}")
+ public void scheduled() {
+ if(INSERT_CACHE2 && BooleanEnum.TRUE.getValue().equalsIgnoreCase(FINISH_INIT)) {
+ codeDuckingServiceI.DockingScheduing();
+ SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
+ String time = formatter.format(new Date());
+ String outinfo = "============鍦� "+time+" 鎵ц浜嗕富鏁版嵁闆嗘垚鏁版嵁鎺ㄩ��";
+ logger.info(outinfo);
+ }
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/algorithm/CustomSerialAlgorithmExample.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/algorithm/CustomSerialAlgorithmExample.java
new file mode 100644
index 0000000..10aeb67
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/algorithm/CustomSerialAlgorithmExample.java
@@ -0,0 +1,20 @@
+package org.springblade.code.algorithm;
+
+import org.springblade.code.annotation.MdmSerialAlgorithm;
+import org.springblade.code.annotation.MdmSerialAlgorithmMethod;
+
+/**
+ * 娴佹按绠楁硶鐨勭ず渚�
+ */
+@MdmSerialAlgorithm(text = "娴佹按绠楁硶鐨勭ず渚�",description = "璇蜂笉瑕佷娇鐢ㄨ繖涓被锛岃繖涓被鍙槸绀轰緥锛岀敤浜庢煡鐪嬪浣曠紪鍐欐祦姘寸畻娉�")
+public class CustomSerialAlgorithmExample {
+
+ /**
+ * 鐢熸垚娴佹按鍙风殑鏂规硶
+ * @return 娴佹按鍙风殑淇℃伅
+ */
+ @MdmSerialAlgorithmMethod
+ public String serialGenerate(){
+ return "";
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMap.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMap.java
new file mode 100644
index 0000000..b0dc7bd
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMap.java
@@ -0,0 +1,28 @@
+package org.springblade.code.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 闆嗘垚鏃惰嚜瀹氫箟鐨勮浆鎹㈢被
+ * @author weidy
+ * @date 2022-1-18
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MdmIntegrationMap {
+
+ /**
+ * 鍊硷紝瀹為檯灏辨槸杩欎釜娉ㄨВ鎵�鍦ㄧ殑绫荤殑鍏ㄨ矾寰�
+ * @return 鍊�
+ */
+ String value() default "";
+
+ /**
+ * 浜嬩欢鐨勫悕绉�
+ * @return 浜嬩欢鍚嶇О
+ */
+ String text();
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMapMethod.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMapMethod.java
new file mode 100644
index 0000000..a8d54f9
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMapMethod.java
@@ -0,0 +1,24 @@
+package org.springblade.code.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 闆嗘垚鏃惰嚜瀹氫箟鐨勮浆鎹㈡柟娉�
+ * @author weidy
+ * @date 2022-1-18
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MdmIntegrationMapMethod {
+
+ /**
+ * 鍊硷紝
+ * @return 鍊�
+ */
+ String value() default "";
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithm.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithm.java
new file mode 100644
index 0000000..138a7d3
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithm.java
@@ -0,0 +1,37 @@
+package org.springblade.code.annotation;
+
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鑷畾涔夋祦姘寸畻娉曠殑娉ㄨВ
+ * @author weidy
+ * @date 2022-1-18
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface MdmSerialAlgorithm {
+
+ /**
+ * 鍊硷紝瀹為檯灏辨槸杩欎釜娉ㄨВ鎵�鍦ㄧ殑绫荤殑鍏ㄨ矾寰�
+ * @return 鍊�
+ */
+ String value() default "";
+
+ /**
+ * 浜嬩欢鐨勫悕绉�
+ * @return 浜嬩欢鍚嶇О
+ */
+ String text();
+
+ /**
+ * 鎻忚堪
+ * @return 鎻忚堪
+ */
+ String description() default "";
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithmMethod.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithmMethod.java
new file mode 100644
index 0000000..1603394
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithmMethod.java
@@ -0,0 +1,23 @@
+package org.springblade.code.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鑷畾涔夋祦姘寸畻娉曞鐞嗘柟娉曠殑娉ㄨВ
+ * @author weidy
+ * @date 2022-1-18
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MdmSerialAlgorithmMethod {
+
+ /**
+ * 鍊�
+ * @return 鍊�
+ */
+ String value() default "";
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmBtmTypeConstant.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmBtmTypeConstant.java
new file mode 100644
index 0000000..df3ad1a
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmBtmTypeConstant.java
@@ -0,0 +1,169 @@
+package org.springblade.code.constant;
+
+/**
+ * 涓绘暟鎹浉鍏崇殑涓氬姟绫诲瀷缂栧彿
+ */
+public class MdmBtmTypeConstant {
+
+ /**
+ * 涓婚搴撳垎绫�
+ */
+ 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_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" ;
+
+ /**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇�
+ */
+ 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瀵瑰簲鐨刾aramter
+ */
+ public static final String SYS_INT_PARAMTERY = "sysintparemter";
+
+ /**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佷俊鎭�,http瀵瑰簲鐨刪eader,webserver瀵瑰簲鐨勮处鍙峰瘑鐮佺瓑淇℃伅
+ */
+ public static final String SYS_INT_HEADER = "sysintheader";
+
+
+ /**
+ * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+ */
+ public static final String DOCKING_PRE_JINTEGMAPCONFIG = "jintegmapconifg";
+
+ /**
+ * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+ */
+ public static final String DOCKING_PRE_JCLASS = "jclass";
+ /**
+ * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+ */
+ public static final String DOCKING_PRE_JMETAATRR = "jmetaattr";
+
+ /**
+ * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+ */
+ public static final String DOCKING_PRE_JRANGE = "jrange";
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmDuckingConstant.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmDuckingConstant.java
new file mode 100644
index 0000000..a2f8716
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmDuckingConstant.java
@@ -0,0 +1,146 @@
+package org.springblade.code.constant;
+
+/**
+ * 涓绘暟鎹帹閫佺浉鍏�
+ */
+public class MdmDuckingConstant {
+
+ /**
+ * dockingtask sendFlag 鎺ㄩ�佹垚鍔�
+ */
+ public static final String SEND_FLAG_TRUE = "true";
+
+ /**
+ * dockingtask sendFlag 鏈帹閫佹垚鍔�
+ */
+ public static final String SEND_FLAG_FALSE = "false";
+
+ /**
+ * dockingloge interfacestatus 鎺ㄩ�佹垚鍔�
+ */
+ public static final String INTERFACE_STATUS_TRUE = "true";
+
+ /**
+ * dockingloge interfacestatus 鏈帹閫佹垚鍔�
+ */
+ public static final String INTERFACE_STATUS_FALSE = "false";
+
+ /**
+ * 瀛樻斁cache1鐨勬枃浠跺すkey,鏆傛椂涓嶇敤浜�
+ */
+ public static String DOCKING_CACHE1 = "DOCKING_CACHE1";
+
+ /**
+ * 瀛樻斁cache2鍒犻櫎鏁版嵁鐨勬枃浠跺すkey
+ */
+ public static String DOCKING_CACHE2_DELETE = "DOCKING_CACHE2_DELETE:";
+
+ /**
+ * 缁熶竴闆嗘垚锛屽垎绫绘暟鎹慨鏀圭殑鏃跺�欙紝btmnam=DOCKING_DEFAULT_CLASSIFY
+ */
+ public static String DOCKING_DEFAULT_CLASSIFY = "CODECLASSIFY";
+
+ /**
+ * 缁熶竴闆嗘垚锛屽垎绫绘暟鎹慨鏀圭殑鏃跺�欙紝classifyoid=DOCKING_DEFAULT_CLASSIFYOID
+ */
+ public static String DOCKING_DEFAULT_CLASSIFYOID = "CODECLASSIFYOID";
+
+ /**
+ * 缁熶竴闆嗘垚锛屽垎绫绘暟鎹慨鏀圭殑鏃跺�欙紝classifyid=DOCKING_DEFAULT_CLASSIFYID
+ */
+ public static String DOCKING_DEFAULT_CLASSIFYID = "CODECLASSIFY";
+
+ /**
+ * 缁熶竴闆嗘垚锛屽垎绫绘暟鎹慨鏀圭殑鏃跺�欙紝classifyoname=DOCKING_DEFAULT_CLASSIFYNAME
+ */
+ public static String DOCKING_DEFAULT_CLASSIFYNAME = "CODECLASSIFYNAME";
+
+ /**
+ * 杩斿洖鏁版嵁鏍煎紡
+ */
+ public static String DATATYPE_JSON = "json";
+ public static String DATATYPE_XML = "xml";
+
+ public static String URLTYPE_WEBSERVICE = "webservice";
+ public static String URLTYPE_HTTP= "http";
+ public static String URLTYPE_GET = "get";
+ public static String URLTYPE_POST = "post";
+ public static String URLTYPE_CORBA = "corba";
+
+ public static String PARAM_XMLDATA = "xmlData";
+
+ public static String CACHE_TIME="cache_time";//瀛樺偍涓婁竴娆℃墽琛岀殑鏃堕棿
+
+ public static String CACHE_OID="oid";
+ public static String CACHE_BTMID="btmid";
+ public static String CACHE_BTMNAME="btmname";
+ public static String CACHE_TS="ts";
+ public static String CACHE_TYPE="type";
+ public static String CACHE_LCSTATUS="lcstatus";
+ public static String CACHE_CLASSIFYID="classifyid";
+ public static String CACHE_CLASSIFYOID="classifyoid";
+ public static String CACHE_CLASSIFYNAME="classifyname";
+ public static String CACHE_CLASSIFYOID_DDEFAULT="classifyoid";//鍒嗙被鏁版嵁鐨勬椂鍊檕id
+ public static String CACHE_CLASSIFYNAME_DDEFAULT="鍒嗙被鏁版嵁";//鍒嗙被鏁版嵁鐨勬椂鍊欏垎绫诲悕绉�
+
+ public static String PRE_APPLY_DATA_USER_TRUE ="true";//棰勭敵璇风殑鏁版嵁姝e湪浣跨敤锛岃〃绀鸿繖涓猽nique杩欐潯鏁版嵁鏄渶鏂扮殑
+ public static String PRE_APPLY_DATA_USER_FALSE ="false";//棰勭敵璇风殑鏁版嵁鏈娇鐢紝涓嶆槸鏈�鏂扮殑
+
+ //鍙杕pm涓�
+ public static String XML_MPM_MODEL="specification";//瑙勬牸
+ public static String XML_MPM_PARTTYPE="parttype";//闆朵欢鍨嬪彿
+ public static String XML_MPM_UNIT="unit";//鍗曚綅
+
+ //datalog
+ public static String DATA_LOGE_OUT="out";//鎺ㄩ�佹暟鎹�
+ public static String DATA_LOGE_IN="in";//鎺ユ敹鏁版嵁
+
+
+ //瑙f瀽xml
+ public static String XML_OBJECT="object";
+ public static String XML_CODE="code";
+ public static String XML_CODE_SUCCESS="200";
+ public static String XML_CODE_FAIL="500";
+ public static String XML_TYPE="type";
+ public static String XML_SYSTEMID="systemid";
+ public static String XML_SYSTEMID_MPM="MPM";//鍐欐鐨勫伐鑹虹郴缁焛d
+ public static String XML_DATAS="datas";
+ public static String XML_DATA="data";
+ public static String XML_UNIQUE="unique";
+ public static String XML_PROS="props";
+ public static String XML_PRO="prop";
+ public static String XML_PRO_TRAN="prop_tran";
+ public static String XML_ATTR="attr";
+ public static String XML_KEY="key";
+ public static String XML_MEAN="mean";
+ public static String XML_VALUE="value";
+ public static String XML_TEXT="text";
+ public static String XML_STATE="state";
+ public static String XML_MSG="msg";
+ public static String XML_NUM="num";
+ public static String XML_NAMEPATH="namepath";
+ public static String XML_NAME="name";
+ public static String XML_IDPATH="idpath";
+ public static String XML_ID="id";
+ public static String XML_ORDERNUM="orderNum";
+ public static String XML_PARENTID="parentId";
+ public static String XML_SENDTYPE="sendtype";
+ public static String XML_STATE_200="200";
+ public static String XML_STATE_400="400";
+ public static String XML_STATE_500="500";
+ public static String XML_DATACODE="datacode";
+ public static String XML_DATACODE_200="200";
+ public static String XML_DATACODE_500="500";
+ public static String XML_DATAMSG="datamsg";
+ public static String XML_MDMKEY="mdmkey";
+ public static String XML_MDMVALUE="mdmvalue";
+ public static String XML_SYSTEMKEY="systemkey";
+ public static String XML_SYSTEMVALUE="systemvalue";
+
+ public static String FLAG_TRUE="true";
+ public static String FLAG_FAIL="fail";
+
+
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEngineConstant.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEngineConstant.java
new file mode 100644
index 0000000..5c9e830
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEngineConstant.java
@@ -0,0 +1,105 @@
+package org.springblade.code.constant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 涓绘暟鎹紩鎿庣浉鍏崇殑甯搁噺
+ * @author weidy
+ * @date 2022-3-8
+ */
+public class MdmEngineConstant {
+ /**
+ * 缂栫爜鐨勫瓧娈�
+ */
+ public static final String CODE_FIELD = "id";
+
+ /**
+ * 鐘舵��
+ */
+ 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_TEMPLATE_OID_FIELD = "codetemplateoid";
+
+ /**
+ * 鍒嗙被鍏ㄨ矾寰勭殑瀛楁
+ */
+ public static final String CODE_FULL_PATH_FILED = "codeclsfpath";
+
+ /**
+ * 鐮佹鐨勯暱搴︾殑瀛楁锛�-杩欎笉鏄暟鎹簱閲岀殑瀛楁
+ */
+ public static final String CODE_SEC_LENGTH_FIELD = "codeSecLengthField";
+
+ /**
+ * 瀵嗙骇鐨勫瓧娈�
+ */
+ public static final String SECRET_FIELD = "secretgrade";
+ /**
+ * 鍒涘缓鑰呭瓧娈�
+ */
+ public static final String CODE_CREATOR = "creator";
+ /**
+ * 鏇存敼鑰呭瓧娈�
+ */
+ public static final String CODE_EDITOR = "lastmodifier";
+ /**
+ * 榛樿鐨勫睘鎬у垪琛�
+ */
+ public static final List DEFAULT_ATTR_LIST = new ArrayList(){{
+ add(CODE_FIELD);
+ add(CODE_STATUS_FILED);
+ add(CODE_GROUP_FIELD);
+ add(CODE_CLASSIFY_OID_FIELD);
+ add(CODE_TEMPLATE_OID_FIELD);
+ add(CODE_FULL_PATH_FILED);
+ }};
+
+ /**
+ * 榛樿鐨勫睘鎬у垪琛�
+ */
+ public static final List DEFAULT_SYNC_ATTR_LIST = new ArrayList(){{
+ add(CODE_FIELD);
+ add(CODE_STATUS_FILED);
+ add(CODE_GROUP_FIELD);
+ add(CODE_CLASSIFY_OID_FIELD);
+ add(CODE_TEMPLATE_OID_FIELD);
+ add(CODE_FULL_PATH_FILED);
+ add(CODE_EDITOR);
+ add(CODE_CREATOR);
+ }};
+
+ /**
+ * 琛屽彿
+ */
+ public static final String IMPORT_ROW_INDEX = "${rowIndex}";
+
+ /**
+ * 绌虹殑娴佹按渚濇嵁
+ */
+ public static final String EMPTY_SERIAL_UNIT = "${emptyserial}";
+
+ /**
+ * 娴佹按渚濊禆鐨勮繛鎺ョ
+ */
+ public static final String SERIAL_UNIT_SPACE = "${serial}";
+
+ /**
+ * 娴佺▼鍊肩殑鍒嗛殧绗�
+ */
+ public static final String SERIAL_VALUE_SPACE = "${sav}";
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEnumIdConstant.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEnumIdConstant.java
new file mode 100644
index 0000000..5e35fbb
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEnumIdConstant.java
@@ -0,0 +1,78 @@
+package org.springblade.code.constant;
+
+/**
+ * 涓绘暟鎹殑鏋氫妇鍚嶇О
+ */
+public class MdmEnumIdConstant {
+ /**
+ * 鎸夐挳鐨勪娇鐢ㄤ綅缃�
+ */
+ public static final String CODE_BUTTON_POSITION = "codeButtonPosition" ;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷
+ */
+ public static final String CODE_SEC_LENGTH = "codeSecLength";
+ /**
+ * 鏃ユ湡鏍煎紡
+ */
+ public static final String CODE_DATA_FORMAT = "codeDateFormatEnum";
+ /**
+ * 灞傜骇鐮佹鐨勫眰绾х被鍨�
+ */
+ public static final String CODE_LEVEL_TYPE = "codeLevelType";
+ /**
+ * 瀛楃鎴彇绫诲瀷
+ */
+ public static final String CODE_CUT_TYPE = "codeCutType";
+ /**
+ * 缂栫爜鍙栧�肩被鍨�
+ */
+ public static final String CODE_GET_VALUE_TYPE = "codeGetValueType";
+ /**
+ * 涓婚搴撳垎绫荤殑娴佺▼鐢ㄩ��
+ */
+ public static final String CODE_CLASSIFY_PROCESS_USE = "codeClassifyProcessUse";
+ /**
+ * 缂栫爜鏄犲皠瑙勫垯绫诲瀷
+ */
+ public static final String CODE_MAP_RULE_TYPE = "codeMapRuleType";
+ /**
+ * 鐮佹绫诲瀷
+ */
+ public static final String CODE_SEC_TYPE = "codeSecType";
+ /**
+ * 鎸夐挳鐨勭敤閫�
+ */
+ public static final String CODE_TEMPLATE_BUTTON_USE = "codeTemplateButtonUse";
+
+ /**
+ * 绯荤粺闆嗘垚鎺ュ彛绫诲瀷
+ */
+ public static final String SYS_INTEGRATION_REQUEST_TYPE = "sysIntegrationRequestType";
+
+ /**
+ * 绯荤粺闆嗘垚鎺ュ彛璇锋眰鏂瑰紡绫诲瀷
+ */
+ public static final String SYS_INTEGRATION_REQUEST_METHOD_TYPE = "sysIntegrationRequestMethodType";
+
+ /**
+ * 绯荤粺闆嗘垚鎺ュ彛璇锋眰鏂瑰紡绫诲瀷
+ */
+ public static final String SYS_INTEGRATION_PARAM_AND_RETURN_TYPE = "sysIntegrationParamAndReturnType";
+
+ /**
+ * 绯荤粺闆嗘垚楠岃瘉鏂瑰紡
+ */
+ public static final String SYS_INTEGRATION_AUTHORITY_TYPE = "sysIntegrationAuthorityType";
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡
+ */
+ public static final String SYS_INTEGRATION_DATA_FLOW_TYPE = "sysIntegrationDataFlowType";
+ /***
+ * 绯荤粺鎺ュ彛鎺ㄩ�佹柟寮�
+ */
+ public static final String SYS_INTEGRATION_PUSH_TYPE="sysIntegrationPushType";
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLifeCycleConstant.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLifeCycleConstant.java
new file mode 100644
index 0000000..4d6b216
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLifeCycleConstant.java
@@ -0,0 +1,26 @@
+package org.springblade.code.constant;
+
+/**
+ * 鐢熷懡鍛ㄦ湡鐨勫悕绉�
+ * @author weidy
+ * @date 2022-2-11
+ */
+public class MdmLifeCycleConstant {
+ /**
+ * 鍒嗙被妯℃澘鐨勭敓鍛藉懆鏈�
+ */
+ public static final String CODE_CLASSIFY_TEMPLATE_LC ="codeClsTempLc";
+
+ /**
+ * 缂栫爜瑙勫垯鐨勭敓鍛藉懆鏈�
+ */
+ public static final String CODE_RULE_LC = "codeRuleLC";
+ /**
+ * 鍏ㄩ儴鐨勭爜鍊肩殑鐢熷懡鍛ㄦ湡
+ */
+ public static final String CODE_ALL_CODE_LC = "codeAllCodeLC" ;
+ /**
+ * 缂栫爜鐨勯粯璁ょ殑鐢熷懡鍛ㄦ湡
+ */
+ public static final String CODE_DEFAULT_LC = "codeDataLC";
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLinkTypeConstant.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLinkTypeConstant.java
new file mode 100644
index 0000000..1209f4a
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLinkTypeConstant.java
@@ -0,0 +1,13 @@
+package org.springblade.code.constant;
+
+/**
+ * 涓绘暟鎹噷鐨勯摼鎺ョ被鍨嬪悕绉�
+ * @author weidy
+ * @date 2022-1-18
+ */
+public class MdmLinkTypeConstant {
+ /**
+ * 缂栫爜瑙勫垯鐨勬槑缁�
+ */
+ public static final String CODE_RULE_ITEM = "codeRuleItem";
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeApplySyncController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeApplySyncController.java
new file mode 100644
index 0000000..4b8c615
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeApplySyncController.java
@@ -0,0 +1,169 @@
+package org.springblade.code.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.vci.mdm.dto.datapush.result.ResultJsonDTO;
+import com.vci.mdm.dto.datapush.result.ResultNodeDataDTO;
+import com.vci.mdm.dto.datapush.result.ResultNodeObjectDTO;
+import com.vci.mdm.service.UniversalInterfaceI;
+import com.vci.starter.web.annotation.controller.VciUnCheckRight;
+import com.vci.starter.web.annotation.controller.VciUnUseResponseAdvice;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+
+/**
+ * 涓婚搴撳垎绫绘帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+@RestController
+@VciUnCheckRight
+@RequestMapping("/codeSyncUniversalControoler")
+public class CodeApplySyncController {
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+ /**
+ * 鎺ュ彛闆嗘垚鏈嶅姟
+ */
+ @Autowired
+ private UniversalInterfaceI universalInterface;
+ /****
+ * 鐢宠鎺ュ彛
+ * @param dataString 灞炴�т俊鎭�
+ * @param dataType 鏁版嵁鏍煎紡绫诲瀷
+ * @return
+ * @throws Throwable
+ */
+ @VciUnCheckRight
+ @VciUnUseResponseAdvice
+ @PostMapping("/applyCode")
+ public String applyCode(@RequestParam("dataString")String dataString,@RequestParam("dataType")String dataType) {
+ String result="";
+ try {
+ result = universalInterface.applyCode(dataString, dataType);
+ }catch (Throwable e){
+ e.printStackTrace();
+ logger.error("applyCode->"+e.getMessage());
+ }
+ return result;
+ }
+
+ /****
+ * 鏇存柊/鍒犻櫎/鐘舵�佹帴鍙�
+ * @param dataString 灞炴�т俊鎭�
+ * @param dataType 鏁版嵁鏍煎紡绫诲瀷
+ * @return
+ * @throws Throwable
+ */
+ @VciUnCheckRight
+ @VciUnUseResponseAdvice
+ @PostMapping("/syncData")
+ public String syncData(@RequestParam("dataString")String dataString,@RequestParam("dataType")String dataType) {
+ String result="";
+ try {
+ result= universalInterface.syncEditData(dataString,dataType);
+ }catch (Throwable e){
+ e.printStackTrace();;
+ logger.error("syncData->"+e.getMessage());
+ }
+ return result;
+ }
+
+
+ /****
+ * 鏌ヨ鍒嗙被鍙�
+ * @param dataString 灞炴�т俊鎭�
+ * @param dataType 鏁版嵁鏍煎紡绫诲瀷
+ * @return
+ * @throws Throwable
+ */
+ @VciUnCheckRight
+ @VciUnUseResponseAdvice
+ @PostMapping("/queryClassify")
+ public String queryClassify(@RequestParam("dataString")String dataString,@RequestParam("dataType")String dataType) throws Throwable {
+ String result="";
+ try {
+ result = universalInterface.queryClassify(dataString, dataType);
+ }catch (Throwable e){
+ e.printStackTrace();
+ logger.error("queryClassify->"+e.getMessage());
+ }
+ return result;
+ }
+
+ /****
+ * 鏌ヨ鍒嗙被鍙�
+ * @param dataString 灞炴�т俊鎭�
+ * @param dataType 鏁版嵁鏍煎紡绫诲瀷
+ * @return
+ * @throws Throwable
+ */
+ @VciUnCheckRight
+ @VciUnUseResponseAdvice
+ @PostMapping("/queryData")
+ public String queryData(@RequestParam("dataString")String dataString,@RequestParam("dataType")String dataType) throws Throwable {
+ String result="";
+ try {
+ result= universalInterface.queryData(dataString,dataType);
+ }catch (Throwable e){
+ e.printStackTrace();
+ logger.error("queryData->"+e.getMessage());
+ }
+ return result;
+ }
+
+ /****
+ * 鏌ヨ鍒嗙被鍙�
+ * @param dataString 灞炴�т俊鎭�
+ * @param dataType 鏁版嵁鏍煎紡绫诲瀷
+ * @return
+ * @throws Throwable
+ */
+ @VciUnCheckRight
+ @VciUnUseResponseAdvice
+ @PostMapping("/testPushData")
+ public String testPushData(@RequestParam("dataString")String dataString, @RequestParam("dataType")String dataType) throws Throwable {
+ String result="";
+ ResultJsonDTO resultJsonDTO=new ResultJsonDTO();
+ ResultNodeDataDTO resultNodeDataDTO =new ResultNodeDataDTO();
+ ResultNodeObjectDTO resultNodeObjectDTO=new ResultNodeObjectDTO();
+ resultNodeObjectDTO.setCode("01001");
+ resultNodeObjectDTO.setOid("0001");
+ resultNodeObjectDTO.setMsg("娴嬭瘯鎴愬姛");
+ resultNodeObjectDTO.setErroid("0");
+ resultNodeDataDTO.setObject(Arrays.asList(resultNodeObjectDTO));
+ if(dataType.equalsIgnoreCase("json")){
+ resultJsonDTO.setData(resultNodeDataDTO);
+ Object object = JSONObject.toJSON(resultJsonDTO);
+ result = object.toString();
+ }else{
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(ResultNodeDataDTO.class);
+ xStream.autodetectAnnotations(true);
+ String results=xStream.toXML(resultNodeDataDTO);
+ result ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + results;
+
+ }
+ //result="\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" ?><data>\\n <object code=\\\"01001\\\" oid=\\\"0001\\\" erroid=\\\"0\\\" msg=\\\"娴嬭瘯鎴愬姛\\\"/>\\n</data>\"";
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ /* XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(ResultNodeDataDTO.class);
+ xStream.autodetectAnnotations(true);
+ ResultNodeDataDTO resultNodeDataDTOs = (ResultNodeDataDTO) xStream.fromXML(result);
+ resultJsonDTO.setData(resultNodeDataDTO);*/
+ return result;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeBasicSecController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeBasicSecController.java
new file mode 100644
index 0000000..3363a60
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeBasicSecController.java
@@ -0,0 +1,190 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeBasicSecDTO;
+import com.vci.mdm.pagemodel.CodeBasicSecVO;
+import com.vci.mdm.service.CodeBasicSecServiceI;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.Tree;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * 鐮佹鍩虹淇℃伅鎺у埗鍣�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeBasicSecController")
+public class CodeBasicSecController {
+ /**
+ * 鐮佹鍩虹淇℃伅 鏈嶅姟
+ */
+ @Autowired
+ private CodeBasicSecServiceI codeBasicSecService;
+
+ /**
+ * 鐮佹鍩虹淇℃伅鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃
+ */
+ @GetMapping("/gridCodeBasicSec")
+ public DataGrid<CodeBasicSecVO> gridCodeBasicSec(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeBasicSecService.gridCodeBasicSec(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鐮佹鍩虹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeBasicSecVO> addSave(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
+ CodeBasicSecVO codeBasicSecVO = null;
+ try {
+ codeBasicSecVO = codeBasicSecService.addSave(codeBasicSecDTO);
+ } catch (VciBaseException e) {
+ return BaseResult.fail(e.getCode());
+ }
+ return BaseResult.success(codeBasicSecVO);
+ }
+
+ /**
+ * 淇敼 鐮佹鍩虹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeBasicSecVO> editSave(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
+ CodeBasicSecVO codeBasicSecVO = null;
+ try {
+ codeBasicSecVO = codeBasicSecService.editSave(codeBasicSecDTO);
+ } catch (VciBaseException e) {
+ return BaseResult.fail(e.getCode());
+ }
+ return BaseResult.success(codeBasicSecVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鐮佹鍩虹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeBasicSec(CodeBasicSecDTO codeBasicSecDTO) {
+ return codeBasicSecService.deleteCodeBasicSec(codeBasicSecDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鐮佹鍩虹淇℃伅
+ * @param oid 涓婚敭
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeBasicSecVO> getObjectByOid(String oid){
+ CodeBasicSecVO codeBasicSecVO = codeBasicSecService.getObjectByOid(oid);
+ return BaseResult.success(codeBasicSecVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鐮佹鍩虹淇℃伅
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeBasicSecVO> listCodeBasicSecByOids(String oids){
+ Collection<CodeBasicSecVO> voCollection = codeBasicSecService.listCodeBasicSecByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鐮佹鍩虹淇℃伅鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeBasicSecVO> refDataGridCodeBasicSec(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeBasicSecService.refDataGridCodeBasicSec(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鍙傛暟鍒嗙被鐮佹鍩虹淇℃伅鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑锛屽繀椤昏鏈夌紪鐮佽鍒欑殑涓婚敭 pkCodeRule
+ * @return 鐮佹鐨勪俊鎭�
+ */
+ @GetMapping("/refDataGridClassifySec")
+ public DataGrid<CodeBasicSecVO> refDataGridClassifySec(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeBasicSecService.refDataGridClassifySec(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鍏嬮殕鐮佹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱idArr锛氶�夋嫨婧愮爜娈典富閿殑闆嗗悎锛宲kCodeRule锛氱洰鏍囩紪鐮佽鍒欑殑涓婚敭
+ * @return 鍏嬮殕缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @PostMapping("/clone")
+ public BaseResult cloneCodeBasicSec(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
+ VciBaseUtil.alertNotNull(codeBasicSecDTO.getOidArr(),"閫夋嫨鐮佹涓婚敭");
+ List<String> oidArr = VciBaseUtil.str2List(codeBasicSecDTO.getOidArr());
+ if (CollectionUtils.isEmpty(oidArr)){
+ return BaseResult.fail("閫夋嫨鐮佹涓婚敭涓嶈兘涓虹┖");
+ }
+ return codeBasicSecService.cloneCodeBasicSec(oidArr,codeBasicSecDTO.getPkCodeRule());
+ }
+
+ /**
+ * 鏌ヨ鐩爣鍒嗙被鐮佹鎵�鍦ㄧ殑鏍戠粨鏋�
+ * @param oid 鐩爣鍒嗙被鐮佹涓婚敭
+ * @return 鍒嗙被鐮佹鏍戠粨鏋�
+ */
+ @GetMapping("/treeCodeClassifySec")
+ public List<Tree> gridCodeClassifySecTree (String oid){
+ VciBaseUtil.alertNotNull(oid,"鍒嗙被鐮佹涓婚敭");
+ return codeBasicSecService.gridCodeClassifySecTree(oid);
+ }
+
+ /**
+ * 涓婄Щ
+ * @param oid 涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @PostMapping("/upOrderNum")
+ public BaseResult upOrderNum(String oid){
+ codeBasicSecService.upOrderNum(oid);
+ return BaseResult.success();
+ }
+
+ /**
+ * 涓嬬Щ
+ * @param oid 涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @PostMapping("/downOrderNum")
+ public BaseResult downOrderNum(String oid){
+ codeBasicSecService.downOrderNum(oid);
+ return BaseResult.success();
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeButtonController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeButtonController.java
new file mode 100644
index 0000000..4285c64
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeButtonController.java
@@ -0,0 +1,137 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeButtonDTO;
+import com.vci.mdm.pagemodel.CodeButtonVO;
+import com.vci.mdm.service.CodeButtonServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeButtonController")
+public class CodeButtonController {
+ /**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞� 鏈嶅姟
+ */
+ @Autowired
+ private CodeButtonServiceI codeButtonService;
+
+ /**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曞垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeButton")
+ public DataGrid<CodeButtonVO> gridCodeButton(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+
+ return codeButtonService.gridCodeButton(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeButtonVO> addSave(@RequestBody CodeButtonDTO codeButtonDTO){
+ CodeButtonVO codeButtonVO = codeButtonService.addSave(codeButtonDTO);
+ return BaseResult.success(codeButtonVO);
+ }
+
+ /**
+ * 淇敼 涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeButtonVO> editSave(@RequestBody CodeButtonDTO codeButtonDTO){
+ CodeButtonVO codeButtonVO = codeButtonService.editSave(codeButtonDTO);
+ return BaseResult.success(codeButtonVO);
+ }
+
+
+ /**
+ * 鍒犻櫎涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeButton( CodeButtonDTO codeButtonDTO) {
+ return codeButtonService.deleteCodeButton(codeButtonDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param oid 涓婚敭
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeButtonVO> getObjectByOid(String oid){
+ CodeButtonVO codeButtonVO = codeButtonService.getObjectByOid(oid);
+ return BaseResult.success(codeButtonVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeButtonVO> listCodeButtonByOids(String oids){
+ Collection<CodeButtonVO> voCollection = codeButtonService.listCodeButtonByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+ /**
+ * 鍚敤
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍚敤缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @PostMapping("/enableData")
+ public BaseResult enableOrgDuty(CodeButtonDTO buttonDTO) {
+ return codeButtonService.enableCodeButton(buttonDTO);
+ }
+
+ /**
+ * 鍋滅敤
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍋滅敤缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @PostMapping("/disableData")
+ public BaseResult disableOrgDuty(CodeButtonDTO buttonDTO) {
+ return codeButtonService.disableCodeButton(buttonDTO);
+ }
+
+
+
+
+ /**
+ * 鍙傜収涓绘暟鎹腑鐨勬寜閽墿灞曞垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeButtonVO> refDataGridCodeButton(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeButtonService.refDataGridCodeButton(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyController.java
new file mode 100644
index 0000000..fd3a904
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyController.java
@@ -0,0 +1,255 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyDTO;
+import com.vci.mdm.pagemodel.CodeClassifyVO;
+import com.vci.mdm.service.CodeClassifyServiceI;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.ControllerUtil;
+import com.vci.starter.web.util.LangBaseUtil;
+import com.vci.starter.web.util.LocalFileUtil;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.OsAttributeVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.List;
+
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED;
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED;
+
+
+/**
+ * 涓婚搴撳垎绫绘帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+@RestController
+@RequestMapping("/codeClassifyController")
+public class CodeClassifyController {
+ /**
+ * 涓婚搴撳垎绫� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceI codeClassifyService;
+
+ /**
+ * 涓婚搴撳垎绫绘爲
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撳垎绫绘樉绀烘爲
+ */
+ @GetMapping("/treeCodeClassify")
+ public List<Tree> treeCodeClassify(TreeQueryObject treeQueryObject) {
+ return codeClassifyService.treeCodeClassify(treeQueryObject);
+ }
+
+ /**
+ * 涓婚搴撶殑鏍�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撴樉绀烘爲
+ */
+ @GetMapping("/treeTopCodeClassify")
+ public List<Tree> treeTopCodeClassify(TreeQueryObject treeQueryObject){
+ return codeClassifyService.treeTopCodeClassify(treeQueryObject);
+ }
+
+ /**
+ * 澧炲姞 涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyVO> addSave(@RequestBody CodeClassifyDTO codeClassifyDTO){
+ if(codeClassifyDTO.getOrdernum()==null){
+ codeClassifyDTO.setOrdernum(0);
+ }
+ CodeClassifyVO codeClassifyVO = codeClassifyService.addSave(codeClassifyDTO);
+ return BaseResult.success(codeClassifyVO);
+ }
+
+ /**
+ * 淇敼 涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyVO> editSave(@RequestBody CodeClassifyDTO codeClassifyDTO){
+ return codeClassifyService.editSave(codeClassifyDTO);
+ }
+
+ /**
+ * 妫�鏌� 涓婚搴撳垎绫绘槸鍚﹀垹闄�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ @PostMapping( "/checkIsCanDelete")
+ public BaseResult checkIsCanDelete(CodeClassifyDTO codeClassifyDTO) {
+ return codeClassifyService.checkIsCanDelete(codeClassifyDTO);
+ }
+
+ /**
+ * 鍒犻櫎涓婚搴撳垎绫�
+ * @param codeClassifyDTO锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassify(CodeClassifyDTO codeClassifyDTO) {
+ return codeClassifyService.deleteCodeClassify(codeClassifyDTO);
+ }
+
+ /**
+ * 鍚敤
+ * @param codeClassifyDTO
+ * @return
+ */
+ @PostMapping( "/enableData")
+ public BaseResult enable(CodeClassifyDTO codeClassifyDTO) {
+ return codeClassifyService.updateLcStatus(codeClassifyDTO.getOid(),FRAMEWORK_DATA_ENABLED);
+ }
+
+ /**
+ * 鍋滅敤
+ * @param codeClassifyDTO
+ * @return
+ */
+ @PostMapping( "/disableData")
+ public BaseResult disable(CodeClassifyDTO codeClassifyDTO) {
+ return codeClassifyService.updateLcStatus(codeClassifyDTO.getOid(),FRAMEWORK_DATA_DISABLED);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撳垎绫�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撳垎绫绘樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyVO> getObjectByOid(String oid){
+ CodeClassifyVO codeClassifyVO = codeClassifyService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撳垎绫绘樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyVO> listCodeClassifyByOids(String oids){
+ Collection<CodeClassifyVO> voCollection = codeClassifyService.listCodeClassifyByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+ /**
+ * 鍙傜収鏍� 涓婚搴撳垎绫�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撳垎绫绘樉绀烘爲
+ */
+ @GetMapping("/referTree")
+ public List<Tree> referTree(TreeQueryObject treeQueryObject) {
+ return codeClassifyService.referTree(treeQueryObject);
+ }
+
+ /**
+ * 瀵煎嚭鍒嗙被
+ * @param oid 鍒嗙被涓婚敭
+ */
+ @GetMapping("/exportClassify")
+ public void exportClassify(String oid, HttpServletResponse response) throws IOException {
+ String excelName = codeClassifyService.exportClassify(oid);
+ try {
+ ControllerUtil.writeFileToResponse(response,excelName);
+ } catch (Throwable e) {
+ //濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
+ String msg = LangBaseUtil.getErrorMsg(e);
+ String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒.txt";
+ LocalFileUtil.writeContentToFile(msg,errorFile);
+ ControllerUtil.writeFileToResponse(response,errorFile);
+ }
+ }
+
+ /**
+ * 涓嬭浇瀵煎叆鐨勬ā鏉�
+ * @param response 鍝嶅簲瀵硅薄
+ * @throws IOException 鎶涘嚭寮傚父
+ */
+ @GetMapping("/downloadImportExcel")
+ public void downloadImportExcel(HttpServletResponse response) throws IOException{
+ String excelName = codeClassifyService.createImportExcel();
+ try {
+ ControllerUtil.writeFileToResponse(response,excelName);
+ } catch (Throwable e) {
+ //濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
+ String msg = LangBaseUtil.getErrorMsg(e);
+ if(StringUtils.isBlank(msg)){
+ msg = "鏈煡閿欒";
+ }
+ ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
+ }
+ }
+
+ /**
+ * 瀵煎叆鍒嗙被
+ * @param file excel鐨勫唴瀹�
+ * @return 鎵ц缁撴灉锛宱bj鏈夊�艰〃绀烘湁閿欒淇℃伅锛岄渶瑕佽闂甦ownloadErrorFile鏉ヤ笅杞�
+ */
+ @PostMapping("/importClassify")
+ public BaseResult importClassify(MultipartFile file) {
+ String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
+ File file1 = new File(excelFileName);
+ try {
+ file.transferTo(new File(excelFileName));
+ codeClassifyService.importClassify(file1);
+ return BaseResult.success();
+ }catch (Throwable e) {
+ String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.txt";
+ LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile);
+ //鏀惧埌map閲�
+ BaseResult result = BaseResult.fail("瀵煎叆澶辫触");
+ result.setObj(ControllerUtil.putErrorFile(errorFile));
+ return result;
+ }finally {
+ file1.delete();
+ }
+ }
+
+ /**
+ * 涓嬭浇閿欒鐨勬枃浠朵俊鎭�
+ * @param uuid 鍞竴鏍囪瘑
+ * @param response 鍝嶅簲瀵硅薄
+ * @throws IOException 鎶涘嚭寮傚父
+ */
+ @GetMapping("/downloadErrorFile")
+ public void downloadErrorFile(String uuid, HttpServletResponse response) throws IOException {
+ ControllerUtil.downloadErrorFile(response,uuid);
+ }
+
+ /**
+ * 鑾峰彇鍒嗙被鍏宠仈鐨勫睘鎬�
+ * @param baseQueryObject 鏌ヨ瀵硅薄锛屽繀椤绘湁codeClassifyOid锛屾敮鎸乮d鍜宯ame涓ょ鏌ヨ鏉′欢(涓嶆敮鎸佸垎椤�)
+ * @return 灞炴�х殑淇℃伅锛屽寘鍚粯璁ょ殑灞炴��
+ */
+ @GetMapping("/listClassifyLinkAttr")
+ public DataGrid<OsAttributeVO> listClassifyLinkAttr(BaseQueryObject baseQueryObject){
+ return codeClassifyService.listClassifyLinkAttr(baseQueryObject);
+ }
+
+ /**
+ * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
+ * @param idPath 缂栧彿鐨勮矾寰勶紝涓�瀹氳浠庢渶椤跺眰鑺傜偣寮�濮嬶紝鏍煎紡涓簒xx/yyy/zz 杩欐牱
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ @GetMapping("/getObjectByIdPath")
+ public CodeClassifyVO getObjectByIdPath(String idPath){
+ return codeClassifyService.getObjectByIdPath(idPath);
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyProcessTempController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyProcessTempController.java
new file mode 100644
index 0000000..705d418
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyProcessTempController.java
@@ -0,0 +1,130 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyProcessTempDTO;
+import com.vci.mdm.pagemodel.CodeClassifyProcessTempVO;
+import com.vci.mdm.service.CodeClassifyProcessTempServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeClsProcessTempController")
+public class CodeClassifyProcessTempController {
+ /**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyProcessTempServiceI codeClassifyProcessTempService;
+
+ /**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉垮垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeClassifyProcessTemp")
+ public DataGrid<CodeClassifyProcessTempVO> gridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyProcessTempService.gridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyProcessTempVO> addSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){
+ CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.addSave(codeClassifyProcessTempDTO);
+ return BaseResult.success(codeClassifyProcessTempVO);
+ }
+
+ /**
+ * 淇敼 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyProcessTempVO> editSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){
+ CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.editSave(codeClassifyProcessTempDTO);
+ return BaseResult.success(codeClassifyProcessTempVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyProcessTemp( CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) {
+ return codeClassifyProcessTempService.deleteCodeClassifyProcessTemp(codeClassifyProcessTempDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param oid 涓婚敭
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyProcessTempVO> getObjectByOid(String oid){
+ CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyProcessTempVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyProcessTempVO> listCodeClassifyProcessTempByOids(String oids){
+ Collection<CodeClassifyProcessTempVO> voCollection = codeClassifyProcessTempService.listCodeClassifyProcessTempByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉垮垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeClassifyProcessTempVO> refDataGridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyProcessTempService.refDataGridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 浣跨敤妯℃澘鑾峰彇浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeTemplateOid 妯℃澘鐨勪富閿�
+ * @param processUse 娴佺▼鐨勭敤閫�
+ * @return 娴佺▼妯℃澘鐨勪俊鎭�
+ */
+ @GetMapping("/listProcessTemplate")
+ public BaseResult<CodeClassifyProcessTempVO> listProcessTemplate(String codeTemplateOid,String processUse){
+ List<CodeClassifyProcessTempVO> processTempVOList = codeClassifyProcessTempService.listProcessTemplate(codeTemplateOid,processUse);
+ BaseResult result = BaseResult.success();
+ result.setData(processTempVOList);
+ return result;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTempMapItemController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTempMapItemController.java
new file mode 100644
index 0000000..4f7f95c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTempMapItemController.java
@@ -0,0 +1,115 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyTempMapItemDTO;
+import com.vci.mdm.pagemodel.CodeClassifyTempMapItemVO;
+import com.vci.mdm.service.CodeClassifyTempMapItemServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-03-10
+ */
+@RestController
+@RequestMapping("/codeClsTempMapItemController")
+public class CodeClassifyTempMapItemController {
+ /**
+ * 鏄犲皠瑙勫垯鐨勬槑缁� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTempMapItemServiceI codeClassifyTempMapItemService;
+
+ /**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗗垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeClassifyTempMapItem")
+ public DataGrid<CodeClassifyTempMapItemVO> gridCodeClassifyTempMapItem(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTempMapItemService.gridCodeClassifyTempMapItem(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyTempMapItemVO> addSave(@RequestBody CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO){
+ CodeClassifyTempMapItemVO codeClassifyTempMapItemVO = codeClassifyTempMapItemService.addSave(codeClassifyTempMapItemDTO);
+ return BaseResult.success(codeClassifyTempMapItemVO);
+ }
+
+ /**
+ * 淇敼 鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyTempMapItemVO> editSave(@RequestBody CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO){
+ CodeClassifyTempMapItemVO codeClassifyTempMapItemVO = codeClassifyTempMapItemService.editSave(codeClassifyTempMapItemDTO);
+ return BaseResult.success(codeClassifyTempMapItemVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyTempMapItem( CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) {
+ return codeClassifyTempMapItemService.deleteCodeClassifyTempMapItem(codeClassifyTempMapItemDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param oid 涓婚敭
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyTempMapItemVO> getObjectByOid(String oid){
+ CodeClassifyTempMapItemVO codeClassifyTempMapItemVO = codeClassifyTempMapItemService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyTempMapItemVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyTempMapItemVO> listCodeClassifyTempMapItemByOids(String oids){
+ Collection<CodeClassifyTempMapItemVO> voCollection = codeClassifyTempMapItemService.listCodeClassifyTempMapItemByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鏄犲皠瑙勫垯鐨勬槑缁嗗垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeClassifyTempMapItemVO> refDataGridCodeClassifyTempMapItem(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTempMapItemService.refDataGridCodeClassifyTempMapItem(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateAttrController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateAttrController.java
new file mode 100644
index 0000000..c62e088
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateAttrController.java
@@ -0,0 +1,165 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.OsBtmTypeAttributeVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeClassifyTempAttrController")
+public class CodeClassifyTemplateAttrController {
+ /**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateAttrServiceI codeClassifyTemplateAttrService;
+
+
+ /**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeClassifyTemplateAttr")
+ public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTemplateAttrService.gridCodeClassifyTemplateAttr(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyTemplateAttrVO> addSave(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO){
+ CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO = codeClassifyTemplateAttrService.addSave(codeClassifyTemplateAttrDTO);
+ return BaseResult.success(codeClassifyTemplateAttrVO);
+ }
+
+ /**
+ * 鎵归噺淇濆瓨鍒楄〃鏁版嵁
+ * @param list
+ * @return
+ */
+ @PostMapping( "/batchAddSave")
+ public BaseResult<List<CodeClassifyTemplateAttrVO>> batchAddSaves(@RequestBody List<CodeClassifyTemplateAttrDTO> list){
+ if(CollectionUtils.isEmpty(list)){
+ return BaseResult.fail("鍒楄〃涓嶈兘涓虹┖!");
+ }
+ List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOs = codeClassifyTemplateAttrService.batchAddSave(list);
+ return BaseResult.success(codeClassifyTemplateAttrVOs);
+ }
+
+
+ /**
+ * 淇敼 涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyTemplateAttrVO> editSave(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO){
+ return codeClassifyTemplateAttrService.editSave(codeClassifyTemplateAttrDTO);
+ }
+
+
+ /**
+ * 鍒犻櫎涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyTemplateAttr(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) {
+ return codeClassifyTemplateAttrService.deleteCodeClassifyTemplateAttr(codeClassifyTemplateAttrDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param oid 涓婚敭
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyTemplateAttrVO> getObjectByOid(String oid){
+ CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO = codeClassifyTemplateAttrService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyTemplateAttrVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByOids(String oids){
+ Collection<CodeClassifyTemplateAttrVO> voCollection = codeClassifyTemplateAttrService.listCodeClassifyTemplateAttrByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTemplateAttrService.refDataGridCodeClassifyTemplateAttr(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鏌ヨ杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�,鎺掗櫎鎺夎繖涓ā鏉垮凡缁忓瓨鍦ㄧ殑灞炴��
+ * @param baseQueryObject
+ * @return
+ */
+ @GetMapping("/codeClassifyTemplateAttrByBtm")
+ public DataGrid<OsBtmTypeAttributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject){
+ return codeClassifyTemplateAttrService.codeClassifyTemplateAttrByBtm(baseQueryObject);
+ }
+
+ /**
+ * 鏌ヨ杩欎釜涓氬姟绫诲瀷涓嬨�佽繖涓ā鏉垮凡缁忓瓨鍦ㄧ殑灞炴��
+ * @param baseQueryObject
+ * @return
+ */
+ @GetMapping("/codeClassifyTemplateAttrByBtmHave")
+ public DataGrid<OsBtmTypeAttributeVO> codeClassifyTemplateAttrByBtmHave(BaseQueryObject baseQueryObject){
+ return codeClassifyTemplateAttrService.codeClassifyTemplateAttrByBtmHave(baseQueryObject);
+ }
+
+ /**
+ * 鍚屾鍒板叾浠栨ā鏉�
+ * @param codeClassifyAttrDTO id 鑻辨枃鍚嶇О
+ * @return 鎵ц缁撴灉
+ */
+ @PostMapping( "/copyto")
+ public BaseResult copyto(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyAttrDTO) {
+ return codeClassifyTemplateAttrService.copyto(codeClassifyAttrDTO);
+ }
+
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateButtonController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateButtonController.java
new file mode 100644
index 0000000..34c5782
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateButtonController.java
@@ -0,0 +1,115 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyTemplateButtonDTO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateButtonVO;
+import com.vci.mdm.service.CodeClassifyTemplateButtonServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeClsTempButtonController")
+public class CodeClassifyTemplateButtonController {
+ /**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateButtonServiceI codeClassifyTemplateButtonService;
+
+ /**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeClassifyTemplateButton")
+ public DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTemplateButtonService.gridCodeClassifyTemplateButton(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyTemplateButtonVO> addSave(@RequestBody CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO){
+ CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = codeClassifyTemplateButtonService.addSave(codeClassifyTemplateButtonDTO);
+ return BaseResult.success(codeClassifyTemplateButtonVO);
+ }
+
+ /**
+ * 淇敼 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyTemplateButtonVO> editSave(@RequestBody CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO){
+ CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = codeClassifyTemplateButtonService.editSave(codeClassifyTemplateButtonDTO);
+ return BaseResult.success(codeClassifyTemplateButtonVO);
+ }
+
+
+ /**
+ * 鍒犻櫎涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyTemplateButton( CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) {
+ return codeClassifyTemplateButtonService.deleteCodeClassifyTemplateButton(codeClassifyTemplateButtonDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyTemplateButtonVO> getObjectByOid(String oid){
+ CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = codeClassifyTemplateButtonService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyTemplateButtonVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyTemplateButtonVO> listCodeClassifyTemplateButtonByOids(String oids){
+ Collection<CodeClassifyTemplateButtonVO> voCollection = codeClassifyTemplateButtonService.listCodeClassifyTemplateButtonByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTemplateButtonService.refDataGridCodeClassifyTemplateButton(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateController.java
new file mode 100644
index 0000000..6e4db67
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateController.java
@@ -0,0 +1,191 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyTemplateDTO;
+import com.vci.mdm.lifecycle.CodeClassifyTemplateLC;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateVO;
+import com.vci.mdm.service.CodeClassifyTemplateServiceI;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鎺у埗鍣�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeClassifyTemplateController")
+public class CodeClassifyTemplateController {
+ /**
+ * 鍒嗙被妯℃澘瀵硅薄 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateServiceI codeClassifyTemplateService;
+
+ /**
+ * 鍒嗙被妯℃澘瀵硅薄鏍�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+ */
+ @GetMapping("/treeCodeClassifyTemplate")
+ public List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject) {
+ return codeClassifyTemplateService.treeCodeClassifyTemplate(treeQueryObject);
+ }
+
+ /**
+ * 鍒嗙被妯℃澘鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ */
+ @GetMapping("/gridCodeClassifyTemplate")
+ public DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(BaseQueryObject baseQueryObject){
+ return codeClassifyTemplateService.gridCodeClassifyTemplate(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 澧炲姞 鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyTemplateVO> addSave(@RequestBody CodeClassifyTemplateDTO codeClassifyTemplateDTO){
+ return codeClassifyTemplateService.addSave(codeClassifyTemplateDTO);
+ }
+
+ /**
+ * 淇敼 鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyTemplateVO> editSave(@RequestBody CodeClassifyTemplateDTO codeClassifyTemplateDTO){
+ return codeClassifyTemplateService.editSave(codeClassifyTemplateDTO);
+ }
+
+ /**
+ * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ @PostMapping( "/checkIsCanDelete")
+ public BaseResult checkIsCanDelete(@RequestBody CodeClassifyTemplateDTO codeClassifyTemplateDTO) {
+ return codeClassifyTemplateService.checkIsCanDelete(codeClassifyTemplateDTO);
+ }
+
+ /**
+ * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyTemplate( CodeClassifyTemplateDTO codeClassifyTemplateDTO) {
+ return codeClassifyTemplateService.deleteCodeClassifyTemplate(codeClassifyTemplateDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyTemplateVO> getObjectByOid(String oid){
+ CodeClassifyTemplateVO codeClassifyTemplateVO = codeClassifyTemplateService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyTemplateVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被妯℃澘瀵硅薄
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyTemplateVO> listCodeClassifyTemplateByOids(String oids){
+ Collection<CodeClassifyTemplateVO> voCollection = codeClassifyTemplateService.listCodeClassifyTemplateByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+ */
+ @GetMapping("/referTree")
+ public List<Tree> referTree(TreeQueryObject treeQueryObject) {
+ return codeClassifyTemplateService.referTree(treeQueryObject);
+ }
+
+ /**
+ * 鍚敤
+ * @param codeClassifyDTO oid
+ * @return
+ */
+ @PostMapping( "/enableData")
+ public BaseResult enable( CodeClassifyTemplateDTO codeClassifyDTO) {
+ return codeClassifyTemplateService.updateLcStatus(codeClassifyDTO.getOid(), CodeClassifyTemplateLC.RELEASED.getValue());
+ }
+
+ /**
+ * 鍋滅敤
+ * @param codeClassifyDTO oid
+ * @return
+ */
+ @PostMapping( "/disableData")
+ public BaseResult disableData( CodeClassifyTemplateDTO codeClassifyDTO) {
+ return codeClassifyTemplateService.updateLcStatus(codeClassifyDTO.getOid(),CodeClassifyTemplateLC.DISABLED.getValue());
+ }
+
+ /**
+ * 鍐嶇紪杈�
+ * @param codeClassifyDTO oid
+ * @return
+ */
+ @PostMapping( "/editDate")
+ public BaseResult editDate( CodeClassifyTemplateDTO codeClassifyDTO) {
+ return codeClassifyTemplateService.updateLcStatus(codeClassifyDTO.getOid(),CodeClassifyTemplateLC.EDITING.getValue());
+ }
+
+ /**
+ * 鍗囩増
+ * @param codeClassifyDTO
+ * @return oid妯℃澘oid
+ */
+ @PostMapping( "/upgrade")
+ public BaseResult Upgrade(@RequestBody CodeClassifyTemplateDTO codeClassifyDTO) {
+
+ return codeClassifyTemplateService.Upgrade(codeClassifyDTO);
+ }
+
+ @GetMapping( "/upgrade1")
+ public BaseResult upgrade1( CodeClassifyTemplateDTO codeClassifyDTO) {
+
+ return Upgrade(codeClassifyDTO);
+ }
+
+ /**
+ * 鍏嬮殕
+ * @param codeClassifyDTO
+ * @return oid妯℃澘oid
+ */
+ @PostMapping( "/copy")
+ public BaseResult copyTemplate(@RequestBody CodeClassifyTemplateDTO codeClassifyDTO) {
+
+ return codeClassifyTemplateService.copyTemplate(codeClassifyDTO);
+ }
+
+ @GetMapping( "/copyTemplate1")
+ public BaseResult copyTemplate1( CodeClassifyTemplateDTO codeClassifyDTO) {
+
+ return copyTemplate(codeClassifyDTO);
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateMapController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateMapController.java
new file mode 100644
index 0000000..9e88c95
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateMapController.java
@@ -0,0 +1,115 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeClassifyTemplateMapDTO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateMapVO;
+import com.vci.mdm.service.CodeClassifyTemplateMapServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeClassifyTempMapController")
+public class CodeClassifyTemplateMapController {
+ /**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateMapServiceI codeClassifyTemplateMapService;
+
+ /**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欏垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeClassifyTemplateMap")
+ public DataGrid<CodeClassifyTemplateMapVO> gridCodeClassifyTemplateMap(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTemplateMapService.gridCodeClassifyTemplateMap(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyTemplateMapVO> addSave(@RequestBody CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO){
+ CodeClassifyTemplateMapVO codeClassifyTemplateMapVO = codeClassifyTemplateMapService.addSave(codeClassifyTemplateMapDTO);
+ return BaseResult.success(codeClassifyTemplateMapVO);
+ }
+
+ /**
+ * 淇敼 涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyTemplateMapVO> editSave(@RequestBody CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO){
+ CodeClassifyTemplateMapVO codeClassifyTemplateMapVO = codeClassifyTemplateMapService.editSave(codeClassifyTemplateMapDTO);
+ return BaseResult.success(codeClassifyTemplateMapVO);
+ }
+
+
+ /**
+ * 鍒犻櫎涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyTemplateMap( CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) {
+ return codeClassifyTemplateMapService.deleteCodeClassifyTemplateMap(codeClassifyTemplateMapDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyTemplateMapVO> getObjectByOid(String oid){
+ CodeClassifyTemplateMapVO codeClassifyTemplateMapVO = codeClassifyTemplateMapService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyTemplateMapVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyTemplateMapVO> listCodeClassifyTemplateMapByOids(String oids){
+ Collection<CodeClassifyTemplateMapVO> voCollection = codeClassifyTemplateMapService.listCodeClassifyTemplateMapByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収涓婚搴撴ā鏉挎槧灏勮鍒欏垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeClassifyTemplateMapVO> refDataGridCodeClassifyTemplateMap(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeClassifyTemplateMapService.refDataGridCodeClassifyTemplateMap(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyValueController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyValueController.java
new file mode 100644
index 0000000..fab5547
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyValueController.java
@@ -0,0 +1,146 @@
+package org.springblade.code.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.mdm.dto.CodeClassifyValueDTO;
+import com.vci.mdm.pagemodel.CodeClassifyValueVO;
+import com.vci.mdm.service.CodeClassifyValueServiceI;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.Tree;
+import com.vci.starter.web.pagemodel.TreeQueryObject;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeClassifyValueController")
+public class CodeClassifyValueController {
+ /**
+ * 鍒嗙被鐮佹鐨勭爜鍊� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyValueServiceI codeClassifyValueService;
+
+ /**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼爲
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀烘爲
+ */
+ @GetMapping("/treeCodeClassifyValue")
+ public List<Tree> treeCodeClassifyValue(TreeQueryObject treeQueryObject) {
+ return codeClassifyValueService.treeCodeClassifyValue(treeQueryObject);
+ }
+
+ /**
+ * 澧炲姞 鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeClassifyValueVO> addSave(@RequestBody CodeClassifyValueDTO codeClassifyValueDTO){
+ CodeClassifyValueVO codeClassifyValueVO = codeClassifyValueService.addSave(codeClassifyValueDTO);
+ return BaseResult.success(codeClassifyValueVO);
+ }
+
+ /**
+ * 淇敼 鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeClassifyValueVO> editSave(@RequestBody CodeClassifyValueDTO codeClassifyValueDTO){
+ CodeClassifyValueVO codeClassifyValueVO = codeClassifyValueService.editSave(codeClassifyValueDTO);
+ return BaseResult.success(codeClassifyValueVO);
+ }
+
+ /**
+ * 妫�鏌� 鍒嗙被鐮佹鐨勭爜鍊兼槸鍚﹀垹闄�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ @PostMapping( "/checkIsCanDelete")
+ public BaseResult checkIsCanDelete( CodeClassifyValueDTO codeClassifyValueDTO) {
+ return codeClassifyValueService.checkIsCanDelete(codeClassifyValueDTO);
+ }
+
+ /**
+ * 鍒犻櫎鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeClassifyValue( CodeClassifyValueDTO codeClassifyValueDTO) {
+ return codeClassifyValueService.deleteCodeClassifyValue(codeClassifyValueDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被鐮佹鐨勭爜鍊�
+ * @param oid 涓婚敭
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeClassifyValueVO> getObjectByOid(String oid){
+ CodeClassifyValueVO codeClassifyValueVO = codeClassifyValueService.getObjectByOid(oid);
+ return BaseResult.success(codeClassifyValueVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被鐮佹鐨勭爜鍊�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeClassifyValueVO> listCodeClassifyValueByOids(String oids){
+ Collection<CodeClassifyValueVO> voCollection = codeClassifyValueService.listCodeClassifyValueByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鏍� 鍒嗙被鐮佹鐨勭爜鍊�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀烘爲
+ */
+ @GetMapping("/referTree")
+ public List<Tree> referTree(TreeQueryObject treeQueryObject) {
+ return codeClassifyValueService.referTree(treeQueryObject);
+ }
+
+ /**
+ * 淇濆瓨椤甸潰涓婄殑鍒嗙被鐮佹鐮佸�硷紝涓昏鏄繚瀛樺簭鍙风敤浜庢帓搴忋�傚鏋滄暟鎹簱涓瓨鍦ㄩ〉闈紶杈撳璞¢泦鍚堜腑涓嶅瓨鍦ㄧ殑鍊硷紝鍒欏垹闄ゃ��
+ * @param param 鍙傛暟锛屽寘鎷琩toList 椤甸潰浼犺緭瀵硅薄闆嗗悎 鍜宑odeclassifysecoid 鍒嗙被鐮佹涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @PostMapping("/saveOrder")
+ public BaseResult saveOrder(@RequestBody Map<String,Object> param){
+ JSONArray json = JSONArray.parseArray(String.valueOf(param.get("dtoList")));
+ List<CodeClassifyValueDTO> dtoList = new ArrayList<>();
+ for (int i = 0; i < json.size(); i++) {
+ CodeClassifyValueDTO codeFixedValueDTO = JSONObject.toJavaObject(JSONObject.parseObject(JSONObject.toJSONString(json.get(i))), CodeClassifyValueDTO.class);
+ dtoList.add(codeFixedValueDTO);
+ }
+ String codeclassifysecoid = (String) param.get("codeclassifysecoid");
+ VciBaseUtil.alertNotNull(dtoList,"鐮佸�奸泦鍚�");
+ if (CollectionUtils.isEmpty(dtoList)){
+ return BaseResult.success();
+ }
+ return codeClassifyValueService.batchSave4Order(dtoList,codeclassifysecoid);
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeDuckingController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeDuckingController.java
new file mode 100644
index 0000000..905c58c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeDuckingController.java
@@ -0,0 +1,286 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.*;
+import com.vci.mdm.model.*;
+import com.vci.mdm.pagemodel.*;
+import com.vci.mdm.service.CodeDuckingServiceI;
+import com.vci.mdm.service.CodeDuckingSyncServiceI;
+import com.vci.mdm.service.DockingPreApplyDataServiceI;
+import com.vci.mdm.service.DockingPreAttrMappingSeviceI;
+import com.vci.starter.web.annotation.controller.VciUnCheckRight;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.ControllerUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.mdm.constant.MdmDuckingConstant.DATA_LOGE_OUT;
+
+
+/**
+ * 涓绘暟鎹紪鐮侀�氱敤闆嗘垚鎺у埗鍣�
+ *
+ * @author wangyi
+ * @date 2022-03-20
+ */
+@RestController
+@RequestMapping("/ducking")
+class CodeDuckingController {
+
+ /**
+ * 闆嗘垚鏈嶅姟
+ */
+ @Autowired
+ private CodeDuckingServiceI codeDuckingServiceI;
+
+ /**
+ * 闆嗘垚鏈嶅姟
+ */
+ @Autowired
+ private CodeDuckingSyncServiceI codeDuckingSyncServiceI;
+ /***
+ * 闆嗘垚灞炴�ф搷浣滃眰
+ */
+ @Autowired
+ private DockingPreAttrMappingSeviceI dockingPreAttrMappingSeviceI;
+
+ /**
+ * 棰勭敵璇锋帴鏀堕泦鎴愭暟鎹�
+ */
+ @Autowired
+ private DockingPreApplyDataServiceI dockingPreApplyDataServiceI;
+
+ public CodeDuckingController() {
+ }
+
+
+
+
+ /**
+ * 淇敼 涓婚搴撳垎绫�
+ * @param dockingPreApplyDataDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/setDataClassId")
+ public BaseResult<List<DockingPreApplyDataVO>> batchSetDataClassId(@RequestBody DockingPreApplyDataDTO dockingPreApplyDataDTO){
+ List<DockingPreApplyDataVO> dataDTOList= dockingPreApplyDataServiceI.batchSetDataClassId(dockingPreApplyDataDTO);
+ return BaseResult.success(dataDTOList);
+ }
+
+ /***
+ * 鏍规嵁閫夋嫨棰濋鐢宠鐨勬暟鎹嬀閫夋暟鎹�
+ * @param codeClassifyOid
+ * @param templateOid
+ * @param btmType
+ * @param dataOids
+ * @return
+ */
+ @GetMapping("/gridApplyData")
+ public DataGrid<Map<String,String>> gridApplyData(String codeClassifyOid,String templateOid,String btmType,String dataOids){
+ return dockingPreApplyDataServiceI.gridApplyData(codeClassifyOid,templateOid,btmType,dataOids);
+ }
+
+
+ /***
+ * 鏍规嵁閫夋嫨棰濋鐢宠鐨勬暟鎹嬀閫夋暟鎹�
+ *
+ * @return
+ */
+ @PutMapping("/batchApplyDatas")
+ public BaseResult batchApplyDatas(@RequestBody List<CodeOrderDTO> orderDTOs){
+ return dockingPreApplyDataServiceI.batchApplyDatas(orderDTOs);
+ }
+
+ /**
+ * 闆嗘垚棰勭敵璇峰垪琛�-宸插弽鐮�
+ * @param baseQueryObject
+ * ducking/gridPreDataFinish
+ * @return
+ */
+ @GetMapping("/gridPreDataFinishNum")
+ public DataGrid<DockingPreApplyDataVO> gridDockingPreApplyDataFinishNum(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ baseQueryObject.addCondition("num", QueryOptionConstant.ISNOTNULL);
+ DataGrid<DockingPreApplyDataVO> dockingPreApplyDataVODataGrid = dockingPreApplyDataServiceI.gridDockingPreApplyData(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ return dockingPreApplyDataVODataGrid;
+ }
+
+ /**
+ * 闆嗘垚棰勭敵璇峰垪琛�-宸插鐞�
+ * @param baseQueryObject
+ * ducking/gridPreDataFinish
+ * @return
+ */
+ @GetMapping("/gridPreDataFinish")
+ public DataGrid<DockingPreApplyDataVO> gridDockingPreApplyDataFinish(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ baseQueryObject.addCondition("classifyoid", QueryOptionConstant.ISNOTNULL);
+ DataGrid<DockingPreApplyDataVO> dockingPreApplyDataVODataGrid = dockingPreApplyDataServiceI.gridDockingPreApplyData(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ return dockingPreApplyDataVODataGrid;
+ }
+
+ /**
+ * 闆嗘垚棰勭敵璇峰垪琛�-鏈畬鎴�
+ * @param baseQueryObject
+ * ducking/gridPreDataUnFinish
+ * @return
+ */
+ @GetMapping("/gridPreDataUnFinish")
+ public DataGrid<DockingPreApplyDataVO> gridPreDataUnFinish(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ baseQueryObject.addCondition("num", "null");
+ return dockingPreApplyDataServiceI.gridDockingPreApplyData(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
+ * 蹇呴』瑕佹湁鍒嗙被oid鍜宒ataoid
+ * @return
+ */
+ @PostMapping("/applyData")
+ public BaseResult applyData(@RequestBody List<PreApplyCodeOrderDTO> preApplyCodeOrderDTOList){
+ return dockingPreApplyDataServiceI.applyData(preApplyCodeOrderDTOList);
+ }
+
+ /**
+ * 闆嗘垚棰勭敵璇峰垪琛�-鏌ヨ鏁版嵁璇︾粏淇℃伅
+ * @param dockingPreApplyDataDTO
+ * @return
+ */
+ @GetMapping("/datainfo")
+ @VciUnCheckRight
+ public BaseResult datainfo(DockingPreApplyDataDTO dockingPreApplyDataDTO){
+ return dockingPreApplyDataServiceI.getDataInfoMap(dockingPreApplyDataDTO);
+ }
+
+ /**
+ * data鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridData")
+ public DataGrid<DockingDataDO> gridData(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeDuckingServiceI.gridData(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * data鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridTask")
+ public DataGrid<DockingTaskDO> gridTask(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeDuckingServiceI.gridTask(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鎺ㄩ�佹暟鎹泦鎴愭棩蹇楀垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+ */
+ @GetMapping("/gridLoge")
+ public DataGrid<DockingLogeDO> gridLoge(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ Map<String, String> queryMap = baseQueryObject.getConditionMap();
+ queryMap.put("type",DATA_LOGE_OUT);
+ }
+ return codeDuckingServiceI.gridLoge(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鎺ュ彛param鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+ */
+ @GetMapping("/gridHeader")
+ public DataGrid<SysIntHeaderDO> gridParam(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ Map<String, String> queryMap = baseQueryObject.getConditionMap();
+ queryMap.put("type",DATA_LOGE_OUT);
+ }
+ return codeDuckingServiceI.gridHeader(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ *鎵归噺澶勭悊
+ * 蹇呴』瑕佹湁鍒嗙被oid鍜宒ataoid
+ * @return
+ */
+ @PostMapping("/sendData")
+ public BaseResult sendData(String oid){
+
+ return codeDuckingSyncServiceI.sendData(oid);
+ }
+
+ /***
+ * 鍒濆鍖栧睘鎬ч厤缃粍浠�
+ * @param sourceClsfId 鍒嗙被oid
+ * @param type //1锛氭棤浜烘満;2锛�420
+ * @param templateOid 妯℃澘oid锛屽涓互,鍒嗗紑鐨�
+ * @param baseQueryObject //鏌ヨ瀵硅薄
+ * @return
+ */
+ @GetMapping("/gridAttrMapping")
+ public DataGrid<DockingPreAttrMappingVO> gridAttrMappings(String sourceClsfId,String templateOid,int type, BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return dockingPreAttrMappingSeviceI.gridAttrMappings(sourceClsfId,type,baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /***
+ * 灞炴�у彇鍊艰寖鍥磋幏鍙�
+ * @param attrOid 灞炴�id
+ * @param type //1锛氭棤浜烘満;2锛�420
+ * @param baseQueryObject /鏌ヨ瀵硅薄
+ * @return
+ */
+ @GetMapping("/gridAttrRanges")
+ public DataGrid<DockingPreAttrRangeVO> gridAttrRanges(String attrOid,int type,BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return dockingPreAttrMappingSeviceI.gridAttrRanges(attrOid,type,baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 淇濆瓨灞炴�ф槧灏勯厤缃粍浠�
+ * @param dockingPreAttrMappingDTOS 灞炴�ф槧灏勯厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/batchAddSave")
+ public BaseResult<List<DockingPreAttrMappingVO>> batchSave(@RequestBody List<DockingPreAttrMappingDTO> dockingPreAttrMappingDTOS){
+ List<DockingPreAttrMappingVO> dockingPreAttrRangeVOS= dockingPreAttrMappingSeviceI.batchAddSave(dockingPreAttrMappingDTOS);
+ return BaseResult.success(dockingPreAttrRangeVOS);
+ }
+
+ /**
+ * 涓嬭浇閿欒鐨勬枃浠朵俊鎭�
+ * @param uuid 鍞竴鏍囪瘑
+ * @param response 鍝嶅簲瀵硅薄
+ * @throws IOException 鎶涘嚭寮傚父
+ */
+ @GetMapping("/downloadErrorFile")
+ public void downloadErrorFile(String uuid, HttpServletResponse response) throws IOException {
+ ControllerUtil.downloadErrorFile(response,uuid);
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeFixedValueController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeFixedValueController.java
new file mode 100644
index 0000000..7ed8684
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeFixedValueController.java
@@ -0,0 +1,142 @@
+package org.springblade.code.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.mdm.dto.CodeFixedValueDTO;
+import com.vci.mdm.pagemodel.CodeFixedValueVO;
+import com.vci.mdm.service.CodeFixedValueServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeFixedValueController")
+public class CodeFixedValueController {
+ /**
+ * 鍥哄畾鐮佹鐨勭爜鍊� 鏈嶅姟
+ */
+ @Autowired
+ private CodeFixedValueServiceI codeFixedValueService;
+
+ /**
+ * 鍥哄畾鐮佹鐨勭爜鍊煎垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeFixedValue")
+ public DataGrid<CodeFixedValueVO> gridCodeFixedValue(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeFixedValueService.gridCodeFixedValue(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeFixedValueVO> addSave(@RequestBody CodeFixedValueDTO codeFixedValueDTO){
+ CodeFixedValueVO codeFixedValueVO = codeFixedValueService.addSave(codeFixedValueDTO);
+ return BaseResult.success(codeFixedValueVO);
+ }
+
+ /**
+ * 淇敼 鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeFixedValueVO> editSave(@RequestBody CodeFixedValueDTO codeFixedValueDTO){
+ CodeFixedValueVO codeFixedValueVO = codeFixedValueService.editSave(codeFixedValueDTO);
+ return BaseResult.success(codeFixedValueVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeFixedValue( CodeFixedValueDTO codeFixedValueDTO) {
+ return codeFixedValueService.deleteCodeFixedValue(codeFixedValueDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍥哄畾鐮佹鐨勭爜鍊�
+ * @param oid 涓婚敭
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeFixedValueVO> getObjectByOid(String oid){
+ CodeFixedValueVO codeFixedValueVO = codeFixedValueService.getObjectByOid(oid);
+ return BaseResult.success(codeFixedValueVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍥哄畾鐮佹鐨勭爜鍊�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeFixedValueVO> listCodeFixedValueByOids(String oids){
+ Collection<CodeFixedValueVO> voCollection = codeFixedValueService.listCodeFixedValueByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鍥哄畾鐮佹鐨勭爜鍊煎垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeFixedValueVO> refDataGridCodeFixedValue(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeFixedValueService.refDataGridCodeFixedValue(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鎵归噺娣诲姞鍥哄畾鐮佹鐨勭爜鍊硷紝濡傛灉淇濆瓨鐨勯泦鍚堜腑涓嶅瓨鍦ㄥ凡鍦ㄦ暟鎹簱涓殑鐮佸�煎垯鍒犻櫎銆備富瑕佹槸淇濆瓨鐮佸�肩殑搴忓彿
+ * @param param 鍙傛暟锛屽寘鎷琩toList 椤甸潰浼犺緭瀵硅薄闆嗗悎 codefixedsecoid 鍥哄畾鐮佹涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @PostMapping("/saveOrder")
+ public BaseResult<CodeFixedValueVO> batchSave4Order(@RequestBody Map<String,Object> param){
+ JSONArray json = JSONArray.parseArray(String.valueOf(param.get("dtoList")));
+ List<CodeFixedValueDTO> dtoList = new ArrayList<>();
+ for (int i = 0; i < json.size(); i++) {
+ CodeFixedValueDTO codeFixedValueDTO = JSONObject.toJavaObject(JSONObject.parseObject(JSONObject.toJSONString(json.get(i))), CodeFixedValueDTO.class);
+ dtoList.add(codeFixedValueDTO);
+ }
+ String codefixedsecoid = (String) param.get("codefixedsecoid");
+ VciBaseUtil.alertNotNull(dtoList,"鐮佸�煎璞¢泦鍚�",codefixedsecoid,"鍥哄畾鐮佹鐨勪富閿�");
+ if (CollectionUtils.isEmpty(dtoList)){
+ return codeFixedValueService.batchDeleteBySecOid(codefixedsecoid);
+ }
+ return codeFixedValueService.batchSave4Order(dtoList,codefixedsecoid);
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeKeyAttrRepeatRuleController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeKeyAttrRepeatRuleController.java
new file mode 100644
index 0000000..d5d1205
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeKeyAttrRepeatRuleController.java
@@ -0,0 +1,116 @@
+package org.springblade.code.controller;
+
+
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springblade.code.dto.CodeKeyAttrRepeatRuleDTO;
+import org.springblade.code.pagemodel.CodeKeyAttrRepeatRuleVO;
+import org.springblade.code.service.CodeKeyAttrRepeatRuleServiceI;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鎺у埗鍣�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeKeyAttrRepeatController")
+public class CodeKeyAttrRepeatRuleController {
+ /**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯 鏈嶅姟
+ */
+ @Autowired
+ private CodeKeyAttrRepeatRuleServiceI codeKeyAttrRepeatRuleService;
+
+ /**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄鍒楄〃
+ */
+ @GetMapping("/gridCodeKeyAttrRepeatRule")
+ public DataGrid<CodeKeyAttrRepeatRuleVO> gridCodeKeyAttrRepeatRule(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeKeyAttrRepeatRuleService.gridCodeKeyAttrRepeatRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeKeyAttrRepeatRuleVO> addSave(@RequestBody CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO){
+ CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleVO = codeKeyAttrRepeatRuleService.addSave(codeKeyAttrRepeatRuleDTO);
+ return BaseResult.success(codeKeyAttrRepeatRuleVO);
+ }
+
+ /**
+ * 淇敼 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeKeyAttrRepeatRuleVO> editSave(@RequestBody CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO){
+ CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleVO = codeKeyAttrRepeatRuleService.editSave(codeKeyAttrRepeatRuleDTO);
+ return BaseResult.success(codeKeyAttrRepeatRuleVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeKeyAttrRepeatRule( CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) {
+ return codeKeyAttrRepeatRuleService.deleteCodeKeyAttrRepeatRule(codeKeyAttrRepeatRuleDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param oid 涓婚敭
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeKeyAttrRepeatRuleVO> getObjectByOid(String oid){
+ CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleVO = codeKeyAttrRepeatRuleService.getObjectByOid(oid);
+ return BaseResult.success(codeKeyAttrRepeatRuleVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeKeyAttrRepeatRuleVO> listCodeKeyAttrRepeatRuleByOids(String oids){
+ Collection<CodeKeyAttrRepeatRuleVO> voCollection = codeKeyAttrRepeatRuleService.listCodeKeyAttrRepeatRuleByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeKeyAttrRepeatRuleVO> refDataGridCodeKeyAttrRepeatRule(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeKeyAttrRepeatRuleService.refDataGridCodeKeyAttrRepeatRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodePhaseAttrController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodePhaseAttrController.java
new file mode 100644
index 0000000..1fb5646
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodePhaseAttrController.java
@@ -0,0 +1,115 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodePhaseAttrDTO;
+import com.vci.mdm.pagemodel.CodePhaseAttrVO;
+import com.vci.mdm.service.CodePhaseAttrServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 闃舵鐨勫睘鎬ф帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codePhaseAttrController")
+public class CodePhaseAttrController {
+ /**
+ * 闃舵鐨勫睘鎬� 鏈嶅姟
+ */
+ @Autowired
+ private CodePhaseAttrServiceI codePhaseAttrService;
+
+ /**
+ * 闃舵鐨勫睘鎬у垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodePhaseAttr")
+ public DataGrid<CodePhaseAttrVO> gridCodePhaseAttr(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codePhaseAttrService.gridCodePhaseAttr(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodePhaseAttrVO> addSave(@RequestBody CodePhaseAttrDTO codePhaseAttrDTO){
+ CodePhaseAttrVO codePhaseAttrVO = codePhaseAttrService.addSave(codePhaseAttrDTO);
+ return BaseResult.success(codePhaseAttrVO);
+ }
+
+ /**
+ * 淇敼 闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodePhaseAttrVO> editSave(@RequestBody CodePhaseAttrDTO codePhaseAttrDTO){
+ CodePhaseAttrVO codePhaseAttrVO = codePhaseAttrService.editSave(codePhaseAttrDTO);
+ return BaseResult.success(codePhaseAttrVO);
+ }
+
+
+ /**
+ * 鍒犻櫎闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodePhaseAttr( CodePhaseAttrDTO codePhaseAttrDTO) {
+ return codePhaseAttrService.deleteCodePhaseAttr(codePhaseAttrDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇闃舵鐨勫睘鎬�
+ * @param oid 涓婚敭
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodePhaseAttrVO> getObjectByOid(String oid){
+ CodePhaseAttrVO codePhaseAttrVO = codePhaseAttrService.getObjectByOid(oid);
+ return BaseResult.success(codePhaseAttrVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇闃舵鐨勫睘鎬�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodePhaseAttrVO> listCodePhaseAttrByOids(String oids){
+ Collection<CodePhaseAttrVO> voCollection = codePhaseAttrService.listCodePhaseAttrByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収闃舵鐨勫睘鎬у垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodePhaseAttrVO> refDataGridCodePhaseAttr(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codePhaseAttrService.refDataGridCodePhaseAttr(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeResembleRuleController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeResembleRuleController.java
new file mode 100644
index 0000000..92303cb
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeResembleRuleController.java
@@ -0,0 +1,115 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeResembleRuleDTO;
+import com.vci.mdm.pagemodel.CodeResembleRuleVO;
+import com.vci.mdm.service.CodeResembleRuleServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鎺у埗鍣�
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+@RestController
+@RequestMapping("/resembleRuleController")
+public class CodeResembleRuleController {
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯 鏈嶅姟
+ */
+ @Autowired
+ private CodeResembleRuleServiceI codeResembleRuleService;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃
+ */
+ @GetMapping("/gridCodeResembleRule")
+ public DataGrid<CodeResembleRuleVO> gridCodeResembleRule(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeResembleRuleService.gridCodeResembleRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeResembleRuleVO> addSave(@RequestBody CodeResembleRuleDTO codeResembleRuleDTO){
+ CodeResembleRuleVO codeResembleRuleVO = codeResembleRuleService.addSave(codeResembleRuleDTO);
+ return BaseResult.success(codeResembleRuleVO);
+ }
+
+ /**
+ * 淇敼 鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeResembleRuleVO> editSave(@RequestBody CodeResembleRuleDTO codeResembleRuleDTO){
+ CodeResembleRuleVO codeResembleRuleVO = codeResembleRuleService.editSave(codeResembleRuleDTO);
+ return BaseResult.success(codeResembleRuleVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeResembleRule( CodeResembleRuleDTO codeResembleRuleDTO) {
+ return codeResembleRuleService.deleteCodeResembleRule(codeResembleRuleDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param oid 涓婚敭
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeResembleRuleVO> getObjectByOid(String oid){
+ CodeResembleRuleVO codeResembleRuleVO = codeResembleRuleService.getObjectByOid(oid);
+ return BaseResult.success(codeResembleRuleVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeResembleRuleVO> listCodeResembleRuleByOids(String oids){
+ Collection<CodeResembleRuleVO> voCollection = codeResembleRuleService.listCodeResembleRuleByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鐩镐技鏌ヨ瑙勫垯鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeResembleRuleVO> refDataGridCodeResembleRule(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeResembleRuleService.refDataGridCodeResembleRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeRuleController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeRuleController.java
new file mode 100644
index 0000000..ae1dec9
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeRuleController.java
@@ -0,0 +1,166 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeRuleDTO;
+import com.vci.mdm.pagemodel.CodeClassifyVO;
+import com.vci.mdm.pagemodel.CodeRuleVO;
+import com.vci.mdm.service.CodeRuleServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+import java.util.Map;
+
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/mdmRuleController")
+public class CodeRuleController {
+ /**
+ * 涓绘暟鎹紪鐮佽鍒� 鏈嶅姟
+ */
+ @Autowired
+ private CodeRuleServiceI codeRuleService;
+
+ /**
+ * 涓绘暟鎹紪鐮佽鍒欏垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeRule")
+ public DataGrid<CodeRuleVO> gridCodeRule(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ DataGrid<CodeRuleVO> result = codeRuleService.gridCodeRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ return result;
+ }
+ /**
+ * 澧炲姞 涓绘暟鎹紪鐮佽鍒�
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeRuleVO> addSave(@RequestBody CodeRuleDTO codeRuleDTO){
+ CodeRuleVO codeRuleVO = codeRuleService.addSave(codeRuleDTO);
+ return BaseResult.success(codeRuleVO);
+ }
+
+ /**
+ * 淇敼 涓绘暟鎹紪鐮佽鍒�
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeRuleVO> editSave(@RequestBody CodeRuleDTO codeRuleDTO){
+ CodeRuleVO codeRuleVO = codeRuleService.editSave(codeRuleDTO);
+ return BaseResult.success(codeRuleVO);
+ }
+
+
+ /**
+ * 鍒犻櫎涓绘暟鎹紪鐮佽鍒�
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeRule( CodeRuleDTO codeRuleDTO) {
+ return codeRuleService.deleteCodeRule(codeRuleDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ * @param oid 涓婚敭
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeRuleVO> getObjectByOid(String oid){
+ CodeRuleVO codeRuleVO = codeRuleService.getObjectByOid(oid);
+ return BaseResult.success(codeRuleVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeRuleVO> listCodeRuleByOids(String oids){
+ Collection<CodeRuleVO> voCollection = codeRuleService.listCodeRuleByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収涓绘暟鎹紪鐮佽鍒欏垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeRuleVO> refDataGridCodeRule(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeRuleService.refDataGridCodeRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鏌ョ湅涓绘暟鎹紪鐮佽鍒欑殑浣跨敤鑼冨洿
+ * @param oid 涓婚敭
+ * @return 浣跨敤鑼冨洿
+ */
+ @GetMapping("/listUseRange")
+ public BaseResult<CodeClassifyVO> listUseRange(String oid){
+ Collection<CodeClassifyVO> voList = codeRuleService.listUseRangeInCodeClassify(oid);
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voList);
+ return baseResult;
+ }
+
+ /**
+ * 鍋滅敤涓庡惎鐢ㄧ紪鐮佽鍒�
+ * @param map 灏佽鍙傛暟锛屽寘鎷琽id 缂栫爜瑙勫垯涓婚敭 update 鏇存柊鐘舵�佺殑鎿嶄綔
+ * @return 鎵ц缁撴灉
+ */
+ @PostMapping ("/updateStatus")
+ public BaseResult updateStatus(@RequestBody Map<String,String> map){
+ if (CollectionUtils.isEmpty(map)){
+ return BaseResult.fail("鍙傛暟閿欒");
+ }
+ String oid = map.get("oid");
+ String update = map.get("update");
+ return codeRuleService.updateStatus(oid,update);
+ }
+
+ /**
+ * 鍏嬮殕缂栫爜瑙勫垯
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ */
+ @PostMapping("/clone")
+ public BaseResult cloneCodeRule(@RequestBody CodeRuleDTO codeRuleDTO){
+ return codeRuleService.cloneCodeRule(codeRuleDTO);
+ }
+
+ /**
+ * 缂栫爜瑙勫垯娓呯┖鎵�鏈夊凡鐢熸垚鐨勭紪鐮�
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @DeleteMapping("/clearAllCode")
+ public BaseResult clearAllCode(String oid){
+ return codeRuleService.clearAllCode(oid);
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSerialAlgorithmController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSerialAlgorithmController.java
new file mode 100644
index 0000000..b5ebf20
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSerialAlgorithmController.java
@@ -0,0 +1,34 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.pagemodel.CodeSerialAlgorithmVO;
+import com.vci.mdm.service.CodeSerialAlgorithmServiceI;
+import com.vci.starter.web.pagemodel.DataGrid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 娴佹按绠楁硶鎺у埗鍣�
+ * @author weidy
+ * @date 2022-2-17
+ */
+@RestController
+@RequestMapping("/codeSerialAlgorithmController")
+public class CodeSerialAlgorithmController {
+
+ /**
+ * 绠楁硶鏈嶅姟
+ */
+ @Autowired
+ private CodeSerialAlgorithmServiceI algorithmService;
+
+ /**
+ * 绠楁硶鐨勫垪琛�
+ * @return 绠楁硶鐨勪俊鎭�
+ */
+ @GetMapping("/gridCodeSerialAlgorithm")
+ public DataGrid<CodeSerialAlgorithmVO> gridCodeSerialAlgorithm(){
+ return algorithmService.gridSerialAlgorithm();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSynonymController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSynonymController.java
new file mode 100644
index 0000000..7e2c5f3
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSynonymController.java
@@ -0,0 +1,115 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeSynonymDTO;
+import com.vci.mdm.pagemodel.CodeSynonymVO;
+import com.vci.mdm.service.CodeSynonymServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 鍚屼箟璇嶉厤缃帶鍒跺櫒
+ *
+ * @author weidy
+ * @date 2022-02-17
+ */
+@RestController
+@RequestMapping("/codeSynonymController")
+public class CodeSynonymController {
+ /**
+ * 鍚屼箟璇嶉厤缃� 鏈嶅姟
+ */
+ @Autowired
+ private CodeSynonymServiceI codeSynonymService;
+
+ /**
+ * 鍚屼箟璇嶉厤缃垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞″垪琛�
+ */
+ @GetMapping("/gridCodeSynonym")
+ public DataGrid<CodeSynonymVO> gridCodeSynonym(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeSynonymService.gridCodeSynonym(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeSynonymVO> addSave(@RequestBody CodeSynonymDTO codeSynonymDTO){
+ CodeSynonymVO codeSynonymVO = codeSynonymService.addSave(codeSynonymDTO);
+ return BaseResult.success(codeSynonymVO);
+ }
+
+ /**
+ * 淇敼 鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeSynonymVO> editSave(@RequestBody CodeSynonymDTO codeSynonymDTO){
+ CodeSynonymVO codeSynonymVO = codeSynonymService.editSave(codeSynonymDTO);
+ return BaseResult.success(codeSynonymVO);
+ }
+
+
+ /**
+ * 鍒犻櫎鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeSynonym( CodeSynonymDTO codeSynonymDTO) {
+ return codeSynonymService.deleteCodeSynonym(codeSynonymDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍚屼箟璇嶉厤缃�
+ * @param oid 涓婚敭
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞�
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeSynonymVO> getObjectByOid(String oid){
+ CodeSynonymVO codeSynonymVO = codeSynonymService.getObjectByOid(oid);
+ return BaseResult.success(codeSynonymVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍚屼箟璇嶉厤缃�
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞�
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeSynonymVO> listCodeSynonymByOids(String oids){
+ Collection<CodeSynonymVO> voCollection = codeSynonymService.listCodeSynonymByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収鍚屼箟璇嶉厤缃垪琛�
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeSynonymVO> refDataGridCodeSynonym(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeSynonymService.refDataGridCodeSynonym(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeTemplatePhaseController.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeTemplatePhaseController.java
new file mode 100644
index 0000000..e5e758e
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeTemplatePhaseController.java
@@ -0,0 +1,137 @@
+package org.springblade.code.controller;
+
+import com.vci.mdm.dto.CodeTemplatePhaseDTO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.pagemodel.CodeTemplatePhaseVO;
+import com.vci.mdm.service.CodeTemplatePhaseServiceI;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+
+/**
+ * 妯℃澘闃舵鎺у埗鍣�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@RestController
+@RequestMapping("/codeTempPhaseController")
+public class CodeTemplatePhaseController {
+ /**
+ * 妯℃澘闃舵 鏈嶅姟
+ */
+ @Autowired
+ private CodeTemplatePhaseServiceI codeTemplatePhaseService;
+
+ /**
+ * 妯℃澘闃舵鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄鍒楄〃
+ */
+ @GetMapping("/gridCodeTemplatePhase")
+ public DataGrid<CodeTemplatePhaseVO> gridCodeTemplatePhase(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeTemplatePhaseService.gridCodeTemplatePhase(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+ /**
+ * 澧炲姞 妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PostMapping( "/addSave")
+ public BaseResult<CodeTemplatePhaseVO> addSave(@RequestBody CodeTemplatePhaseDTO codeTemplatePhaseDTO){
+ CodeTemplatePhaseVO codeTemplatePhaseVO = codeTemplatePhaseService.addSave(codeTemplatePhaseDTO);
+ return BaseResult.success(codeTemplatePhaseVO);
+ }
+
+ /**
+ * 淇敼 妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ @PutMapping("/editSave")
+ public BaseResult<CodeTemplatePhaseVO> editSave(@RequestBody CodeTemplatePhaseDTO codeTemplatePhaseDTO){
+ CodeTemplatePhaseVO codeTemplatePhaseVO = codeTemplatePhaseService.editSave(codeTemplatePhaseDTO);
+ return BaseResult.success(codeTemplatePhaseVO);
+ }
+
+
+ /**
+ * 鍒犻櫎妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @DeleteMapping( "/deleteData")
+ public BaseResult delCodeTemplatePhase( CodeTemplatePhaseDTO codeTemplatePhaseDTO) {
+ return codeTemplatePhaseService.deleteCodeTemplatePhase(codeTemplatePhaseDTO);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇妯℃澘闃舵
+ * @param oid 涓婚敭
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄
+ */
+ @GetMapping("/getObjectByOid")
+ public BaseResult<CodeTemplatePhaseVO> getObjectByOid(String oid){
+ CodeTemplatePhaseVO codeTemplatePhaseVO = codeTemplatePhaseService.getObjectByOid(oid);
+ return BaseResult.success(codeTemplatePhaseVO);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇妯℃澘闃舵
+ * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄
+ */
+ @GetMapping("/listDataByOids")
+ public BaseResult<CodeTemplatePhaseVO> listCodeTemplatePhaseByOids(String oids){
+ Collection<CodeTemplatePhaseVO> voCollection = codeTemplatePhaseService.listCodeTemplatePhaseByOids(VciBaseUtil.str2List(oids));
+ BaseResult baseResult = BaseResult.success();
+ baseResult.setData(voCollection);
+ return baseResult;
+ }
+
+
+
+ /**
+ * 鍙傜収妯℃澘闃舵鍒楄〃
+ * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ */
+ @GetMapping("/refDataGrid")
+ public DataGrid<CodeTemplatePhaseVO> refDataGridCodeTemplatePhase(BaseQueryObject baseQueryObject){
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ return codeTemplatePhaseService.refDataGridCodeTemplatePhase(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鑾峰彇闃舵涓病鏈変娇鐢ㄧ殑妯℃澘灞炴��
+ * @param baseQueryObject 鏌ヨ瀵硅薄锛屽繀椤昏鏈夋ā鏉跨殑涓婚敭锛坈lassifyTemplateOid锛夛紝鍚﹀垯涓嶈兘纭畾灞炴��
+ * @return 灞炴�х殑淇℃伅
+ */
+ @GetMapping("/gridUnUsedAttribute")
+ public DataGrid<CodeClassifyTemplateAttrVO> gridUnUsedAttribute(BaseQueryObject baseQueryObject){
+ return codeTemplatePhaseService.gridUnUsedAttribute(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+ /**
+ * 鑾峰彇闃舵涓娇鐢ㄧ殑妯℃澘灞炴��
+ * @param baseQueryObject 鏌ヨ瀵硅薄锛屽繀椤昏闃舵鐨勪富閿�(codePhaseOid)
+ * @return 灞炴�х殑淇℃伅
+ */
+ @GetMapping("/gridUsedAttribute")
+ public DataGrid<CodeClassifyTemplateAttrVO> gridUsedAttribute(BaseQueryObject baseQueryObject){
+ return codeTemplatePhaseService.gridUsedAttribute(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+ }
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeAllCodeDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeAllCodeDaoI.java
new file mode 100644
index 0000000..cb57d90
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeAllCodeDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeAllCodeDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鎵�鏈夌殑鐮佸�兼暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-01
+ */
+public interface CodeAllCodeDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鎵�鏈夌殑鐮佸�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeAllCodeDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鎵�鏈夌殑鐮佸�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeAllCodeDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeAllCodeDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeAllCodeDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeAllCodeDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeAllCodeDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鎵�鏈夌殑鐮佸�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeAllCodeDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鎵�鏈夌殑鐮佸�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeAllCodeDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeAllCodeDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeAllCodeDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeBasicSecDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeBasicSecDaoI.java
new file mode 100644
index 0000000..1ed80cd
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeBasicSecDaoI.java
@@ -0,0 +1,148 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeBasicSecDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鐮佹鍩虹淇℃伅鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeBasicSecDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeBasicSecDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeBasicSecDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeBasicSecDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeBasicSecDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeBasicSecDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeBasicSecDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeBasicSecDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeBasicSecDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeBasicSecDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeBasicSecDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+ /**
+ * 灏咲O瀵硅薄杞崲涓築atchCBO锛屾柟渚夸笌Cbo瀵硅薄涓�璧锋搷浣�
+ * @param codeBasicSec 鐮佹鍩烘湰淇℃伅DO瀵硅薄
+ * @param operationType 鎿嶄綔鏂瑰紡 - add 娣诲姞 edit 缂栬緫 delete 鍒犻櫎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO trans2BatchCBO(CodeBasicSecDO codeBasicSec,String operationType);
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeButtonDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeButtonDaoI.java
new file mode 100644
index 0000000..f914614
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeButtonDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeButtonDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeButtonDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeButtonDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeButtonDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeButtonDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeButtonDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeButtonDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeButtonDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeButtonDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeButtonDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeButtonDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeButtonDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyDaoI.java
new file mode 100644
index 0000000..71499c9
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyDaoI.java
@@ -0,0 +1,232 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撳垎绫绘暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+public interface CodeClassifyDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撳垎绫绘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撳垎绫绘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撳垎绫绘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撳垎绫绘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄
+ */
+ List<CodeClassifyDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ煡璇㈡�绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉 key鏄富閿紝value鏄湰娆℃煡璇㈢殑灞傜骇
+ */
+ Map<String,String> selectAllLevelChildOid(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笂绾у叧鑱斾笟鍔$被鍨嬫暟鎹�
+ * @param oid 褰撳墠鍒嗙被鐨刼id
+ * @return oid,id,name,btmtypeid,btmtypename
+ */
+ List<CodeClassifyDO> selectAllLevelParents(String oid);
+
+ /**
+ * 鑾峰彇褰撳墠鍒嗙被鐨勬墍鏈変笂绾у垎绫伙紙鍚湰娆℃煡璇㈠眰绾у彿锛�
+ * @param oid 涓婚敭
+ * @return 鎵�鏈夌殑涓婄骇
+ */
+ List<CodeClassifyDO> selectAllLevelParentByOid(String oid);
+
+ /**
+ * 鑾峰彇杩欎釜鍒嗙被涓嬬殑涓氬姟绫诲瀷锛屽綋鍓嶆病鏈夊氨鑾峰彇涓婄骇鐨勭涓�涓笟鍔$被鍨�
+ * @param oid 褰撳墠鍒嗙被鐨刼id
+ * @return oid,id,name,btmtypeid,btmtypename
+ */
+ CodeClassifyDO selectBtmOrParentBtm(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈変笅绾ф暟鎹�
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyDO> selectAllLevelChild(String oid);
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓嬬骇锛屽苟鍖呭惈灞傜骇鐨勮矾寰�
+ * @param oid 涓婄骇鐨勪富閿�
+ * @param fieldInPath 瀛楁鍦ㄨ矾寰勪腑鐨勫唴瀹�
+ * @param enable 鏄惁鍙煡璇㈠惎鐢�
+ * @return 鍒嗙被鐨勬暟鎹唴瀹�
+ */
+ List<CodeClassifyDO> selectAllLevelChildHasPath(String oid, String fieldInPath,boolean enable);
+
+ /**
+ * 鏌ヨ鏌愪釜鑺傜偣鐨勬墍鏈夊眰绾т笅绾х殑涓暟
+ * @param oid 涓婚敭
+ * @return 鎬绘暟
+ */
+ long countAllLevelChildOid(String oid);
+
+ /**
+ * 鍙嶅悜浠庡瓙绾ц幏鍙栫埗绾х殑涓婚搴撳垎绫�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ List<CodeClassifyDO> listParentClassify(String codeClassifyOid);
+
+ /**
+ * 鏌ヨ杩欎釜鍒嗙被鐨剅oot鑺傜偣oid
+ */
+ CodeClassifyDO getRootClassify(String codeClassifyOid);
+
+ /**
+ * 鍒ゆ柇杩欎釜鍒嗙被鏄惁灞炰簬wupin鍒嗙被鏍�
+ * @param oid
+ * @return
+ */
+ boolean isWupin(String oid);
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+ /**
+ * 鏍¢獙鏄惁鍖呭惈瀛愯妭鐐�
+ * @param oid 鍒嗙被鐨勪富閿�
+ * @return true 琛ㄧず鍖呭惈
+ */
+ boolean checkHasChild(String oid);
+
+ /**
+ * 浣跨敤瀛楁鐨勮矾寰勶紝鏌ヨ瀵硅薄
+ * @param fieldPath 瀛楁鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮� xxx/yyy/zz鐨勬牸寮�
+ * @param field 瀛楁鐨勮嫳鏂囧悕绉�
+ * @return 鍒嗙被鐨勫璞�
+ */
+ CodeClassifyDO selectByFieldPath(String fieldPath, String field);
+
+ /***
+ * 鏍规嵁涓婄骇鑺傜偣鑾峰彇涓嬬骇鑺傜偣浠e彿璺緞鍜屽悕绉拌矾寰�
+ * @param classifyId
+ * @param enable
+ * @return
+ */
+ public List<CodeClassifyDO>getIdPathToNamePathByParentId(String classifyId,boolean enable);
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyProcessTempDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyProcessTempDaoI.java
new file mode 100644
index 0000000..f20c395
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyProcessTempDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyProcessTempDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyProcessTempDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyProcessTempDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyProcessTempDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyProcessTempDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyProcessTempDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyProcessTempDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyProcessTempDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyProcessTempDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyProcessTempDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyProcessTempDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyProcessTempDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTempMapItemDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTempMapItemDaoI.java
new file mode 100644
index 0000000..01a6e26
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTempMapItemDaoI.java
@@ -0,0 +1,127 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyTempMapItemDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-10
+ */
+public interface CodeClassifyTempMapItemDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyTempMapItemDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyTempMapItemDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyTempMapItemDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTempMapItemDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyTempMapItemDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyTempMapItemDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyTempMapItemDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyTempMapItemDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTempMapItemDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTempMapItemDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateAttrDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateAttrDaoI.java
new file mode 100644
index 0000000..f12976d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateAttrDaoI.java
@@ -0,0 +1,127 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyTemplateAttrDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateAttrDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyTemplateAttrDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyTemplateAttrDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyTemplateAttrDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateAttrDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyTemplateAttrDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyTemplateAttrDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyTemplateAttrDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyTemplateAttrDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateAttrDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateAttrDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateButtonDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateButtonDaoI.java
new file mode 100644
index 0000000..5741fbe
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateButtonDaoI.java
@@ -0,0 +1,127 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyTemplateButtonDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateButtonDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyTemplateButtonDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyTemplateButtonDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyTemplateButtonDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateButtonDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyTemplateButtonDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyTemplateButtonDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyTemplateButtonDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyTemplateButtonDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateButtonDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateButtonDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateDaoI.java
new file mode 100644
index 0000000..1411914
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateDaoI.java
@@ -0,0 +1,169 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyTemplateDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyTemplateDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyTemplateDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyTemplateDO selectByPrimaryKey(String oid);
+
+
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyTemplateDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyTemplateDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyTemplateDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyTemplateDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ List<String> selectAllLevelChildOid(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈変笅绾ф暟鎹�
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyTemplateDO> selectAllLevelChild(String oid);
+
+ /**
+ * 鏌ヨ鏌愪釜鑺傜偣鐨勬墍鏈夊眰绾т笅绾х殑涓暟
+ * @param oid 涓婚敭
+ * @return 鎬绘暟
+ */
+ long countAllLevelChildOid(String oid);
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鍒嗙被鐨勫瓙鍒嗙被鍖呭惈鐨勬ā鏉跨殑鍐呭
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return key鏄ā鏉跨殑涓婚敭锛寁alue鏄ā鏉挎墍灞炵殑鍒嗙被涓婚敭
+ */
+ Map<String/**妯℃澘鐨勪富閿�**/, String/**妯℃澘鐨勫垎绫�**/> selectChildHasReleaseTemplate(String codeClassifyOid);
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateMapDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateMapDaoI.java
new file mode 100644
index 0000000..459871a
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateMapDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyTemplateMapDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateMapDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyTemplateMapDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyTemplateMapDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyTemplateMapDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateMapDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyTemplateMapDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyTemplateMapDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyTemplateMapDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyTemplateMapDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateMapDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyTemplateMapDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyValueDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyValueDaoI.java
new file mode 100644
index 0000000..e32e185
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyValueDaoI.java
@@ -0,0 +1,147 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeClassifyValueDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyValueDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeClassifyValueDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeClassifyValueDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeClassifyValueDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyValueDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeClassifyValueDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyValueDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeClassifyValueDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeClassifyValueDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyValueDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeClassifyValueDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ List<String> selectAllLevelChildOid(String oid);
+
+ /**
+ * 鑾峰彇鎵�鏈変笅绾ф暟鎹�
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeClassifyValueDO> selectAllLevelChild(String oid);
+
+ /**
+ * 鏌ヨ鏌愪釜鑺傜偣鐨勬墍鏈夊眰绾т笅绾х殑涓暟
+ * @param oid 涓婚敭
+ * @return 鎬绘暟
+ */
+ long countAllLevelChildOid(String oid);
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeFixedValueDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeFixedValueDaoI.java
new file mode 100644
index 0000000..8e9021d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeFixedValueDaoI.java
@@ -0,0 +1,127 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeFixedValueDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeFixedValueDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeFixedValueDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeFixedValueDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeFixedValueDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeFixedValueDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeFixedValueDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeFixedValueDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeFixedValueDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeFixedValueDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeFixedValueDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeFixedValueDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeKeyAttrRepeatRuleDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeKeyAttrRepeatRuleDaoI.java
new file mode 100644
index 0000000..f6286f1
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeKeyAttrRepeatRuleDaoI.java
@@ -0,0 +1,148 @@
+package org.springblade.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import org.springblade.code.model.CodeKeyAttrRepeatRuleDO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeKeyAttrRepeatRuleDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeKeyAttrRepeatRuleDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeKeyAttrRepeatRuleDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeKeyAttrRepeatRuleDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeKeyAttrRepeatRuleDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeKeyAttrRepeatRuleDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏍规嵁缂栧彿鎵归噺鏌ヨ瀵硅薄
+ * @param ids 缂栧彿鐨勯泦鍚�
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeKeyAttrRepeatRuleDO> selectByIdCollection(Collection<String> ids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeKeyAttrRepeatRuleDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeKeyAttrRepeatRuleDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeKeyAttrRepeatRuleDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeKeyAttrRepeatRuleDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeKeyAttrRepeatRuleDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodePhaseAttrDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodePhaseAttrDaoI.java
new file mode 100644
index 0000000..076b034
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodePhaseAttrDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodePhaseAttrDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 闃舵鐨勫睘鎬ф暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodePhaseAttrDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 闃舵鐨勫睘鎬ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodePhaseAttrDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 闃舵鐨勫睘鎬ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodePhaseAttrDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodePhaseAttrDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodePhaseAttrDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodePhaseAttrDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodePhaseAttrDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 闃舵鐨勫睘鎬ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodePhaseAttrDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 闃舵鐨勫睘鎬ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodePhaseAttrDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodePhaseAttrDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodePhaseAttrDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeResembleRuleDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeResembleRuleDaoI.java
new file mode 100644
index 0000000..7bdb879
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeResembleRuleDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeResembleRuleDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+public interface CodeResembleRuleDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeResembleRuleDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeResembleRuleDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeResembleRuleDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeResembleRuleDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeResembleRuleDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeResembleRuleDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeResembleRuleDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeResembleRuleDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeResembleRuleDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeResembleRuleDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeRuleDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeRuleDaoI.java
new file mode 100644
index 0000000..e70cee3
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeRuleDaoI.java
@@ -0,0 +1,155 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeRuleDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeRuleDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓绘暟鎹紪鐮佽鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeRuleDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓绘暟鎹紪鐮佽鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeRuleDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeRuleDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeRuleDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeRuleDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 浣跨敤缂栧彿闆嗗悎鎵归噺鏌ヨ瀵硅薄
+ * @param ids 缂栧彿鐨勯泦鍚�
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeRuleDO> selectByIdCollection(Collection<String> ids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeRuleDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓绘暟鎹紪鐮佽鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeRuleDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓绘暟鎹紪鐮佽鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeRuleDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeRuleDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeRuleDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+ /**
+ * 鍒犻櫎鏁版嵁涓嶈繘琛屾寔涔呭寲锛岃浆鍖栦负batchCBO
+ * @param codeRule 缂栫爜瑙勫垯瀵硅薄
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO delete4BatchCBO (CodeRuleDO codeRule);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSerialValueDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSerialValueDaoI.java
new file mode 100644
index 0000000..6f644b1
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSerialValueDaoI.java
@@ -0,0 +1,127 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeSerialValueDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 娴佹按鐨勫�兼暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-01
+ */
+public interface CodeSerialValueDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 娴佹按鐨勫�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeSerialValueDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 娴佹按鐨勫�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeSerialValueDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeSerialValueDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeSerialValueDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeSerialValueDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeSerialValueDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 娴佹按鐨勫�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeSerialValueDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 娴佹按鐨勫�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeSerialValueDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeSerialValueDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeSerialValueDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSynonymDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSynonymDaoI.java
new file mode 100644
index 0000000..96317ce
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSynonymDaoI.java
@@ -0,0 +1,127 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeSynonymDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍚屼箟璇嶉厤缃暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-02-17
+ */
+public interface CodeSynonymDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍚屼箟璇嶉厤缃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeSynonymDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍚屼箟璇嶉厤缃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeSynonymDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeSynonymDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeSynonymDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeSynonymDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeSynonymDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍚屼箟璇嶉厤缃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeSynonymDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍚屼箟璇嶉厤缃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeSynonymDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeSynonymDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeSynonymDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeTemplatePhaseDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeTemplatePhaseDaoI.java
new file mode 100644
index 0000000..a170046
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeTemplatePhaseDaoI.java
@@ -0,0 +1,141 @@
+package org.springblade.code.dao;
+
+import com.vci.mdm.model.CodeTemplatePhaseDO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 妯℃澘闃舵鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeTemplatePhaseDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 妯℃澘闃舵鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(CodeTemplatePhaseDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 妯℃澘闃舵鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<CodeTemplatePhaseDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ CodeTemplatePhaseDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeTemplatePhaseDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<CodeTemplatePhaseDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<CodeTemplatePhaseDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 妯℃澘闃舵鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(CodeTemplatePhaseDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 妯℃澘闃舵鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<CodeTemplatePhaseDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeTemplatePhaseDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<CodeTemplatePhaseDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ Long countByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ String selectNameByOid(String oid);
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ long batchUpdateLcStatus(Collection<String> oids, String lcStatus);
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ int updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ BatchCBO batchDeleteByOids(Collection<String> oids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeAllCodeDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeAllCodeDaoImpl.java
new file mode 100644
index 0000000..1af62aa
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeAllCodeDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeAllCodeDaoI;
+import com.vci.mdm.model.CodeAllCodeDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鎵�鏈夌殑鐮佸�兼暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-03-01
+ */
+@Repository
+public class CodeAllCodeDaoImpl implements CodeAllCodeDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeAllCodeDO codeAllCodeDO = selectByPrimaryKey(oid);
+ return boService.delete(codeAllCodeDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鎵�鏈夌殑鐮佸�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeAllCodeDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鎵�鏈夌殑鐮佸�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeAllCodeDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeAllCodeDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeAllCodeDO record = boService.selectByOid(oid, CodeAllCodeDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeAllCodeDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeAllCodeDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeAllCodeDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeAllCodeDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeAllCodeDO> selectAll(){
+ return boService.queryObject(CodeAllCodeDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鎵�鏈夌殑鐮佸�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeAllCodeDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鎵�鏈夌殑鐮佸�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeAllCodeDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeAllCodeDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeAllCodeDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeAllCodeDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeAllCodeDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeAllCodeDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeAllCodeDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codeallcode");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codeallcode");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeAllCodeDO> dos = boService.selectByOidCollection(oids, CodeAllCodeDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeBasicSecDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeBasicSecDaoImpl.java
new file mode 100644
index 0000000..a1310f2
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeBasicSecDaoImpl.java
@@ -0,0 +1,268 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeBasicSecDaoI;
+import com.vci.mdm.model.CodeBasicSecDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鐮佹鍩虹淇℃伅鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeBasicSecDaoImpl implements CodeBasicSecDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeBasicSecDO codeBasicSecDO = selectByPrimaryKey(oid);
+ return boService.delete(codeBasicSecDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeBasicSecDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeBasicSecDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeBasicSecDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeBasicSecDO record = boService.selectByOid(oid, CodeBasicSecDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeBasicSecDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeBasicSecDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeBasicSecDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeBasicSecDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeBasicSecDO> selectAll(){
+ return boService.queryObject(CodeBasicSecDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeBasicSecDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeBasicSecDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeBasicSecDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeBasicSecDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeBasicSecDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeBasicSecDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeBasicSecDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeBasicSecDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codebasicsec");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codebasicsec");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeBasicSecDO> dos = boService.selectByOidCollection(oids, CodeBasicSecDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+
+ /**
+ * 涓嶈缃寔涔呭寲锛岃浆鍖朌O涓築atchCBO
+ * @param codeBasicSec 鐮佹鍩虹淇℃伅瀵硅薄
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO trans2BatchCBO(CodeBasicSecDO codeBasicSec,String operationType) {
+ VciBaseUtil.alertNotNull(codeBasicSec,"鐮佹鍩虹淇℃伅");
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = null;
+ if ("add".equals(operationType)) {
+ batchCBO= boService.addSave(codeBasicSec);
+ }else if ("edit".equals(operationType)){
+ batchCBO = boService.editSave(codeBasicSec);
+ }else if ("delete".equals(operationType)){
+ batchCBO = boService.delete(codeBasicSec);
+ }else{
+ batchCBO = new BatchCBO();
+ }
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeButtonDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeButtonDaoImpl.java
new file mode 100644
index 0000000..a859f1c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeButtonDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeButtonDaoI;
+import com.vci.mdm.model.CodeButtonDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeButtonDaoImpl implements CodeButtonDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeButtonDO codeButtonDO = selectByPrimaryKey(oid);
+ return boService.delete(codeButtonDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeButtonDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeButtonDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeButtonDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeButtonDO record = boService.selectByOid(oid, CodeButtonDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeButtonDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeButtonDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeButtonDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeButtonDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeButtonDO> selectAll(){
+ return boService.queryObject(CodeButtonDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeButtonDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeButtonDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeButtonDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeButtonDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeButtonDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeButtonDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeButtonDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeButtonDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codebutton");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codebutton");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeButtonDO> dos = boService.selectByOidCollection(oids, CodeButtonDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyDaoImpl.java
new file mode 100644
index 0000000..58e3940
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyDaoImpl.java
@@ -0,0 +1,517 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodeClassifyDaoI;
+import com.vci.mdm.model.CodeClassifyDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 涓婚搴撳垎绫绘暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+@Repository
+public class CodeClassifyDaoImpl implements CodeClassifyDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 骞冲彴鐨勫鎴风
+ */
+ @Autowired
+ private PlatformClientUtil platformClientUtil;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyDO codeClassifyDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撳垎绫绘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撳垎绫绘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyDO record = boService.selectByOid(oid, CodeClassifyDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyDO> selectAll(){
+ return boService.queryObject(CodeClassifyDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撳垎绫绘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撳垎绫绘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyDO.class,conditionMap)));
+ }
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ *
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyDO> selectByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyDO.class);
+ }
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ煡璇㈡�绘暟
+ *
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉锛宬ey鏄富閿紝value鏄湰娆℃煡璇㈢殑灞傜骇
+ */
+ @Override
+ public Map<String,String> selectAllLevelChildOid(String oid){
+ String sql = "select oid,level from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " START WITH parentCodeClassifyOid = :oid CONNECT BY PRIOR OID = parentCodeClassifyOid";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ Map<String,String> oidLevelMap = new HashMap<>();
+ if(!CollectionUtils.isEmpty(dataList)){
+ for(Map data:dataList){
+ oidLevelMap.put(VciBaseUtil.getStringValueFromObject(data.get("oid")),VciBaseUtil.getStringValueFromObject(data.get("level")));
+ }
+ }
+ return oidLevelMap;
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笂绾у叧鑱斾笟鍔$被鍨嬫暟鎹�
+ * @param oid 褰撳墠鍒嗙被鐨刼id
+ * @return oid,id,name,btmtypeid,btmtypename
+ */
+ @Override
+ public List<CodeClassifyDO> selectAllLevelParents(String oid){
+ String sql = "select oid,id,name,btmtypeid,btmtypename from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " where btmtypeid is not null start with oid= :oid connect by prior PARENTCODECLASSIFYOID=oid ";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ List<CodeClassifyDO> oidList = new ArrayList<CodeClassifyDO>();
+ if(!CollectionUtils.isEmpty(dataList)){
+ for(Map data:dataList){
+ CodeClassifyDO codeClassifyDO = new CodeClassifyDO();
+ codeClassifyDO.setOid(VciBaseUtil.getStringValueFromObject(data.get("oid")));
+ codeClassifyDO.setId(VciBaseUtil.getStringValueFromObject(data.get("id")));
+ codeClassifyDO.setName(VciBaseUtil.getStringValueFromObject(data.get("name")));
+ codeClassifyDO.setBtmTypeId(VciBaseUtil.getStringValueFromObject(data.get("btmtypeid")));
+ codeClassifyDO.setBtmTypeName(VciBaseUtil.getStringValueFromObject(data.get("btmtypename")));
+ oidList.add(codeClassifyDO);
+ }
+ }
+ return oidList;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鍒嗙被鐨勬墍鏈変笂绾у垎绫伙紙鍚湰娆℃煡璇㈠眰绾у彿锛�
+ * @param oid 涓婚敭
+ * @return 鎵�鏈夌殑涓婄骇
+ */
+ @Override
+ public List<CodeClassifyDO> selectAllLevelParentByOid(String oid){
+ String sql = "select oid,level from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " start with oid= :oid connect by prior PARENTCODECLASSIFYOID = oid ";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<ClientBusinessObject> cbos = boService.queryBySql(sql, conditionMap);
+ Map<String,String> oidLevelMap = new HashMap<>();
+ Optional.ofNullable(cbos).orElseGet(()->new ArrayList<>()).stream().forEach(cbo->{
+ oidLevelMap.put(cbo.getOid(),cbo.getAttributeValue("level"));
+ });
+ if(CollectionUtils.isEmpty(oidLevelMap)){
+ return new ArrayList<>();
+ }
+ //浣跨敤涓婚敭鏌ヨ涓�涓�
+ List<CodeClassifyDO> classifyDOS = selectByPrimaryKeyCollection(oidLevelMap.keySet());
+ if(!CollectionUtils.isEmpty(classifyDOS)){
+ classifyDOS.stream().forEach(classifyDO->{
+ classifyDO.setDataLevel(VciBaseUtil.getInt(oidLevelMap.getOrDefault(classifyDO.getOid(),"0")));
+ });
+ }
+ return classifyDOS;
+ }
+
+ /**
+ * 鑾峰彇杩欎釜鍒嗙被涓嬬殑涓氬姟绫诲瀷锛屽綋鍓嶆病鏈夊氨鑾峰彇涓婄骇鐨勭涓�涓笟鍔$被鍨�
+ * @param oid 褰撳墠鍒嗙被鐨刼id
+ * @return oid,id,name,btmtypeid,btmtypename锛屾病鏈夊氨杩斿洖null
+ */
+ @Override
+ public CodeClassifyDO selectBtmOrParentBtm(String oid){
+ List<CodeClassifyDO> oidList = selectAllLevelParents(oid);
+ return oidList.size()==0?null:oidList.get(0);
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈変笅绾ф暟鎹�
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyDO> selectAllLevelChild(String oid){
+ Map<String, String> oidLevelMap = selectAllLevelChildOid(oid);
+ if(CollectionUtils.isEmpty(oidLevelMap)){
+ return new ArrayList<>();
+ }
+ List<CodeClassifyDO> classifyDOS = boService.selectByOidCollection(oidLevelMap.keySet(), CodeClassifyDO.class);
+ if(!CollectionUtils.isEmpty(classifyDOS)){
+ classifyDOS.stream().forEach(classifyDO->{
+ classifyDO.setDataLevel(VciBaseUtil.getInt(oidLevelMap.getOrDefault(classifyDO.getOid(),"0")));
+ });
+ }
+ return classifyDOS;
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓嬬骇锛屽苟鍖呭惈灞傜骇鐨勮矾寰�
+ * @param oid 涓婄骇鐨勪富閿�
+ * @param fieldInPath 瀛楁鍦ㄨ矾寰勪腑鐨勫唴瀹�
+ * @param enable 鏄惁鍙煡璇㈠惎鐢ㄧ殑
+ * @return 鍒嗙被鐨勬暟鎹唴瀹�
+ */
+ @Override
+ public List<CodeClassifyDO> selectAllLevelChildHasPath(String oid, String fieldInPath, boolean enable){
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(new HashMap<>(),CodeClassifyDO.class);
+ if(StringUtils.isBlank(fieldInPath)){
+ fieldInPath = VciQueryWrapperForDO.ID_FIELD;
+ }
+ //coderuleoid.name as codeRuleOidName
+ String selectField = queryWrapperForDO.getSelectFieldSql().replace(", path","").replace(", dataLevel","")
+ + ",level as datalevel ,SYS_CONNECT_BY_PATH (" + queryWrapperForDO.getTableNick() + "." + fieldInPath + ", '#') as path ";
+ String sql = selectField + " from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " " + queryWrapperForDO.getTableNick() +
+ queryWrapperForDO.getLinkTableSql() +
+ (enable?" where " + queryWrapperForDO.getTableNick() + ".lcstatus ='Enabled' " :"")
+ + " START WITH " + queryWrapperForDO.getTableNick() + ".parentCodeClassifyOid " + (StringUtils.isBlank(oid)?" is null " : " = '" + oid + "' " )
+ + " CONNECT BY PRIOR " + queryWrapperForDO.getTableNick() + ".OID = " + queryWrapperForDO.getTableNick() + ".parentCodeClassifyOid";
+ List<CodeClassifyDO> dataList =boService.queryByOnlySqlForObj(sql,CodeClassifyDO.class);
+ return dataList;
+ }
+
+ /**
+ *
+ * @param classifyId
+ * @param enable
+ * @return
+ */
+ @Override
+ public List<CodeClassifyDO> getIdPathToNamePathByParentId(String classifyId,boolean enable) {
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(new HashMap<>(), CodeClassifyDO.class);
+ //coderuleoid.name as codeRuleOidName
+ String selectField = queryWrapperForDO.getSelectFieldSql().replace(", path","").replace(", dataLevel","")
+ +",level as datalevel ,SYS_CONNECT_BY_PATH (" + queryWrapperForDO.getTableNick() + ".name, '#') as namePath,SYS_CONNECT_BY_PATH (" + queryWrapperForDO.getTableNick() + ".id, '#') as idPath ,SYS_CONNECT_BY_PATH (" + queryWrapperForDO.getTableNick() + ".id, '#') as path ";
+ String sql = selectField + " from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " " + queryWrapperForDO.getTableNick() +
+ queryWrapperForDO.getLinkTableSql() +
+ (enable?" where " + queryWrapperForDO.getTableNick() + ".lcstatus ='Enabled' " :"")
+ + " START WITH " + queryWrapperForDO.getTableNick() + ".parentCodeClassifyOid " + (StringUtils.isBlank(classifyId)?" is null " : " = '" + classifyId + "' " )
+ + " CONNECT BY PRIOR " + queryWrapperForDO.getTableNick() + ".OID = " + queryWrapperForDO.getTableNick() + ".parentCodeClassifyOid";
+ List<CodeClassifyDO> dataList =boService.queryByOnlySqlForObj(sql,CodeClassifyDO.class);
+
+ return dataList;
+ }
+
+ /**
+ * 鏌ヨ鏌愪釜鑺傜偣鐨勬墍鏈夊眰绾т笅绾х殑涓暟
+ * @param oid 涓婚敭
+ * @return 鎬绘暟
+ */
+ @Override
+ public long countAllLevelChildOid(String oid){
+ String sql = "select count(OID) as countsize from platformbtm_codeclassify START WITH parentCodeClassifyOid = :oid CONNECT BY PRIOR OID= parentCodeClassifyOid";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ return !CollectionUtils.isEmpty(dataList)?VciBaseUtil.getInt(VciBaseUtil.getStringValueFromObject(dataList.get(0).get("countsize"))):0;
+ }
+
+ /**
+ * 鍙嶅悜浠庡瓙绾ц幏鍙栫埗绾х殑涓婚搴撳垎绫�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ @Override
+ public List<CodeClassifyDO> listParentClassify(String codeClassifyOid){
+ String sql = "select\n" +
+ "*\n" +
+ "from\n" +
+ "PLATFORMBTM_CODECLASSIFY\n" +
+ "where lcstatus='Enabled'" +
+ "start with \n" +
+ "oid='"+codeClassifyOid+"'\n" +
+ "connect by \n" +
+ "prior parentcodeclassifyoid=oid";
+ List<CodeClassifyDO> dataList =boService.queryByOnlySqlForObj(sql,CodeClassifyDO.class);
+ return dataList;
+ }
+
+ /**
+ * 鏌ヨ杩欎釜鍒嗙被鐨剅oot鑺傜偣oid
+ */
+ @Override
+ public CodeClassifyDO getRootClassify(String codeClassifyOid){
+ List<CodeClassifyDO> dataList = listParentClassify(codeClassifyOid);
+ return dataList.size()>0?dataList.get(dataList.size()-1):null;
+ }
+
+ /**
+ * 鍒ゆ柇杩欎釜鍒嗙被鏄惁灞炰簬wupin鍒嗙被鏍�
+ * @param oid
+ * @return
+ */
+ @Override
+ public boolean isWupin(String oid){
+ boolean u = false;
+ String sql = " select count(1) iswupin from \n" +
+ " (\n" +
+ " select\n" +
+ " oid\n" +
+ " from\n" +
+ " PLATFORMBTM_CODECLASSIFY\n" +
+ " where lcstatus='Enabled'\n" +
+ " start with\n" +
+ " oid=\n" +
+ " (\n" +
+ " select oid from PLATFORMBTM_CODECLASSIFY where id='wupin'\n" +
+ " )\n" +
+ " connect by\n" +
+ " parentcodeclassifyoid=prior oid\n" +
+ " ) t\n" +
+ " where oid = '"+oid+"'";
+ try {
+ List<Map> dataList = boService.queryByOnlySqlForMap(sql);
+ String iswupin = dataList.get(0).getOrDefault("ISWUPIN","0").toString();
+ int count = Integer.parseInt(iswupin);
+ u=count>0?true:false;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return u;
+ }
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codeclassify");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codeclassify");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyDO> dos = boService.selectByOidCollection(oids, CodeClassifyDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍¢獙鏄惁鍖呭惈瀛愯妭鐐�
+ *
+ * @param oid 鍒嗙被鐨勪富閿�
+ * @return true 琛ㄧず鍖呭惈
+ */
+ @Override
+ public boolean checkHasChild(String oid) {
+ if(StringUtils.isBlank(oid)){
+ return false;
+ }
+ Map<String ,String > conditionMap = new HashMap<>();
+ conditionMap.put("parentCodeClassifyOid",oid);
+ return boService.queryCount(CodeClassifyDO.class,conditionMap) > 0;
+ }
+
+ /**
+ * 浣跨敤瀛楁鐨勮矾寰勶紝鏌ヨ瀵硅薄
+ *
+ * @param fieldPath 瀛楁鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮� xxx/yyy/zz鐨勬牸寮�
+ * @param field 瀛楁鐨勮嫳鏂囧悕绉�
+ * @return 鍒嗙被鐨勫璞�
+ */
+ @Override
+ public CodeClassifyDO selectByFieldPath(String fieldPath, String field) {
+ if(StringUtils.isBlank(field)){
+ field = VciQueryWrapperForDO.ID_FIELD;
+ }
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(new HashMap<>(),CodeClassifyDO.class);
+ String sql = "select * from (select oid , SYS_CONNECT_BY_PATH(" + field + ",'/') as paths from " + queryWrapperForDO.getTableName() +
+ " START WITH parentCodeClassifyOid is null CONNECT BY PRIOR OID= parentCodeClassifyOid ) a where a.paths = '/" + fieldPath + "' ";
+ List<CodeClassifyDO> dataList =boService.queryByOnlySqlForObj(sql,CodeClassifyDO.class);
+ return (!CollectionUtils.isEmpty(dataList))?selectByPrimaryKey(dataList.get(0).getOid()):null;
+ }
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyProcessTempDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyProcessTempDaoImpl.java
new file mode 100644
index 0000000..025502f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyProcessTempDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeClassifyProcessTempDaoI;
+import com.vci.mdm.model.CodeClassifyProcessTempDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeClassifyProcessTempDaoImpl implements CodeClassifyProcessTempDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyProcessTempDO codeClassifyProcessTempDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyProcessTempDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyProcessTempDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyProcessTempDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyProcessTempDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyProcessTempDO record = boService.selectByOid(oid, CodeClassifyProcessTempDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyProcessTempDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyProcessTempDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyProcessTempDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyProcessTempDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyProcessTempDO> selectAll(){
+ return boService.queryObject(CodeClassifyProcessTempDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyProcessTempDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyProcessTempDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyProcessTempDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyProcessTempDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyProcessTempDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyProcessTempDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyProcessTempDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyProcessTempDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codeclsflowtemp");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codeclsflowtemp");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyProcessTempDO> dos = boService.selectByOidCollection(oids, CodeClassifyProcessTempDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java
new file mode 100644
index 0000000..6460b90
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeClassifyTempMapItemDaoI;
+import com.vci.mdm.model.CodeClassifyTempMapItemDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-03-10
+ */
+@Repository
+public class CodeClassifyTempMapItemDaoImpl implements CodeClassifyTempMapItemDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTempMapItemDO codeClassifyTempMapItemDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyTempMapItemDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyTempMapItemDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyTempMapItemDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyTempMapItemDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTempMapItemDO record = boService.selectByOid(oid, CodeClassifyTempMapItemDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTempMapItemDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyTempMapItemDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyTempMapItemDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyTempMapItemDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyTempMapItemDO> selectAll(){
+ return boService.queryObject(CodeClassifyTempMapItemDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyTempMapItemDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyTempMapItemDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTempMapItemDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyTempMapItemDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyTempMapItemDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTempMapItemDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyTempMapItemDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyTempMapItemDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyTempMapItemDO> dos = boService.selectByOidCollection(oids, CodeClassifyTempMapItemDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java
new file mode 100644
index 0000000..80bed10
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeClassifyTemplateAttrDaoI;
+import com.vci.mdm.model.CodeClassifyTemplateAttrDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeClassifyTemplateAttrDaoImpl implements CodeClassifyTemplateAttrDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyTemplateAttrDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyTemplateAttrDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyTemplateAttrDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyTemplateAttrDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateAttrDO record = boService.selectByOid(oid, CodeClassifyTemplateAttrDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyTemplateAttrDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyTemplateAttrDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrDO> selectAll(){
+ return boService.queryObject(CodeClassifyTemplateAttrDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyTemplateAttrDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyTemplateAttrDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyTemplateAttrDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyTemplateAttrDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyTemplateAttrDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyTemplateAttrDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyTemplateAttrDO> dos = boService.selectByOidCollection(oids, CodeClassifyTemplateAttrDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos,false);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java
new file mode 100644
index 0000000..05e5b4e
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeClassifyTemplateButtonDaoI;
+import com.vci.mdm.model.CodeClassifyTemplateButtonDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeClassifyTemplateButtonDaoImpl implements CodeClassifyTemplateButtonDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyTemplateButtonDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyTemplateButtonDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyTemplateButtonDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyTemplateButtonDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateButtonDO record = boService.selectByOid(oid, CodeClassifyTemplateButtonDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyTemplateButtonDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyTemplateButtonDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonDO> selectAll(){
+ return boService.queryObject(CodeClassifyTemplateButtonDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyTemplateButtonDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyTemplateButtonDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyTemplateButtonDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyTemplateButtonDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyTemplateButtonDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyTemplateButtonDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyTemplateButtonDO> dos = boService.selectByOidCollection(oids, CodeClassifyTemplateButtonDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateDaoImpl.java
new file mode 100644
index 0000000..701576c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateDaoImpl.java
@@ -0,0 +1,319 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodeClassifyTemplateDaoI;
+import com.vci.mdm.lifecycle.CodeClassifyTemplateLC;
+import com.vci.mdm.model.CodeClassifyTemplateDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeClassifyTemplateDaoImpl implements CodeClassifyTemplateDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateDO codeClassifyTemplateDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyTemplateDO,false);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyTemplateDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyTemplateDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyTemplateDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateDO record = boService.selectByOid(oid, CodeClassifyTemplateDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyTemplateDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyTemplateDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectAll(){
+ return boService.queryObject(CodeClassifyTemplateDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyTemplateDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyTemplateDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyTemplateDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyTemplateDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyTemplateDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyTemplateDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<String> selectAllLevelChildOid(String oid){
+ String sql = "select oid from platformbtm_codeclstemplate START WITH codeClassifyOid = :oid CONNECT BY PRIOR codeClassifyOid= OID";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ List<String> oidList = new ArrayList<String>();
+ if(!CollectionUtils.isEmpty(dataList)){
+ for(Map data:dataList){
+ oidList.add(VciBaseUtil.getStringValueFromObject(data.get("oid")));
+ }
+ }
+ return oidList;
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈変笅绾ф暟鎹�
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectAllLevelChild(String oid){
+ return boService.selectByOidCollection(selectAllLevelChildOid(oid),CodeClassifyTemplateDO.class);
+ }
+
+ /**
+ * 鏌ヨ鏌愪釜鑺傜偣鐨勬墍鏈夊眰绾т笅绾х殑涓暟
+ * @param oid 涓婚敭
+ * @return 鎬绘暟
+ */
+ @Override
+ public long countAllLevelChildOid(String oid){
+ String sql = "select count(OID) countsize from platformbtm_codeclstemplate START WITH codeClassifyOid = :oid CONNECT BY PRIOR codeClassifyOid = OID";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ return !CollectionUtils.isEmpty(dataList)?VciBaseUtil.getInt(VciBaseUtil.getStringValueFromObject(dataList.get(0).get("countsize"))):0;
+ }
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codeclstemplate");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codeclstemplate");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyTemplateDO> dos = boService.selectByOidCollection(oids, CodeClassifyTemplateDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ /**
+ * 鏌ヨ鍒嗙被鐨勫瓙鍒嗙被鍖呭惈鐨勬ā鏉跨殑鍐呭
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return key鏄ā鏉跨殑涓婚敭锛寁alue鏄ā鏉挎墍灞炵殑鍒嗙被涓婚敭
+ */
+ @Override
+ public Map<String, String> selectChildHasReleaseTemplate(String codeClassifyOid) {
+ Map<String, String> tempClsMap = new HashMap<>();
+ if(StringUtils.isNotBlank(codeClassifyOid)) {
+ String sql = "select t.oid as oid,cls.oid as clsoid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE) +
+ " t left join (select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " where lcstatus = :lcstatus " +
+ " start with oid = :classifyoid \n" +
+ "connect by prior oid=parentcodeclassifyoid) cls on t.codeclassifyoid = cls.oid where t.lcstatus =:templatelcstatus and cls.oid is not null\n";
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("lcstatus", FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED);
+ conditionMap.put("classifyoid", codeClassifyOid.trim());
+ conditionMap.put("templatelcstatus", CodeClassifyTemplateLC.RELEASED.getValue());
+ List<ClientBusinessObject> cbos = boService.queryBySql(sql, conditionMap);
+
+ if(!CollectionUtils.isEmpty(cbos)){
+ cbos.stream().forEach(cbo->{
+ tempClsMap.put(cbo.getOid(),cbo.getAttributeValue("clsoid"));
+ });
+ }else{
+
+ }
+ }
+ return tempClsMap;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java
new file mode 100644
index 0000000..66c620d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeClassifyTemplateMapDaoI;
+import com.vci.mdm.model.CodeClassifyTemplateMapDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeClassifyTemplateMapDaoImpl implements CodeClassifyTemplateMapDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateMapDO codeClassifyTemplateMapDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyTemplateMapDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyTemplateMapDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyTemplateMapDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyTemplateMapDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateMapDO record = boService.selectByOid(oid, CodeClassifyTemplateMapDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateMapDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyTemplateMapDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyTemplateMapDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyTemplateMapDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyTemplateMapDO> selectAll(){
+ return boService.queryObject(CodeClassifyTemplateMapDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyTemplateMapDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyTemplateMapDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateMapDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyTemplateMapDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyTemplateMapDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateMapDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyTemplateMapDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyTemplateMapDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codetempmap");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codetempmap");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyTemplateMapDO> dos = boService.selectByOidCollection(oids, CodeClassifyTemplateMapDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyValueDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyValueDaoImpl.java
new file mode 100644
index 0000000..1ceae22
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyValueDaoImpl.java
@@ -0,0 +1,254 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeClassifyValueDaoI;
+import com.vci.mdm.model.CodeClassifyValueDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeClassifyValueDaoImpl implements CodeClassifyValueDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyValueDO codeClassifyValueDO = selectByPrimaryKey(oid);
+ return boService.delete(codeClassifyValueDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeClassifyValueDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeClassifyValueDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeClassifyValueDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyValueDO record = boService.selectByOid(oid, CodeClassifyValueDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeClassifyValueDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeClassifyValueDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectAll(){
+ return boService.queryObject(CodeClassifyValueDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeClassifyValueDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeClassifyValueDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeClassifyValueDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeClassifyValueDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeClassifyValueDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeClassifyValueDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<String> selectAllLevelChildOid(String oid){
+ String sql = "select oid FROM platformbtm_codeclassifyvalue START WITH parentClassifyValueOid = :oid CONNECT BY PRIOR parentClassifyValueOid= OID";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ List<String> oidList = new ArrayList<String>();
+ if(!CollectionUtils.isEmpty(dataList)){
+ for(Map data:dataList){
+ oidList.add(VciBaseUtil.getStringValueFromObject(data.get("oid")));
+ }
+ }
+ return oidList;
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈変笅绾ф暟鎹�
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectAllLevelChild(String oid){
+ return boService.selectByOidCollection(selectAllLevelChildOid(oid),CodeClassifyValueDO.class);
+ }
+
+ /**
+ * 鏌ヨ鏌愪釜鑺傜偣鐨勬墍鏈夊眰绾т笅绾х殑涓暟
+ * @param oid 涓婚敭
+ * @return 鎬绘暟
+ */
+ @Override
+ public long countAllLevelChildOid(String oid){
+ String sql = "select count(OID) countsize FROM platformbtm_codeclassifyvalue START WITH parentClassifyValueOid = :oid CONNECT BY PRIOR parentClassifyValueOid = OID";
+ Map< String,String> conditionMap = new HashMap< String,String>();
+ conditionMap.put("oid",oid);
+ List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
+ return !CollectionUtils.isEmpty(dataList)?VciBaseUtil.getInt(VciBaseUtil.getStringValueFromObject(dataList.get(0).get("countsize"))):0;
+ }
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeClassifyValueDO> dos = boService.selectByOidCollection(oids, CodeClassifyValueDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeFixedValueDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeFixedValueDaoImpl.java
new file mode 100644
index 0000000..6dfe48d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeFixedValueDaoImpl.java
@@ -0,0 +1,219 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeFixedValueDaoI;
+import com.vci.mdm.model.CodeFixedValueDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+import plm.bs.bom.common.AttributeValue;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeFixedValueDaoImpl implements CodeFixedValueDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeFixedValueDO codeFixedValueDO = selectByPrimaryKey(oid);
+ return boService.delete(codeFixedValueDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeFixedValueDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeFixedValueDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeFixedValueDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeFixedValueDO record = boService.selectByOid(oid, CodeFixedValueDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeFixedValueDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeFixedValueDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeFixedValueDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeFixedValueDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeFixedValueDO> selectAll(){
+ return boService.queryObject(CodeFixedValueDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeFixedValueDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeFixedValueDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeFixedValueDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeFixedValueDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeFixedValueDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeFixedValueDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeFixedValueDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeFixedValueDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeFixedValueDO> dos = boService.selectByOidCollection(oids, CodeFixedValueDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ Set<ClientBusinessObject> deleteCbos = batchCBO.getDeleteCbos();
+ deleteCbos.forEach(cbo -> {
+ cbo.getBusinessObject().newAttrValList = new AttributeValue[0];
+ });
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java
new file mode 100644
index 0000000..850c959
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java
@@ -0,0 +1,261 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeKeyAttrRepeatRuleDaoI;
+import com.vci.mdm.model.CodeKeyAttrRepeatRuleDO;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeKeyAttrRepeatRuleDaoImpl implements CodeKeyAttrRepeatRuleDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO = selectByPrimaryKey(oid);
+ return boService.delete(codeKeyAttrRepeatRuleDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeKeyAttrRepeatRuleDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeKeyAttrRepeatRuleDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeKeyAttrRepeatRuleDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeKeyAttrRepeatRuleDO record = boService.selectByOid(oid, CodeKeyAttrRepeatRuleDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeKeyAttrRepeatRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeKeyAttrRepeatRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁缂栧彿鎵归噺鏌ヨ瀵硅薄
+ *
+ * @param ids 缂栧彿鐨勯泦鍚�
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleDO> selectByIdCollection(Collection<String> ids) {
+ VciBaseUtil.alertNotNull(ids,"缂栧彿闆嗗悎");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("id", QueryOptionConstant.IN +VciBaseUtil.toInSql(ids.toArray(new String[0])));
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap, CodeKeyAttrRepeatRuleDO.class);
+ return boService.selectByQueryWrapper(wrapper,CodeKeyAttrRepeatRuleDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleDO> selectAll(){
+ return boService.queryObject(CodeKeyAttrRepeatRuleDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeKeyAttrRepeatRuleDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeKeyAttrRepeatRuleDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeKeyAttrRepeatRuleDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeKeyAttrRepeatRuleDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeKeyAttrRepeatRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeKeyAttrRepeatRuleDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codekeyattrrepeat");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codekeyattrrepeat");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeKeyAttrRepeatRuleDO> dos = boService.selectByOidCollection(oids, CodeKeyAttrRepeatRuleDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodePhaseAttrDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodePhaseAttrDaoImpl.java
new file mode 100644
index 0000000..7ef1a0f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodePhaseAttrDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodePhaseAttrDaoI;
+import com.vci.mdm.model.CodePhaseAttrDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 闃舵鐨勫睘鎬ф暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodePhaseAttrDaoImpl implements CodePhaseAttrDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodePhaseAttrDO codePhaseAttrDO = selectByPrimaryKey(oid);
+ return boService.delete(codePhaseAttrDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 闃舵鐨勫睘鎬ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodePhaseAttrDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 闃舵鐨勫睘鎬ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodePhaseAttrDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodePhaseAttrDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodePhaseAttrDO record = boService.selectByOid(oid, CodePhaseAttrDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodePhaseAttrDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodePhaseAttrDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodePhaseAttrDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodePhaseAttrDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodePhaseAttrDO> selectAll(){
+ return boService.queryObject(CodePhaseAttrDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 闃舵鐨勫睘鎬ф暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodePhaseAttrDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 闃舵鐨勫睘鎬ф暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodePhaseAttrDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodePhaseAttrDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodePhaseAttrDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodePhaseAttrDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodePhaseAttrDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodePhaseAttrDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodePhaseAttrDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codephaseattr");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codephaseattr");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodePhaseAttrDO> dos = boService.selectByOidCollection(oids, CodePhaseAttrDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeResembleRuleDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeResembleRuleDaoImpl.java
new file mode 100644
index 0000000..350efae
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeResembleRuleDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeResembleRuleDaoI;
+import com.vci.mdm.model.CodeResembleRuleDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+@Repository
+public class CodeResembleRuleDaoImpl implements CodeResembleRuleDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeResembleRuleDO codeResembleRuleDO = selectByPrimaryKey(oid);
+ return boService.delete(codeResembleRuleDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeResembleRuleDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeResembleRuleDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeResembleRuleDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeResembleRuleDO record = boService.selectByOid(oid, CodeResembleRuleDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeResembleRuleDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeResembleRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeResembleRuleDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeResembleRuleDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeResembleRuleDO> selectAll(){
+ return boService.queryObject(CodeResembleRuleDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeResembleRuleDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeResembleRuleDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeResembleRuleDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeResembleRuleDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeResembleRuleDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeResembleRuleDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeResembleRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeResembleRuleDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "coderesemblerule");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "coderesemblerule");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeResembleRuleDO> dos = boService.selectByOidCollection(oids, CodeResembleRuleDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeRuleDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeRuleDaoImpl.java
new file mode 100644
index 0000000..aee581b
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeRuleDaoImpl.java
@@ -0,0 +1,273 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeRuleDaoI;
+import com.vci.mdm.model.CodeRuleDO;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeRuleDaoImpl implements CodeRuleDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeRuleDO codeRuleDO = selectByPrimaryKey(oid);
+ return boService.delete(codeRuleDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 涓绘暟鎹紪鐮佽鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeRuleDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 涓绘暟鎹紪鐮佽鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeRuleDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeRuleDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeRuleDO record = boService.selectByOid(oid, CodeRuleDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeRuleDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeRuleDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeRuleDO.class);
+ }
+
+ /**
+ * 浣跨敤缂栧彿闆嗗悎鎵归噺鏌ヨ瀵硅薄
+ *
+ * @param ids 缂栧彿鐨勯泦鍚�
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeRuleDO> selectByIdCollection(Collection<String> ids) {
+ VciBaseUtil.alertNotNull(ids,"缂栧彿闆嗗悎");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(ids.toArray(new String[0])) );
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeRuleDO.class);
+ return boService.selectByQueryWrapper(wrapper,CodeRuleDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeRuleDO> selectAll(){
+ return boService.queryObject(CodeRuleDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 涓绘暟鎹紪鐮佽鍒欐暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeRuleDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 涓绘暟鎹紪鐮佽鍒欐暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeRuleDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeRuleDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeRuleDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeRuleDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeRuleDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeRuleDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeRuleDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "coderule");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "coderule");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeRuleDO> dos = boService.selectByOidCollection(oids, CodeRuleDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ /**
+ * 鍒犻櫎鏁版嵁涓嶈繘琛屾寔涔呭寲锛岃浆鍖栦负batchCBO
+ * @param codeRule 缂栫爜瑙勫垯瀵硅薄
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO delete4BatchCBO(CodeRuleDO codeRule) {
+ VciBaseUtil.alertNotNull(codeRule,"缂栫爜瑙勫垯");
+ WebUtil.setPersistence(false);
+ return boService.delete(codeRule);
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSerialValueDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSerialValueDaoImpl.java
new file mode 100644
index 0000000..94eba42
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSerialValueDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeSerialValueDaoI;
+import com.vci.mdm.model.CodeSerialValueDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 娴佹按鐨勫�兼暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-03-01
+ */
+@Repository
+public class CodeSerialValueDaoImpl implements CodeSerialValueDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeSerialValueDO codeSerialValueDO = selectByPrimaryKey(oid);
+ return boService.delete(codeSerialValueDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 娴佹按鐨勫�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeSerialValueDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 娴佹按鐨勫�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeSerialValueDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeSerialValueDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeSerialValueDO record = boService.selectByOid(oid, CodeSerialValueDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeSerialValueDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeSerialValueDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeSerialValueDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeSerialValueDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeSerialValueDO> selectAll(){
+ return boService.queryObject(CodeSerialValueDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 娴佹按鐨勫�兼暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeSerialValueDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 娴佹按鐨勫�兼暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeSerialValueDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeSerialValueDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeSerialValueDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeSerialValueDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeSerialValueDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeSerialValueDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeSerialValueDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeSerialValueDO> dos = boService.selectByOidCollection(oids, CodeSerialValueDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSynonymDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSynonymDaoImpl.java
new file mode 100644
index 0000000..bfa8771
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSynonymDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeSynonymDaoI;
+import com.vci.mdm.model.CodeSynonymDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 鍚屼箟璇嶉厤缃暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-02-17
+ */
+@Repository
+public class CodeSynonymDaoImpl implements CodeSynonymDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeSynonymDO codeSynonymDO = selectByPrimaryKey(oid);
+ return boService.delete(codeSynonymDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 鍚屼箟璇嶉厤缃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeSynonymDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 鍚屼箟璇嶉厤缃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeSynonymDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeSynonymDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeSynonymDO record = boService.selectByOid(oid, CodeSynonymDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeSynonymDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeSynonymDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeSynonymDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeSynonymDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeSynonymDO> selectAll(){
+ return boService.queryObject(CodeSynonymDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 鍚屼箟璇嶉厤缃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeSynonymDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 鍚屼箟璇嶉厤缃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeSynonymDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeSynonymDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeSynonymDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeSynonymDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeSynonymDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeSynonymDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeSynonymDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeSynonymDO> dos = boService.selectByOidCollection(oids, CodeSynonymDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeTemplatePhaseDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeTemplatePhaseDaoImpl.java
new file mode 100644
index 0000000..2148e43
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeTemplatePhaseDaoImpl.java
@@ -0,0 +1,244 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.CodeTemplatePhaseDaoI;
+import com.vci.mdm.model.CodeTemplatePhaseDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 妯℃澘闃舵鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Repository
+public class CodeTemplatePhaseDaoImpl implements CodeTemplatePhaseDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeTemplatePhaseDO codeTemplatePhaseDO = selectByPrimaryKey(oid);
+ return boService.delete(codeTemplatePhaseDO,false);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 妯℃澘闃舵鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(CodeTemplatePhaseDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 妯℃澘闃舵鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<CodeTemplatePhaseDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public CodeTemplatePhaseDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeTemplatePhaseDO record = boService.selectByOid(oid, CodeTemplatePhaseDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeTemplatePhaseDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), CodeTemplatePhaseDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<CodeTemplatePhaseDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, CodeTemplatePhaseDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<CodeTemplatePhaseDO> selectAll(){
+ return boService.queryObject(CodeTemplatePhaseDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 妯℃澘闃舵鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(CodeTemplatePhaseDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 妯℃澘闃舵鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<CodeTemplatePhaseDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeTemplatePhaseDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(CodeTemplatePhaseDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(CodeTemplatePhaseDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<CodeTemplatePhaseDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,CodeTemplatePhaseDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,CodeTemplatePhaseDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+ /**
+ * 鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬�
+ * @param oids 涓婚敭闆嗗悎锛屼笉鑳藉ぇ浜�1000
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐨勫��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public long batchUpdateLcStatus(Collection<String> oids, String lcStatus){
+ List<ClientBusinessObject> cbos = boService.selectCBOByOidCollection(oids, "codetempphase");
+ if(CollectionUtils.isEmpty(cbos)){
+ return 0;
+ }
+ lifeCycleService.transCboStatus(cbos,lcStatus);
+ return cbos.size();
+ }
+ /**
+ * 鏍规嵁涓婚敭鏇存柊鐘舵��
+ * @param oid 涓婚敭
+ * @param lcStatus 鐢熷懡鍛ㄦ湡鐘舵��
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public int updateLcStatus( String oid, String lcStatus){
+ ClientBusinessObject cbo = boService.selectCBOByOid(oid, "codetempphase");
+ if(cbo == null || StringUtils.isBlank(cbo.getOid())){
+ return 0;
+ }
+ lifeCycleService.transStatus(cbo.getBusinessObject(),lcStatus);
+ return 1;
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<CodeTemplatePhaseDO> dos = boService.selectByOidCollection(oids, CodeTemplatePhaseDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos,false);//涓嶅垽鏂弬鐓�
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingDataDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingDataDaoImpl.java
new file mode 100644
index 0000000..f5928e2
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingDataDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.DockingDataDaoI;
+import com.vci.mdm.model.DockingDataDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+@Repository
+public class DockingDataDaoImpl implements DockingDataDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingDataDO DockingDataDO = selectByPrimaryKey(oid);
+ return boService.delete(DockingDataDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingDataDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingDataDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingDataDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingDataDO record = boService.selectByOid(oid, DockingDataDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingDataDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingDataDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingDataDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingDataDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingDataDO> selectAll(){
+ return boService.queryObject(DockingDataDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingDataDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingDataDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingDataDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(DockingDataDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingDataDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingDataDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,DockingDataDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingDataDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<DockingDataDO> dos = boService.selectByOidCollection(oids, DockingDataDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingLogeDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingLogeDaoImpl.java
new file mode 100644
index 0000000..a29cbe9
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingLogeDaoImpl.java
@@ -0,0 +1,213 @@
+package org.springblade.code.dao.impl;
+
+
+import com.vci.mdm.dao.DockingLogeDaoI;
+import com.vci.mdm.model.DockingLogeDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+@Repository
+public class DockingLogeDaoImpl implements DockingLogeDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingLogeDO dockingLogDO = selectByPrimaryKey(oid);
+ return boService.delete(dockingLogDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingLogeDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingLogeDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingLogeDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingLogeDO record = boService.selectByOid(oid, DockingLogeDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingLogeDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingLogeDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingLogeDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingLogeDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingLogeDO> selectAll(){
+ return boService.queryObject(DockingLogeDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingLogeDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingLogeDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingLogeDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(DockingLogeDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingLogeDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingLogeDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,DockingLogeDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingLogeDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<DockingLogeDO> dos = boService.selectByOidCollection(oids, DockingLogeDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataDaoImpl.java
new file mode 100644
index 0000000..d09f54c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataDaoImpl.java
@@ -0,0 +1,213 @@
+package org.springblade.code.dao.impl;
+
+
+import com.vci.mdm.dao.DockingPreApplyDataDaoI;
+import com.vci.mdm.model.DockingPreApplyDataDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+@Repository
+public class DockingPreApplyDataDaoImpl implements DockingPreApplyDataDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreApplyDataDO dockingPreApplyDataDO = selectByPrimaryKey(oid);
+ return boService.delete(dockingPreApplyDataDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingPreApplyDataDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingPreApplyDataDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingPreApplyDataDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreApplyDataDO record = boService.selectByOid(oid, DockingPreApplyDataDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreApplyDataDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingPreApplyDataDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingPreApplyDataDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingPreApplyDataDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingPreApplyDataDO> selectAll(){
+ return boService.queryObject(DockingPreApplyDataDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingPreApplyDataDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingPreApplyDataDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreApplyDataDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(DockingPreApplyDataDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingPreApplyDataDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreApplyDataDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,DockingPreApplyDataDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingPreApplyDataDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<DockingPreApplyDataDO> dos = boService.selectByOidCollection(oids, DockingPreApplyDataDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java
new file mode 100644
index 0000000..676885d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java
@@ -0,0 +1,213 @@
+package org.springblade.code.dao.impl;
+
+
+import com.vci.mdm.dao.DockingPreApplyDataInfoDaoI;
+import com.vci.mdm.model.DockingPreApplyDataInfoDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+@Repository
+public class DockingPreApplyDataInfoDaoImpl implements DockingPreApplyDataInfoDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = selectByPrimaryKey(oid);
+ return boService.delete(dockingPreApplyDataInfoDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingPreApplyDataInfoDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingPreApplyDataInfoDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingPreApplyDataInfoDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreApplyDataInfoDO record = boService.selectByOid(oid, DockingPreApplyDataInfoDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreApplyDataInfoDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingPreApplyDataInfoDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingPreApplyDataInfoDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingPreApplyDataInfoDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingPreApplyDataInfoDO> selectAll(){
+ return boService.queryObject(DockingPreApplyDataInfoDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingPreApplyDataInfoDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingPreApplyDataInfoDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreApplyDataInfoDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(DockingPreApplyDataInfoDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingPreApplyDataInfoDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreApplyDataInfoDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,DockingPreApplyDataInfoDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingPreApplyDataInfoDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<DockingPreApplyDataInfoDO> dos = boService.selectByOidCollection(oids, DockingPreApplyDataInfoDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrMappingDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrMappingDaoImpl.java
new file mode 100644
index 0000000..e7e116f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrMappingDaoImpl.java
@@ -0,0 +1,202 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.DockingPreAttrMappingDaoI;
+import com.vci.mdm.model.DockingPreAttrMappingDO;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+@Repository
+public class DockingPreAttrMappingDaoImpl implements DockingPreAttrMappingDaoI {
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid) {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreAttrMappingDO dockingPreAttrMappingDO = selectByPrimaryKey(oid);
+ return boService.delete(dockingPreAttrMappingDO);
+ }
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingPreAttrMappingDO record) {
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingPreAttrMappingDO> records) {
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingPreAttrMappingDO selectByPrimaryKey(String oid) {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreAttrMappingDO record = boService.selectByOid(oid, DockingPreAttrMappingDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreAttrMappingDO> selectByPrimaryKeys(String oids) {
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingPreAttrMappingDO.class);
+
+ }
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingPreAttrMappingDO> selectByPrimaryKeyCollection(Collection<String> oids) {
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingPreAttrMappingDO.class);
+ }
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingPreAttrMappingDO> selectAll() {
+ return boService.queryObject(DockingPreAttrMappingDO.class,null);
+ }
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingPreAttrMappingDO record) {
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingPreAttrMappingDO> records) {
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreAttrMappingDO> selectByCondition(Map<String, String> conditionMap, PageHelper pageHelper) {
+ return boService.queryObject(DockingPreAttrMappingDO.class,conditionMap,pageHelper);
+ }
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map<String, String> conditionMap) {
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingPreAttrMappingDO.class,conditionMap)));
+ }
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreAttrMappingDO> selectByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return boService.selectByQueryWrapper(queryWrapper,DockingPreAttrMappingDO.class);
+ }
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingPreAttrMappingDO.class)));
+ }
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid) {
+ return selectByPrimaryKey(oid).getName();
+ }
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids) {
+ List<DockingPreAttrMappingDO> dos = boService.selectByOidCollection(oids, DockingPreAttrMappingDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ /***
+ * 鏍规嵁灞炴�т富閿壒閲忚幏鍙栧璞�
+ * @param oids 涓婚敭
+ * @return
+ */
+ @Override
+ public List<DockingPreAttrMappingDO> selectByOid(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭");
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingPreAttrMappingDO.class);
+ queryWrapper.addQueryMap("oid", QueryOptionConstant.IN + VciBaseUtil.toInSql(oids));
+ return selectByWrapper(queryWrapper);
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrRangeDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrRangeDaoImpl.java
new file mode 100644
index 0000000..10fecd5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrRangeDaoImpl.java
@@ -0,0 +1,202 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.DockingPreAttrRangeDaoI;
+import com.vci.mdm.model.DockingPreAttrRangeDO;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+@Repository
+public class DockingPreAttrRangeDaoImpl implements DockingPreAttrRangeDaoI {
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid) {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreAttrRangeDO dockingPreAttrRangeDO = selectByPrimaryKey(oid);
+ return boService.delete(dockingPreAttrRangeDO);
+ }
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingPreAttrRangeDO record) {
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingPreAttrRangeDO> records) {
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingPreAttrRangeDO selectByPrimaryKey(String oid) {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreAttrRangeDO record = boService.selectByOid(oid, DockingPreAttrRangeDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreAttrRangeDO> selectByPrimaryKeys(String oids) {
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingPreAttrRangeDO.class);
+
+ }
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingPreAttrRangeDO> selectByPrimaryKeyCollection(Collection<String> oids) {
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingPreAttrRangeDO.class);
+ }
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingPreAttrRangeDO> selectAll() {
+ return boService.queryObject(DockingPreAttrRangeDO.class,null);
+ }
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingPreAttrRangeDO record) {
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingPreAttrRangeDO> records) {
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreAttrRangeDO> selectByCondition(Map<String, String> conditionMap, PageHelper pageHelper) {
+ return boService.queryObject(DockingPreAttrRangeDO.class,conditionMap,pageHelper);
+ }
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map<String, String> conditionMap) {
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingPreAttrRangeDO.class,conditionMap)));
+ }
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingPreAttrRangeDO> selectByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return boService.selectByQueryWrapper(queryWrapper,DockingPreAttrRangeDO.class);
+ }
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingPreAttrRangeDO.class)));
+ }
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid) {
+ return selectByPrimaryKey(oid).getName();
+ }
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids) {
+ List<DockingPreAttrRangeDO> dos = boService.selectByOidCollection(oids, DockingPreAttrRangeDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ /***
+ * 鏍规嵁灞炴�т富閿壒閲忚幏鍙栧璞�
+ * @param attrOid 涓婚敭
+ * @return
+ */
+ @Override
+ public List<DockingPreAttrRangeDO> selectByAttrOid(String attrOid){
+ VciBaseUtil.alertNotNull(attrOid,"灞炴�т富閿�");
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingPreAttrRangeDO.class);
+ queryWrapper.addQueryMap("jmetaListId", QueryOptionConstant.IN + VciBaseUtil.toInSql(attrOid));
+ return selectByWrapper(queryWrapper);
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingTaskDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingTaskDaoImpl.java
new file mode 100644
index 0000000..cea550f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingTaskDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.DockingTaskDaoI;
+import com.vci.mdm.model.DockingTaskDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+@Repository
+public class DockingTaskDaoImpl implements DockingTaskDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingTaskDO dockingTaskDO = selectByPrimaryKey(oid);
+ return boService.delete(dockingTaskDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(DockingTaskDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<DockingTaskDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public DockingTaskDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingTaskDO record = boService.selectByOid(oid, DockingTaskDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingTaskDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), DockingTaskDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<DockingTaskDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, DockingTaskDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<DockingTaskDO> selectAll(){
+ return boService.queryObject(DockingTaskDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(DockingTaskDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<DockingTaskDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingTaskDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(DockingTaskDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(DockingTaskDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<DockingTaskDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,DockingTaskDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,DockingTaskDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<DockingTaskDO> dos = boService.selectByOidCollection(oids, DockingTaskDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntAuthorityDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntAuthorityDaoImpl.java
new file mode 100644
index 0000000..53f8532
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntAuthorityDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.SysIntAuthorityDaoI;
+import com.vci.mdm.model.SysIntAuthorityDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+@Repository
+public class SysIntAuthorityDaoImpl implements SysIntAuthorityDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntAuthorityDO sysIntAuthorityDO = selectByPrimaryKey(oid);
+ return boService.delete(sysIntAuthorityDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(SysIntAuthorityDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<SysIntAuthorityDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public SysIntAuthorityDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntAuthorityDO record = boService.selectByOid(oid, SysIntAuthorityDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntAuthorityDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), SysIntAuthorityDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<SysIntAuthorityDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, SysIntAuthorityDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<SysIntAuthorityDO> selectAll(){
+ return boService.queryObject(SysIntAuthorityDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(SysIntAuthorityDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<SysIntAuthorityDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntAuthorityDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(SysIntAuthorityDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(SysIntAuthorityDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntAuthorityDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,SysIntAuthorityDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,SysIntAuthorityDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<SysIntAuthorityDO> dos = boService.selectByOidCollection(oids, SysIntAuthorityDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntBaseDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntBaseDaoImpl.java
new file mode 100644
index 0000000..0085b81
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntBaseDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.mdm.dao.SysIntBaseDaoI;
+import com.vci.mdm.model.SysIntBaseDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+@Repository
+public class SysIntBaseDaoImpl implements SysIntBaseDaoI{
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntBaseDO sysIntBaseDO = selectByPrimaryKey(oid);
+ return boService.delete(sysIntBaseDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(SysIntBaseDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<SysIntBaseDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public SysIntBaseDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntBaseDO record = boService.selectByOid(oid, SysIntBaseDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntBaseDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), SysIntBaseDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<SysIntBaseDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, SysIntBaseDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<SysIntBaseDO> selectAll(){
+ return boService.queryObject(SysIntBaseDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(SysIntBaseDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<SysIntBaseDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntBaseDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(SysIntBaseDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(SysIntBaseDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntBaseDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,SysIntBaseDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,SysIntBaseDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<SysIntBaseDO> dos = boService.selectByOidCollection(oids, SysIntBaseDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntHeaderDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntHeaderDaoImpl.java
new file mode 100644
index 0000000..84f4131
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntHeaderDaoImpl.java
@@ -0,0 +1,258 @@
+package org.springblade.code.dao.impl;
+
+
+import com.vci.mdm.dao.SysIntHeaderDaoI;
+import com.vci.mdm.model.SysIntHeaderDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+import static com.vci.mdm.constant.MdmDuckingConstant.FLAG_FAIL;
+
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+@Repository
+public class SysIntHeaderDaoImpl implements SysIntHeaderDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntHeaderDO sysIntHeaderDO = selectByPrimaryKey(oid);
+ return boService.delete(sysIntHeaderDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(SysIntHeaderDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<SysIntHeaderDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public SysIntHeaderDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntHeaderDO record = boService.selectByOid(oid, SysIntHeaderDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntHeaderDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), SysIntHeaderDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<SysIntHeaderDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, SysIntHeaderDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<SysIntHeaderDO> selectAll(){
+ return boService.queryObject(SysIntHeaderDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(SysIntHeaderDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<SysIntHeaderDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntHeaderDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(SysIntHeaderDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(SysIntHeaderDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntHeaderDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,SysIntHeaderDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,SysIntHeaderDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<SysIntHeaderDO> dos = boService.selectByOidCollection(oids, SysIntHeaderDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ //==
+
+ /**
+ * 鏍规嵁sysinfo涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param sysinfoOid 涓婚敭
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ public List<SysIntHeaderDO> selectBySysinfoOid(String sysinfoOid){
+ VciBaseUtil.alertNotNull(sysinfoOid,"sysinfo涓婚敭");
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntHeaderDO.class);
+ queryWrapper.addQueryMap("infoOid",sysinfoOid);
+ return selectByWrapper(queryWrapper);
+ }
+
+ /**
+ * 鎵归噺淇敼杩欎釜sysinfo鐨刪eader锛屽厛鍒犻櫎sysinfo鎵�鏈夌殑header,鍐嶆柊寤烘墍鏈夌殑
+ * @param records
+ */
+ public BaseResult updateSysinfoHeader(List<SysIntHeaderDO> records){
+
+ if(records.size()<1){
+ return BaseResult.fail("sysinfoOid涓嶈兘涓虹┖!");
+ }
+ String sysinfoOid = records.get(0).getInfoOid();
+
+ List<SysIntHeaderDO> sysIntHeaderDOList = selectBySysinfoOid(sysinfoOid);
+ for (SysIntHeaderDO sysIntHeaderDO:sysIntHeaderDOList){
+ sysIntHeaderDO.setUsedflag(FLAG_FAIL);
+ }
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ //鍏堜綔搴熶互鍓嶇殑
+ BatchCBO batchCBO_batchUpdate = batchUpdate(sysIntHeaderDOList);
+ //鍐嶆柊澧�
+ BatchCBO batchCBO_batchInsert = batchInsert(records);
+ batchCBO_batchUpdate.copyFromOther(batchCBO_batchInsert);
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBO_batchUpdate);//涓�璧锋墽琛屼繚瀛�
+ return BaseResult.success("鎵归噺鎵ц鎴愬姛");
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntInfoDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntInfoDaoImpl.java
new file mode 100644
index 0000000..199cae4
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntInfoDaoImpl.java
@@ -0,0 +1,212 @@
+package org.springblade.code.dao.impl;
+
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.code.dao.SysIntInfoDaoI;
+import org.springblade.code.model.SysIntInfoDO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+
+/**
+ * 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁鎿嶄綔灞傚疄鐜扮被
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+@Repository
+public class SysIntInfoDaoImpl implements SysIntInfoDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntInfoDO sysIntInfoDO = selectByPrimaryKey(oid);
+ return boService.delete(sysIntInfoDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(SysIntInfoDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<SysIntInfoDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public SysIntInfoDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntInfoDO record = boService.selectByOid(oid, SysIntInfoDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntInfoDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), SysIntInfoDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<SysIntInfoDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, SysIntInfoDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<SysIntInfoDO> selectAll(Map conditonMap){
+ return boService.queryObject(SysIntInfoDO.class,conditonMap);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(SysIntInfoDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<SysIntInfoDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntInfoDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(SysIntInfoDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(SysIntInfoDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntInfoDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,SysIntInfoDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,SysIntInfoDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<SysIntInfoDO> dos = boService.selectByOidCollection(oids, SysIntInfoDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntParamDaoImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntParamDaoImpl.java
new file mode 100644
index 0000000..d405883
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntParamDaoImpl.java
@@ -0,0 +1,257 @@
+package org.springblade.code.dao.impl;
+
+
+import com.vci.mdm.dao.SysIntParamDaoI;
+import com.vci.mdm.model.SysIntParamDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+import static com.vci.mdm.constant.MdmDuckingConstant.FLAG_FAIL;
+
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰瀹炵幇绫�
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+@Repository
+public class SysIntParamDaoImpl implements SysIntParamDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO deleteByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntParamDO sysIntParamDO = selectByPrimaryKey(oid);
+ return boService.delete(sysIntParamDO);
+ }
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO insert(SysIntParamDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佹坊鍔犵殑鏁版嵁");
+ return boService.addSave(record);
+ }
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ @Override
+ public BatchCBO batchInsert(List<SysIntParamDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佹坊鍔犵殑鏁版嵁");
+ BatchCBO batchCBO = boService.batchAddSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public SysIntParamDO selectByPrimaryKey(String oid){
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntParamDO record = boService.selectByOid(oid, SysIntParamDO.class);
+ if(record == null || StringUtils.isBlank(record.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return record;
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntParamDO> selectByPrimaryKeys(String oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(VciBaseUtil.str2List(oids), SysIntParamDO.class);
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ @Override
+ public List<SysIntParamDO> selectByPrimaryKeyCollection(Collection<String> oids){
+ VciBaseUtil.alertNotNull(oids,"涓婚敭闆嗗悎");
+ return boService.selectByOidCollection(oids, SysIntParamDO.class);
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<SysIntParamDO> selectAll(){
+ return boService.queryObject(SysIntParamDO.class,null);
+ }
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO updateByPrimaryKey(SysIntParamDO record){
+ VciBaseUtil.alertNotNull(record,"瑕佷慨鏀圭殑瀵硅薄",record.getOid(),"涓婚敭");
+ return boService.editSave(record);
+ }
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ @Override
+ public BatchCBO batchUpdate(List<SysIntParamDO> records){
+ VciBaseUtil.alertNotNull(records,"瑕佷慨鏀圭殑瀵硅薄");
+ BatchCBO batchCBO = boService.batchEditSave(records);
+ return batchCBO;
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntParamDO> selectByCondition(Map< String,String> conditionMap, PageHelper pageHelper){
+ return boService.queryObject(SysIntParamDO.class,conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByCondition(Map< String,String> conditionMap){
+ return VciBaseUtil.getLong(String.valueOf(boService.queryCount(SysIntParamDO.class,conditionMap)));
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鏁版嵁
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ public List<SysIntParamDO> selectByWrapper(VciQueryWrapperForDO queryWrapper){
+ return boService.selectByQueryWrapper(queryWrapper,SysIntParamDO.class);
+ }
+
+ /**
+ * 鏍规嵁鏌ヨ灏佽鍣ㄦ潵鏌ヨ鎬绘暟
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鎬绘暟
+ */
+ @Override
+ public Long countByWrapper(VciQueryWrapperForDO queryWrapper){
+ return VciBaseUtil.getLong(String.valueOf(boService.countByQueryWrapper(queryWrapper,SysIntParamDO.class)));
+ }
+
+ /**
+ * 鏍规嵁涓婚敭鑾峰彇鍚嶇О
+ * @param oid 涓婚敭
+ * @return 涓枃鍚嶇О
+ */
+ @Override
+ public String selectNameByOid(String oid){
+ return selectByPrimaryKey(oid).getName();
+ }
+
+
+
+ /**
+ * 鎵归噺鍒犻櫎瀵硅薄
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ @Override
+ public BatchCBO batchDeleteByOids(Collection<String> oids){
+ List<SysIntParamDO> dos = boService.selectByOidCollection(oids, SysIntParamDO.class);
+ BatchCBO batchCBO = boService.batchDelete(dos);
+ return batchCBO;
+ }
+
+ //==
+
+ /**
+ * 鏍规嵁sysinfo涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param sysinfoOid 涓婚敭
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ public List<SysIntParamDO> selectBySysinfoOid(String sysinfoOid){
+ VciBaseUtil.alertNotNull(sysinfoOid,"sysinfo涓婚敭");
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntParamDO.class);
+ queryWrapper.addQueryMap("infoOid",sysinfoOid);
+ return selectByWrapper(queryWrapper);
+ }
+
+ /**
+ * 鎵归噺淇敼杩欎釜sysinfo鐨刪eader锛屽厛鍒犻櫎sysinfo鎵�鏈夌殑header,鍐嶆柊寤烘墍鏈夌殑
+ * @param records
+ */
+ public BaseResult updateSysinfoParam(List<SysIntParamDO> records){
+
+ if(records.size()<1){
+ return BaseResult.fail("sysinfoOid涓嶈兘涓虹┖!");
+ }
+ String sysinfoOid = records.get(0).getInfoOid();
+
+ List<SysIntParamDO> sysIntParamDOList = selectBySysinfoOid(sysinfoOid);
+ for (SysIntParamDO sysIntParamDO:sysIntParamDOList){
+ sysIntParamDO.setUsedflag(FLAG_FAIL);
+ }
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ //鍏堜綔搴熶互鍓嶇殑
+ BatchCBO batchCBO_batchUpdate = batchUpdate(sysIntParamDOList);
+ //鍐嶆柊澧�
+ BatchCBO batchCBO_batchInsert = batchInsert(records);
+ batchCBO_batchUpdate.copyFromOther(batchCBO_batchInsert);
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBO_batchUpdate);//涓�璧锋墽琛屼繚瀛�
+ return BaseResult.success("鎵归噺鎵ц鎴愬姛");
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeButtonUseEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeButtonUseEnum.java
new file mode 100644
index 0000000..4103b0f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeButtonUseEnum.java
@@ -0,0 +1,140 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 妯℃澘鐨勬寜閽敤閫�
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_TEMPLATE_BUTTON_USE,text = "妯℃澘鐨勬寜閽敤閫�",description = "")
+public enum CodeButtonUseEnum implements BaseEnum {
+
+ /**
+ * 缂栫爜鐢宠
+ */
+ ORDER("code_temp_button_use_order","缂栫爜鐢宠"),
+
+ /**
+ * 缂栫爜淇敼
+ */
+ MODIFY("code_temp_button_use_modify","缂栫爜淇敼"),
+
+ /**
+ * 缂栫爜鍥炴敹
+ */
+ DELETE("code_temp_button_use_delete","缂栫爜鍥炴敹"),
+
+ /**
+ * 鏌ヨ
+ */
+ QUERY("code_temp_button_use_query","鏌ヨ");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeButtonUseEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeButtonUseEnum wenum : CodeButtonUseEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeButtonUseEnum wenum : CodeButtonUseEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeButtonUseEnum forValue(String value) {
+ for (CodeButtonUseEnum wenum : CodeButtonUseEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeClassifyProcessUseEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeClassifyProcessUseEnum.java
new file mode 100644
index 0000000..5eb862c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeClassifyProcessUseEnum.java
@@ -0,0 +1,150 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鍒嗙被鐨勬祦绋嬬殑鐢ㄩ��
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_CLASSIFY_PROCESS_USE,text = "鍒嗙被涓殑娴佺▼妯℃澘鐢ㄩ��",description = "")
+public enum CodeClassifyProcessUseEnum implements BaseEnum {
+
+ /**
+ * 鐢宠
+ */
+ ORDER("code_cls_flow_use_order","鐢宠"),
+
+ /**
+ * 淇敼
+ */
+ MODIFY("code_cls_flow_use_modify","淇敼"),
+
+ /**
+ * 鍥炴敹
+ */
+ DELETE("code_cls_flow_use_delete","鍥炴敹"),
+
+ /**
+ * 鍐荤粨
+ */
+ FREEZE("code_cls_flow_use_freeze","鍐荤粨"),
+
+ /**
+ * 瑙e喕
+ */
+ UNFREEZE("code_cls_flow_use_unfreeze","瑙e喕");
+
+// /**
+// * 鍏朵粬
+// */
+// OTHER("code_cls_flow_use_other","鍏朵粬");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeClassifyProcessUseEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeClassifyProcessUseEnum wenum : CodeClassifyProcessUseEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeClassifyProcessUseEnum wenum : CodeClassifyProcessUseEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeClassifyProcessUseEnum forValue(String value) {
+ for (CodeClassifyProcessUseEnum wenum : CodeClassifyProcessUseEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeCutTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeCutTypeEnum.java
new file mode 100644
index 0000000..342b183
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeCutTypeEnum.java
@@ -0,0 +1,135 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鎴彇绫诲瀷
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_CUT_TYPE,text = "鍊兼埅鍙栫被鍨�",description = "")
+public enum CodeCutTypeEnum implements BaseEnum {
+
+ /**
+ * 涓嶆埅鍙�
+ */
+ NONE("code_cut_none","涓嶆埅鍙�"),
+
+ /**
+ * 宸︽埅鍙�
+ */
+ LEFT("code_cut_left","宸︽埅鍙�"),
+
+ /**
+ * 鍙虫埅鍙�
+ */
+ RIGHT("code_level_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 CodeCutTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeCutTypeEnum wenum : CodeCutTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeCutTypeEnum wenum : CodeCutTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeCutTypeEnum forValue(String value) {
+ for (CodeCutTypeEnum wenum : CodeCutTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeGetValueTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeGetValueTypeEnum.java
new file mode 100644
index 0000000..223f8cf
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeGetValueTypeEnum.java
@@ -0,0 +1,130 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鍙栧�肩被鍨�
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_GET_VALUE_TYPE,text = "涓绘暟鎹腑鍙栧�肩被鍨�",description = "")
+public enum CodeGetValueTypeEnum implements BaseEnum {
+
+ /**
+ * 褰撳墠鍒嗙被浠e彿鍊�
+ */
+ CURRENT("code_get_value_current","褰撳墠鍒嗙被浠e彿鍊�"),
+
+ /**
+ * 鍚戜笂閬嶅巻鍏ㄩ儴鐖朵唬鍙风殑鍚堝苟鍊�
+ */
+ TOP("code_get_value_all_up","鍚戜笂閬嶅巻鍏ㄩ儴鐖朵唬鍙风殑鍚堝苟鍊�");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeGetValueTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeGetValueTypeEnum wenum : CodeGetValueTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeGetValueTypeEnum wenum : CodeGetValueTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeGetValueTypeEnum forValue(String value) {
+ for (CodeGetValueTypeEnum wenum : CodeGetValueTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeLevelTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeLevelTypeEnum.java
new file mode 100644
index 0000000..6249f12
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeLevelTypeEnum.java
@@ -0,0 +1,135 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 灞傜骇鐮佹鐨勫眰绾х被鍨�
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_LEVEL_TYPE,text = "灞傜骇鐮佹鐨勫眰绾х被鍨�",description = "")
+public enum CodeLevelTypeEnum implements BaseEnum {
+
+ /**
+ * 鎸囧畾灞傜骇
+ */
+ SPECIAL("code_level_special","鎸囧畾灞傜骇"),
+
+// /**
+// * 浠绘剰灞傜骇
+// */
+// ANY("code_level_any","浠绘剰灞傜骇"),
+
+ /**
+ * 鏈�灏忓眰绾�
+ */
+ MIN("code_level_min","鏈�灏忓眰绾�");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeLevelTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeLevelTypeEnum wenum : CodeLevelTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeLevelTypeEnum wenum : CodeLevelTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeLevelTypeEnum forValue(String value) {
+ for (CodeLevelTypeEnum wenum : CodeLevelTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeMapRuleTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeMapRuleTypeEnum.java
new file mode 100644
index 0000000..8488909
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeMapRuleTypeEnum.java
@@ -0,0 +1,145 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鏄犲皠瑙勫垯绫诲瀷
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_MAP_RULE_TYPE,text = "鏄犲皠瑙勫垯绫诲瀷",description = "")
+public enum CodeMapRuleTypeEnum implements BaseEnum {
+
+ /**
+ * 闆嗗洟鐮佸鍑�
+ */
+ GROUP_EXPORT("code_map_group_export","闆嗗洟鐮佸鍑�"),
+
+ /**
+ * 闆嗗洟鐮佸鍏�
+ */
+ GROUP_IMPORT("code_map_group_import","闆嗗洟鐮佸鍏�"),
+
+ /**
+ * 鎵归噺鐢宠
+ */
+ BATCH_ORDER("code_map_batch_order","鎵归噺鐢宠"),
+
+ /**
+ * 鍏朵粬
+ */
+ OTHER("code_map_other","鍏朵粬"),
+
+ /**
+ * 鍘嗗彶鏁版嵁瀵煎叆
+ */
+ HISTORY_DATA_IMPORT("code_map_history_import","鍘嗗彶鏁版嵁瀵煎叆");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeMapRuleTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeMapRuleTypeEnum wenum : CodeMapRuleTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeMapRuleTypeEnum wenum : CodeMapRuleTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeMapRuleTypeEnum forValue(String value) {
+ for (CodeMapRuleTypeEnum wenum : CodeMapRuleTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecLengthTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecLengthTypeEnum.java
new file mode 100644
index 0000000..71ca371
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecLengthTypeEnum.java
@@ -0,0 +1,130 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鐮佹闀垮害鎺у埗绫诲瀷
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_SEC_LENGTH,text = "鐮佹闀垮害绫诲瀷",description = "")
+public enum CodeSecLengthTypeEnum implements BaseEnum {
+
+ /**
+ * 鍥哄畾闀垮害
+ */
+ STATIC("code_sec_length_static","鍥哄畾闀垮害"),
+
+ /**
+ * 鍙彉闀垮害
+ */
+ TOOLBAR("code_sec_length_variable","鍙彉闀垮害");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeSecLengthTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeSecLengthTypeEnum wenum : CodeSecLengthTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeSecLengthTypeEnum wenum : CodeSecLengthTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeSecLengthTypeEnum forValue(String value) {
+ for (CodeSecLengthTypeEnum wenum : CodeSecLengthTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecTypeEnum.java
new file mode 100644
index 0000000..f03d7ee
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecTypeEnum.java
@@ -0,0 +1,157 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+import org.springblade.code.constant.MdmEnumIdConstant;
+
+/**
+ * 鐮佹鐨勭被鍨�
+ * @author weidy
+ * @date 2022-1-20
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_SEC_TYPE,text = "鐮佹鐨勭被鍨�",description = "")
+public enum CodeSecTypeEnum implements BaseEnum {
+
+ /**
+ * 鍥哄畾鐮佹
+ */
+ CODE_FIXED_SEC("codefixedsec","鍥哄畾鐮佹"),
+
+ /**
+ * 鍙彉鐮佹
+ */
+ CODE_VARIABLE_SEC("codevariablesec","鍙彉鐮佹"),
+ /**
+ * 鏃ユ湡鐮佹
+ */
+ CODE_DATE_SEC("codedatasec","鏃ユ湡鐮佹"),
+ /**
+ * 鍒嗙被鐮佹
+ */
+ CODE_CLASSIFY_SEC("codeclassifysec","鍒嗙被鐮佹"),
+ /**
+ * 灞炴�х爜娈�
+ */
+ CODE_ATTR_SEC("codeattrsec","灞炴�х爜娈�"),
+ /**
+ * 娴佹按鐮佹
+ */
+ CODE_SERIAL_SEC("codeserialsec","娴佹按鐮佹"),
+
+ /**
+ * 灞傜骇鐮佹
+ */
+ CODE_LEVEL_SEC("codelevelsec","灞傜骇鐮佹"),
+
+ /**
+ * 寮曠敤鐮佹
+ */
+ CODE_REFER_SEC("coderefersec","寮曠敤鐮佹")
+ ;
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeSecTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeSecTypeEnum wenum : CodeSecTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeSecTypeEnum wenum : CodeSecTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeSecTypeEnum forValue(String value) {
+ for (CodeSecTypeEnum wenum : CodeSecTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeUseButtonPositionTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeUseButtonPositionTypeEnum.java
new file mode 100644
index 0000000..83853b5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeUseButtonPositionTypeEnum.java
@@ -0,0 +1,130 @@
+package org.springblade.code.enumpack;
+
+
+import com.vci.mdm.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鎸夐挳浣跨敤浣嶇疆
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_BUTTON_POSITION,text = "鎸夐挳鐨勪娇鐢ㄤ綅缃�",description = "")
+public enum CodeUseButtonPositionTypeEnum implements BaseEnum {
+
+ /**
+ * 鍦ㄨ〃鏍间腑浣跨敤
+ */
+ TABLE("code_button_table","鍦ㄨ〃鏍间腑浣跨敤"),
+
+ /**
+ * 宸ュ叿鏍�
+ */
+ TOOLBAR("code_button_toolbar","宸ュ叿鏍�");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeUseButtonPositionTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeUseButtonPositionTypeEnum wenum : CodeUseButtonPositionTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeUseButtonPositionTypeEnum wenum : CodeUseButtonPositionTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeUseButtonPositionTypeEnum forValue(String value) {
+ for (CodeUseButtonPositionTypeEnum wenum : CodeUseButtonPositionTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeAllCodeLC.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeAllCodeLC.java
new file mode 100644
index 0000000..781c56a
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeAllCodeLC.java
@@ -0,0 +1,165 @@
+package org.springblade.code.lifecycle;
+
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.mdm.constant.MdmLifeCycleConstant;
+import com.vci.starter.web.annotation.VciLifeCycle;
+import com.vci.starter.web.annotation.VciLifeCycleTrans;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鍏ㄩ儴鐨勭爜鍊肩殑鐢熷懡鍛ㄦ湡
+ * @author weidy
+ * @date 2022-3-1
+ */
+@VciLifeCycle(name = MdmLifeCycleConstant.CODE_ALL_CODE_LC,text = "鍏ㄩ儴鐨勭爜鍊肩殑鐢熷懡鍛ㄦ湡",description = "",startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,
+ translations={
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍙戝竷"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_OBSOLETED,name = "鐮佸�煎洖鏀跺垹闄ゆ暟鎹�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,name = "鎻愪氦瀹℃壒"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,name = "瀹℃壒涓嶉�氳繃鎴栬�呯粓姝�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "瀹℃壒閫氳繃"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,name = "鍥炴敹"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,name = "鏈彂甯冪洿鎺ュ仠鐢�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,target = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,name = "鎵ц鍋滅敤"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍋滅敤鍚庡啀娆$敓鏁�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,name = "鍋滅敤鍚庡洖鏀�")
+ }
+)
+public enum CodeAllCodeLC implements BaseEnum {
+
+ /**
+ * 缂栬緫涓�
+ */
+ EDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,"缂栬緫涓�"),
+
+ /**
+ * 瀹℃壒涓�
+ */
+ AUDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,"瀹℃壒涓�"),
+
+ /**
+ * 宸插彂甯�
+ */
+ RELEASED(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,"宸插彂甯�"),
+
+ /**
+ * 鐮佸�煎洖鏀�
+ */
+ TASK_BACK(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,"鐮佸�煎洖鏀�"),
+
+ /**
+ * 鐮佸�兼暟鎹攢姣�
+ */
+ OBSOLETED(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_OBSOLETED,"鐮佸�兼暟鎹攢姣�"),
+
+ /**
+ * 鍋滅敤
+ */
+ DISABLE(FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,"鍋滅敤");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeAllCodeLC(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeAllCodeLC wenum : CodeAllCodeLC.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeAllCodeLC wenum : CodeAllCodeLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeAllCodeLC forValue(String value) {
+ for (CodeAllCodeLC wenum : CodeAllCodeLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeClassifyTemplateLC.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeClassifyTemplateLC.java
new file mode 100644
index 0000000..c79db30
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeClassifyTemplateLC.java
@@ -0,0 +1,144 @@
+package org.springblade.code.lifecycle;
+
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.mdm.constant.MdmLifeCycleConstant;
+import com.vci.starter.web.annotation.VciLifeCycle;
+import com.vci.starter.web.annotation.VciLifeCycleTrans;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鍒嗙被妯℃澘鐨勭敓鍛藉懆鏈�
+ * @author weidy
+ * @date 2022-2-11
+ */
+@VciLifeCycle(name = MdmLifeCycleConstant.CODE_CLASSIFY_TEMPLATE_LC,text = "鍒嗙被涓殑娴佺▼妯℃澘鐢熷懡鍛ㄦ湡",description = "",startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,
+ translations={
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍙戝竷"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,target = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,name = "浣滃簾"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,name = "鏈彂甯冪洿鎺ュ仠鐢�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍋滅敤鍚庡啀娆$敓鏁�")
+ }
+)
+public enum CodeClassifyTemplateLC implements BaseEnum {
+
+ /**
+ * 缂栬緫涓�
+ */
+ EDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,"缂栬緫涓�"),
+
+ /**
+ * 宸插彂甯�
+ */
+ RELEASED(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,"宸插彂甯�"),
+
+ /**
+ * 鍋滅敤
+ */
+ DISABLED(FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,"鍋滅敤");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeClassifyTemplateLC(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeClassifyTemplateLC wenum : CodeClassifyTemplateLC.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeClassifyTemplateLC wenum : CodeClassifyTemplateLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeClassifyTemplateLC forValue(String value) {
+ for (CodeClassifyTemplateLC wenum : CodeClassifyTemplateLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeDefaultLC.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeDefaultLC.java
new file mode 100644
index 0000000..150db51
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeDefaultLC.java
@@ -0,0 +1,159 @@
+package org.springblade.code.lifecycle;
+
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.mdm.constant.MdmLifeCycleConstant;
+import com.vci.starter.web.annotation.VciLifeCycle;
+import com.vci.starter.web.annotation.VciLifeCycleTrans;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 涓婚搴撴暟鎹殑榛樿鐢熷懡鍛ㄦ湡
+ * @author weidy
+ * @date 2022-3-2
+ */
+@VciLifeCycle(name = MdmLifeCycleConstant.CODE_DEFAULT_LC,text = "涓婚搴撴暟鎹殑榛樿鐢熷懡鍛ㄦ湡",description = "",startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,
+ translations={
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍙戝竷"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,name = "鎻愪氦瀹℃壒"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,name = "瀹℃壒涓嶉�氳繃鎴栬�呯粓姝�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "瀹℃壒閫氳繃"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,name = "鍥炴敹"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,name = "鏈彂甯冪洿鎺ュ仠鐢�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,target = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,name = "鎵ц鍋滅敤"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍋滅敤鍚庡啀娆$敓鏁�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,name = "鍋滅敤鍚庡洖鏀�")
+ }
+)
+public enum CodeDefaultLC implements BaseEnum {
+
+ /**
+ * 缂栬緫涓�
+ */
+ EDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,"缂栬緫涓�"),
+
+ /**
+ * 瀹℃壒涓�
+ */
+ AUDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_AUDITING,"瀹℃壒涓�"),
+
+ /**
+ * 宸插彂甯�
+ */
+ RELEASED(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,"宸插彂甯�"),
+
+ /**
+ * 鐮佸�煎洖鏀�
+ */
+ TASK_BACK(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK,"鐮佸�煎洖鏀�"),
+ /**
+ * 鍋滅敤
+ */
+ DISABLE(FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,"鍋滅敤");
+
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeDefaultLC(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeDefaultLC wenum : CodeDefaultLC.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeDefaultLC wenum : CodeDefaultLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeDefaultLC forValue(String value) {
+ for (CodeDefaultLC wenum : CodeDefaultLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeRuleLC.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeRuleLC.java
new file mode 100644
index 0000000..9c08866
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeRuleLC.java
@@ -0,0 +1,144 @@
+package org.springblade.code.lifecycle;
+
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.mdm.constant.MdmLifeCycleConstant;
+import com.vci.starter.web.annotation.VciLifeCycle;
+import com.vci.starter.web.annotation.VciLifeCycleTrans;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 缂栫爜瑙勫垯鐨勭敓鍛藉懆鏈�
+ * @author weidy
+ * @date 2022-2-23
+ */
+@VciLifeCycle(name = MdmLifeCycleConstant.CODE_RULE_LC,text = "缂栫爜瑙勫垯鏉跨敓鍛藉懆鏈�",description = "",startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,
+ translations={
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target =FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍙戝竷"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,target = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,name = "浣滃簾"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,target = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,name = "鏈彂甯冪洿鎺ュ仠鐢�"),
+ @VciLifeCycleTrans(source = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,target = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,name = "鍋滅敤鍚庡啀娆$敓鏁�")
+ }
+)
+public enum CodeRuleLC implements BaseEnum {
+
+ /**
+ * 缂栬緫涓�
+ */
+ EDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,"缂栬緫涓�"),
+
+ /**
+ * 宸插彂甯�
+ */
+ RELEASED(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,"宸插彂甯�"),
+
+ /**
+ * 鍋滅敤
+ */
+ DISABLED(FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,"鍋滅敤");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 CodeRuleLC(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (CodeRuleLC wenum : CodeRuleLC.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (CodeRuleLC wenum : CodeRuleLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static CodeRuleLC forValue(String value) {
+ for (CodeRuleLC wenum : CodeRuleLC.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeAllCodeDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeAllCodeDO.java
new file mode 100644
index 0000000..15c17e4
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeAllCodeDO.java
@@ -0,0 +1,168 @@
+package org.springblade.code.model;
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import org.springblade.code.constant.MdmLifeCycleConstant;
+
+/**
+ * 鍏ㄩ儴鐨勭爜鍊�
+ * @author weidy
+ * @date 2022-3-1
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_ALL_CODE,text = "鎵�鏈夌殑鐮佸��",lifeCycle = MdmLifeCycleConstant.CODE_ALL_CODE_LC,
+ startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED)
+public class CodeAllCodeDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+ /**
+ * 鍒嗙被鐨勪富閿�
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被鐨勪富閿�")
+ private String codeClassifyOid;
+
+ /**
+ * 瑙勫垯鐨勪富閿�
+ */
+ @Column(nullable = false,columnDefinition = "瑙勫垯鐨勪富閿�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_RULE)
+ private String codeRuleOid;
+
+ /**
+ * 瑙勫垯鐨勫悕绉�
+ */
+ @Transient
+ private String codeRuleOidName;
+
+ /**
+ * 瀛樺偍鏁版嵁鐨勬ā鏉�
+ */
+ @Column(columnDefinition = "鏁版嵁妯℃澘")
+ private String codeClassifyTemplateOid;
+
+ /**
+ * 鐮佸�肩殑鍊�
+ */
+ @Column(columnDefinition = "鐮佸�肩殑鍊�")
+ private String id;
+
+ /**
+ * 鍒涘缓缂栫爜鐨勪笟鍔$被鍨�
+ */
+ @Column(columnDefinition = "鍒涘缓缂栫爜鐨勪笟鍔$被鍨�")
+ private String createCodeBtm;
+
+ /**
+ * 鍒涘缓缂栫爜鐨勪笟鍔℃暟鎹富閿�
+ */
+ @Column(columnDefinition = "鍒涘缓缂栫爜鐨勬暟鎹富閿�")
+ private String createCodeOid;
+
+ /***
+ * 娴佹按渚濊禆
+ */
+ @Column(length = 4000,columnDefinition = "娴佹按渚濊禆")
+ private String serialUnit;
+
+ /**
+ * 娌℃湁濉厖鍓嶇殑娴佹按鍙�
+ */
+ @Column(columnDefinition = "娌℃湁濉厖鍓嶇殑娴佹按鍙�",length = 4000)
+ private String unFillSerial;
+
+ public String getSerialUnit() {
+ return serialUnit;
+ }
+
+ public void setSerialUnit(String serialUnit) {
+ this.serialUnit = serialUnit;
+ }
+
+ public String getUnFillSerial() {
+ return unFillSerial;
+ }
+
+ public void setUnFillSerial(String unFillSerial) {
+ this.unFillSerial = unFillSerial;
+ }
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+
+ public String getCodeClassifyTemplateOid() {
+ return codeClassifyTemplateOid;
+ }
+
+ public void setCodeClassifyTemplateOid(String codeClassifyTemplateOid) {
+ this.codeClassifyTemplateOid = codeClassifyTemplateOid;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getCreateCodeBtm() {
+ return createCodeBtm;
+ }
+
+ public void setCreateCodeBtm(String createCodeBtm) {
+ this.createCodeBtm = createCodeBtm;
+ }
+
+ public String getCreateCodeOid() {
+ return createCodeOid;
+ }
+
+ public void setCreateCodeOid(String createCodeOid) {
+ this.createCodeOid = createCodeOid;
+ }
+
+ public String getCodeRuleOidName() {
+ return codeRuleOidName;
+ }
+
+ public void setCodeRuleOidName(String codeRuleOidName) {
+ this.codeRuleOidName = codeRuleOidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeAllCodeDO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", codeRuleOid='" + codeRuleOid + '\'' +
+ ", codeRuleOidName='" + codeRuleOidName + '\'' +
+ ", codeClassifyTemplateOid='" + codeClassifyTemplateOid + '\'' +
+ ", id='" + id + '\'' +
+ ", createCodeBtm='" + createCodeBtm + '\'' +
+ ", createCodeOid='" + createCodeOid + '\'' +
+ ", serialUnit='" + serialUnit + '\'' +
+ ", unFillSerial='" + unFillSerial + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeBasicSecDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeBasicSecDO.java
new file mode 100644
index 0000000..1f6aba1
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeBasicSecDO.java
@@ -0,0 +1,728 @@
+package org.springblade.code.model;
+
+import org.springblade.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.web.constant.EnumIdConstant;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 鍩虹鐮佹鐨勪俊鎭�
+ * 鏂逛究鍦ㄥ悓涓�涓〉闈㈤噷鏄剧ず鎵�鏈夌殑鐮佹
+ * @author weidy
+ * @date 2022-1-18
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_BASIC_SEC,text = "鐮佹鍩虹淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeBasicSecDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1803476098497357359L;
+ /**
+ * 鐮佹淇℃伅
+ */
+ @Column(columnDefinition = "鐮佹淇℃伅",nullable = false)
+ private String id;
+
+ /**
+ * 鐮佹鍚嶇О
+ */
+ @Column(columnDefinition = "鐮佹鍚嶇О",nullable = false)
+ private String name;
+
+ /**
+ * 鐮佹绫诲瀷
+ */
+ @Column(columnDefinition = "鐮佹绫诲瀷",nullable = false)
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_SEC_TYPE,showTextField = "secTypeText")
+ private String secType;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷鏄剧ず鏂囨湰
+ */
+ @Transient()
+ private String secTypeText;
+
+ /**
+ * 鎵�灞炵紪鐮佽鍒�
+ */
+ @Column(columnDefinition = "鎵�灞炵紪鐮佽鍒�",nullable = false)
+ private String pkCodeRule;
+
+ /**
+ * 鐮佹鎺掑簭鍙�
+ */
+ @Column(columnDefinition = "orderNum",nullable = false)
+ private Integer orderNum;
+
+ /**
+ * 寮曠敤鐨勫睘鎬х殑鏂囨湰
+ */
+ @Column(columnDefinition = "寮曠敤鐨勫睘鎬у悕绉�")
+ private String referAttributeName;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ц嫳鏂囧悕绉�
+ */
+ @Column(columnDefinition = "寮曠敤鐨勫睘鎬ц嫳鏂�")
+ private String referAttributeId;
+
+ /**
+ * 鍙栧�艰鍒�
+ */
+ @Column(columnDefinition = "鍙栧�艰鍒�",length = 4000)
+ private String getValueClass ;
+
+ //鍓嶇杈撳叆鍚庤嚜鍔ㄥ姞鍏ュ埌鏋氫妇涓�
+ /**
+ * 鏃ユ湡鏍煎紡
+ */
+ @Column(columnDefinition = "鏃ユ湡鏍煎紡")
+ private String codeDateFormatStr;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷
+ */
+ @Column(columnDefinition = "鐮佹闀垮害绫诲瀷")
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_SEC_LENGTH,showTextField = "secLengthTypeText")
+ private String codeSecLengthType;
+
+ /**
+ * 鐮佹闀垮害绫诲瀷鏄剧ず鏂囨湰
+ */
+ @Transient(referColumn = MdmEnumIdConstant.CODE_SEC_LENGTH + "_secLengthType")
+ private String codeSecLengthTypeText;
+
+ /**
+ * 鐮佹鐨勯暱搴�
+ */
+ @Column(columnDefinition = "鐮佹鐨勯暱搴�")
+ private String codeSecLength;
+
+ /**
+ * 灞傜骇绫诲瀷
+ */
+ @Column(columnDefinition = "灞傜骇绫诲瀷")
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_LEVEL_TYPE,showTextField = "codeLevelTypeText")
+ private String codeLevelType;
+
+ /**
+ * 灞傜骇绫诲瀷鏄剧ず鏂囨湰
+ */
+ @Transient(referColumn = MdmEnumIdConstant.CODE_LEVEL_TYPE + "_codeLevelType")
+ private String codeLevelTypeText;
+
+ /**
+ * 灞傜骇鐨勫��
+ */
+ @Column(columnDefinition = "灞傜骇鐨勫��")
+ private Integer codeLevelValue;
+
+ /**
+ * 鍊兼埅鍙栭暱搴�
+ */
+ @Column(columnDefinition = "鍊兼埅鍙栭暱搴�")
+ private Integer valueCutLength;
+
+ /**
+ * 瀛楃鎴彇绫诲瀷
+ */
+ @Column(columnDefinition = "瀛楃鎴彇绫诲瀷")
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_CUT_TYPE,showTextField = "valueCutTypeText")
+ private String valueCutType;
+
+ /**
+ * 瀛楃涓叉埅鍙栫被鍨嬫樉绀烘枃鏈�
+ */
+ @Transient
+ private String valueCutTypeText;
+
+ /**
+ * 鍙栧�肩被鍨�
+ */
+ @Column(columnDefinition = "鍙栧�肩被鍨�")
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_GET_VALUE_TYPE,showTextField = "codeGetValueTypeText")
+ private String codeGetValueType;
+
+ /**
+ * 鍙栧�肩被鍨嬫樉绀烘枃鏈�
+ */
+ @Transient
+ private String codeGetValueTypeText;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ф墍灞炵殑搴撳垎绫�
+ */
+ @Column(columnDefinition = "寮曠敤灞炴�ф墍灞炵殑搴撳垎绫�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY)
+ private String referCodeClassifyOid;
+
+ /**
+ * 寮曠敤鐨勫睘鎬ф墍灞炲簱鍒嗙被鐨勫悕绉�
+ */
+ @Transient(referColumn = "referCodeClassifyOid.name")
+ private String referCodeClassifyOidName;
+
+ /**
+ * 寮曠敤鐨勪笟鍔$被鍨�
+ */
+ @Column(columnDefinition = "寮曠敤鐨勪笟鍔$被鍨�")
+ private String referBtmId;
+
+ /**
+ * 寮曠敤鐨勪笟鍔$被鍨嬪悕绉�
+ */
+ @Column(columnDefinition = "寮曠敤鐨勪笟鍔$被鍨嬪悕绉�")
+ private String referBtmName;
+
+ /**
+ * 鍙傜収鐨勭獥鍙i厤缃�
+ */
+ @Column(columnDefinition = "鍙傜収绐楀彛閰嶇疆",length = 4000)
+ private String referConfig;
+
+ /**
+ * 鏄剧ず淇℃伅
+ */
+ @Column(columnDefinition = "鏄剧ず淇℃伅",length = 4000)
+ private String referValueInfo;
+
+ /**
+ * 杩囨护鐨剆ql鍐呭
+ */
+ @Column(columnDefinition = "杩囨护鐨剆ql鍐呭",length = 4000)
+ private String filterSql ;
+
+
+ /**
+ * 娴佹按鍙疯捣濮嬪��
+ */
+ @Column(columnDefinition = "娴佹按鍙疯捣濮嬪��")
+ private String serialStart;
+
+ /**
+ * 娴佹按鐨勬闀�
+ */
+ @Column(columnDefinition = "娴佹按鐨勬闀�")
+ private Integer serialStep;
+
+
+ /**
+ * 缂栫爜琛ヤ綅鏂瑰紡
+ */
+ @VciUseEnum(value = EnumIdConstant.CODE_FILL_TYPE,showTextField = "codeFillTypeText")
+ @Column(columnDefinition = "缂栫爜琛ヤ綅鏂瑰紡")
+ private String codeFillType;
+
+ /**
+ * 缂栫爜琛ヤ綅鏂瑰紡鏄剧ず鏂囨湰
+ */
+ @Column(columnDefinition = "缂栫爜琛ヤ綅鏂瑰紡鏄剧ず鏂囨湰")
+ private String codeFillTypeText;
+
+ /**
+ * 琛ヤ綅鏃剁殑瀛楃
+ */
+ @Column(columnDefinition = "琛ヤ綅鏃剁殑瀛楃",defaultValue = "0")
+ private String codeFillSeparator;
+
+ /**
+ * 濉厖闀垮害
+ */
+ @Column(columnDefinition = "濉厖闀垮害")
+ private String codeFillLength;
+
+ /**
+ * 涓婇檺
+ */
+ @Column(columnDefinition = "娴佹按涓婇檺")
+ private Integer codeFillLimit;
+
+ /**
+ * 娴佹按鏄惁琛ョ爜
+ */
+ @Column(columnDefinition = "娴佹按鏄惁琛ョ爜",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String codeFillFlag;
+
+ /**
+ * 鑷畾涔夌殑娴佹按绠楁硶绫�
+ */
+ @Column(columnDefinition = "鑷畾涔夌殑娴佹按绠楁硶")
+ private String customCodeSerialClass;
+
+ /**
+ * 鏄惁鑷姩鍖归厤鍒嗙被鍊�
+ */
+ @Column(columnDefinition = "鏄惁鑷姩鍖归厤鍒嗙被鍊�",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String matchClassifyValueFlag;
+
+ /**
+ * 鐖跺垎绫荤爜娈典富閿�
+ */
+ @Column(columnDefinition = "鐖跺垎绫荤爜娈典富閿�")
+ @VciUseRefer(value = MdmBtmTypeConstant.CODE_BASIC_SEC,showTextField = "parentClassifySecText")
+ private String parentClassifySecOid;
+
+ /**
+ * 鐖跺垎绫荤爜娈靛悕绉�
+ */
+ @Transient(referColumn = "parentClassifySecOid.name")
+ private String parentClassifySecText;
+
+
+ /**
+ * 鏄惁鍙互涓虹┖
+ */
+ @Column(columnDefinition = "鏄惁鍙互涓虹┖",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String nullableFlag;
+
+ /**
+ * 鏄惁鍙備笌缂栫爜
+ */
+ @Column(columnDefinition = "鏄惁鍙備笌缂栫爜",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String componentCodeFlag;
+
+ /**
+ * 鏄惁娴佹按渚濊禆
+ */
+ @Column(columnDefinition = "鏄惁娴佹按渚濊禆",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String serialDependFlag;
+
+ /**
+ * 鏄惁鏄剧ず
+ */
+ @Column(columnDefinition = "鏄惁鏄剧ず",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String displayFlag;
+
+ /**
+ * 娴佹按渚濊禆椤哄簭
+ */
+ @Column(columnDefinition = "娴佹按渚濊禆椤哄簭")
+ private Integer serialDependOrder;
+
+ public String getReferCodeClassifyOidName() {
+ return referCodeClassifyOidName;
+ }
+
+ public void setReferCodeClassifyOidName(String referCodeClassifyOidName) {
+ this.referCodeClassifyOidName = referCodeClassifyOidName;
+ }
+
+ public String getReferBtmId() {
+ return referBtmId;
+ }
+
+ public void setReferBtmId(String referBtmId) {
+ this.referBtmId = referBtmId;
+ }
+
+ public String getReferBtmName() {
+ return referBtmName;
+ }
+
+ public void setReferBtmName(String referBtmName) {
+ this.referBtmName = referBtmName;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getSecType() {
+ return secType;
+ }
+
+ public void setSecType(String secType) {
+ this.secType = secType;
+ }
+
+ public String getSecTypeText() {
+ return secTypeText;
+ }
+
+ public void setSecTypeText(String secTypeText) {
+ this.secTypeText = secTypeText;
+ }
+
+ public String getPkCodeRule() {
+ return pkCodeRule;
+ }
+
+ public void setPkCodeRule(String pkCodeRule) {
+ this.pkCodeRule = pkCodeRule;
+ }
+
+ public String getGetValueClass() {
+ return getValueClass;
+ }
+
+ public void setGetValueClass(String getValueClass) {
+ this.getValueClass = getValueClass;
+ }
+
+ public String getCodeDateFormatStr() {
+ return codeDateFormatStr;
+ }
+
+ public void setCodeDateFormatStr(String codeDateFormatStr) {
+ this.codeDateFormatStr = codeDateFormatStr;
+ }
+
+
+ public String getCodeSecLength() {
+ return codeSecLength;
+ }
+
+ public void setCodeSecLength(String codeSecLength) {
+ this.codeSecLength = codeSecLength;
+ }
+
+ public String getCodeLevelType() {
+ return codeLevelType;
+ }
+
+ public void setCodeLevelType(String codeLevelType) {
+ this.codeLevelType = codeLevelType;
+ }
+
+ public String getCodeLevelTypeText() {
+ return codeLevelTypeText;
+ }
+
+ public void setCodeLevelTypeText(String codeLevelTypeText) {
+ this.codeLevelTypeText = codeLevelTypeText;
+ }
+
+ public Integer getCodeLevelValue() {
+ return codeLevelValue;
+ }
+
+ public void setCodeLevelValue(Integer codeLevelValue) {
+ this.codeLevelValue = codeLevelValue;
+ }
+
+ public Integer getValueCutLength() {
+ return valueCutLength;
+ }
+
+ public void setValueCutLength(Integer valueCutLength) {
+ this.valueCutLength = valueCutLength;
+ }
+
+ public String getValueCutType() {
+ return valueCutType;
+ }
+
+ public void setValueCutType(String valueCutType) {
+ this.valueCutType = valueCutType;
+ }
+
+ public String getValueCutTypeText() {
+ return valueCutTypeText;
+ }
+
+ public void setValueCutTypeText(String valueCutTypeText) {
+ this.valueCutTypeText = valueCutTypeText;
+ }
+
+ public String getCodeGetValueType() {
+ return codeGetValueType;
+ }
+
+ public void setCodeGetValueType(String codeGetValueType) {
+ this.codeGetValueType = codeGetValueType;
+ }
+
+ public String getCodeGetValueTypeText() {
+ return codeGetValueTypeText;
+ }
+
+ public void setCodeGetValueTypeText(String codeGetValueTypeText) {
+ this.codeGetValueTypeText = codeGetValueTypeText;
+ }
+
+ public String getReferCodeClassifyOid() {
+ return referCodeClassifyOid;
+ }
+
+ public void setReferCodeClassifyOid(String referCodeClassifyOid) {
+ this.referCodeClassifyOid = referCodeClassifyOid;
+ }
+
+ public String getReferConfig() {
+ return referConfig;
+ }
+
+ public void setReferConfig(String referConfig) {
+ this.referConfig = referConfig;
+ }
+
+ public String getReferValueInfo() {
+ return referValueInfo;
+ }
+
+ public void setReferValueInfo(String referValueInfo) {
+ this.referValueInfo = referValueInfo;
+ }
+
+ public String getFilterSql() {
+ return filterSql;
+ }
+
+ public void setFilterSql(String filterSql) {
+ this.filterSql = filterSql;
+ }
+
+ public String getSerialStart() {
+ return serialStart;
+ }
+
+ public void setSerialStart(String serialStart) {
+ this.serialStart = serialStart;
+ }
+
+ public Integer getSerialStep() {
+ return serialStep;
+ }
+
+ public void setSerialStep(Integer serialStep) {
+ this.serialStep = serialStep;
+ }
+
+ public String getCodeFillType() {
+ return codeFillType;
+ }
+
+ public void setCodeFillType(String codeFillType) {
+ this.codeFillType = codeFillType;
+ }
+
+ public String getCodeFillTypeText() {
+ return codeFillTypeText;
+ }
+
+ public void setCodeFillTypeText(String codeFillTypeText) {
+ this.codeFillTypeText = codeFillTypeText;
+ }
+
+ public String getCodeFillSeparator() {
+ return codeFillSeparator;
+ }
+
+ public void setCodeFillSeparator(String codeFillSeparator) {
+ this.codeFillSeparator = codeFillSeparator;
+ }
+
+ public String getCodeFillLength() {
+ return codeFillLength;
+ }
+
+ public void setCodeFillLength(String codeFillLength) {
+ this.codeFillLength = codeFillLength;
+ }
+
+ public Integer getCodeFillLimit() {
+ return codeFillLimit;
+ }
+
+ public void setCodeFillLimit(Integer codeFillLimit) {
+ this.codeFillLimit = codeFillLimit;
+ }
+
+ public String getCodeFillFlag() {
+ return codeFillFlag;
+ }
+
+ public void setCodeFillFlag(String codeFillFlag) {
+ this.codeFillFlag = codeFillFlag;
+ }
+
+ public String getCustomCodeSerialClass() {
+ return customCodeSerialClass;
+ }
+
+ public void setCustomCodeSerialClass(String customCodeSerialClass) {
+ this.customCodeSerialClass = customCodeSerialClass;
+ }
+
+ public String getMatchClassifyValueFlag() {
+ return matchClassifyValueFlag;
+ }
+
+ public void setMatchClassifyValueFlag(String matchClassifyValueFlag) {
+ this.matchClassifyValueFlag = matchClassifyValueFlag;
+ }
+
+ public String getParentClassifySecOid() {
+ return parentClassifySecOid;
+ }
+
+ public void setParentClassifySecOid(String parentClassifySecOid) {
+ this.parentClassifySecOid = parentClassifySecOid;
+ }
+
+ public String getParentClassifySecText() {
+ return parentClassifySecText;
+ }
+
+ public void setParentClassifySecText(String parentClassifySecText) {
+ this.parentClassifySecText = parentClassifySecText;
+ }
+
+
+ public String getCodeSecLengthType() {
+ return codeSecLengthType;
+ }
+
+ public void setCodeSecLengthType(String codeSecLengthType) {
+ this.codeSecLengthType = codeSecLengthType;
+ }
+
+ public String getCodeSecLengthTypeText() {
+ return codeSecLengthTypeText;
+ }
+
+ public void setCodeSecLengthTypeText(String codeSecLengthTypeText) {
+ this.codeSecLengthTypeText = codeSecLengthTypeText;
+ }
+
+ public String getNullableFlag() {
+ return nullableFlag;
+ }
+
+ public void setNullableFlag(String nullableFlag) {
+ this.nullableFlag = nullableFlag;
+ }
+
+ public String getComponentCodeFlag() {
+ return componentCodeFlag;
+ }
+
+ public void setComponentCodeFlag(String componentCodeFlag) {
+ this.componentCodeFlag = componentCodeFlag;
+ }
+
+ public String getSerialDependFlag() {
+ return serialDependFlag;
+ }
+
+ public void setSerialDependFlag(String serialDependFlag) {
+ this.serialDependFlag = serialDependFlag;
+ }
+
+ public String getDisplayFlag() {
+ return displayFlag;
+ }
+
+ public void setDisplayFlag(String displayFlag) {
+ this.displayFlag = displayFlag;
+ }
+
+ public Integer getSerialDependOrder() {
+ return serialDependOrder;
+ }
+
+ public void setSerialDependOrder(Integer serialDependOrder) {
+ this.serialDependOrder = serialDependOrder;
+ }
+
+ public String getReferAttributeId() {
+ return referAttributeId;
+ }
+
+ public void setReferAttributeId(String referAttributeId) {
+ this.referAttributeId = referAttributeId;
+ }
+
+ public String getReferAttributeName() {
+ return referAttributeName;
+ }
+
+ public void setReferAttributeName(String referAttributeName) {
+ this.referAttributeName = referAttributeName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeBasicSecDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", secType='" + secType + '\'' +
+ ", secTypeText='" + secTypeText + '\'' +
+ ", pkCodeRule='" + pkCodeRule + '\'' +
+ ", orderNum=" + orderNum +
+ ", referAttributeName='" + referAttributeName + '\'' +
+ ", referAttributeId='" + referAttributeId + '\'' +
+ ", getValueClass='" + getValueClass + '\'' +
+ ", codeDateFormatStr='" + codeDateFormatStr + '\'' +
+ ", codeSecLengthType='" + codeSecLengthType + '\'' +
+ ", codeSecLengthTypeText='" + codeSecLengthTypeText + '\'' +
+ ", codeSecLength='" + codeSecLength + '\'' +
+ ", codeLevelType='" + codeLevelType + '\'' +
+ ", codeLevelTypeText='" + codeLevelTypeText + '\'' +
+ ", codeLevelValue=" + codeLevelValue +
+ ", valueCutLength=" + valueCutLength +
+ ", valueCutType='" + valueCutType + '\'' +
+ ", valueCutTypeText='" + valueCutTypeText + '\'' +
+ ", codeGetValueType='" + codeGetValueType + '\'' +
+ ", codeGetValueTypeText='" + codeGetValueTypeText + '\'' +
+ ", referCodeClassifyOid='" + referCodeClassifyOid + '\'' +
+ ", referCodeClassifyOidName='" + referCodeClassifyOidName + '\'' +
+ ", referBtmId='" + referBtmId + '\'' +
+ ", referBtmName='" + referBtmName + '\'' +
+ ", referConfig='" + referConfig + '\'' +
+ ", referValueInfo='" + referValueInfo + '\'' +
+ ", filterSql='" + filterSql + '\'' +
+ ", serialStart='" + serialStart + '\'' +
+ ", serialStep=" + serialStep +
+ ", codeFillType='" + codeFillType + '\'' +
+ ", codeFillTypeText='" + codeFillTypeText + '\'' +
+ ", codeFillSeparator='" + codeFillSeparator + '\'' +
+ ", codeFillLength='" + codeFillLength + '\'' +
+ ", codeFillLimit=" + codeFillLimit +
+ ", codeFillFlag='" + codeFillFlag + '\'' +
+ ", customCodeSerialClass='" + customCodeSerialClass + '\'' +
+ ", matchClassifyValueFlag='" + matchClassifyValueFlag + '\'' +
+ ", parentClassifySecOid='" + parentClassifySecOid + '\'' +
+ ", parentClassifySecText='" + parentClassifySecText + '\'' +
+ ", nullableFlag='" + nullableFlag + '\'' +
+ ", componentCodeFlag='" + componentCodeFlag + '\'' +
+ ", serialDependFlag='" + serialDependFlag + '\'' +
+ ", displayFlag='" + displayFlag + '\'' +
+ ", serialDependOrder=" + serialDependOrder +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeButtonDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeButtonDO.java
new file mode 100644
index 0000000..3a9ccbb
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeButtonDO.java
@@ -0,0 +1,125 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseEnum;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import org.springblade.code.constant.MdmEnumIdConstant;
+
+/**
+ * 缂栫爜閲岀殑鎸夐挳鎵╁睍
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_BUTTON,text = "涓绘暟鎹腑鐨勬寜閽墿灞�",lifeCycle = FrameWorkLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME)
+public class CodeButtonDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -2281543776769670606L;
+
+ /**
+ * 鎸夐挳鐨勮嫳鏂囩紪鍙�
+ */
+ @Column(nullable = false,columnDefinition = "鎸夐挳鐨勮嫳鏂囩紪鍙�")
+ private String id;
+
+ /**
+ * 鎸夐挳鐨勪腑鏂囧悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "鎸夐挳鐨勪腑鏂囧悕绉�")
+ private String name;
+
+ /**
+ * 鎸夐挳鐨勫浘鏍囨牱寮�
+ */
+ @Column(columnDefinition = "鎸夐挳鐨勫浘鏍囨牱寮�")
+ private String iconCls;
+
+ /**
+ * 鎵ц鐨刯s鍐呭
+ */
+ @Column(columnDefinition = "鎵ц鐨刯s鍐呭")
+ private String executeJs;
+
+ /**
+ * 浣跨敤鎸夐挳鐨勪綅缃�
+ */
+ @Column(columnDefinition = "鎸夐挳鐨勪綅缃�")
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_BUTTON_POSITION,showTextField = "usedPositionTypeText")
+ private String usedPositionType;
+
+ /**
+ * 浣跨敤鎸夐挳鐨勪綅缃殑鏄剧ず鏂囨湰
+ */
+ @Transient(referColumn = MdmEnumIdConstant.CODE_BUTTON_POSITION +"_usedPositionType")
+ private String usedPositionTypeText;
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIconCls() {
+ return iconCls;
+ }
+
+ public void setIconCls(String iconCls) {
+ this.iconCls = iconCls;
+ }
+
+ public String getExecuteJs() {
+ return executeJs;
+ }
+
+ public void setExecuteJs(String executeJs) {
+ this.executeJs = executeJs;
+ }
+
+ public String getUsedPositionType() {
+ return usedPositionType;
+ }
+
+ public void setUsedPositionType(String usedPositionType) {
+ this.usedPositionType = usedPositionType;
+ }
+
+ public String getUsedPositionTypeText() {
+ return usedPositionTypeText;
+ }
+
+ public void setUsedPositionTypeText(String usedPositionTypeText) {
+ this.usedPositionTypeText = usedPositionTypeText;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeButtonDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", iconCls='" + iconCls + '\'' +
+ ", executeJs='" + executeJs + '\'' +
+ ", usedPositionType='" + usedPositionType + '\'' +
+ ", usedPositionTypeText='" + usedPositionTypeText + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyDO.java
new file mode 100644
index 0000000..4fa8402
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyDO.java
@@ -0,0 +1,276 @@
+package org.springblade.code.model;
+
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 涓婚搴撶殑鍒嗙被
+ * @author weidy
+ * @date 2022-1-14
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY,text = "涓婚搴撳垎绫�",lifeCycle = FrameWorkLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME)
+public class CodeClassifyDO extends BaseModel {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 2217599544701726951L;
+
+ /**
+ * 鍒嗙被鐨勭紪鍙�
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被鐨勭紪鍙�")
+ private String id;
+
+ /**
+ * 鍒嗙被鐨勫悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被鐨勫悕绉�")
+ private String name;
+
+ /**
+ * 涓婄骇鐨勪富閿�
+ */
+ @Column(columnDefinition = "涓婄骇鏁版嵁鐨勪富閿�")
+ private String parentCodeClassifyOid;
+
+ /**
+ * 鎺掑簭鍙�
+ */
+ @Column(columnDefinition = "鎺掑簭鍙�",nullable = false)
+ private Integer orderNum;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨�
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷鐨勭紪鍙�")
+ private String btmTypeId;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷鐨勫悕绉�")
+ private String btmTypeName;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ @Column(columnDefinition = "缂栫爜瑙勫垯鐨勪富閿�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_RULE)
+ private String codeRuleOid;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勫悕绉�
+ */
+ @Transient(referColumn = "codeRuleOid.name")
+ private String codeRuleOidName;
+
+ /**
+ * 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯
+ */
+ @Column(columnDefinition = "鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_KEY_ATTR_REPEAT_RULE)
+ private String codeKeyAttrRepeatOid;
+
+ /**
+ * 鍏抽敭灞炴�ф煡璇㈢殑瑙勫垯鍚嶇О
+ */
+ @Transient(referColumn = "codeKeyAttrRepeatOid.name")
+ private String codeKeyAttrRepeatOidName;
+
+ /**
+ * 鐩镐技椤规煡璇㈢殑瑙勫垯涓婚敭
+ */
+ @Column(columnDefinition = "鐩镐技椤规煡璇㈢殑瑙勫垯")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_RESEMBLE_RULE)
+ private String codeResembleRuleOid;
+
+ /**
+ * 鐩镐技椤规煡璇㈣鍒欏悕绉�
+ */
+ @Transient(referColumn = "codeResembleRuleOid.name")
+ private String codeResembleRuleOidName;
+
+ /**
+ * 鏁版嵁鎵�鍦ㄧ殑灞傜骇
+ */
+ @Transient
+ private Integer dataLevel;
+
+ /**
+ * 璺緞
+ */
+ @Transient
+ private String path;
+ /***
+ * 鍚嶇О璺緞
+ */
+ @Transient
+ private String namePath;
+ /***
+ * 浠g爜璺緞
+ */
+ @Transient
+ private String idPath;
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getParentCodeClassifyOid() {
+ return parentCodeClassifyOid;
+ }
+
+ public void setParentCodeClassifyOid(String parentCodeClassifyOid) {
+ this.parentCodeClassifyOid = parentCodeClassifyOid;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getBtmTypeId() {
+ return btmTypeId;
+ }
+
+ public void setBtmTypeId(String btmTypeId) {
+ this.btmTypeId = btmTypeId;
+ }
+
+ public String getBtmTypeName() {
+ return btmTypeName;
+ }
+
+ public void setBtmTypeName(String btmTypeName) {
+ this.btmTypeName = btmTypeName;
+ }
+
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+
+
+ public String getCodeKeyAttrRepeatOid() {
+ return codeKeyAttrRepeatOid;
+ }
+
+ public void setCodeKeyAttrRepeatOid(String codeKeyAttrRepeatOid) {
+ this.codeKeyAttrRepeatOid = codeKeyAttrRepeatOid;
+ }
+
+ public String getCodeRuleOidName() {
+ return codeRuleOidName;
+ }
+
+ public void setCodeRuleOidName(String codeRuleOidName) {
+ this.codeRuleOidName = codeRuleOidName;
+ }
+
+ public String getCodeKeyAttrRepeatOidName() {
+ return codeKeyAttrRepeatOidName;
+ }
+
+ public void setCodeKeyAttrRepeatOidName(String codeKeyAttrRepeatOidName) {
+ this.codeKeyAttrRepeatOidName = codeKeyAttrRepeatOidName;
+ }
+
+ public Integer getDataLevel() {
+ return dataLevel;
+ }
+
+ public void setDataLevel(Integer dataLevel) {
+ this.dataLevel = dataLevel;
+ }
+
+ public String getCodeResembleRuleOid() {
+ return codeResembleRuleOid;
+ }
+
+ public void setCodeResembleRuleOid(String codeResembleRuleOid) {
+ this.codeResembleRuleOid = codeResembleRuleOid;
+ }
+
+ public String getCodeResembleRuleOidName() {
+ return codeResembleRuleOidName;
+ }
+
+ public void setCodeResembleRuleOidName(String codeResembleRuleOidName) {
+ this.codeResembleRuleOidName = codeResembleRuleOidName;
+ }
+
+ public String getNamePath() {
+ return namePath;
+ }
+
+ public void setNamePath(String namePath) {
+ this.namePath = namePath;
+ }
+
+ public String getIdPath() {
+ return idPath;
+ }
+
+ public void setIdPath(String idPath) {
+ this.idPath = idPath;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", parentCodeClassifyOid='" + parentCodeClassifyOid + '\'' +
+ ", orderNum=" + orderNum +
+ ", btmTypeId='" + btmTypeId + '\'' +
+ ", btmTypeName='" + btmTypeName + '\'' +
+ ", codeRuleOid='" + codeRuleOid + '\'' +
+ ", codeRuleOidName='" + codeRuleOidName + '\'' +
+ ", codeKeyAttrRepeatOid='" + codeKeyAttrRepeatOid + '\'' +
+ ", codeKeyAttrRepeatOidName='" + codeKeyAttrRepeatOidName + '\'' +
+ ", codeResembleRuleOid='" + codeResembleRuleOid + '\'' +
+ ", codeResembleRuleOidName='" + codeResembleRuleOidName + '\'' +
+ ", dataLevel=" + dataLevel +
+ ", path='" + path + '\'' +
+ ", namePath='" + namePath + '\'' +
+ ", idPath='" + idPath + '\'' +
+ '}';
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessPhaseDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessPhaseDO.java
new file mode 100644
index 0000000..d4d3641
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessPhaseDO.java
@@ -0,0 +1,127 @@
+package org.springblade.code.model;
+
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 娴佺▼妯℃澘鍜岄樁娈电殑鍐呭
+ * @author weidy
+ * @date 2022-1-14
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_PHASE,text = "娴佺▼妯℃澘鍜岄樁娈电殑鍐呭",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyProcessPhaseDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 3814649551140170874L;
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ @Column(nullable = false,columnDefinition = "涓婚搴撳垎绫讳富閿�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY)
+ private String codeClassifyOid;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ private String classifyTemplateOid;
+
+ /**
+ * 鎵�灞為樁娈电殑淇℃伅
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉块樁娈�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_TEMPLATE_PHASE)
+ private String codePhaseOid;
+
+ /**
+ * 娴佺▼妯℃澘缂栧彿
+ */
+ @Column(columnDefinition = "娴佺▼妯℃澘缂栧彿")
+ private String id;
+
+ /**
+ * 娴佺▼妯℃澘鐨勫悕绉�
+ */
+ @Column(columnDefinition = "娴佺▼妯℃澘鍚嶇О",nullable = false)
+ private String name;
+
+ /**
+ * 娴佺▼涓殑浠诲姟鑺傜偣鐨勫悕绉�
+ */
+ @Column(columnDefinition = "娴佺▼涓殑浠诲姟鑺傜偣鍚嶇О",nullable = false)
+ private String processNodeName;
+
+
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ public String getCodePhaseOid() {
+ return codePhaseOid;
+ }
+
+ public void setCodePhaseOid(String codePhaseOid) {
+ this.codePhaseOid = codePhaseOid;
+ }
+
+ public String getProcessNodeName() {
+ return processNodeName;
+ }
+
+ public void setProcessNodeName(String processNodeName) {
+ this.processNodeName = processNodeName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyProcessPhaseDO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", codePhaseOid='" + codePhaseOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", processNodeName='" + processNodeName + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessTempDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessTempDO.java
new file mode 100644
index 0000000..33cc2a7
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessTempDO.java
@@ -0,0 +1,169 @@
+package org.springblade.code.model;
+
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import org.springblade.code.constant.MdmEnumIdConstant;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @author weidy
+ * @date 2022-1-14
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE,text = "鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyProcessTempDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6606901931032525995L;
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ @Column(nullable = false,columnDefinition = "涓婚搴撳垎绫讳富閿�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY)
+ private String codeClassifyOid;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ private String classifyTemplateOid;
+
+ /**
+ * 娴佺▼妯℃澘缂栧彿
+ */
+ @Column(columnDefinition = "娴佺▼妯℃澘缂栧彿")
+ private String id;
+
+ /**
+ * 娴佺▼妯℃澘鐨勫悕绉�
+ */
+ @Column(columnDefinition = "娴佺▼妯℃澘鍚嶇О",nullable = false)
+ private String name;
+
+ /**
+ * 娴佺▼妯℃澘鐢ㄩ��
+ */
+ @Column(columnDefinition = "娴佺▼妯℃澘鐢ㄩ��",nullable = false)
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_CLASSIFY_PROCESS_USE,showTextField = "codeProcessUseText")
+ private String codeProcessUse;
+
+ /**
+ * 娴佺▼妯℃澘鐢ㄩ�旀樉绀哄悕绉�
+ */
+ @Transient
+ private String codeProcessUseText;
+
+ /**
+ * 娴佺▼妯℃澘鐨勭増鏈�
+ */
+ @Column(nullable = false)
+ private String processVersion;
+
+ /**
+ * 瀛樺偍鍏宠仈鐨勬ā鏉垮睘鎬х紪鍙�
+ */
+ @Column(columnDefinition = "鏄剧ず鍦ㄦ祦绋嬩腑鐨勫睘鎬�")
+ private String codeTempAttrOidArr;
+
+ /**
+ * 瀛樺偍鍏宠仈鐨勬ā鏉垮睘鎬у悕绉�
+ */
+ @Column(columnDefinition = "鏄剧ず鍦ㄦ祦绋嬩腑鐨勫睘鎬у悕绉�")
+ private String codeTempAttrOidArrName;
+
+ public String getProcessVersion() {
+ return processVersion;
+ }
+
+ public void setProcessVersion(String processVersion) {
+ this.processVersion = processVersion;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCodeProcessUse() {
+ return codeProcessUse;
+ }
+
+ public void setCodeProcessUse(String codeProcessUse) {
+ this.codeProcessUse = codeProcessUse;
+ }
+
+ public String getCodeProcessUseText() {
+ return codeProcessUseText;
+ }
+
+ public void setCodeProcessUseText(String codeProcessUseText) {
+ this.codeProcessUseText = codeProcessUseText;
+ }
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ public String getCodeTempAttrOidArr() {
+ return codeTempAttrOidArr;
+ }
+
+ public void setCodeTempAttrOidArr(String codeTempAttrOidArr) {
+ this.codeTempAttrOidArr = codeTempAttrOidArr;
+ }
+
+ public String getCodeTempAttrOidArrName() {
+ return codeTempAttrOidArrName;
+ }
+
+ public void setCodeTempAttrOidArrName(String codeTempAttrOidArrName) {
+ this.codeTempAttrOidArrName = codeTempAttrOidArrName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyProcessTempDO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", codeProcessUse='" + codeProcessUse + '\'' +
+ ", codeProcessUseText='" + codeProcessUseText + '\'' +
+ ", processVersion='" + processVersion + '\'' +
+ ", codeTempAttrOidArr='" + codeTempAttrOidArr + '\'' +
+ ", codeTempAttrOidArrName='" + codeTempAttrOidArrName + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTempMapItemDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTempMapItemDO.java
new file mode 100644
index 0000000..55cddae
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTempMapItemDO.java
@@ -0,0 +1,181 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁�
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_TEMPLATE_MAP_ITEM,text = "鏄犲皠瑙勫垯鐨勬槑缁�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyTempMapItemDO extends BaseModel {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -415692697543751712L;
+
+ /**
+ * 鏄犲皠瑙勫垯涓婚敭
+ */
+ @Column(nullable = false,columnDefinition = "鏄犲皠瑙勫垯涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_TEMPLATE_MAP)
+ private String classifyTemplateMapOid;
+
+ /**
+ * 鏄犲皠鍚嶇О
+ */
+ @Column(columnDefinition = "鏄犲皠鍚嶇О")
+ private String name;
+
+ /**
+ * 闆嗗洟鐮佸睘鎬ey
+ */
+ @Column(columnDefinition = "闆嗗洟鐮佸睘鎬ey")
+ private String groupCodeAttrId;
+
+ /**
+ * 闆嗗洟鐮佸睘鎬у悕绉�
+ */
+ @Column(columnDefinition = "闆嗗洟鐮佸睘鎬у悕绉�")
+ private String groupCodeAttrName;
+
+ /**
+ * 鍒嗙被妯℃澘灞炴�т富閿�
+ */
+ @Column(columnDefinition = "鍒嗙被妯℃澘灞炴�т富閿�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR)
+ private String classifyTemplateAttrOid;
+ /**
+ * 妯℃澘灞炴�ey
+ */
+ @Transient(referColumn = "classifyTemplateAttrOid.id")
+ private String classifyAttrId;
+
+ /**
+ * 妯℃澘灞炴�у悕绉�
+ */
+ @Transient(referColumn = "classifyTemplateAttrOid.name")
+ private String classifyAttrName;
+
+ /**
+ * 鐩爣绔殑鏃堕棿鏍煎紡
+ */
+ @Column(columnDefinition = "鐩爣绔殑鏃堕棿鏍煎紡")
+ private String targetDateFormat;
+
+ /**
+ * 杞崲鍏紡
+ */
+ @Column(columnDefinition = "杞崲鍏紡",length = 4000)
+ private String switchEval;
+
+ /**
+ * 杞崲鐨勮嚜瀹氫箟绫�
+ */
+ @Column(columnDefinition = "杞崲鐨勮嚜瀹氫箟绫�",length = 200)
+ private String switchClassName;
+
+ public String getClassifyTemplateMapOid() {
+ return classifyTemplateMapOid;
+ }
+
+ public void setClassifyTemplateMapOid(String classifyTemplateMapOid) {
+ this.classifyTemplateMapOid = classifyTemplateMapOid;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getGroupCodeAttrId() {
+ return groupCodeAttrId;
+ }
+
+ public void setGroupCodeAttrId(String groupCodeAttrId) {
+ this.groupCodeAttrId = groupCodeAttrId;
+ }
+
+ public String getGroupCodeAttrName() {
+ return groupCodeAttrName;
+ }
+
+ public void setGroupCodeAttrName(String groupCodeAttrName) {
+ this.groupCodeAttrName = groupCodeAttrName;
+ }
+
+ public String getClassifyTemplateAttrOid() {
+ return classifyTemplateAttrOid;
+ }
+
+ public void setClassifyTemplateAttrOid(String classifyTemplateAttrOid) {
+ this.classifyTemplateAttrOid = classifyTemplateAttrOid;
+ }
+
+ public String getClassifyAttrId() {
+ return classifyAttrId;
+ }
+
+ public void setClassifyAttrId(String classifyAttrId) {
+ this.classifyAttrId = classifyAttrId;
+ }
+
+ public String getClassifyAttrName() {
+ return classifyAttrName;
+ }
+
+ public void setClassifyAttrName(String classifyAttrName) {
+ this.classifyAttrName = classifyAttrName;
+ }
+
+ public String getTargetDateFormat() {
+ return targetDateFormat;
+ }
+
+ public void setTargetDateFormat(String targetDateFormat) {
+ this.targetDateFormat = targetDateFormat;
+ }
+
+ public String getSwitchEval() {
+ return switchEval;
+ }
+
+ public void setSwitchEval(String switchEval) {
+ this.switchEval = switchEval;
+ }
+
+ public String getSwitchClassName() {
+ return switchClassName;
+ }
+
+ public void setSwitchClassName(String switchClassName) {
+ this.switchClassName = switchClassName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTempMapItemDO{" +
+ "classifyTemplateMapOid='" + classifyTemplateMapOid + '\'' +
+ ", name='" + name + '\'' +
+ ", groupCodeAttrId='" + groupCodeAttrId + '\'' +
+ ", groupCodeAttrName='" + groupCodeAttrName + '\'' +
+ ", classifyTemplateAttrOid='" + classifyTemplateAttrOid + '\'' +
+ ", classifyAttrId='" + classifyAttrId + '\'' +
+ ", classifyAttrName='" + classifyAttrName + '\'' +
+ ", targetDateFormat='" + targetDateFormat + '\'' +
+ ", switchEval='" + switchEval + '\'' +
+ ", switchClassName='" + switchClassName + '\'' +
+ '}' + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateAttrDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateAttrDO.java
new file mode 100644
index 0000000..bff5a47
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateAttrDO.java
@@ -0,0 +1,858 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,text = "涓婚搴撳垎绫荤殑妯℃澘灞炴��",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyTemplateAttrDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -8685210169495428202L;
+
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ private String classifyTemplateOid;
+
+ /**
+ * 鎵�灞炴ā鏉垮悕绉�
+ */
+ @Transient(referColumn = "classifyTemplateOid.name")
+ private String classifyTemplateOidName;
+
+ /**
+ * 灞炴�ц嫳鏂囧悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "灞炴�ц嫳鏂囧悕绉�")
+ private String id;
+
+ /**
+ * 灞炴�т腑鏂囧悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "灞炴�т腑鏂囧悕绉�")
+ private String name;
+
+ /**
+ * 灞炴�х殑绫诲瀷
+ */
+ @Column(columnDefinition = "灞炴�х殑绫诲瀷",nullable = false)
+ private String attributeDataType;
+
+ /**
+ * 鏄惁鍏抽敭灞炴��
+ */
+ @Column(columnDefinition = "鏄惁鍏抽敭灞炴��",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String keyAttrFlag;
+
+ /**
+ * 鏄惁蹇�熸煡璇㈠睘鎬�
+ */
+ @Column(columnDefinition = "鏄惁蹇�熸煡璇㈠睘鎬�",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String queryAttrFlag;
+
+ /**
+ * 鏄惁楂樼骇鏌ヨ灞炴��
+ */
+ @Column(columnDefinition = "鏄惁楂樼骇鏌ヨ灞炴��",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String seniorQueryAttrFlag;
+
+ /**
+ * 鐩镐技鏌ラ噸灞炴��
+ */
+ @Column(columnDefinition = "鐩镐技鏌ラ噸灞炴��",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String sameRepeatAttrFlag;
+
+ /**
+ * 鏄惁鎺掑簭
+ */
+ @Column(columnDefinition = "鏄惁鎺掑簭",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String sortAttrFlag;
+
+ /**
+ * 鏄惁鐢熸垚浜岀淮鐮�
+ */
+ @Column(columnDefinition = "鏄惁鐢熸垚浜岀淮鐮�",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String qrcodeFlag;
+
+ /**
+ * 鏄惁鐢熸垚鏉″舰鐮�
+ */
+ @Column(columnDefinition = "鏄惁鐢熸垚涓�缁寸爜",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String barcodeFlag;
+
+
+ /**
+ * 缁勫悎瑙勫垯
+ */
+ @Column(columnDefinition = "缁勫悎瑙勫垯",length = 4000)
+ private String componentRule;
+
+ /**
+ * 楠岃瘉瑙勫垯
+ */
+ @Column(columnDefinition = "楠岃瘉瑙勫垯",length = 4000)
+ private String verifyRule;
+
+ /**
+ * 鍒嗙被娉ㄥ叆灞傜骇
+ */
+ @Column(columnDefinition = "鍒嗙被娉ㄥ叆灞傜骇",defaultValue = "none")
+ private String classifyInvokeLevel;
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫睘鎬�
+ */
+ @Column(columnDefinition = "鍒嗙被娉ㄥ叆鐨勫睘鎬ц嫳鏂囧悕绉�",length = 32)
+ private String classifyInvokeAttr;
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�
+ */
+ @Column(columnDefinition = "鍒嗙被娉ㄥ叆鐨勫睘鎬т腑鏂囧悕绉�",length = 200)
+ private String classifyInvokeAttrName;
+
+ /**
+ * 鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫
+ */
+ @Column(columnDefinition = "鍒嗙被娉ㄥ叆鏄惁鍙互缂栬緫",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String classifyInvokeEditFlag;
+
+ /**
+ * 灞炴�ф帓搴忓彿
+ */
+ @Column(columnDefinition = "灞炴�ф帓搴忓彿")
+ private Integer orderNum;
+
+ /**
+ * 琛ㄥ崟閲屾槸鍚︽樉绀�
+ */
+ @Column(columnDefinition = "琛ㄥ崟閲屾槸鍚︽樉绀�",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String formDisplayFlag;
+
+ /**
+ * 鍒楄〃閲屾槸鍚︽樉绀�
+ */
+ @Column(columnDefinition = "鍒楄〃閲屾槸鍚︽樉绀�",defaultValue = "true")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String tableDisplayFlag;
+
+ /**
+ * 鎵�灞炲睘鎬у垎缁�
+ */
+ @Column(columnDefinition = "鎵�灞炲睘鎬у垎缁�")
+ private String attributeGroup;
+
+ /**
+ * 浣跨敤鏋氫妇鑻辨枃缂栧彿
+ */
+ @Column(columnDefinition = "浣跨敤鏋氫妇鑻辨枃缂栧彿")
+ private String enumId;
+
+ /**
+ * 浣跨敤鏋氫妇涓枃鍚嶇О
+ */
+ @Column(columnDefinition = "浣跨敤鏋氫妇涓枃鍚嶇О")
+ private String enumName;
+
+ /**
+ * 鏋氫妇鏄惁鍙互缂栬緫
+ */
+ @Column(columnDefinition = "鏋氫妇鏄惁鍙互缂栬緫")
+ private String enumEditFlag;
+
+ /**
+ * 鍙傜収涓氬姟绫诲瀷
+ */
+ @Column(columnDefinition = "鍙傜収鐨勪笟鍔$被鍨嬭嫳鏂囧悕绉�")
+ private String referBtmId;
+
+ /**
+ * 鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�
+ */
+ @Column(columnDefinition = "鍙傜収鐨勪笟鍔$被鍨嬩腑鏂囧悕绉�")
+ private String referBtmName;
+
+ /**
+ * 鍙傜収鐨勭獥鍙i厤缃�
+ */
+ @Column(columnDefinition = "鍙傜収绐楀彛閰嶇疆",length = 4000)
+ private String referConfig;
+
+ /**
+ * 鏄惁蹇呰緭
+ */
+ @Column(columnDefinition = "鏄惁蹇呰緭",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String requireFlag;
+
+ /**
+ * 鏄惁鍙
+ */
+ @Column(columnDefinition = "鏄惁鍙",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String readOnlyFlag;
+
+ /**
+ * 灞炴�ф帶鍒惰緭鍏ョ殑闀垮害
+ */
+ @Column(columnDefinition = "灞炴�ф帶鍒惰緭鍏ョ殑闀垮害",defaultValue = "254")
+ private Integer controlLength = 254;
+
+ /**
+ * 琛ㄥ崟涓婃樉绀虹殑鏍峰紡
+ */
+ @Column(length = 1000,columnDefinition = "琛ㄥ崟閲屾樉绀虹殑鏍峰紡")
+ private String formDisplayStyle;
+
+ /**
+ * 琛ㄦ牸閲屾樉绀虹殑鏍峰紡
+ */
+ @Column(length = 1000,columnDefinition = "琛ㄦ牸閲屾樉绀虹殑鏍峰紡")
+ private String tableDisplayStyle;
+
+ /**
+ * 琛ㄥ崟涓秴閾炬帴
+ */
+ @Column(columnDefinition = "琛ㄥ崟涓秴閾炬帴鍐呭",length = 1000)
+ private String formHref;
+
+ /**
+ * 琛ㄦ牸涓秴閾炬帴
+ */
+ @Column(columnDefinition = "琛ㄦ牸涓秴閾炬帴鍐呭",length = 1000)
+ private String tableHref;
+
+ /**
+ * 灏忔暟绮惧害
+ */
+ @Column(columnDefinition = "灏忔暟绮惧害")
+ private Integer precisionLength;
+
+ /**
+ * 灏忔暟鍒诲害
+ */
+ @Column(columnDefinition = "灏忔暟鍒诲害")
+ private Integer scaleLength;
+
+ /**
+ * 鍙栧�艰寖鍥�
+ */
+ @Column(columnDefinition = "鍙栧�艰寖鍥�",length = 1000)
+ private String valueArea;
+
+ /**
+ * 鏃堕棿鏍煎紡
+ */
+ @Column(columnDefinition = "鏃堕棿鏍煎紡")
+ private String codeDateFormat;
+
+ /**
+ * 琛ㄦ牸涓樉绀虹殑js
+ */
+ @Column(columnDefinition = "琛ㄦ牸閲屾樉绀鸿皟鐢ㄧ殑js",length = 254)
+ private String tableDisplayJs;
+
+ /**
+ * 鏄惁鏄剧ず澶氳鏂囨湰
+ */
+ @Column(columnDefinition = "鏄惁鏄剧ず澶氳鏂囨湰",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String textAreaFlag;
+
+ /**
+ * 鏄惁涓哄浘鐗囩瓑鍏冪礌
+ */
+ @Column(columnDefinition = "棰勮鍥�",defaultValue = "false")
+ @VciFieldType(VciFieldTypeEnum.VTBoolean)
+ private String imageFlag;
+
+ /**
+ * 榛樿鍊�
+ */
+ @Column(columnDefinition = "榛樿鍊�")
+ private String defaultValue;
+
+ /**
+ * 鍓嶇紑
+ */
+ @Column(columnDefinition = "鍓嶇紑")
+ private String prefixValue;
+
+ /**
+ * 鍚庣紑
+ */
+ @Column(columnDefinition = "鍚庣紑")
+ private String suffixValue;
+
+ /**
+ * 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��
+ */
+ @Column(columnDefinition = "閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴��")
+ private String filterSourceAttr;
+
+ /**
+ * 閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�
+ */
+ @Column(columnDefinition = "閫夋嫨鏁版嵁鏃惰繃婊ょ殑灞炴�у悕绉�")
+ private String filterSourceAttrName;
+
+ /**
+ * 浣跨敤鏋氫妇娉ㄥ叆鐨勫瓧绗︿覆鏍煎紡
+ */
+ @Column(length = 4000,columnDefinition = "鏋氫妇娉ㄥ叆鐨勫唴瀹�")
+ private String enumString;
+
+ /**
+ * 灞炴�х殑瀹藉害
+ */
+ @Column(columnDefinition = "灞炴�у垪琛ㄤ腑瀹藉害")
+ private Integer attrTableWidth;
+ /**
+ * 璇存槑
+ */
+ @Column(columnDefinition = "璇存槑")
+ private String explain;
+
+ /**
+ * 閫夋嫨搴撴爣璇�
+ */
+ @Column(columnDefinition = "閫夋嫨搴撴爣璇�")
+ private String libraryIdentification;
+
+ /**
+ * 绾ц仈灞炴�х紪鍙�
+ */
+ @Column(columnDefinition = "绾ц仈灞炴�х紪鍙�")
+ private String parentCode;
+
+ /**
+ * 绾ц仈灞炴�у悕绉�
+ */
+ @Column(columnDefinition = "绾ц仈灞炴�у悕绉�")
+ private String parentName;
+
+ /**
+ * 绾ц仈鏌ヨ灞炴��
+ */
+ @Column(columnDefinition = "绾ц仈鏌ヨ灞炴��")
+ private String parentQueryAttr;
+
+
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAttributeDataType() {
+ return attributeDataType;
+ }
+
+ public void setAttributeDataType(String attributeDataType) {
+ this.attributeDataType = attributeDataType;
+ }
+
+ public String getKeyAttrFlag() {
+ return keyAttrFlag;
+ }
+
+ public void setKeyAttrFlag(String keyAttrFlag) {
+ this.keyAttrFlag = keyAttrFlag;
+ }
+
+ public String getQueryAttrFlag() {
+ return queryAttrFlag;
+ }
+
+ public void setQueryAttrFlag(String queryAttrFlag) {
+ this.queryAttrFlag = queryAttrFlag;
+ }
+
+ public String getSeniorQueryAttrFlag() {
+ return seniorQueryAttrFlag;
+ }
+
+ public void setSeniorQueryAttrFlag(String seniorQueryAttrFlag) {
+ this.seniorQueryAttrFlag = seniorQueryAttrFlag;
+ }
+
+ public String getSameRepeatAttrFlag() {
+ return sameRepeatAttrFlag;
+ }
+
+ public void setSameRepeatAttrFlag(String sameRepeatAttrFlag) {
+ this.sameRepeatAttrFlag = sameRepeatAttrFlag;
+ }
+
+ public String getSortAttrFlag() {
+ return sortAttrFlag;
+ }
+
+ public void setSortAttrFlag(String sortAttrFlag) {
+ this.sortAttrFlag = sortAttrFlag;
+ }
+
+ public String getQrcodeFlag() {
+ return qrcodeFlag;
+ }
+
+ public void setQrcodeFlag(String qrcodeFlag) {
+ this.qrcodeFlag = qrcodeFlag;
+ }
+
+ public String getBarcodeFlag() {
+ return barcodeFlag;
+ }
+
+ public void setBarcodeFlag(String barcodeFlag) {
+ this.barcodeFlag = barcodeFlag;
+ }
+
+ public String getComponentRule() {
+ return componentRule;
+ }
+
+ public void setComponentRule(String componentRule) {
+ this.componentRule = componentRule;
+ }
+
+ public String getVerifyRule() {
+ return verifyRule;
+ }
+
+ public void setVerifyRule(String verifyRule) {
+ this.verifyRule = verifyRule;
+ }
+
+ public String getClassifyInvokeLevel() {
+ return classifyInvokeLevel;
+ }
+
+ public void setClassifyInvokeLevel(String classifyInvokeLevel) {
+ this.classifyInvokeLevel = classifyInvokeLevel;
+ }
+
+ public String getClassifyInvokeAttr() {
+ return classifyInvokeAttr;
+ }
+
+ public void setClassifyInvokeAttr(String classifyInvokeAttr) {
+ this.classifyInvokeAttr = classifyInvokeAttr;
+ }
+
+ public String getClassifyInvokeAttrName() {
+ return classifyInvokeAttrName;
+ }
+
+ public void setClassifyInvokeAttrName(String classifyInvokeAttrName) {
+ this.classifyInvokeAttrName = classifyInvokeAttrName;
+ }
+
+ public String getClassifyInvokeEditFlag() {
+ return classifyInvokeEditFlag;
+ }
+
+ public void setClassifyInvokeEditFlag(String classifyInvokeEditFlag) {
+ this.classifyInvokeEditFlag = classifyInvokeEditFlag;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getFormDisplayFlag() {
+ return formDisplayFlag;
+ }
+
+ public void setFormDisplayFlag(String formDisplayFlag) {
+ this.formDisplayFlag = formDisplayFlag;
+ }
+
+ public String getTableDisplayFlag() {
+ return tableDisplayFlag;
+ }
+
+ public void setTableDisplayFlag(String tableDisplayFlag) {
+ this.tableDisplayFlag = tableDisplayFlag;
+ }
+
+ public String getAttributeGroup() {
+ return attributeGroup;
+ }
+
+ public void setAttributeGroup(String attributeGroup) {
+ this.attributeGroup = attributeGroup;
+ }
+
+ public String getEnumId() {
+ return enumId;
+ }
+
+ public void setEnumId(String enumId) {
+ this.enumId = enumId;
+ }
+
+ public String getEnumName() {
+ return enumName;
+ }
+
+ public void setEnumName(String enumName) {
+ this.enumName = enumName;
+ }
+
+ public String getEnumEditFlag() {
+ return enumEditFlag;
+ }
+
+ public void setEnumEditFlag(String enumEditFlag) {
+ this.enumEditFlag = enumEditFlag;
+ }
+
+ public String getReferBtmId() {
+ return referBtmId;
+ }
+
+ public void setReferBtmId(String referBtmId) {
+ this.referBtmId = referBtmId;
+ }
+
+ public String getReferBtmName() {
+ return referBtmName;
+ }
+
+ public void setReferBtmName(String referBtmName) {
+ this.referBtmName = referBtmName;
+ }
+
+ public String getReferConfig() {
+ return referConfig;
+ }
+
+ public void setReferConfig(String referConfig) {
+ this.referConfig = referConfig;
+ }
+
+ public String getRequireFlag() {
+ return requireFlag;
+ }
+
+ public void setRequireFlag(String requireFlag) {
+ this.requireFlag = requireFlag;
+ }
+
+ public String getReadOnlyFlag() {
+ return readOnlyFlag;
+ }
+
+ public void setReadOnlyFlag(String readOnlyFlag) {
+ this.readOnlyFlag = readOnlyFlag;
+ }
+
+ public Integer getControlLength() {
+ return controlLength;
+ }
+
+ public void setControlLength(Integer controlLength) {
+ this.controlLength = controlLength;
+ }
+
+ public String getFormDisplayStyle() {
+ return formDisplayStyle;
+ }
+
+ public void setFormDisplayStyle(String formDisplayStyle) {
+ this.formDisplayStyle = formDisplayStyle;
+ }
+
+ public String getTableDisplayStyle() {
+ return tableDisplayStyle;
+ }
+
+ public void setTableDisplayStyle(String tableDisplayStyle) {
+ this.tableDisplayStyle = tableDisplayStyle;
+ }
+
+ public String getFormHref() {
+ return formHref;
+ }
+
+ public void setFormHref(String formHref) {
+ this.formHref = formHref;
+ }
+
+ public String getTableHref() {
+ return tableHref;
+ }
+
+ public void setTableHref(String tableHref) {
+ this.tableHref = tableHref;
+ }
+
+ public Integer getPrecisionLength() {
+ return precisionLength;
+ }
+
+ public void setPrecisionLength(Integer precisionLength) {
+ this.precisionLength = precisionLength;
+ }
+
+ public Integer getScaleLength() {
+ return scaleLength;
+ }
+
+ public void setScaleLength(Integer scaleLength) {
+ this.scaleLength = scaleLength;
+ }
+
+ public String getValueArea() {
+ return valueArea;
+ }
+
+ public void setValueArea(String valueArea) {
+ this.valueArea = valueArea;
+ }
+
+ public String getCodeDateFormat() {
+ return codeDateFormat;
+ }
+
+ public void setCodeDateFormat(String codeDateFormat) {
+ this.codeDateFormat = codeDateFormat;
+ }
+
+ public String getTableDisplayJs() {
+ return tableDisplayJs;
+ }
+
+ public void setTableDisplayJs(String tableDisplayJs) {
+ this.tableDisplayJs = tableDisplayJs;
+ }
+
+ public String getTextAreaFlag() {
+ return textAreaFlag;
+ }
+
+ public void setTextAreaFlag(String textAreaFlag) {
+ this.textAreaFlag = textAreaFlag;
+ }
+
+ public String getImageFlag() {
+ return imageFlag;
+ }
+
+ public void setImageFlag(String imageFlag) {
+ this.imageFlag = imageFlag;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public String getPrefixValue() {
+ return prefixValue;
+ }
+
+ public void setPrefixValue(String prefixValue) {
+ this.prefixValue = prefixValue;
+ }
+
+ public String getSuffixValue() {
+ return suffixValue;
+ }
+
+ public void setSuffixValue(String suffixValue) {
+ this.suffixValue = suffixValue;
+ }
+
+ public String getFilterSourceAttr() {
+ return filterSourceAttr;
+ }
+
+ public void setFilterSourceAttr(String filterSourceAttr) {
+ this.filterSourceAttr = filterSourceAttr;
+ }
+
+ public String getFilterSourceAttrName() {
+ return filterSourceAttrName;
+ }
+
+ public void setFilterSourceAttrName(String filterSourceAttrName) {
+ this.filterSourceAttrName = filterSourceAttrName;
+ }
+
+ public String getEnumString() {
+ return enumString;
+ }
+
+ public void setEnumString(String enumString) {
+ this.enumString = enumString;
+ }
+
+ public Integer getAttrTableWidth() {
+ return attrTableWidth;
+ }
+
+ public void setAttrTableWidth(Integer attrTableWidth) {
+ this.attrTableWidth = attrTableWidth;
+ }
+
+ public String getExplain() {
+ return explain;
+ }
+
+ public void setExplain(String explain) {
+ this.explain = explain;
+ }
+
+ public String getLibraryIdentification() {
+ return libraryIdentification;
+ }
+
+ public void setLibraryIdentification(String libraryIdentification) {
+ this.libraryIdentification = libraryIdentification;
+ }
+
+ public String getParentCode() {
+ return parentCode;
+ }
+
+ public void setParentCode(String parentCode) {
+ this.parentCode = parentCode;
+ }
+
+ public String getParentName() {
+ return parentName;
+ }
+
+ public void setParentName(String parentName) {
+ this.parentName = parentName;
+ }
+
+ public String getParentQueryAttr() {
+ return parentQueryAttr;
+ }
+
+ public void setParentQueryAttr(String parentQueryAttr) {
+ this.parentQueryAttr = parentQueryAttr;
+ }
+
+ public String getClassifyTemplateOidName() {
+ return classifyTemplateOidName;
+ }
+
+ public void setClassifyTemplateOidName(String classifyTemplateOidName) {
+ this.classifyTemplateOidName = classifyTemplateOidName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateAttrDO{" +
+ "classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", classifyTemplateOidName='" + classifyTemplateOidName + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", attributeDataType='" + attributeDataType + '\'' +
+ ", 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 + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateButtonDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateButtonDO.java
new file mode 100644
index 0000000..6f6c619
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateButtonDO.java
@@ -0,0 +1,135 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import org.springblade.code.constant.MdmEnumIdConstant;
+
+/**
+ * 妯℃澘灞炴�т笅鐨勬寜閽�
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_TEMPLATE_BUTTON,text = "涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyTemplateButtonDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -5004852745300082871L;
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ private String classifyTemplateOid;
+
+ /**
+ * 鎸夐挳鐨勪富閿�
+ */
+ @Column(nullable = false,columnDefinition = "鎸夐挳鐨勪富閿�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_BUTTON)
+ private String classifyButtonOid;
+
+ /**
+ * 鎸夐挳鐨勫悕绉�
+ */
+ @Transient(referColumn = "classifyButtonOid.name")
+ private String classifyButtonOidName;
+
+ /**
+ * 鎸夐挳鐢ㄩ��
+ */
+ @Column(columnDefinition = "鎸夐挳鐢ㄩ��")
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_TEMPLATE_BUTTON_USE,showTextField = "buttonUseText")
+ private String buttonUse;
+
+ /**
+ * 鎸夐挳鐢ㄩ�旀樉绀哄璞�
+ */
+ @Transient()
+ private String buttonUseText;
+
+ /**
+ * 鎸夐挳鏍囪瘑
+ */
+ @Transient(referColumn = "classifyButtonOid.id")
+ private String id;
+
+ /**
+ * 鎺掑簭鍙�
+ */
+ @Column(columnDefinition = "鎺掑簭鍙�")
+ private Integer orderNum;
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ public String getClassifyButtonOid() {
+ return classifyButtonOid;
+ }
+
+ public void setClassifyButtonOid(String classifyButtonOid) {
+ this.classifyButtonOid = classifyButtonOid;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getButtonUse() {
+ return buttonUse;
+ }
+
+ public void setButtonUse(String buttonUse) {
+ this.buttonUse = buttonUse;
+ }
+
+ public String getButtonUseText() {
+ return buttonUseText;
+ }
+
+ public void setButtonUseText(String buttonUseText) {
+ this.buttonUseText = buttonUseText;
+ }
+
+ public String getClassifyButtonOidName() {
+ return classifyButtonOidName;
+ }
+
+ public void setClassifyButtonOidName(String classifyButtonOidName) {
+ this.classifyButtonOidName = classifyButtonOidName;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateButtonDO{" +
+ "classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", classifyButtonOid='" + classifyButtonOid + '\'' +
+ ", classifyButtonOidName='" + classifyButtonOidName + '\'' +
+ ", buttonUse='" + buttonUse + '\'' +
+ ", buttonUseText='" + buttonUseText + '\'' +
+ ", orderNum=" + orderNum +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateDO.java
new file mode 100644
index 0000000..c4ee7f8
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateDO.java
@@ -0,0 +1,93 @@
+package org.springblade.code.model;
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import org.springblade.code.constant.MdmLifeCycleConstant;
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE,text = "鍒嗙被妯℃澘瀵硅薄",lifeCycle = MdmLifeCycleConstant.CODE_CLASSIFY_TEMPLATE_LC,
+ revisionRule = FrameWorkDefaultValueConstant.NUMBER_REVISION,startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING)
+public class CodeClassifyTemplateDO extends BaseModel {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117801077811L;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿�
+ */
+ @Column(columnDefinition = "涓婚搴撳垎绫讳富閿�" ,showTextField = "codeClassifyOidName" )
+ @VciUseRefer(value = MdmBtmTypeConstant.CODE_CLASSIFY,showTextField = "codeClassifyOidName" )
+ private String codeClassifyOid;
+
+ /**
+ * 涓婚搴撳垎绫讳富閿樉绀烘枃鏈�
+ */
+ @Transient(referColumn = "codeClassifyOid.name")
+ private String codeClassifyOidName;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨�
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷鐨勭紪鍙�")
+ private String btmTypeId;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷鐨勫悕绉�")
+ private String btmTypeName;
+
+ public String getCodeClassifyOid() {
+ return codeClassifyOid;
+ }
+
+ public void setCodeClassifyOid(String codeClassifyOid) {
+ this.codeClassifyOid = codeClassifyOid;
+ }
+
+ public String getCodeClassifyOidName() {
+ return codeClassifyOidName;
+ }
+
+ public void setCodeClassifyOidName(String codeClassifyOidName) {
+ this.codeClassifyOidName = codeClassifyOidName;
+ }
+
+ public String getBtmTypeId() {
+ return btmTypeId;
+ }
+
+ public void setBtmTypeId(String btmTypeId) {
+ this.btmTypeId = btmTypeId;
+ }
+
+ public String getBtmTypeName() {
+ return btmTypeName;
+ }
+
+ public void setBtmTypeName(String btmTypeName) {
+ this.btmTypeName = btmTypeName;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateDO{" +
+ "codeClassifyOid='" + codeClassifyOid + '\'' +
+ ", codeClassifyOidName='" + codeClassifyOidName + '\'' +
+ ", btmTypeId='" + btmTypeId + '\'' +
+ ", btmTypeName='" + btmTypeName + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateMapDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateMapDO.java
new file mode 100644
index 0000000..41fb962
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateMapDO.java
@@ -0,0 +1,114 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import org.springblade.code.constant.MdmEnumIdConstant;
+
+/**
+ * 妯℃澘鏄犲皠瑙勫垯
+ * 闆嗗洟鐮佸鍏ュ拰瀵煎嚭
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_TEMPLATE_MAP,text = "涓婚搴撴ā鏉挎槧灏勮鍒�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyTemplateMapDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -7507653171857583003L;
+ /**
+ * 鎵�灞炴ā鏉�
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ private String classifyTemplateOid;
+
+ /**
+ * 鎵�灞炴ā鏉垮悕绉�
+ */
+ @Transient(referColumn = "classifyTemplateOid.name")
+ private String classifyTemplateName;
+
+ /**
+ * 鏄犲皠瑙勫垯缂栧彿
+ */
+ @Column(columnDefinition = "鏄犲皠瑙勫垯缂栧彿")
+ private String id;
+
+ /**
+ * 鏄犲皠瑙勫垯鍚嶇О
+ */
+ @Column(columnDefinition = "鏄犲皠瑙勫垯鍚嶇О",nullable = false)
+ private String name;
+
+ /**
+ * 鏄犲皠瑙勫垯绫诲瀷
+ */
+ @Column(columnDefinition = "鏄犲皠瑙勫垯绫诲瀷",nullable = false)
+ @VciUseEnum(value = MdmEnumIdConstant.CODE_MAP_RULE_TYPE,showTextField = "codeMapRuleTypeText")
+ private String codeMapRuleType;
+
+ /**
+ * 鏄犲皠瑙勫垯绫诲瀷鐨勫悕绉�
+ */
+ @Transient
+ private String codeMapRuleTypeText;
+
+ public String getClassifyTemplateOid() {
+ return classifyTemplateOid;
+ }
+
+ public void setClassifyTemplateOid(String classifyTemplateOid) {
+ this.classifyTemplateOid = classifyTemplateOid;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCodeMapRuleType() {
+ return codeMapRuleType;
+ }
+
+ public void setCodeMapRuleType(String codeMapRuleType) {
+ this.codeMapRuleType = codeMapRuleType;
+ }
+
+ public String getCodeMapRuleTypeText() {
+ return codeMapRuleTypeText;
+ }
+
+ public void setCodeMapRuleTypeText(String codeMapRuleTypeText) {
+ this.codeMapRuleTypeText = codeMapRuleTypeText;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyTemplateMapDO{" +
+ "classifyTemplateOid='" + classifyTemplateOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", codeMapRuleType='" + codeMapRuleType + '\'' +
+ ", codeMapRuleTypeText='" + codeMapRuleTypeText + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyValueDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyValueDO.java
new file mode 100644
index 0000000..fc809c9
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyValueDO.java
@@ -0,0 +1,108 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊�
+ * 鐩稿綋浜庣骇鑱旂殑涓嬫媺妗�
+ * @author weidy
+ * @date 2022-1-18
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY_VALUE,text = "鍒嗙被鐮佹鐨勭爜鍊�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeClassifyValueDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5238387322464830032L;
+ /**
+ * 鍒嗙被鐮佹涓婚敭
+ */
+ @Column(columnDefinition = "鍒嗙被鐮佹涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_BASIC_SEC)
+ private String codeClassifySecOid;
+
+ /**
+ * 鍒嗙被鐮佸��
+ */
+ @Column(columnDefinition = "鍒嗙被鐮佸��")
+ private String id;
+
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ @Column(columnDefinition = "鍒嗙被鍚嶇О")
+ private String name;
+
+ /**
+ * 鐮佸�煎簭鍙�
+ */
+ @Column(columnDefinition = "鐮佸�煎簭鍙�")
+ private Integer orderNum;
+
+ /**
+ * 涓婄骇鍒嗙被鐮佸�间富閿�
+ */
+ @Column(columnDefinition = "涓婄骇鍒嗙被鐮佸�间富閿�")
+ private String parentClassifyValueOid;
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCodeClassifySecOid() {
+ return codeClassifySecOid;
+ }
+
+ public void setCodeClassifySecOid(String codeClassifySecOid) {
+ this.codeClassifySecOid = codeClassifySecOid;
+ }
+
+ public String getParentClassifyValueOid() {
+ return parentClassifyValueOid;
+ }
+
+ public void setParentClassifyValueOid(String parentClassifyValueOid) {
+ this.parentClassifyValueOid = parentClassifyValueOid;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeClassifyValueDO{" +
+ "codeClassifySecOid='" + codeClassifySecOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", orderNum=" + orderNum +
+ ", parentClassifyValueOid='" + parentClassifyValueOid + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeFixedValueDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeFixedValueDO.java
new file mode 100644
index 0000000..8416111
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeFixedValueDO.java
@@ -0,0 +1,93 @@
+package org.springblade.code.model;
+
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊�
+ * 鐩稿綋浜庡湪鏋氫妇鐨勪綔鐢紝浼氭湁澶氫釜
+ * @author weidy
+ * @date 2022-1-18
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_FIXED_VALUE,text = "鍥哄畾鐮佹鐨勭爜鍊�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeFixedValueDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 3392365440606832597L;
+ /**
+ * 鍥哄畾鐮佹涓婚敭
+ */
+ @Column(columnDefinition = "鍥哄畾鐮佹涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_BASIC_SEC)
+ private String codeFixedSecOid;
+
+ /**
+ * 鍥哄畾鐮佹鐨勭爜鍊�
+ */
+ @Column(columnDefinition = "鍥哄畾鐮佹鐨勭爜鍊�")
+ private String id;
+
+ /**
+ * 鍥哄畾鐮佹鐮佸�肩殑鎻忚堪
+ */
+ @Column(columnDefinition = "鍥哄畾鐮佹鐮佸�肩殑鎻忚堪")
+ private String name;
+
+ /**
+ * 灞炴�ф帓搴忓彿
+ */
+ @Column(columnDefinition = "灞炴�ф帓搴忓彿")
+ private Integer orderNum;
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCodeFixedSecOid() {
+ return codeFixedSecOid;
+ }
+
+ public void setCodeFixedSecOid(String codeFixedSecOid) {
+ this.codeFixedSecOid = codeFixedSecOid;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeFixedValueDO{" +
+ "codeFixedSecOid='" + codeFixedSecOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", orderNum=" + orderNum +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeImprotDataGridVO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeImprotDataGridVO.java
new file mode 100644
index 0000000..180fc33
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeImprotDataGridVO.java
@@ -0,0 +1,4 @@
+package org.springblade.code.model;
+
+public class CodeImprotDataGridVO {
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeKeyAttrRepeatRuleDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeKeyAttrRepeatRuleDO.java
new file mode 100644
index 0000000..abe740f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeKeyAttrRepeatRuleDO.java
@@ -0,0 +1,120 @@
+package org.springblade.code.model;
+
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_KEY_ATTR_REPEAT_RULE,text = "鍏抽敭鏁版嵁鏌ラ噸瑙勫垯",lifeCycle = FrameWorkLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME)
+public class CodeKeyAttrRepeatRuleDO extends BaseModel {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6696611801656232742L;
+
+ /**
+ * 鏌ラ噸瑙勫垯鑻辨枃缂栧彿
+ */
+ @Column(columnDefinition = "鏌ラ噸瑙勫垯鑻辨枃缂栧彿")
+ private String id;
+
+ /**
+ * 鏌ラ噸瑙勫垯涓枃鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "鏌ラ噸瑙勫垯涓枃鍚嶇О")
+ private String name;
+
+ /**
+ * 鏄惁蹇界暐澶у皬鍐�
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐澶у皬鍐�")
+ private String ignoreCaseFlag;
+
+ /**
+ * 鏄惁蹇界暐绌烘牸
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐绌烘牸")
+ private String ignoreSpaceFlag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐鍏ㄩ儴绌烘牸")
+ private String ignoreAllSpaceFlag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐鍏ㄥ崐瑙�")
+ private String ignoreWidthFlag;
+
+ public String getIgnoreWidthFlag() {
+ return ignoreWidthFlag;
+ }
+
+ public void setIgnoreWidthFlag(String ignoreWidthFlag) {
+ this.ignoreWidthFlag = ignoreWidthFlag;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIgnoreCaseFlag() {
+ return ignoreCaseFlag;
+ }
+
+ public void setIgnoreCaseFlag(String ignoreCaseFlag) {
+ this.ignoreCaseFlag = ignoreCaseFlag;
+ }
+
+ public String getIgnoreSpaceFlag() {
+ return ignoreSpaceFlag;
+ }
+
+ public void setIgnoreSpaceFlag(String ignoreSpaceFlag) {
+ this.ignoreSpaceFlag = ignoreSpaceFlag;
+ }
+
+ public String getIgnoreAllSpaceFlag() {
+ return ignoreAllSpaceFlag;
+ }
+
+ public void setIgnoreAllSpaceFlag(String ignoreAllSpaceFlag) {
+ this.ignoreAllSpaceFlag = ignoreAllSpaceFlag;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeKeyAttrRepeatRuleDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", ignoreCaseFlag='" + ignoreCaseFlag + '\'' +
+ ", ignoreSpaceFlag='" + ignoreSpaceFlag + '\'' +
+ ", ignoreAllSpaceFlag='" + ignoreAllSpaceFlag + '\'' +
+ ", ignoreWidthFlag='" + ignoreWidthFlag + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodePhaseAttrDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodePhaseAttrDO.java
new file mode 100644
index 0000000..e37c25f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodePhaseAttrDO.java
@@ -0,0 +1,93 @@
+package org.springblade.code.model;
+
+
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 闃舵鐨勫睘鎬�
+ * @author weidy
+ * @date 2022-1-14
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_PHASE_ATTR,text = "闃舵鐨勫睘鎬�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodePhaseAttrDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1316335276045033657L;
+ /**
+ * 鎵�灞為樁娈电殑淇℃伅
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炴ā鏉块樁娈�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_TEMPLATE_PHASE)
+ private String codePhaseOid;
+
+ /**
+ * 灞炴�х紪鍙�
+ */
+ @Column(columnDefinition = "灞炴�х紪鍙�",nullable = false)
+ private String id;
+
+ /**
+ * 灞炴�у悕绉�
+ */
+ @Column(columnDefinition = "灞炴�у悕绉�")
+ private String name;
+
+ /**
+ * 鎵�灞炲睘鎬у垎缁�
+ */
+ @Column(columnDefinition = "鎵�灞炲睘鎬у垎缁�")
+ private String attributeGroup;
+
+ public String getAttributeGroup() {
+ return attributeGroup;
+ }
+
+ public void setAttributeGroup(String attributeGroup) {
+ this.attributeGroup = attributeGroup;
+ }
+
+ public String getCodePhaseOid() {
+ return codePhaseOid;
+ }
+
+ public void setCodePhaseOid(String codePhaseOid) {
+ this.codePhaseOid = codePhaseOid;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "CodePhaseAttrDO{" +
+ "codePhaseOid='" + codePhaseOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", attributeGroup='" + attributeGroup + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeResembleRuleDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeResembleRuleDO.java
new file mode 100644
index 0000000..db85fdd
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeResembleRuleDO.java
@@ -0,0 +1,137 @@
+package org.springblade.code.model;
+
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯
+ * @author weidy
+ * @date 2022-4-10
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_RESEMBLE_RULE,text = "鐩镐技鏌ヨ瑙勫垯",lifeCycle = FrameWorkLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME)
+public class CodeResembleRuleDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 7375719926432663351L;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯缂栧彿
+ */
+ @Column(columnDefinition = "鐩镐技鏌ヨ瑙勫垯缂栧彿")
+ private String id;
+
+ /**
+ * 鐩镐技鏌ヨ瑙勫垯缂栧彿
+ */
+ @Column(nullable = false,columnDefinition = "鐩镐技鏌ヨ瑙勫垯缂栧彿")
+ private String name;
+
+ /**
+ * 鏄惁蹇界暐澶у皬鍐�
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐澶у皬鍐�")
+ private String ignoreCaseFlag;
+
+ /**
+ * 鏄惁蹇界暐绌烘牸
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐绌烘牸")
+ private String ignoreSpaceFlag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐鍏ㄩ儴绌烘牸")
+ private String ignoreAllSpaceFlag;
+
+ /**
+ * 鏄惁蹇界暐鍏ㄥ崐瑙�
+ */
+ @Column(columnDefinition = "鏄惁蹇界暐鍏ㄥ崐瑙�")
+ private String ignoreWidthFlag;
+
+ /**
+ * 杩炴帴绗�
+ */
+ @Column(columnDefinition = "杩炴帴绗�",length = 200)
+ private String linkCharacter;
+
+ public String getIgnoreWidthFlag() {
+ return ignoreWidthFlag;
+ }
+
+ public void setIgnoreWidthFlag(String ignoreWidthFlag) {
+ this.ignoreWidthFlag = ignoreWidthFlag;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIgnoreCaseFlag() {
+ return ignoreCaseFlag;
+ }
+
+ public void setIgnoreCaseFlag(String ignoreCaseFlag) {
+ this.ignoreCaseFlag = ignoreCaseFlag;
+ }
+
+ public String getIgnoreSpaceFlag() {
+ return ignoreSpaceFlag;
+ }
+
+ public void setIgnoreSpaceFlag(String ignoreSpaceFlag) {
+ this.ignoreSpaceFlag = ignoreSpaceFlag;
+ }
+
+ public String getIgnoreAllSpaceFlag() {
+ return ignoreAllSpaceFlag;
+ }
+
+ public void setIgnoreAllSpaceFlag(String ignoreAllSpaceFlag) {
+ this.ignoreAllSpaceFlag = ignoreAllSpaceFlag;
+ }
+
+
+ public String getLinkCharacter() {
+ return linkCharacter;
+ }
+
+ public void setLinkCharacter(String linkCharacter) {
+ this.linkCharacter = linkCharacter;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeResembleRuleDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", ignoreCaseFlag='" + ignoreCaseFlag + '\'' +
+ ", ignoreSpaceFlag='" + ignoreSpaceFlag + '\'' +
+ ", ignoreAllSpaceFlag='" + ignoreAllSpaceFlag + '\'' +
+ ", ignoreWidthFlag='" + ignoreWidthFlag + '\'' +
+ ", linkCharacter='" + linkCharacter + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeRuleDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeRuleDO.java
new file mode 100644
index 0000000..1609bbe
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeRuleDO.java
@@ -0,0 +1,79 @@
+package org.springblade.code.model;
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.mdm.constant.MdmLifeCycleConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 缂栫爜瑙勫垯
+ * @author weidy
+ * @date 2022-1-18
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_RULE,text = "涓绘暟鎹紪鐮佽鍒�",lifeCycle = MdmLifeCycleConstant.CODE_RULE_LC,startStatus = FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING)
+public class CodeRuleDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -7142347409110551299L;
+ /**
+ * 瑙勫垯缂栧彿
+ */
+ @Column(columnDefinition = "瑙勫垯缂栧彿")
+ private String id;
+
+ /**
+ * 瑙勫垯鐨勫悕绉�
+ */
+ @Column(columnDefinition = "瑙勫垯鍚嶇О")
+ private String name;
+
+ /**
+ * 瑙勫垯鐨勬弿杩�
+ */
+ @Column(columnDefinition = "瑙勫垯鐨勬弿杩�")
+ private String description;
+
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeRuleDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSerialValueDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSerialValueDO.java
new file mode 100644
index 0000000..3d1c7a5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSerialValueDO.java
@@ -0,0 +1,88 @@
+package org.springblade.code.model;
+
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 缂栫爜瑙勫垯鐨勬祦姘村��
+ * @author weidy
+ * @date 2022-3-1
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_SERIAL_VALUE,text = "娴佹按鐨勫��",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeSerialValueDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 4585738864706015777L;
+ /**
+ * 缂栫爜瑙勫垯鐨勪富閿�
+ */
+ @Column(nullable = false,columnDefinition = "缂栫爜瑙勫垯涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_RULE)
+ private String codeRuleOid;
+
+ /***
+ * 娴佹按渚濊禆
+ */
+ @Column(length = 4000,columnDefinition = "娴佹按渚濊禆")
+ private String serialUnit;
+
+ /**
+ * 鐮佹鐨勪富閿�
+ */
+ @Column(columnDefinition = "鐮佹鐨勪富閿�")
+ private String codeSecOid;
+
+ /**
+ * 鏈�澶ф祦姘村彿
+ */
+ @Column(columnDefinition = "鏈�澶ф祦姘村彿")
+ private String maxSerial;
+
+ public String getCodeRuleOid() {
+ return codeRuleOid;
+ }
+
+ public void setCodeRuleOid(String codeRuleOid) {
+ this.codeRuleOid = codeRuleOid;
+ }
+
+ public String getSerialUnit() {
+ return serialUnit;
+ }
+
+ public void setSerialUnit(String serialUnit) {
+ this.serialUnit = serialUnit;
+ }
+
+ public String getCodeSecOid() {
+ return codeSecOid;
+ }
+
+ public void setCodeSecOid(String codeSecOid) {
+ this.codeSecOid = codeSecOid;
+ }
+
+ public String getMaxSerial() {
+ return maxSerial;
+ }
+
+ public void setMaxSerial(String maxSerial) {
+ this.maxSerial = maxSerial;
+ }
+
+ @Override
+ public String toString() {
+ return "CodeSerialValueDO{" +
+ "codeRuleOid='" + codeRuleOid + '\'' +
+ ", serialUnit='" + serialUnit + '\'' +
+ ", codeSecOid='" + codeSecOid + '\'' +
+ ", maxSerial='" + maxSerial + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSynonymDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSynonymDO.java
new file mode 100644
index 0000000..3b7b468
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSynonymDO.java
@@ -0,0 +1,121 @@
+package org.springblade.code.model;
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import org.springblade.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 鍚屼箟璇�
+ * @author weidy
+ * @date 2022-2-17
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_SYNONYM,text = "鍚屼箟璇嶉厤缃�",description = "鍚屼箟璇嶉厤缃�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeSynonymDO extends BaseModel {
+
+ /**
+ * 妯℃澘涓婚敭
+ */
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ @Column(nullable = false,columnDefinition = "妯℃澘涓婚敭")
+ private String codeClassifyTemplateOid;
+
+ /**
+ * 妯℃澘鐨勫悕绉�
+ */
+ @Transient(referColumn = "codeClassifyTemplateOid.name")
+ private String codeClassifyTemplateOidName;
+
+
+ /**
+ * 灞炴�х殑鑻辨枃鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "灞炴�ц嫳鏂囧悕绉�")
+ private String id;
+
+ /**
+ * 灞炴�х殑涓枃鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "灞炴�т腑鏂囧悕绉�")
+ private String name;
+
+ /**
+ * 婧愬��
+ */
+ @Column(nullable = false,length = 200,columnDefinition = "婧愬��")
+ private String sourceValue;
+
+ /**
+ * 鍚屼箟璇�
+ */
+ @Column(nullable = false,length = 200,columnDefinition = "鍚屼箟璇�")
+ private String synonymValue;
+
+ public String getCodeClassifyTemplateOid() {
+ return codeClassifyTemplateOid;
+ }
+
+ public void setCodeClassifyTemplateOid(String codeClassifyTemplateOid) {
+ this.codeClassifyTemplateOid = codeClassifyTemplateOid;
+ }
+
+ public String getCodeClassifyTemplateOidName() {
+ return codeClassifyTemplateOidName;
+ }
+
+ public void setCodeClassifyTemplateOidName(String codeClassifyTemplateOidName) {
+ this.codeClassifyTemplateOidName = codeClassifyTemplateOidName;
+ }
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getSourceValue() {
+ return sourceValue;
+ }
+
+ public void setSourceValue(String sourceValue) {
+ this.sourceValue = sourceValue;
+ }
+
+ public String getSynonymValue() {
+ return synonymValue;
+ }
+
+ public void setSynonymValue(String synonymValue) {
+ this.synonymValue = synonymValue;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeSynonymDO{" +
+ "codeClassifyTemplateOid='" + codeClassifyTemplateOid + '\'' +
+ ", codeClassifyTemplateOidName='" + codeClassifyTemplateOidName + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", sourceValue='" + sourceValue + '\'' +
+ ", synonymValue='" + synonymValue + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeTemplatePhaseDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeTemplatePhaseDO.java
new file mode 100644
index 0000000..7aa35cf
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeTemplatePhaseDO.java
@@ -0,0 +1,81 @@
+package org.springblade.code.model;
+
+
+import org.springblade.code.constant.MdmBtmTypeConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciUseRefer;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 妯℃澘闃舵
+ * @author weidy
+ * @date 2022-1-14
+ */
+@VciBtmType(name = MdmBtmTypeConstant.CODE_TEMPLATE_PHASE,text = "妯℃澘闃舵",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class CodeTemplatePhaseDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 3526024656097456437L;
+ /**
+ * 鎵�灞炵紪鐮佹ā鏉�
+ */
+ @Column(nullable = false,columnDefinition = "鎵�灞炵紪鐮佹ā鏉�")
+ @VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
+ private String codeClassifyTemplateOid;
+
+ /**
+ * 闃舵缂栧彿
+ */
+ @Column(columnDefinition = "闃舵缂栧彿")
+ private String id;
+
+ /**
+ * 闃舵鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "闃舵鍚嶇О")
+ private String name;
+
+
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCodeClassifyTemplateOid() {
+ return codeClassifyTemplateOid;
+ }
+
+ public void setCodeClassifyTemplateOid(String codeClassifyTemplateOid) {
+ this.codeClassifyTemplateOid = codeClassifyTemplateOid;
+ }
+
+
+ @Override
+ public String toString() {
+ return "CodeTemplatePhaseDO{" +
+ "codeClassifyTemplateOid='" + codeClassifyTemplateOid + '\'' +
+ ", id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeBasicSecServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeBasicSecServiceI.java
new file mode 100644
index 0000000..4263f5e
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeBasicSecServiceI.java
@@ -0,0 +1,186 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeBasicSecDTO;
+import com.vci.mdm.model.CodeBasicSecDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.pagemodel.Tree;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.KeyValue;
+import org.springblade.code.vo.pagemodel.CodeBasicSecVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鐮佹鍩虹淇℃伅鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeBasicSecServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鐮佹鍩虹淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeBasicSecVO> gridCodeBasicSec(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeBasicSecDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSecDO> codeBasicSecDOs) throws VciBaseException;
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeBasicSecDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasFixedValue 鏄惁鏈夊浐瀹氬��
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSecDO> codeBasicSecDOs, boolean hasFixedValue) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeBasicSecDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeBasicSecVO codeBasicSecDO2VO(CodeBasicSecDO codeBasicSecDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鐮佹鍩虹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeBasicSecVO addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鐮佹鍩虹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeBasicSecVO editSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鐮佹鍩虹淇℃伅
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeBasicSec(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鐮佹鍩虹淇℃伅
+ * @param oid 涓婚敭
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeBasicSecVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鐮佹鍩虹淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeBasicSecVO> listCodeBasicSecByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鐮佹鍩虹淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeBasicSecVO> refDataGridCodeBasicSec(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 涓婚敭鍒犻櫎鐮佹鍩虹淇℃伅
+ * @param oid 鐮佹鍩虹淇℃伅涓婚敭
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeBasicSecByPrimaryKey(String oid) throws VciBaseException;
+
+ /**
+ * 鍏嬮殕鐮佹淇℃伅
+ * @param oidList 婧愮爜娈典俊鎭富閿泦鍚�
+ * @param pkCodeRule 鐩爣缂栫爜瑙勫垯
+ * @return 鍏嬮殕缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ BaseResult cloneCodeBasicSec(List<String> oidList, String pkCodeRule);
+
+ /**
+ * 鏌ヨ鐩爣鍒嗙被鐮佹鎵�鍦ㄧ殑鏍戠粨鏋�
+ * @param oid 鐩爣鍒嗙被鐮佹涓婚敭
+ * @return 鍒嗙被鐮佹鏍戠粨鏋�
+ */
+ List<Tree> gridCodeClassifySecTree(String oid);
+
+ /**
+ * 鏍规嵁鐮佹鍒嗙被鐨勭被鍨嬪垽鏂睘鎬ф槸鍚︽槸绌虹殑
+ *
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鏈夌┖鐨勫垯浼爇ey-灞炴�у悕 value-瀛楁鍚箟锛屾病鏈夌┖鐨勫垯浼� key-success value-true
+ */
+ KeyValue checkAttrNullableBySecType(CodeBasicSecDTO codeBasicSecDTO);
+
+ /**
+ * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鍐呭
+ * @param ruleOid 瑙勫垯鐨勫唴瀹�
+ * @return 鐮佹鐨勫唴瀹�
+ */
+ List<CodeBasicSecVO> listCodeBasicSecByRuleOid(String ruleOid);
+
+ /**
+ * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鐨勫唴瀹�
+ * @param ruleCollection 瑙勫垯涓婚敭闆嗗悎
+ * @return 鐮佹鐨勫唴瀹�
+ */
+ List<CodeBasicSecVO> listCodeBasicSecByRuleOids(Collection<String> ruleCollection);
+
+ /**
+ * 鍙傜収鍒嗙被鐨勭爜娈�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鐨勫璞�
+ * @return 鐮佹鐨勫唴瀹�
+ */
+ DataGrid<CodeBasicSecVO> refDataGridClassifySec(Map<String, String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁缂栫爜瑙勫垯鎵归噺鍒犻櫎鐮佹鍩烘湰淇℃伅
+ * @param codeRuleOid 缂栫爜瑙勫垯涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO batchDeleteSecByCodeRuleOid(String codeRuleOid);
+
+ /**
+ * 涓婄Щ
+ * @param oid 涓婚敭
+ */
+ void upOrderNum(String oid);
+
+ /**
+ * 涓嬬Щ
+ * @param oid 涓婚敭
+ */
+ void downOrderNum(String oid);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeButtonServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeButtonServiceI.java
new file mode 100644
index 0000000..b2ed736
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeButtonServiceI.java
@@ -0,0 +1,115 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeButtonDTO;
+import com.vci.mdm.model.CodeButtonDO;
+import com.vci.mdm.pagemodel.CodeButtonVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeButtonServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeButtonVO> gridCodeButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeButtonDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeButtonVO> codeButtonDO2VOs(Collection<CodeButtonDO> codeButtonDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeButtonDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeButtonVO codeButtonDO2VO(CodeButtonDO codeButtonDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeButtonVO addSave(CodeButtonDTO codeButtonDTO) throws VciBaseException;
+
+ /**
+ * 淇敼涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeButtonVO editSave(CodeButtonDTO codeButtonDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeButton(CodeButtonDTO codeButtonDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param oid 涓婚敭
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeButtonVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeButtonVO> listCodeButtonByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収涓绘暟鎹腑鐨勬寜閽墿灞曞垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeButtonVO> refDataGridCodeButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鍚敤
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult enableCodeButton(CodeButtonDTO buttonDTO);
+
+ /**
+ * 鍋滅敤
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult disableCodeButton(CodeButtonDTO buttonDTO);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyProcessTempServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyProcessTempServiceI.java
new file mode 100644
index 0000000..83a85cb
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyProcessTempServiceI.java
@@ -0,0 +1,124 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyProcessTempDTO;
+import com.vci.mdm.model.CodeClassifyProcessTempDO;
+import com.vci.mdm.pagemodel.CodeClassifyProcessTempVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyProcessTempServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyProcessTempVO> gridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyProcessTempDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyProcessTempVO> codeClassifyProcessTempDO2VOs(Collection<CodeClassifyProcessTempDO> codeClassifyProcessTempDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyProcessTempDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyProcessTempVO codeClassifyProcessTempDO2VO(CodeClassifyProcessTempDO codeClassifyProcessTempDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyProcessTempVO addSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyProcessTempVO editSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyProcessTemp(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param oid 涓婚敭
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyProcessTempVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyProcessTempVO> listCodeClassifyProcessTempByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉垮垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyProcessTempVO> refDataGridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+ * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鍐呭
+ */
+ BatchCBO codeTemplateDeleteTrigger(String classifyTemplateOid) ;
+
+ /**
+ * 鑾峰彇娴佺▼鐨勬ā鏉跨殑淇℃伅
+ * @param codeTemplateOid 妯℃澘鐨勪富閿�
+ * @param processUse 鐢ㄩ��
+ * @return 妯℃澘鐨勪俊鎭�
+ */
+ List<CodeClassifyProcessTempVO> listProcessTemplate(String codeTemplateOid, String processUse);
+
+ /**
+ * 浣跨敤妯℃澘鍚嶇О鏌ヨ
+ * @param codeTemplateOid 鍒嗙被妯℃澘涓婚敭
+ * @param processName 妯℃澘鍚嶇О
+ */
+ CodeClassifyProcessTempVO getProcessTempVOByName(String codeTemplateOid,String processName);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyServiceI.java
new file mode 100644
index 0000000..2db04f6
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyServiceI.java
@@ -0,0 +1,240 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.bo.CodeClassifyFullInfoBO;
+import com.vci.mdm.dto.CodeClassifyDTO;
+import com.vci.mdm.model.CodeClassifyDO;
+import com.vci.mdm.pagemodel.CodeClassifyVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.OsAttributeVO;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 涓婚搴撳垎绫绘湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-20
+ */
+public interface CodeClassifyServiceI {
+ /**
+ * 鏌ヨ涓婚搴撳垎绫� 鏍�
+ * @param treeQueryObject 鏍戞煡璇㈠璞�
+ * @return 涓婚搴撳垎绫� 鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢涓嶇鍚堣姹傜殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ List<Tree> treeCodeClassify(TreeQueryObject treeQueryObject) throws VciBaseException;
+
+ /**
+ * 涓婚搴撶殑鏍�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撴樉绀烘爲
+ */
+ List<Tree> treeTopCodeClassify(TreeQueryObject treeQueryObject);
+
+ /**
+ * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+ */
+ List<CodeClassifyDO> selectCodeClassifyDOByTree(TreeQueryObject treeQueryObject);
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyVO> codeClassifyDO2VOs(Collection<CodeClassifyDO> codeClassifyDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyVO codeClassifyDO2VO(CodeClassifyDO codeClassifyDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyVO addSave(CodeClassifyDTO codeClassifyDTO) throws VciBaseException;
+
+ /**
+ * 淇敼涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ BaseResult editSave(CodeClassifyDTO codeClassifyDTO) throws VciBaseException;
+
+
+ /**
+ * 妫�鏌� 涓婚搴撳垎绫绘槸鍚﹀垹闄�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult checkIsCanDelete(CodeClassifyDTO codeClassifyDTO) throws VciBaseException;
+
+ /**
+ * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+ *
+ * @param oid 涓婚敭
+ * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+ * @throws VciBaseException 鍙傛暟涓虹┖鍜屾湁寮曠敤鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ boolean checkChildIsLinked(String oid) throws VciBaseException;
+
+ /**
+ * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+ *
+ * @param oid 涓婚敭
+ * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+ * @throws VciBaseException 鍙傛暟閿欒锛屾垨鑰呮暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ boolean checkHasChild(String oid) throws VciBaseException;
+
+ /**
+ * 鍒犻櫎涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassify(CodeClassifyDTO codeClassifyDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撳垎绫�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撳垎绫绘樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撳垎绫绘樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyVO> listCodeClassifyByOids(Collection<String> oidCollections) throws VciBaseException;
+
+ /**
+ * 鍙傜収鏍� 涓婚搴撳垎绫�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撳垎绫绘樉绀烘爲
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ List<Tree> referTree(TreeQueryObject treeQueryObject) throws VciBaseException;
+
+ /**
+ * 鍚敤銆佸仠鐢�
+ * @param oid 涓婚敭
+ * @param lcStatus 鐘舵��
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄
+ */
+ List<CodeClassifyDO> selectByWrapper(VciQueryWrapperForDO queryWrapper);
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇鍒嗙被鐩稿叧鐨勬墍鏈変俊鎭�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被涓婄骇锛屼笅绾х殑淇℃伅
+ */
+ CodeClassifyFullInfoBO getClassifyFullInfo(String codeClassifyOid);
+
+ /**
+ * 鑾峰彇褰撳墠鍒嗙被鐨勯《灞傚垎绫�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 椤跺眰鍒嗙被鐨勪俊鎭�
+ */
+ CodeClassifyVO getTopClassifyVO(String codeClassifyOid);
+
+ /**
+ * 缁熻瀛愯妭鐐圭殑涓暟
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 涓暟
+ */
+ int countChildrenByClassifyOid(String codeClassifyOid);
+ /**
+ * 鑾峰彇瀛愮骇鐨勪富棰樺簱鍒嗙被
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param allLevel 鏄惁鎵�鏈夌殑灞傜骇
+ * @param fieldInPath 鍦ㄨ矾寰勪腑鐨勫瓧娈�
+ * @param enable 鏄惁鍙樉绀哄惎鐢�
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ List<CodeClassifyVO> listChildrenClassify(String codeClassifyOid, boolean allLevel, String fieldInPath, boolean enable);
+
+ /**
+ * 鍙嶅悜浠庡瓙绾ц幏鍙栫埗绾х殑涓婚搴撳垎绫�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ List<CodeClassifyVO> listParentClassify(String codeClassifyOid);
+
+ /**
+ * 瀵煎嚭鍒嗙被
+ * @param oid 鍒嗙被涓婚敭
+ * @return excel鏂囦欢璺緞
+ */
+ String exportClassify(String oid);
+
+ /**
+ * 鍒涘缓瀵煎叆妯℃澘
+ * @return excel鏂囦欢璺緞
+ */
+ String createImportExcel();
+
+ /**
+ * 瀵煎叆鍒嗙被
+ * @param file1 鏂囦欢鐨勪俊鎭�
+ */
+ void importClassify(File file1);
+
+ /**
+ * 鑾峰彇鍒嗙被鍏宠仈鐨勫睘鎬�
+ * @param baseQueryObject 鏌ヨ瀵硅薄锛屽繀椤绘湁codeClassifyOid锛屾敮鎸乮d鍜宯ame涓ょ鏌ヨ鏉′欢
+ * @return 灞炴�х殑淇℃伅锛屽寘鍚粯璁ょ殑灞炴��
+ */
+ DataGrid<OsAttributeVO> listClassifyLinkAttr(BaseQueryObject baseQueryObject);
+
+ /**
+ * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
+ * @param idPath 缂栧彿鐨勮矾寰勶紝涓�瀹氳浠庢渶椤跺眰鑺傜偣寮�濮嬶紝鏍煎紡涓簒xx/yyy/zz 杩欐牱
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ CodeClassifyVO getObjectByIdPath(String idPath);
+
+ /**
+ * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
+ * @param clsfNamePath 鍒嗙被鍚嶇О鐨勮矾寰勶紝涓�瀹氳浠庢渶椤跺眰鑺傜偣寮�濮嬶紝鏍煎紡涓簒xx/yyy/zz 杩欐牱
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ CodeClassifyVO getObjectByClsfNamePath(String clsfNamePath);
+
+ /***
+ * 鏍规嵁涓婄骇鑺傜偣鑾峰彇涓嬬骇鑺傜偣浠e彿璺緞鍜屽悕绉拌矾寰�
+ * @param classifyId
+ * @param enable
+ * @return
+ */
+ public List<CodeClassifyVO> getIdPathToNamePathByParentId(String classifyId,boolean enable);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTempMapItemServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTempMapItemServiceI.java
new file mode 100644
index 0000000..7b6a4f6
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTempMapItemServiceI.java
@@ -0,0 +1,101 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyTempMapItemDTO;
+import com.vci.mdm.model.CodeClassifyTempMapItemDO;
+import com.vci.mdm.pagemodel.CodeClassifyTempMapItemVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-03-10
+ */
+public interface CodeClassifyTempMapItemServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTempMapItemVO> gridCodeClassifyTempMapItem(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTempMapItemDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTempMapItemVO> codeClassifyTempMapItemDO2VOs(Collection<CodeClassifyTempMapItemDO> codeClassifyTempMapItemDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTempMapItemDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyTempMapItemVO codeClassifyTempMapItemDO2VO(CodeClassifyTempMapItemDO codeClassifyTempMapItemDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTempMapItemVO addSave(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTempMapItemVO editSave(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyTempMapItem(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param oid 涓婚敭
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTempMapItemVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyTempMapItemVO> listCodeClassifyTempMapItemByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鏄犲皠瑙勫垯鐨勬槑缁嗗垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTempMapItemVO> refDataGridCodeClassifyTempMapItem(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateAttrServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateAttrServiceI.java
new file mode 100644
index 0000000..e18bdfd
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateAttrServiceI.java
@@ -0,0 +1,133 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.mdm.model.CodeClassifyTemplateAttrDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.web.pageModel.OsBtmTypeAttributeVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateAttrServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateAttrVO addSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException;
+ List<CodeClassifyTemplateAttrVO> batchAddSave(List<CodeClassifyTemplateAttrDTO> codeClassifyTemplateAttrDTOs) throws VciBaseException;
+
+ /**
+ * 淇敼涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ BaseResult editSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyTemplateAttr(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param oid 涓婚敭
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateAttrVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅鐨勬墍鏈夋湭閫夋嫨鐨勫睘鎬�
+ * @param baseQueryObject
+ * @return
+ */
+ DataGrid<OsBtmTypeAttributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject);
+
+ /**
+ * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅宸查�夋嫨鐨勫睘鎬�
+ * @param baseQueryObject
+ * @return
+ */
+ DataGrid<OsBtmTypeAttributeVO> codeClassifyTemplateAttrByBtmHave(BaseQueryObject baseQueryObject);
+
+ /**
+ * 鍚屾鍒板叾浠栨ā鏉�
+ * @param codeClassifyTemplateAttrDTO oid
+ * @return
+ */
+ BaseResult copyto(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException;
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栨ā鏉跨殑灞炴��--鎵归噺
+ * @param templateOidCollection 妯℃澘鐨勪富閿�
+ * @return 灞炴�х殑淇℃伅
+ */
+ List<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByTemplateOids(Collection<String> templateOidCollection);
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateButtonServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateButtonServiceI.java
new file mode 100644
index 0000000..7d1db22
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateButtonServiceI.java
@@ -0,0 +1,133 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyTemplateButtonDTO;
+import com.vci.mdm.model.CodeClassifyTemplateButtonDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateButtonVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateButtonServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateButtonDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOs) throws VciBaseException;
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateButtonDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasButtonVO 鏄惁鍖呭惈鎸夐挳鐨勪俊鎭�
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOs, boolean hasButtonVO) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateButtonDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateButtonVO codeClassifyTemplateButtonDO2VO(CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateButtonVO addSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException;
+
+ /**
+ * 淇敼涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateButtonVO editSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyTemplateButton(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateButtonVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyTemplateButtonVO> listCodeClassifyTemplateButtonByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+ * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ BatchCBO codeTemplateDeleteTrigger(String classifyTemplateOid);
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇鎵╁睍鐨勬寜閽�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return 鎸夐挳鐨勭浉鍏崇殑淇℃伅
+ */
+ List<CodeClassifyTemplateButtonVO> listButtonByTemplateOid(String templateOid);
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇鎵╁睍鐨勬寜閽�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @param hasButtonVO 鏄惁鍖呭惈鎸夐挳鐨勬樉绀轰俊鎭�
+ * @return 鎸夐挳鐨勭浉鍏崇殑淇℃伅
+ */
+ List<CodeClassifyTemplateButtonVO> listButtonByTemplateOid(String templateOid,boolean hasButtonVO);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateMapServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateMapServiceI.java
new file mode 100644
index 0000000..6897f16
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateMapServiceI.java
@@ -0,0 +1,100 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyTemplateMapDTO;
+import com.vci.mdm.model.CodeClassifyTemplateMapDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateMapVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateMapServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateMapVO> gridCodeClassifyTemplateMap(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateMapDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTemplateMapVO> codeClassifyTemplateMapDO2VOs(Collection<CodeClassifyTemplateMapDO> codeClassifyTemplateMapDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateMapDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateMapVO codeClassifyTemplateMapDO2VO(CodeClassifyTemplateMapDO codeClassifyTemplateMapDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateMapVO addSave(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) throws VciBaseException;
+
+ /**
+ * 淇敼涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateMapVO editSave(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyTemplateMap(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateMapVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyTemplateMapVO> listCodeClassifyTemplateMapByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収涓婚搴撴ā鏉挎槧灏勮鍒欏垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateMapVO> refDataGridCodeClassifyTemplateMap(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateServiceI.java
new file mode 100644
index 0000000..ef98847
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateServiceI.java
@@ -0,0 +1,200 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyTemplateDTO;
+import com.vci.mdm.model.CodeClassifyTemplateDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyTemplateServiceI {
+ /**
+ * 鏌ヨ鍒嗙被妯℃澘瀵硅薄 鏍�
+ * @param treeQueryObject 鏍戞煡璇㈠璞�
+ * @return 鍒嗙被妯℃澘瀵硅薄 鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢涓嶇鍚堣姹傜殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject) throws VciBaseException;
+ /**
+ * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+ */
+ List<CodeClassifyTemplateDO> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject);
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplateDO> codeClassifyTemplateDOs) throws VciBaseException;
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasAttr 鏄惁鍖呭惈灞炴��
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplateDO> codeClassifyTemplateDOs, boolean hasAttr) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateVO codeClassifyTemplateDO2VO(CodeClassifyTemplateDO codeClassifyTemplateDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ BaseResult<CodeClassifyTemplateVO> addSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ BaseResult editSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException;
+
+ /**
+ * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult checkIsCanDelete(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException;
+
+ /**
+ * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+ *
+ * @param oid 涓婚敭
+ * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+ * @throws VciBaseException 鍙傛暟涓虹┖鍜屾湁寮曠敤鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ boolean checkChildIsLinked(String oid) throws VciBaseException;
+
+ /**
+ * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+ *
+ * @param oid 涓婚敭
+ * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+ * @throws VciBaseException 鍙傛暟閿欒锛屾垨鑰呮暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ boolean checkHasChild(String oid) throws VciBaseException;
+
+ /**
+ * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyTemplate(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄(鍖呭惈灞炴�э級
+ * @param oid 涓婚敭
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyTemplateVO getObjectHasAttrByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被妯℃澘瀵硅薄
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyTemplateVO> listCodeClassifyTemplateByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ List<Tree> referTree(TreeQueryObject treeQueryObject) throws VciBaseException;
+
+ /**
+ * 鍒嗙被妯℃澘鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鍚敤銆佸仠鐢�
+ * @param oid
+ * @param lcStatus
+ * @return
+ */
+ BaseResult updateLcStatus( String oid, String lcStatus);
+
+ /**
+ * 鍗囩増
+ */
+ BaseResult Upgrade(CodeClassifyTemplateDTO codeClassifyDTO);
+
+ /**
+ * 妯℃澘鍏嬮殕
+ */
+ BaseResult copyTemplate(CodeClassifyTemplateDTO codeClassifyDTO);
+
+ /**
+ * 浣跨敤涓婚搴撶殑鍒嗙被涓婚敭锛岃幏鍙栫敓鏁堢殑妯℃澘
+ * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
+ * @param hasAttribute 鏄惁鍖呭惈灞炴��
+ * @return 妯℃澘鐨勪俊鎭�
+ */
+ List<CodeClassifyTemplateVO> listReleaseTemplateByClassifyOid(String codeClassifyOid,boolean hasAttribute);
+
+ /**
+ * 鐢ㄦā鏉跨殑鐗堟湰鏉ユ帓搴�
+ * @param templateVOList 妯℃澘鐨勬樉绀哄璞�
+ * @return 鎺掑簭鍚庣殑鍒楄〃
+ */
+ List<CodeClassifyTemplateVO> sortTemplateByRevision(List<CodeClassifyTemplateVO> templateVOList);
+
+ /**
+ * 鏍¢獙瀛愬垎绫绘槸鍚︾浉鍚岀殑妯℃澘
+ * @param codeClassifyOid 鐖跺垎绫荤殑涓婚敭
+ * @return true琛ㄧず鐩稿悓
+ */
+ boolean checkChildHasSameTemplate(String codeClassifyOid);
+ /**
+ * 鑾峰彇鎵�鏈夊瓙鍒嗙被妯℃澘
+ * @param codeClassifyOid 鐖跺垎绫荤殑涓婚敭
+ * @return true琛ㄧず鐩稿悓
+ */
+ List<CodeClassifyTemplateVO> childTemplates(String codeClassifyOid);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyValueServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyValueServiceI.java
new file mode 100644
index 0000000..45916f7
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyValueServiceI.java
@@ -0,0 +1,152 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeClassifyValueDTO;
+import com.vci.mdm.model.CodeClassifyValueDO;
+import com.vci.mdm.pagemodel.CodeClassifyValueVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.Tree;
+import com.vci.starter.web.pagemodel.TreeQueryObject;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeClassifyValueServiceI {
+ /**
+ * 鏌ヨ鍒嗙被鐮佹鐨勭爜鍊� 鏍�
+ * @param treeQueryObject 鏍戞煡璇㈠璞�
+ * @return 鍒嗙被鐮佹鐨勭爜鍊� 鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢涓嶇鍚堣姹傜殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ List<Tree> treeCodeClassifyValue(TreeQueryObject treeQueryObject) throws VciBaseException;
+ /**
+ * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+ */
+ List<CodeClassifyValueDO> selectCodeClassifyValueDOByTree(TreeQueryObject treeQueryObject);
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyValueDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeClassifyValueVO> codeClassifyValueDO2VOs(Collection<CodeClassifyValueDO> codeClassifyValueDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyValueDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeClassifyValueVO codeClassifyValueDO2VO(CodeClassifyValueDO codeClassifyValueDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyValueVO addSave(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyValueVO editSave(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException;
+
+ /**
+ * 妫�鏌� 鍒嗙被鐮佹鐨勭爜鍊兼槸鍚﹀垹闄�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult checkIsCanDelete(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException;
+
+ /**
+ * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+ *
+ * @param oid 涓婚敭
+ * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+ * @throws VciBaseException 鍙傛暟涓虹┖鍜屾湁寮曠敤鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ boolean checkChildIsLinked(String oid) throws VciBaseException;
+
+ /**
+ * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+ *
+ * @param oid 涓婚敭
+ * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+ * @throws VciBaseException 鍙傛暟閿欒锛屾垨鑰呮暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ boolean checkHasChild(String oid) throws VciBaseException;
+
+ /**
+ * 鍒犻櫎鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeClassifyValue(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被鐮佹鐨勭爜鍊�
+ * @param oid 涓婚敭
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeClassifyValueVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被鐮佹鐨勭爜鍊�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeClassifyValueVO> listCodeClassifyValueByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鏍� 鍒嗙被鐮佹鐨勭爜鍊�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀烘爲
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ List<Tree> referTree(TreeQueryObject treeQueryObject) throws VciBaseException;
+
+ /**
+ * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹�
+ * @param classifySecOid 鐮佹鐨勪富閿�
+ * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐮佸�肩殑鍐呭
+ */
+ List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid);
+
+ /**
+ * 鏍规嵁鐮佹涓婚敭鍒犻櫎鍏跺瓨鍦ㄧ殑鐮佸�煎璞�
+ * @param codeclassifysecoid 鍒嗙被鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult batchDeleteBySecOid(String codeclassifysecoid);
+
+ /**
+ * 鎵归噺娣诲姞鍒嗙被鐮佹鐨勭爜鍊硷紝濡傛灉淇濆瓨鐨勯泦鍚堜腑涓嶅瓨鍦ㄥ凡鍦ㄦ暟鎹簱涓殑鐮佸�煎垯鍒犻櫎銆備富瑕佹槸淇濆瓨鐮佸�肩殑搴忓彿
+ * @param dtoList 鍒嗙被鐮佹鐨勭爜鍊煎垪琛�
+ * @param codeclassifysecoid 鍒嗙被鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult batchSave4Order(List<CodeClassifyValueDTO> dtoList, String codeclassifysecoid);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingServiceI.java
new file mode 100644
index 0000000..0a8f35b
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingServiceI.java
@@ -0,0 +1,89 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.model.*;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Map;
+
+/**
+ * 涓�銆侀厤缃垎绫汇�佺郴缁熴�佹帴鍙f暟鎹�
+ * 1銆侀厤缃郴缁烻ysIntBaseDO
+ * 2銆侀厤缃郴缁熴�佹帴鍙c�佸垎绫籗ysIntInfoDO
+ *
+ * 浜屻�佸鐞嗛鐢宠鏁版嵁
+ * 1銆佹帴鏀秞mlData
+ * 2銆佸伐鑹虹郴缁熺壒娈婂鐞嗭紝鏍规嵁unique鏌ヨ缂栫爜锛屾湁宸茬粡鍙戝竷鐨勬暟鎹紝鐩存帴杩斿洖缂栫爜銆傛病鏈夋煡璇㈠埌宸茬粡鍙戝竷鐨勭紪鐮侊紙缂栬緫涓�佹彁浜や腑銆佸鏍镐腑銆佸仠鐢ㄧ瓑锛夊拰涓�鑸郴缁熶竴鏍锋寜鐓х3姝ュ鐞�
+ * 3銆佽В鏋恱mlData閲屾瘡涓�涓猟ata鑺傜偣锛屽瓨鍌ㄥ叆DockingPreApplyDataDO锛宒ata鑺傜偣涓媝ros鑺傜偣瀛樺偍鍏ockingPreApplyDataInfoDO
+ * 4銆佽繑鍥瀤mlData锛岄噷杈规爣璇嗕簡姣忎竴涓猟ata鐨勫鐞嗙粨鏋�
+ *
+ * 涓夈�佹牴鎹鐢宠鏁版嵁锛屾彃鍏ヤ富鏁版嵁
+ * 1銆佸叧鑱斿垎绫�
+ * 2銆佹煡璇㈠嚭DockingPreApplyDataInfoDO瀛樺偍鐨勬暟鎹紝鎸夌収鏁版嵁鏄犲皠xml锛岃浆鎹负鎴戜滑鐨刱ey锛岃繑缁欏墠绔嚜鍔ㄥ~鍏呭埌鏂板鏁版嵁鐨勯〉闈�
+ * 3銆佽皟鐢ㄩ�氱敤鐨勬暟鎹柊澧炴帴鍙d繚瀛樻暟鎹紝杩欎竴姝ュ拰涓绘暟鎹鐞嗘ā鍧楀姛鑳戒竴鏍�
+ *
+ * 鍥涖�佹帹閫佹暟鎹�
+ * 1銆佸垎绫绘暟鎹拰涓绘暟鎹湁鍙樺寲鐨勬椂鍊欙紝鏁版嵁搴撹Е鍙戝櫒(TIG_CODEALLCODE_FORDOCKINGDATA,TIG_codeclsify_FORDOCKINGDATA)鑷姩鎻掑叆dockingdata
+ * 2銆丏ockingScheduling鎵ц鏃讹紝鏌ヨdockingdatasendflag=false鐨勬暟鎹紝缁撳悎鏌ヨsysintinfo鏁版嵁锛屾煡璇ockingtask
+ * 3銆乨ockingtask涓彇鍑烘潵鏁版嵁锛屾牴鎹産tmname鍜屾暟鎹畂id鏌ヨ鍑烘潵瑕佹帹閫佺殑鏁版嵁锛屾煡璇ysIntInfoDO锛屾牴鎹竴銆�2銆佷腑閰嶇疆鐨勪俊鎭紝鎵ц鎺ㄩ��
+ *
+ * @author wangyi
+ * @date 2022-03-20
+ */
+public interface CodeDuckingServiceI {
+
+ /**
+ * 浜屻��1銆�2銆�3銆�4銆�
+ * 澶勭悊棰勭敵璇锋暟鎹�
+ * @param xmlDatas
+ * @return 鎺ユ敹鐨剎mlDate
+ */
+ String applicateCode(String xmlDatas);
+
+ /**
+ * 鍥涖��2銆�
+ * 鏌ヨredis涓暟鎹紝瀵规瘮鍚庢彃鍏ockingtask
+ */
+ void insertCache2();
+
+ /**
+ * 鍥涖��1銆�2銆�3銆�
+ */
+ void sendData3();
+
+ /**
+ * 瀹氭椂浠诲姟璋冪敤
+ */
+ void DockingScheduing();
+
+ /**
+ * 鏁版嵁鍒犻櫎鐨勬椂鍊欙紝缂撳瓨鍒皉edis
+ * @param oid
+ */
+ void cacheDeleteData(String oid,Object obj);
+
+ /**
+ * 鏌ヨdata鍒楄〃
+ */
+ DataGrid<DockingDataDO> gridData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鏌ヨtask鍒楄〃
+ */
+ DataGrid<DockingTaskDO> gridTask(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鏌ヨ闆嗘垚log鍒楄〃
+ */
+ DataGrid<DockingLogeDO> gridLoge(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鏌ヨ闆嗘垚鎺ュ彛param鍒楄〃
+ */
+ DataGrid<SysIntHeaderDO> gridHeader(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingSyncServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingSyncServiceI.java
new file mode 100644
index 0000000..a18196e
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingSyncServiceI.java
@@ -0,0 +1,48 @@
+package org.springblade.code.service;
+
+
+import com.vci.starter.web.pagemodel.BaseResult;
+
+/**
+ * 涓�銆侀厤缃垎绫汇�佺郴缁熴�佹帴鍙f暟鎹�
+ * 1銆侀厤缃郴缁烻ysIntBaseDO
+ * 2銆侀厤缃郴缁熴�佹帴鍙c�佸垎绫籗ysIntInfoDO
+ *
+ * 浜屻�佸鐞嗛鐢宠鏁版嵁
+ * 1銆佹帴鏀秞mlData
+ * 2銆佸伐鑹虹郴缁熺壒娈婂鐞嗭紝鏍规嵁unique鏌ヨ缂栫爜锛屾湁宸茬粡鍙戝竷鐨勬暟鎹紝鐩存帴杩斿洖缂栫爜銆傛病鏈夋煡璇㈠埌宸茬粡鍙戝竷鐨勭紪鐮侊紙缂栬緫涓�佹彁浜や腑銆佸鏍镐腑銆佸仠鐢ㄧ瓑锛夊拰涓�鑸郴缁熶竴鏍锋寜鐓х3姝ュ鐞�
+ * 3銆佽В鏋恱mlData閲屾瘡涓�涓猟ata鑺傜偣锛屽瓨鍌ㄥ叆DockingPreApplyDataDO锛宒ata鑺傜偣涓媝ros鑺傜偣瀛樺偍鍏ockingPreApplyDataInfoDO
+ * 4銆佽繑鍥瀤mlData锛岄噷杈规爣璇嗕簡姣忎竴涓猟ata鐨勫鐞嗙粨鏋�
+ *
+ * 涓夈�佹牴鎹鐢宠鏁版嵁锛屾彃鍏ヤ富鏁版嵁
+ * 1銆佸叧鑱斿垎绫�
+ * 2銆佹煡璇㈠嚭DockingPreApplyDataInfoDO瀛樺偍鐨勬暟鎹紝鎸夌収鏁版嵁鏄犲皠xml锛岃浆鎹负鎴戜滑鐨刱ey锛岃繑缁欏墠绔嚜鍔ㄥ~鍏呭埌鏂板鏁版嵁鐨勯〉闈�
+ * 3銆佽皟鐢ㄩ�氱敤鐨勬暟鎹柊澧炴帴鍙d繚瀛樻暟鎹紝杩欎竴姝ュ拰涓绘暟鎹鐞嗘ā鍧楀姛鑳戒竴鏍�
+ *
+ * 鍥涖�佹帹閫佹暟鎹�
+ * 1銆佸垎绫绘暟鎹拰涓绘暟鎹湁鍙樺寲鐨勬椂鍊欙紝鏁版嵁搴撹Е鍙戝櫒(TIG_CODEALLCODE_FORDOCKINGDATA,TIG_codeclsify_FORDOCKINGDATA)鑷姩鎻掑叆dockingdata
+ * 2銆丏ockingScheduling鎵ц鏃讹紝鏌ヨdockingdatasendflag=false鐨勬暟鎹紝缁撳悎鏌ヨsysintinfo鏁版嵁锛屾煡璇ockingtask
+ * 3銆乨ockingtask涓彇鍑烘潵鏁版嵁锛屾牴鎹産tmname鍜屾暟鎹畂id鏌ヨ鍑烘潵瑕佹帹閫佺殑鏁版嵁锛屾煡璇ysIntInfoDO锛屾牴鎹竴銆�2銆佷腑閰嶇疆鐨勪俊鎭紝鎵ц鎺ㄩ��
+ *
+ * @author wangyi
+ * @date 2022-03-20
+ */
+public interface CodeDuckingSyncServiceI {
+
+ /**
+ * 鏁版嵁瀹氭椂浠诲姟璋冪敤
+ */
+ void DockingDataSyncScheduing();
+
+ /**
+ * 鏁版嵁瀹氭椂浠诲姟璋冪敤
+ */
+ void DockingClassSyncScheduing();
+
+ /**
+ * 鎺ㄩ�佹湭瀹屾垚鐨勯泦鎴愭暟鎹�
+ * @return
+ */
+ BaseResult sendData(String oids);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeFixedValueServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeFixedValueServiceI.java
new file mode 100644
index 0000000..fb50094
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeFixedValueServiceI.java
@@ -0,0 +1,124 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeFixedValueDTO;
+import com.vci.mdm.model.CodeFixedValueDO;
+import com.vci.mdm.pagemodel.CodeFixedValueVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeFixedValueServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍥哄畾鐮佹鐨勭爜鍊�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeFixedValueVO> gridCodeFixedValue(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeFixedValueDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeFixedValueVO> codeFixedValueDO2VOs(Collection<CodeFixedValueDO> codeFixedValueDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeFixedValueDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeFixedValueVO codeFixedValueDO2VO(CodeFixedValueDO codeFixedValueDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeFixedValueVO addSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeFixedValueVO editSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeFixedValue(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍥哄畾鐮佹鐨勭爜鍊�
+ * @param oid 涓婚敭
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeFixedValueVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍥哄畾鐮佹鐨勭爜鍊�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeFixedValueVO> listCodeFixedValueByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鍥哄畾鐮佹鐨勭爜鍊煎垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeFixedValueVO> refDataGridCodeFixedValue(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 浣跨敤鐮佹鐨勪富閿幏鍙栧浐瀹氱爜鐨勭爜鍊�
+ * @param secOidCollection 鐮佹鐨勪富閿�
+ * @return 鐮佸�兼樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鐨勬椂鍊欏嚭鐜颁簡閿欒浼氭姏鍑哄紓甯�
+ */
+ Map<String,List<CodeFixedValueVO>> listCodeFixedValueBySecOids(Collection<String> secOidCollection) throws VciBaseException;
+
+ /**
+ * 鎵归噺娣诲姞鍥哄畾鐮佹鐨勭爜鍊硷紝濡傛灉淇濆瓨鐨勯泦鍚堜腑涓嶅瓨鍦ㄥ凡鍦ㄦ暟鎹簱涓殑鐮佸�煎垯鍒犻櫎銆備富瑕佹槸淇濆瓨鐮佸�肩殑搴忓彿
+ * @param dtoList 鍥哄畾鐮佹鐨勭爜鍊煎垪琛�
+ * @param codefixedsecoid 鍥哄畾鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult<CodeFixedValueVO> batchSave4Order(List<CodeFixedValueDTO> dtoList, String codefixedsecoid);
+
+ /**
+ * 鏍规嵁鐮佹涓婚敭鍒犻櫎鍏跺瓨鍦ㄧ殑鐮佸�煎璞�
+ * @param codefixedsecoid 鍥哄畾鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult<CodeFixedValueVO> batchDeleteBySecOid(String codefixedsecoid);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeKeyAttrRepeatRuleServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeKeyAttrRepeatRuleServiceI.java
new file mode 100644
index 0000000..895cc68
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeKeyAttrRepeatRuleServiceI.java
@@ -0,0 +1,115 @@
+package org.springblade.code.service;
+
+
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import org.springblade.code.bo.CodeClassifyFullInfoBO;
+import org.springblade.code.dto.CodeKeyAttrRepeatRuleDTO;
+import org.springblade.code.model.CodeKeyAttrRepeatRuleDO;
+import org.springblade.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeKeyAttrRepeatRuleServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeKeyAttrRepeatRuleVO> gridCodeKeyAttrRepeatRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeKeyAttrRepeatRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeKeyAttrRepeatRuleVO> codeKeyAttrRepeatRuleDO2VOs(Collection<CodeKeyAttrRepeatRuleDO> codeKeyAttrRepeatRuleDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeKeyAttrRepeatRuleDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleDO2VO(CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeKeyAttrRepeatRuleVO addSave(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeKeyAttrRepeatRuleVO editSave(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeKeyAttrRepeatRule(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param oid 涓婚敭
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeKeyAttrRepeatRuleVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeKeyAttrRepeatRuleVO> listCodeKeyAttrRepeatRuleByOids(Collection<String> oidCollections) throws VciBaseException;
+
+ /**
+ * 缂栧彿鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param idCollections 缂栧彿闆嗗悎
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ */
+ Collection<CodeKeyAttrRepeatRuleVO> listCodeKeyAttrRepeatRuleByIds(List<String> idCollections);
+
+ /**
+ * 鍙傜収鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeKeyAttrRepeatRuleVO> refDataGridCodeKeyAttrRepeatRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭潵鑾峰彇鍏抽敭灞炴�у垽鏂鍒欑殑鍐呭
+ * @param classifyFullInfo 涓婚搴撳垎绫荤殑鍏ㄩ儴淇℃伅
+ * @return 瑙勫垯鐨勬樉绀哄璞�
+ */
+ CodeKeyAttrRepeatRuleVO getRuleByClassifyFullInfo(CodeClassifyFullInfoBO classifyFullInfo);
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodePhaseAttrServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodePhaseAttrServiceI.java
new file mode 100644
index 0000000..9804fa9
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodePhaseAttrServiceI.java
@@ -0,0 +1,107 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodePhaseAttrDTO;
+import com.vci.mdm.model.CodePhaseAttrDO;
+import com.vci.mdm.pagemodel.CodePhaseAttrVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 闃舵鐨勫睘鎬ф湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodePhaseAttrServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑闃舵鐨勫睘鎬�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodePhaseAttrVO> gridCodePhaseAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codePhaseAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodePhaseAttrVO> codePhaseAttrDO2VOs(Collection<CodePhaseAttrDO> codePhaseAttrDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codePhaseAttrDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodePhaseAttrVO codePhaseAttrDO2VO(CodePhaseAttrDO codePhaseAttrDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodePhaseAttrVO addSave(CodePhaseAttrDTO codePhaseAttrDTO) throws VciBaseException;
+
+ /**
+ * 淇敼闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodePhaseAttrVO editSave(CodePhaseAttrDTO codePhaseAttrDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodePhaseAttr(CodePhaseAttrDTO codePhaseAttrDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇闃舵鐨勫睘鎬�
+ * @param oid 涓婚敭
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodePhaseAttrVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇闃舵鐨勫睘鎬�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodePhaseAttrVO> listCodePhaseAttrByOids(Collection<String> oidCollections) throws VciBaseException;
+
+ /**
+ * 鍙傜収闃舵鐨勫睘鎬у垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodePhaseAttrVO> refDataGridCodePhaseAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鍜岄樁娈电紪鍙疯幏鍙栧寘鍚殑灞炴��
+ * @param templateOid 妯℃澘鐨勭紪鍙�
+ * @param phaseId 闃舵鐨勭紪鍙�
+ * @return 灞炴�х殑鑻辨枃鍚嶇О
+ */
+ List<String> listAttrByTemplateOidAndPhaseId(String templateOid, String phaseId);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeResembleRuleServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeResembleRuleServiceI.java
new file mode 100644
index 0000000..f0cce62
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeResembleRuleServiceI.java
@@ -0,0 +1,101 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeResembleRuleDTO;
+import com.vci.mdm.model.CodeResembleRuleDO;
+import com.vci.mdm.pagemodel.CodeResembleRuleVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+public interface CodeResembleRuleServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鐩镐技鏌ヨ瑙勫垯
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeResembleRuleVO> gridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeResembleRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeResembleRuleVO> codeResembleRuleDO2VOs(Collection<CodeResembleRuleDO> codeResembleRuleDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeResembleRuleDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeResembleRuleVO codeResembleRuleDO2VO(CodeResembleRuleDO codeResembleRuleDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeResembleRuleVO addSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeResembleRuleVO editSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeResembleRule(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param oid 涓婚敭
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeResembleRuleVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeResembleRuleVO> listCodeResembleRuleByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鐩镐技鏌ヨ瑙勫垯鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeResembleRuleVO> refDataGridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeRuleServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeRuleServiceI.java
new file mode 100644
index 0000000..9ef1275
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeRuleServiceI.java
@@ -0,0 +1,175 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeRuleDTO;
+import com.vci.mdm.model.CodeRuleDO;
+import com.vci.mdm.pagemodel.CodeClassifyVO;
+import com.vci.mdm.pagemodel.CodeRuleVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeRuleServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓绘暟鎹紪鐮佽鍒�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeRuleVO> gridCodeRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeRuleVO> codeRuleDO2VOs(Collection<CodeRuleDO> codeRuleDOs) throws VciBaseException;
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasSec 鏄惁鍖呭惈鐮佹
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeRuleVO> codeRuleDO2VOs(Collection<CodeRuleDO> codeRuleDOs, boolean hasSec) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeRuleDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeRuleVO codeRuleDO2VO(CodeRuleDO codeRuleDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞涓绘暟鎹紪鐮佽鍒�
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeRuleVO addSave(CodeRuleDTO codeRuleDTO) throws VciBaseException;
+
+ /**
+ * 淇敼涓绘暟鎹紪鐮佽鍒�
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeRuleVO editSave(CodeRuleDTO codeRuleDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎涓绘暟鎹紪鐮佽鍒�
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeRule(CodeRuleDTO codeRuleDTO) throws VciBaseException;
+
+ /**
+ * 鏍¢獙缂栫爜瑙勫垯鐨勭姸鎬佹槸鍚﹀彲浠ョ紪杈戞垨鍒犻櫎
+ * @param lcStatus 缂栫爜瑙勫垯
+ * @return true琛ㄧず鍙互缂栬緫鎴栧垹闄わ紝false琛ㄧず涓嶅彲浠�
+ */
+ boolean checkEditDelStatus(String lcStatus);
+
+ /**
+ * 涓婚敭鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ * @param oid 涓婚敭
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeRuleVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeRuleVO> listCodeRuleByOids(Collection<String> oidCollections) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @param hasSec 鏄惁鍖呭惈鐮佹
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeRuleVO> listCodeRuleByOids(Collection<String> oidCollections,boolean hasSec) throws VciBaseException;
+
+ /**
+ * 浣跨敤缂栧彿鐨勯泦鍚堣幏鍙栬鍒欑殑鍐呭
+ * @param idCollection 缂栧彿鐨勯泦鍚�
+ * @return 瑙勫垯鐨勫唴瀹�
+ */
+ List<CodeRuleVO> listCodeRuleByIds(Collection<String> idCollection);
+
+ /**
+ * 鍙傜収涓绘暟鎹紪鐮佽鍒欏垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeRuleVO> refDataGridCodeRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鏌ョ湅涓绘暟鎹紪鐮佽鍒欑殑浣跨敤鑼冨洿
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return 涓婚搴撳垎绫讳娇鐢ㄥ埌璇ョ紪鐮佽鍒欑殑鎵�鏈夐泦鍚�
+ */
+ Collection<CodeClassifyVO> listUseRangeInCodeClassify(String oid);
+
+ /**
+ * 妫�楠岀紪鐮佽鍒欐槸鍚﹀凡缁忚浣跨敤
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return true琛ㄧず宸茬粡浣跨敤锛宖alse琛ㄧず鏈浣跨敤
+ */
+ boolean isAlreadyInUse(String oid);
+
+ /**
+ * 鍋滅敤涓庡惎鐢ㄧ紪鐮佽鍒�
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @param update enable:鍚敤 disable:鍋滅敤 release:鍙戝竷
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult updateStatus(String oid, String update);
+
+ /**
+ * 鍏嬮殕缂栫爜瑙勫垯
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ */
+ BaseResult cloneCodeRule(CodeRuleDTO codeRuleDTO);
+
+ /**
+ * 浣跨敤涓婚敭鑾峰彇缂栫爜瑙勫垯鐨勫唴瀹�
+ * @param oid 涓婚敭
+ * @return 瑙勫垯鐨勬樉绀哄璞�
+ */
+ CodeRuleVO getObjectHasSecByOid(String oid);
+
+ /**
+ * 缂栫爜瑙勫垯娓呯┖鎵�鏈夊凡鐢熸垚鐨勭紪鐮�
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult clearAllCode(String oid);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSerialAlgorithmServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSerialAlgorithmServiceI.java
new file mode 100644
index 0000000..367212b
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSerialAlgorithmServiceI.java
@@ -0,0 +1,18 @@
+package org.springblade.code.service;
+
+import com.vci.mdm.pagemodel.CodeSerialAlgorithmVO;
+import com.vci.starter.web.pagemodel.DataGrid;
+
+/**
+ * 娴佹按绠楁硶绫�
+ * @author weidy
+ * @date 2022-2-17
+ */
+public interface CodeSerialAlgorithmServiceI {
+
+ /**
+ * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+ * @return 娴佹按绠楁硶鐨勪俊鎭�
+ */
+ DataGrid<CodeSerialAlgorithmVO> gridSerialAlgorithm();
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSynonymServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSynonymServiceI.java
new file mode 100644
index 0000000..1561bc7
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSynonymServiceI.java
@@ -0,0 +1,101 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeSynonymDTO;
+import com.vci.mdm.model.CodeSynonymDO;
+import com.vci.mdm.pagemodel.CodeSynonymVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍚屼箟璇嶉厤缃湇鍔℃帴鍙�
+ *
+ * @author weidy
+ * @date 2022-02-17
+ */
+public interface CodeSynonymServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍚屼箟璇嶉厤缃�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeSynonymVO> gridCodeSynonym(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeSynonymDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeSynonymVO> codeSynonymDO2VOs(Collection<CodeSynonymDO> codeSynonymDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeSynonymDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeSynonymVO codeSynonymDO2VO(CodeSynonymDO codeSynonymDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeSynonymVO addSave(CodeSynonymDTO codeSynonymDTO) throws VciBaseException;
+
+ /**
+ * 淇敼鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeSynonymVO editSave(CodeSynonymDTO codeSynonymDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeSynonym(CodeSynonymDTO codeSynonymDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇鍚屼箟璇嶉厤缃�
+ * @param oid 涓婚敭
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeSynonymVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍚屼箟璇嶉厤缃�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeSynonymVO> listCodeSynonymByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収鍚屼箟璇嶉厤缃垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeSynonymVO> refDataGridCodeSynonym(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeTemplatePhaseServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeTemplatePhaseServiceI.java
new file mode 100644
index 0000000..8b67b67
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeTemplatePhaseServiceI.java
@@ -0,0 +1,138 @@
+package org.springblade.code.service;
+
+
+import com.vci.mdm.dto.CodeTemplatePhaseDTO;
+import com.vci.mdm.model.CodeClassifyTemplateAttrDO;
+import com.vci.mdm.model.CodeTemplatePhaseDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.pagemodel.CodeTemplatePhaseVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 妯℃澘闃舵鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+public interface CodeTemplatePhaseServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑妯℃澘闃舵
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeTemplatePhaseVO> gridCodeTemplatePhase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeTemplatePhaseDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<CodeTemplatePhaseVO> codeTemplatePhaseDO2VOs(Collection<CodeTemplatePhaseDO> codeTemplatePhaseDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeTemplatePhaseDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ CodeTemplatePhaseVO codeTemplatePhaseDO2VO(CodeTemplatePhaseDO codeTemplatePhaseDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeTemplatePhaseVO addSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException;
+
+ /**
+ * 淇敼妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ CodeTemplatePhaseVO editSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException;
+
+ /**
+ * 鍒犻櫎妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteCodeTemplatePhase(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException;
+
+ /**
+ * 妯℃澘淇敼瑙﹀彂鍔熻兘
+ * @param attrDOList 灞炴�х殑鏁版嵁瀵硅薄
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ BatchCBO codeTemplateAttrModifyTrigger(List<CodeClassifyTemplateAttrDO> attrDOList);
+
+ /**
+ * 妯℃澘灞炴�у垹闄ょ殑鏃跺�欒Е鍙�
+ * @param attrDOList 灞炴�х殑鏁版嵁瀵硅薄
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ BatchCBO codeTemplateAttrDeleteTrigger(List<CodeClassifyTemplateAttrDO> attrDOList);
+
+ /**
+ * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+ * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ BatchCBO codeTemplateDeleteTrigger(String classifyTemplateOid);
+
+ /**
+ * 涓婚敭鑾峰彇妯℃澘闃舵
+ * @param oid 涓婚敭
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ CodeTemplatePhaseVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇妯℃澘闃舵
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<CodeTemplatePhaseVO> listCodeTemplatePhaseByOids(Collection<String> oidCollections) throws VciBaseException;
+
+ /**
+ * 鍙傜収妯℃澘闃舵鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<CodeTemplatePhaseVO> refDataGridCodeTemplatePhase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 闃舵涓嶅寘鍚殑灞炴��
+ * @param conditionMap 鏌ヨ瀵硅薄锛屽繀椤昏鏈夋ā鏉跨殑涓婚敭锛坈lassifyTemplateOid锛夛紝鍚﹀垯涓嶈兘纭畾灞炴��
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 灞炴�х殑淇℃伅
+ */
+ DataGrid<CodeClassifyTemplateAttrVO> gridUnUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 闃舵鍖呭惈鐨勫睘鎬�
+ * @param conditionMap 鏌ヨ瀵硅薄锛屽繀椤昏闃舵鐨勪富閿�(codePhaseOid)
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 灞炴�х殑淇℃伅
+ */
+ DataGrid<CodeClassifyTemplateAttrVO> gridUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper);
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeBasicSecServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeBasicSecServiceImpl.java
new file mode 100644
index 0000000..07fe3f7
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeBasicSecServiceImpl.java
@@ -0,0 +1,831 @@
+package org.springblade.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodeBasicSecDaoI;
+import com.vci.mdm.dao.CodeClassifyValueDaoI;
+import com.vci.mdm.dao.CodeFixedValueDaoI;
+import com.vci.mdm.dto.CodeBasicSecDTO;
+import com.vci.mdm.enumpack.CodeSecTypeEnum;
+import com.vci.mdm.lifecycle.CodeRuleLC;
+import com.vci.mdm.model.CodeBasicSecDO;
+import com.vci.mdm.model.CodeClassifyValueDO;
+import com.vci.mdm.model.CodeFixedValueDO;
+import com.vci.mdm.pagemodel.CodeBasicSecVO;
+import com.vci.mdm.pagemodel.CodeClassifyValueVO;
+import com.vci.mdm.pagemodel.CodeFixedValueVO;
+import com.vci.mdm.pagemodel.CodeRuleVO;
+import com.vci.mdm.service.*;
+import com.vci.starter.revision.bo.TreeWrapperOptions;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciParentQueryOption;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.enumpck.OsCodeFillTypeEnum;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.KeyValue;
+import com.vci.web.pageModel.UIFormReferVO;
+import com.vci.web.service.BdSelectInputCharServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鐮佹鍩虹淇℃伅鏈嶅姟
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeBasicSecServiceImpl implements CodeBasicSecServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeBasicSecDaoI codeBasicSecMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 涓绘暟鎹紪鐮佽鍒欐湇鍔�
+ */
+ @Autowired
+ private CodeRuleServiceI codeRuleService;
+
+ /**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼湇鍔�
+ */
+ @Autowired
+ private CodeClassifyValueServiceI codeClassifyValueService;
+
+ /**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹搷浣滃眰
+ */
+ @Autowired
+ private CodeClassifyValueDaoI codeClassifyValueMapper;
+
+ /**
+ * 鍥哄畾鐮佹鐨勭爜鍊肩殑鏈嶅姟
+ */
+ @Autowired
+ private CodeFixedValueServiceI fixedValueService;
+
+ /**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹搷浣滃眰
+ */
+ @Autowired
+ private CodeFixedValueDaoI fixedValueMapper;
+ /**
+ * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉�
+ */
+ private static final String PARENT_FIELD_NAME = "parentclassifysecoid";
+
+ /**
+ * 涓婄骇鍒嗙被鐮佸�肩殑灞炴�у悕绉�
+ */
+ private static final String PARENT_CLASSIFY_VALUE_FIELD_NAME = "parentClassifyValueOid";
+
+ /**
+ * 鍙�夊彲杈撴湇鍔�
+ */
+ @Autowired
+ private BdSelectInputCharServiceI charService;
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鐮佹鍩虹淇℃伅
+ *
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeBasicSecVO> gridCodeBasicSec(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultAsc("ordernum");
+ if(!conditionMap.containsKey("pkCodeRule") || StringUtils.isBlank(conditionMap.get("pkCodeRule"))){
+ return new DataGrid<>();
+ }
+ List<CodeBasicSecDO> doList = codeBasicSecMapper.selectByCondition(conditionMap, pageHelper);
+ DataGrid<CodeBasicSecVO> dataGrid = new DataGrid<CodeBasicSecVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeBasicSecDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeBasicSecMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeBasicSecDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSecDO> codeBasicSecDOs) throws VciBaseException {
+ List<CodeBasicSecVO> voList = new ArrayList<CodeBasicSecVO>();
+ if (!CollectionUtils.isEmpty(codeBasicSecDOs)) {
+ for (CodeBasicSecDO s : codeBasicSecDOs) {
+ CodeBasicSecVO vo = codeBasicSecDO2VO(s);
+ if (vo != null) {
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeBasicSecDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasFixedValue 鏄惁鏈夊浐瀹氬��
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSecDO> codeBasicSecDOs, boolean hasFixedValue) throws VciBaseException {
+ List<CodeBasicSecVO> voList = new ArrayList<CodeBasicSecVO>();
+ if (!CollectionUtils.isEmpty(codeBasicSecDOs)) {
+ for (CodeBasicSecDO s : codeBasicSecDOs) {
+ CodeBasicSecVO vo = codeBasicSecDO2VO(s);
+ if (vo != null) {
+ voList.add(vo);
+ }
+ }
+ }
+ if(hasFixedValue && !CollectionUtils.isEmpty(voList)){
+ List<CodeBasicSecVO> fixedSecVOList = voList.stream().filter(s -> CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equalsIgnoreCase(s.getSectype())).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(fixedSecVOList)){
+ //鏌ヨ鍥哄畾鐮佺殑鐮佸��
+ Map<String, List<CodeFixedValueVO>> secValueMap = fixedValueService.listCodeFixedValueBySecOids(fixedSecVOList.stream().map(CodeBasicSecVO::getOid).collect(Collectors.toList()));
+ voList.stream().forEach(vo->{
+ vo.setFixedValueVOList(secValueMap.getOrDefault(vo.getOid(),null));
+ });
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeBasicSecDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeBasicSecVO codeBasicSecDO2VO(CodeBasicSecDO codeBasicSecDO) throws VciBaseException {
+ CodeBasicSecVO vo = new CodeBasicSecVO();
+ if (codeBasicSecDO != null) {
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDO, vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ if (true) {
+ //vo.setLcStatusText({lcStatusFullClassName}.getTextByValue(vo.getLcStatus()));
+ }
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鐮佹鍩虹淇℃伅
+ *
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeBasicSecVO addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeBasicSecDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeBasicSecDTO.getPkCodeRule(),"缂栫爜瑙勫垯鐨勪富閿�");
+ CodeRuleVO ruleVO = codeRuleService.getObjectByOid(codeBasicSecDTO.getPkCodeRule());
+ if(!CodeRuleLC.EDITING.getValue().equalsIgnoreCase(ruleVO.getLcStatus())){
+ throw new VciBaseException("缂栫爜瑙勫垯鐨勭姸鎬佷笉鏄��" + CodeRuleLC.EDITING.getText() + "銆戯紒涓嶅厑璁镐慨鏀�");
+ }
+ KeyValue attrKv = checkAttrNullableBySecType(codeBasicSecDTO);
+ if (! "success".equals(attrKv.getKey())){
+ throw new VciBaseException(attrKv.getValue() + "涓嶈兘涓虹┖");
+ }
+
+
+
+ //灏咲TO杞崲涓篋O
+ CodeBasicSecDO codeBasicSecDO = new CodeBasicSecDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
+ //鎺掑簭鍙凤紝榛樿绛変簬褰撳墠宸叉湁鐨勬暟閲忓姞1
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("pkCodeRule",ruleVO.getOid());
+ Long total = codeBasicSecMapper.countByCondition(conditionMap);
+ if(total == null){
+ total = 0L;
+ }
+ codeBasicSecDO.setOrderNum(total.intValue() + 1);
+
+ //琛ヤ綅鐨勬椂鍊欙紝瑕佹帶鍒惰ˉ浣嶅瓧绗�
+ if((OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(codeBasicSecDO.getCodeFillType())
+ || OsCodeFillTypeEnum.RIGHT.getValue().equalsIgnoreCase(codeBasicSecDO.getCodeFillType()))
+ && StringUtils.isBlank(codeBasicSecDO.getCodeFillSeparator())){
+ throw new VciBaseException("褰撹ˉ浣嶆柟寮忎负宸﹁ˉ浣嶆垨鑰呭彸琛ヤ綅鐨勬椂鍊欙紝琛ヤ綅瀛楃涓嶈兘涓虹┖");
+ }
+ //寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘
+ if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){
+ if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){
+ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆 鐨勫唴瀹�");
+ }
+ try{
+ JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
+ }catch (Throwable e){
+ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝鍙傜収閰嶇疆鐨勫唴瀹圭殑鏍煎紡涓嶆纭�,",new String[0],e);
+ }
+ }
+ codeBasicSecMapper.insert(codeBasicSecDO);
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){
+ charService.save(MdmBtmTypeConstant.CODE_BASIC_SEC,"codefileseparator",codeBasicSecDO.getCodeFillSeparator(),sessionInfo);
+ }
+ return codeBasicSecDO2VO(codeBasicSecDO);
+ }
+
+ /**
+ * 淇敼鐮佹鍩虹淇℃伅
+ *
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeBasicSecVO editSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeBasicSecDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ KeyValue attrKv = checkAttrNullableBySecType(codeBasicSecDTO);
+ if (! "success".equals(attrKv.getKey())){
+ throw new VciBaseException(attrKv.getValue() + "涓嶈兘涓虹┖");
+ }
+ //灏咲TO杞崲涓篋O
+ CodeBasicSecDO codeBasicSecDO = selectByOid(codeBasicSecDTO.getOid());
+ boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeBasicSecDO.getPkCodeRule()).getLcStatus());
+ if (!status){
+ //杩斿洖閿欒淇℃伅
+ throw new VciBaseException("缂栫爜瑙勫垯涓嶅厑璁哥紪杈戞垨鍒犻櫎锛�");
+ } else {
+ //琛ヤ綅鐨勬椂鍊欙紝瑕佹帶鍒惰ˉ浣嶅瓧绗�
+ if((OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(codeBasicSecDO.getCodeFillType())
+ || OsCodeFillTypeEnum.RIGHT.getValue().equalsIgnoreCase(codeBasicSecDO.getCodeFillType()))
+ && StringUtils.isBlank(codeBasicSecDO.getCodeFillSeparator())){
+ throw new VciBaseException("褰撹ˉ浣嶆柟寮忎负宸﹁ˉ浣嶆垨鑰呭彸琛ヤ綅鐨勬椂鍊欙紝琛ヤ綅瀛楃涓嶈兘涓虹┖");
+ }
+ //寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘
+ if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){
+ if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){
+ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆 鐨勫唴瀹�");
+ }
+ try{
+ JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
+ }catch (Throwable e){
+ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝鍙傜収閰嶇疆鐨勫唴瀹圭殑鏍煎紡涓嶆纭�,",new String[0],e);
+ }
+ }
+ revisionModelUtil.copyFromDTOIgnore(codeBasicSecDTO, codeBasicSecDO);
+ codeBasicSecMapper.updateByPrimaryKey(codeBasicSecDO);
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){
+ charService.save(MdmBtmTypeConstant.CODE_BASIC_SEC,"codefileseparator",codeBasicSecDO.getCodeFillSeparator(),sessionInfo);
+ }
+ }
+ return codeBasicSecDO2VO(codeBasicSecDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ *
+ * @param codeBasicSecDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeBasicSecDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeBasicSecDTO codeBasicSecDTO, CodeBasicSecDO codeBasicSecDO) {
+ boService.checkTs(codeBasicSecDTO);
+ if (!checkIsLinked(null, codeBasicSecDO.getOid())) {
+ return BaseResult.success();
+ } else {
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE, new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ *
+ * @param codeRuleOid 缂栫爜瑙勫垯涓婚敭
+ * @param codeBasicSecOid 缂栫爜鍩虹淇℃伅涓婚敭
+ * @return true琛ㄧず宸茶寮曠敤锛宖alse琛ㄧず鏈寮曠敤
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String codeRuleOid, String codeBasicSecOid) throws VciBaseException {
+ boolean flag = true;
+ if (StringUtils.isNotBlank(codeRuleOid)) {
+ boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeRuleOid).getLcStatus());
+ if (!status){
+ return true;
+ }
+ boolean alreadyInUse = codeRuleService.isAlreadyInUse(codeRuleOid);
+ if (!alreadyInUse){
+ flag = false;
+ }
+ } else {
+ boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeBasicSecMapper.selectByPrimaryKey(codeBasicSecOid).getPkCodeRule()).getLcStatus());
+ if (!status){
+ return true;
+ }
+ boolean alreadyInUse = codeRuleService.isAlreadyInUse(codeBasicSecMapper.selectByPrimaryKey(codeBasicSecOid).getPkCodeRule());
+ if (!alreadyInUse){
+ flag = false;
+ }
+ }
+ return flag;
+ }
+
+ /**
+ * 鍒犻櫎鐮佹鍩虹淇℃伅
+ *
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeBasicSec(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeBasicSecDTO, "鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄", codeBasicSecDTO.getOid(), "鐮佹鍩虹淇℃伅鐨勪富閿�");
+ return deleteCodeBasicSecByPrimaryKey(codeBasicSecDTO.getOid());
+ }
+
+ /**
+ * 涓婚敭鍒犻櫎鐮佹鍩虹淇℃伅
+ *
+ * @param oid 鐮佹鍩虹淇℃伅涓婚敭
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeBasicSecByPrimaryKey(String oid) throws VciBaseException {
+ CodeBasicSecDO codeBasicSecDO = selectByOid(oid);
+ boolean isLinked = checkIsLinked(codeBasicSecDO.getPkCodeRule(), oid);
+ if (isLinked) {
+ return BaseResult.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�");
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ //鎵ц鍒犻櫎鎿嶄綔
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = codeBasicSecMapper.deleteByPrimaryKey(oid);
+ Set<ClientBusinessObject> deleteSet = new HashSet<>();
+ deleteSet.addAll(batchCBO.getDeleteCbos());
+ if (CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equals(codeBasicSecDO.getSecType())){
+ conditionMap.put("codefixedsecoid",codeBasicSecDO.getOid());
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeFixedValueDO.class);
+ List<CodeFixedValueDO> fixedValueDOS = fixedValueMapper.selectByWrapper(wrapper);
+ BatchCBO valueCBO = fixedValueMapper.batchDeleteByOids(fixedValueDOS.stream().map(CodeFixedValueDO::getOid).collect(Collectors.toSet()));
+ deleteSet.addAll(valueCBO.getDeleteCbos());
+ }
+ if (CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue().equals(codeBasicSecDO.getSecType())){
+ conditionMap.put("codeclassifysecoid",codeBasicSecDO.getOid());
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap, CodeClassifyValueDO.class);
+ List<CodeClassifyValueDO> classifyValueDOS = codeClassifyValueMapper.selectByWrapper(wrapper);
+ if(!CollectionUtils.isEmpty(classifyValueDOS)) {
+ BatchCBO valueCBO = codeClassifyValueMapper.batchDeleteByOids(classifyValueDOS.stream().map(CodeClassifyValueDO::getOid).collect(Collectors.toSet()));
+ deleteSet.addAll(valueCBO.getDeleteCbos());
+ }
+ }
+ batchCBO.setDeleteCbos(deleteSet);
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return (batchCBO != null && batchCBO.getDeleteCbos() != null && batchCBO.getDeleteCbos().size() > 0) ? BaseResult.successMsg(DELETE_SUCCESS) : BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鐮佹鍩虹淇℃伅
+ *
+ * @param oid 涓婚敭
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeBasicSecVO getObjectByOid(String oid) throws VciBaseException {
+ return codeBasicSecDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ *
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeBasicSecDO selectByOid(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid, "涓婚敭");
+ CodeBasicSecDO codeBasicSecDO = codeBasicSecMapper.selectByPrimaryKey(oid.trim());
+ if (codeBasicSecDO == null || StringUtils.isBlank(codeBasicSecDO.getOid())) {
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeBasicSecDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鐮佹鍩虹淇℃伅
+ *
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeBasicSecVO> listCodeBasicSecByOids(Collection<String> oidCollections) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oidCollections, "鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeBasicSecDO> codeBasicSecDOList = listCodeBasicSecDOByOidCollections(oidCollections);
+ return codeBasicSecDO2VOs(codeBasicSecDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ *
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeBasicSecDO> listCodeBasicSecDOByOidCollections(Collection<String> oidCollections) {
+ List<CodeBasicSecDO> codeBasicSecDOList = new ArrayList<CodeBasicSecDO>();
+ if (!CollectionUtils.isEmpty(oidCollections)) {
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for (Collection<String> oids : oidCollectionsList) {
+ List<CodeBasicSecDO> tempDOList = codeBasicSecMapper.selectByPrimaryKeyCollection(oids);
+ if (!CollectionUtils.isEmpty(tempDOList)) {
+ codeBasicSecDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeBasicSecDOList;
+ }
+
+
+ /**
+ * 鍙傜収鐮佹鍩虹淇℃伅鍒楄〃
+ *
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鐮佹鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeBasicSecVO> refDataGridCodeBasicSec(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ if (conditionMap == null) {
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeBasicSec(conditionMap, pageHelper);
+ }
+
+ /**
+ * 鍏嬮殕鐮佹淇℃伅
+ *
+ * @param oidList 婧愮爜娈典俊鎭富閿泦鍚�
+ * @param pkCodeRule 鐩爣缂栫爜瑙勫垯
+ * @return 鍏嬮殕缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ */
+ @Override
+ public BaseResult cloneCodeBasicSec(List<String> oidList, String pkCodeRule) {
+ boolean isLinked = checkIsLinked(pkCodeRule,null);
+ if (isLinked) {
+ return BaseResult.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�");
+ }
+ List<CodeBasicSecDO> createList = new ArrayList<>();
+ List<CodeBasicSecDO> basicSecDOS = codeBasicSecMapper.selectByPrimaryKeyCollection(oidList);
+ basicSecDOS.forEach(sec -> {
+ CodeBasicSecDO newSecDO = new CodeBasicSecDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sec,newSecDO);
+ newSecDO.setOid("");
+ newSecDO.setNameOid("");
+ newSecDO.setRevisionOid("");
+ newSecDO.setId(newSecDO.getId() + "_copy");
+ newSecDO.setName(newSecDO.getName() + "_copy");
+ newSecDO.setPkCodeRule(pkCodeRule);
+ createList.add(newSecDO);
+ });
+ codeBasicSecMapper.batchInsert(createList);
+ return BaseResult.success();
+ }
+
+ /**
+ * 鏍规嵁鐮佹鍒嗙被鐨勭被鍨嬪垽鏂睘鎬ф槸鍚︽槸绌虹殑
+ *
+ * @param codeBasicSecDTO 鐮佹鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鏈夌┖鐨勫垯浼爇ey-灞炴�у悕 value-瀛楁鍚箟锛屾病鏈夌┖鐨勫垯浼� key-success value-true
+ */
+ @Override
+ public KeyValue checkAttrNullableBySecType(CodeBasicSecDTO codeBasicSecDTO) {
+ VciBaseUtil.alertNotNull(codeBasicSecDTO.getSectype(), "鐮佹鍒嗙被");
+ String secType = codeBasicSecDTO.getSectype();
+ HashMap<String, String> attrMap = JSONObject.parseObject(JSONObject.toJSONString(codeBasicSecDTO), HashMap.class);
+ Map<String, String> notNullableAttr = getNotNullableAttr(secType);
+ if (notNullableAttr == null) {
+ throw new VciBaseException("鐮佹鍒嗙被濉啓鍑洪敊锛岃鏌ラ獙鍚庨噸璇�");
+ }
+ for (String key : notNullableAttr.keySet()) {
+ if (StringUtils.isBlank(WebUtil.getStringValueFromObject(attrMap.get(key)))) {
+ KeyValue kv = new KeyValue();
+ kv.setKey(key);
+ kv.setValue(notNullableAttr.get(key));
+ return kv;
+ }
+ }
+ KeyValue kv = new KeyValue();
+ kv.setKey("success");
+ kv.setValue("true");
+ return kv;
+ }
+
+ /**
+ * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鍐呭
+ *
+ * @param ruleOid 瑙勫垯鐨勫唴瀹�
+ * @return 鐮佹鐨勫唴瀹�
+ */
+ @Override
+ public List<CodeBasicSecVO> listCodeBasicSecByRuleOid(String ruleOid) {
+ if(StringUtils.isBlank(ruleOid)){
+ return new ArrayList<>();
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("pkCodeRule",ruleOid);
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("ordernum");
+ List<CodeBasicSecDO> secDOList = codeBasicSecMapper.selectByCondition(conditionMap, pageHelper);
+ return codeBasicSecDO2VOs(secDOList,true);
+ }
+
+ /**
+ * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鐨勫唴瀹�
+ *
+ * @param ruleCollection 瑙勫垯涓婚敭闆嗗悎
+ * @return 鐮佹鐨勫唴瀹�
+ */
+ @Override
+ public List<CodeBasicSecVO> listCodeBasicSecByRuleOids(Collection<String> ruleCollection) {
+ if(CollectionUtils.isEmpty(ruleCollection)){
+ return new ArrayList<>();
+ }
+ List<CodeBasicSecDO> secDOList = new CopyOnWriteArrayList<>();
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ VciBaseUtil.switchCollectionForOracleIn(ruleCollection).parallelStream().forEach(ruleOids->{
+ WebUtil.setCurrentUserSessionInfo(sessionInfo);
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("pkcoderule", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(ruleOids.toArray(new String[0])) + ")");
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("ordernum");
+ List<CodeBasicSecDO> tempSecDOs = codeBasicSecMapper.selectByCondition(conditionMap, pageHelper);
+ if(!CollectionUtils.isEmpty(tempSecDOs)){
+ secDOList.addAll(tempSecDOs);
+ }
+ });
+ return codeBasicSecDO2VOs(secDOList);
+ }
+
+ /**
+ * 鍙傜収鍒嗙被鐨勭爜娈�
+ *
+ * @param conditionMap 鏌ヨ鏉′欢锛屽繀椤昏鏈塸kCodeRule
+ * @param pageHelper 鍒嗛〉鐨勫璞�
+ * @return 鐮佹鐨勫唴瀹�
+ */
+ @Override
+ public DataGrid<CodeBasicSecVO> refDataGridClassifySec(Map<String, String> conditionMap, PageHelper pageHelper) {
+ if(CollectionUtils.isEmpty(conditionMap) || !conditionMap.containsKey("pkCodeRule")){
+ return new DataGrid<>();
+ }
+ conditionMap.put("secType",CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue());
+ return refDataGridCodeBasicSec(conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏍规嵁鐮佹绫诲瀷鑾峰彇涓嶅彲涓虹┖鐨勫瓧娈�
+ *
+ * @param secType 鐮佹绫诲瀷
+ * @return 涓嶅彲涓虹┖鐨勫瓧娈甸泦鍚�
+ */
+ private Map<String, String> getNotNullableAttr(String secType) {
+ Map<String, String> attrMap = new HashMap<>();
+ if (CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "灞炴�х爜娈靛悕绉�");
+ } else if (CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "鏃ユ湡鐮佹鍚嶇О");
+ attrMap.put("codeDateFormatStr", "鏃ユ湡鏍煎紡");
+ } else if (CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "鍥哄畾鐮佹鍚嶇О");
+ attrMap.put("codeSecLengthType", "鐮佹闀垮害绫诲瀷");
+ attrMap.put("codeSecLength", "鐮佹鐨勯暱搴�");
+ } else if (CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "灞傜骇鐮佹鍚嶇О");
+ attrMap.put("codeLevelType", "灞傜骇绫诲瀷");
+ attrMap.put("valueCutType", "瀛楃鎴彇绫诲瀷");
+ } else if (CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "寮曠敤鐮佹鍚嶇О");
+ } else if (CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "娴佹按鐮佹鍚嶇О");
+ attrMap.put("codeSecLength", "鐮佹鐨勯暱搴�");
+ attrMap.put("codeFillType", "缂栫爜琛ヤ綅鏂瑰紡");
+ attrMap.put("codeFillLength", "濉厖闀垮害");
+ attrMap.put("codeFillLimit", "娴佹按涓婇檺");
+ attrMap.put("codeFillFlag", "娴佹按鏄惁琛ョ爜");
+ } else if (CodeSecTypeEnum.CODE_VARIABLE_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "鍙彉鐮佹鍚嶇О");
+ attrMap.put("codeSecLength", "鐮佹鐨勯暱搴�");
+ attrMap.put("codeFillType", "缂栫爜琛ヤ綅鏂瑰紡");
+ } else if (CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue().equalsIgnoreCase(secType)) {
+ attrMap.put("name", "鍒嗙被鐮佹鍚嶇О");
+ attrMap.put("codeSecLengthType", "鐮佹闀垮害绫诲瀷");
+ attrMap.put("codeSecLength", "鐮佹鐨勯暱搴�");
+ } else {
+ attrMap = null;
+ }
+ return attrMap;
+ }
+
+ /**
+ * 鏌ヨ鐩爣鍒嗙被鐮佹鎵�鍦ㄧ殑鏍戠粨鏋�
+ *
+ * @param oid 鐩爣鍒嗙被鐮佹涓婚敭
+ * @return 鍒嗙被鐮佹鏍戠粨鏋�
+ */
+ @Override
+ public List<Tree> gridCodeClassifySecTree(String oid) {
+ VciParentQueryOption queryOption = new VciParentQueryOption(PARENT_FIELD_NAME);
+ queryOption.setfOid(oid);
+ queryOption.setLinkTypeFlag(false);
+ queryOption.setHasSelf(true);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(CodeBasicSecDO.class);
+ wrapper.childQueryParent(queryOption);
+ List<CodeBasicSecDO> doList = codeBasicSecMapper.selectByWrapper(wrapper);
+ List<String> secOid = new ArrayList<>();
+ doList.forEach(o -> secOid.add(o.getOid()));
+ List<CodeClassifyValueVO> valueVOs = (List<CodeClassifyValueVO>) codeClassifyValueService.listCodeClassifyValueByOids(secOid);
+ TreeQueryObject treeQueryObject = new TreeQueryObject();
+ treeQueryObject.setMultipleSelect(false);
+ treeQueryObject.setShowCheckBox(false);
+ treeQueryObject.setQueryAllLevel(false);
+ treeQueryObject.setValueField("oid");
+ treeQueryObject.setTextField("name");
+ treeQueryObject.setQueryAllRev(false);
+ TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_CLASSIFY_VALUE_FIELD_NAME);
+ treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+ return revisionModelUtil.doList2Trees(valueVOs,treeWrapperOptions,(CodeClassifyValueVO s) ->{
+ //鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+ return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+ .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+ });
+ }
+
+ /**
+ * 鏍规嵁缂栫爜瑙勫垯鎵归噺鍒犻櫎鐮佹鍩烘湰淇℃伅
+ * @param codeRuleOid 缂栫爜瑙勫垯涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BatchCBO batchDeleteSecByCodeRuleOid(String codeRuleOid) {
+ VciBaseUtil.alertNotNull(codeRuleOid,"缂栫爜瑙勫垯涓婚敭");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("pkcoderule",codeRuleOid);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeBasicSecDO.class);
+ List<CodeBasicSecDO> deleteList = codeBasicSecMapper.selectByWrapper(wrapper);
+ if (CollectionUtils.isEmpty(deleteList)){
+ return new BatchCBO();
+ }
+ BatchCBO batchCBO = codeBasicSecMapper.batchDeleteByOids(deleteList.stream().map(CodeBasicSecDO::getOid).collect(Collectors.toSet()));
+ Set<ClientBusinessObject> deleteSet = new HashSet<>();
+ deleteSet.addAll(batchCBO.getDeleteCbos());
+ List<CodeBasicSecDO> fixedSecList = deleteList.stream().filter(sec -> {
+ return CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equals(sec.getSecType());
+ }).collect(Collectors.toList());
+ List<CodeBasicSecDO> classifySecList = deleteList.stream().filter(sec -> {
+ return CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue().equals(sec.getSecType());
+ }).collect(Collectors.toList());
+ Set<String> fixedSecOidSet = fixedSecList.stream().map(CodeBasicSecDO::getOid).collect(Collectors.toSet());
+ Set<String> classifySecOidSet = classifySecList.stream().map(CodeBasicSecDO::getOid).collect(Collectors.toSet());
+ if (!CollectionUtils.isEmpty(fixedSecOidSet)){
+ StringBuilder sb = new StringBuilder();
+ fixedSecOidSet.stream().forEach(oid -> {
+ sb.append("'").append(oid).append("',");
+ });
+ String inSql = sb.toString().substring(0,sb.toString().length()-1);
+ VciQueryWrapperForDO wrapperForValue = new VciQueryWrapperForDO(null,CodeFixedValueDO.class);
+ PageHelper ph = new PageHelper();
+ ph.setLimit(-1);
+ wrapperForValue.in("codefixedsecoid",inSql);
+ List<CodeFixedValueDO> fixedValueDOS = fixedValueMapper.selectByWrapper(wrapperForValue);
+ BatchCBO fixedCBO = fixedValueMapper.batchDeleteByOids(fixedValueDOS.stream().map(CodeFixedValueDO::getOid).collect(Collectors.toSet()));
+ deleteSet.addAll(fixedCBO.getDeleteCbos());
+ }
+ if (!CollectionUtils.isEmpty(classifySecOidSet)){
+ StringBuilder sb = new StringBuilder();
+ classifySecOidSet.stream().forEach(oid -> {
+ sb.append("'").append(oid).append("',");
+ });
+ String inSql = sb.toString().substring(0,sb.toString().length()-1);
+ VciQueryWrapperForDO wrapperForValue = new VciQueryWrapperForDO(null,CodeClassifyValueDO.class);
+ PageHelper ph = new PageHelper();
+ ph.setLimit(-1);
+ wrapperForValue.in("codeclassifysecoid",inSql);
+ List<CodeClassifyValueDO> classifyValueDOS = codeClassifyValueMapper.selectByWrapper(wrapperForValue);
+ BatchCBO fixedCBO = codeClassifyValueMapper.batchDeleteByOids(classifyValueDOS.stream().map(CodeClassifyValueDO::getOid).collect(Collectors.toSet()));
+ deleteSet.addAll(fixedCBO.getDeleteCbos());
+ }
+ batchCBO.setDeleteCbos(deleteSet);
+ return batchCBO;
+ }
+
+ /**
+ * 涓婄Щ
+ *
+ * @param oid 涓婚敭
+ */
+ @Override
+ public void upOrderNum(String oid) {
+ CodeBasicSecDO secDO = selectByOid(oid);
+ BatchCBO batchCBO = new BatchCBO();
+ WebUtil.setPersistence(false);
+ if(secDO.getOrderNum() >1){
+ //绛変簬1鐨勬椂鍊欎笉鑳戒笂绉讳簡
+ //鎵炬瘮鑷繁灏忕殑
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("pkCodeRule",secDO.getPkCodeRule());
+ conditionMap.put("ordernum",String.valueOf(secDO.getOrderNum()-1));
+ List<CodeBasicSecDO> lastSecDOs = codeBasicSecMapper.selectByCondition(conditionMap,new PageHelper(-1));
+ if(!CollectionUtils.isEmpty(lastSecDOs)){
+ CodeBasicSecDO lastSec = lastSecDOs.get(0);
+ lastSec.setOrderNum(lastSec.getOrderNum()+1);
+ batchCBO.copyFromOther(codeBasicSecMapper.updateByPrimaryKey(lastSec));
+ }
+ secDO.setOrderNum(secDO.getOrderNum()-1);
+ batchCBO.copyFromOther(codeBasicSecMapper.updateByPrimaryKey(secDO));
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ }
+
+ /**
+ * 涓嬬Щ
+ *
+ * @param oid 涓婚敭
+ */
+ @Override
+ public void downOrderNum(String oid) {
+ CodeBasicSecDO secDO = selectByOid(oid);
+ BatchCBO batchCBO = new BatchCBO();
+ WebUtil.setPersistence(false);
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("pkCodeRule",secDO.getPkCodeRule());
+ Long total = codeBasicSecMapper.countByCondition(conditionMap);
+ if(secDO.getOrderNum() < total){
+ //灏忎簬鎬绘暟鐨勬椂鍊欐墠涓嬬Щ
+ conditionMap.put("ordernum",String.valueOf(secDO.getOrderNum()+1));
+ List<CodeBasicSecDO> lastSecDOs = codeBasicSecMapper.selectByCondition(conditionMap,new PageHelper(-1));
+ if(!CollectionUtils.isEmpty(lastSecDOs)){
+ CodeBasicSecDO lastSec = lastSecDOs.get(0);
+ lastSec.setOrderNum(lastSec.getOrderNum()-1);
+ batchCBO.copyFromOther(codeBasicSecMapper.updateByPrimaryKey(lastSec));
+ }
+ secDO.setOrderNum(secDO.getOrderNum()+1);
+ batchCBO.copyFromOther(codeBasicSecMapper.updateByPrimaryKey(secDO));
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeButtonServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeButtonServiceImpl.java
new file mode 100644
index 0000000..24b92e5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeButtonServiceImpl.java
@@ -0,0 +1,322 @@
+package org.springblade.code.service.impl;
+
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.mdm.dao.CodeButtonDaoI;
+import com.vci.mdm.dto.CodeButtonDTO;
+import com.vci.mdm.model.CodeButtonDO;
+import com.vci.mdm.pagemodel.CodeButtonVO;
+import com.vci.mdm.service.CodeButtonServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 涓绘暟鎹腑鐨勬寜閽墿灞曟湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeButtonServiceImpl implements CodeButtonServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeButtonDaoI codeButtonMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeButtonVO> gridCodeButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeButtonDO> doList = codeButtonMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeButtonVO> dataGrid=new DataGrid<CodeButtonVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeButtonDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeButtonMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeButtonDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeButtonVO> codeButtonDO2VOs(Collection<CodeButtonDO> codeButtonDOs) throws VciBaseException{
+ List<CodeButtonVO> voList = new ArrayList<CodeButtonVO>();
+ if(!CollectionUtils.isEmpty(codeButtonDOs)){
+ for(CodeButtonDO s: codeButtonDOs){
+ CodeButtonVO vo = codeButtonDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeButtonDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeButtonVO codeButtonDO2VO(CodeButtonDO codeButtonDO) throws VciBaseException{
+ CodeButtonVO vo = new CodeButtonVO();
+ if(codeButtonDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeButtonDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeButtonVO addSave(CodeButtonDTO codeButtonDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeButtonDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeButtonDO codeButtonDO = new CodeButtonDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeButtonDTO,codeButtonDO);
+ codeButtonMapper.insert(codeButtonDO);
+ return codeButtonDO2VO(codeButtonDO);
+ }
+
+ /**
+ * 淇敼涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeButtonVO editSave(CodeButtonDTO codeButtonDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeButtonDTO,"鏁版嵁瀵硅薄",codeButtonDTO.getOid(),"涓绘暟鎹腑鐨勬寜閽墿灞曚富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeButtonDO codeButtonDO = selectByOid(codeButtonDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeButtonDTO,codeButtonDO);
+ codeButtonMapper.updateByPrimaryKey(codeButtonDO);
+ return codeButtonDO2VO(codeButtonDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeButtonDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeButtonDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeButtonDTO codeButtonDTO, CodeButtonDO codeButtonDO) {
+ CodeButtonDO buttonDO = new CodeButtonDO();
+ BeanUtil.convert(codeButtonDTO,buttonDO);
+ boService.checkTs(buttonDO);
+ if(!checkIsLinked(codeButtonDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+
+
+ /**
+ * 鍒犻櫎涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param codeButtonDTO 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeButton(CodeButtonDTO codeButtonDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeButtonDTO,"涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞�",codeButtonDTO.getOid(),"涓绘暟鎹腑鐨勬寜閽墿灞曠殑涓婚敭");
+ CodeButtonDO codeButtonDO = selectByOid(codeButtonDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeButtonDTO,codeButtonDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeButtonMapper.deleteByPrimaryKey(codeButtonDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param oid 涓婚敭
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeButtonVO getObjectByOid(String oid) throws VciBaseException{
+ return codeButtonDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeButtonDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeButtonDO codeButtonDO = codeButtonMapper.selectByPrimaryKey(oid.trim());
+ if(codeButtonDO == null || StringUtils.isBlank(codeButtonDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeButtonDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹腑鐨勬寜閽墿灞�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeButtonVO> listCodeButtonByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeButtonDO> codeButtonDOList = listCodeButtonDOByOidCollections(oidCollections);
+ return codeButtonDO2VOs(codeButtonDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeButtonDO> listCodeButtonDOByOidCollections(Collection<String> oidCollections){
+ List<CodeButtonDO> codeButtonDOList = new ArrayList<CodeButtonDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeButtonDO> tempDOList = codeButtonMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeButtonDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeButtonDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収涓绘暟鎹腑鐨勬寜閽墿灞曞垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓绘暟鎹腑鐨勬寜閽墿灞曟樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeButtonVO> refDataGridCodeButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeButton(conditionMap,pageHelper);
+ }
+
+ /**
+ * 鍚敤
+ *
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult enableCodeButton(CodeButtonDTO buttonDTO) {
+ return changeLcStatus(buttonDTO,false);
+ }
+
+ /**
+ * 鍋滅敤
+ *
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult disableCodeButton(CodeButtonDTO buttonDTO) {
+ return changeLcStatus(buttonDTO,true);
+ }
+
+ /**
+ * 淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬侊紝濡傚仠鐢ㄥ拰鍚敤
+ * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s
+ * @param disable 鏄惁涓哄仠鐢�
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ private BaseResult changeLcStatus(CodeButtonDTO buttonDTO, boolean disable){
+ VciBaseUtil.alertNotNull(buttonDTO,"鏁版嵁瀵硅薄",buttonDTO.getOid(),"涓婚敭");
+ CodeButtonDO buttonDO = selectByOid(buttonDTO.getOid());
+ CodeButtonDO outButtonDO = new CodeButtonDO();
+ BeanUtil.convert(buttonDTO,outButtonDO);
+ boService.checkTs(outButtonDO);
+ if(disable){
+ buttonDO.setLcStatus(FrameworkDataLCStatus.DISABLED.getValue());
+ }else{
+ buttonDO.setLcStatus(FrameworkDataLCStatus.ENABLED.getValue());
+ }
+ return (codeButtonMapper.updateLcStatus(buttonDO.getOid(),buttonDO.getLcStatus()) >0 )?(BaseResult.successMsg((disable?DISABLE_SUCCESS:ENABLE_SUCCESS))):(BaseResult.fail((disable?DISABLE_FAIL:ENABLE_FAIL)));
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyProcessTempServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyProcessTempServiceImpl.java
new file mode 100644
index 0000000..2ceeb4e
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyProcessTempServiceImpl.java
@@ -0,0 +1,356 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.dao.CodeClassifyProcessTempDaoI;
+import com.vci.mdm.dto.CodeClassifyProcessTempDTO;
+import com.vci.mdm.model.CodeClassifyProcessTempDO;
+import com.vci.mdm.pagemodel.CodeClassifyProcessTempVO;
+import com.vci.mdm.service.CodeClassifyProcessTempServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyProcessTempServiceImpl implements CodeClassifyProcessTempServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyProcessTempDaoI codeClassifyProcessTempMapper;
+
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyProcessTempVO> gridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeClassifyProcessTempDO> doList = codeClassifyProcessTempMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeClassifyProcessTempVO> dataGrid=new DataGrid<CodeClassifyProcessTempVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeClassifyProcessTempDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyProcessTempMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyProcessTempDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyProcessTempVO> codeClassifyProcessTempDO2VOs(Collection<CodeClassifyProcessTempDO> codeClassifyProcessTempDOs) throws VciBaseException{
+ List<CodeClassifyProcessTempVO> voList = new ArrayList<CodeClassifyProcessTempVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOs)){
+ codeClassifyProcessTempDOs.forEach(temp -> {
+ CodeClassifyProcessTempVO tempVO = codeClassifyProcessTempDO2VO(temp);
+ BeanUtilForVCI.copyPropertiesIgnoreCase(temp,tempVO);
+ voList.add(tempVO);
+ });
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyProcessTempDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyProcessTempVO codeClassifyProcessTempDO2VO(CodeClassifyProcessTempDO codeClassifyProcessTempDO) throws VciBaseException{
+ CodeClassifyProcessTempVO vo = new CodeClassifyProcessTempVO();
+ if(codeClassifyProcessTempDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyProcessTempDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ //澶勭悊鍏宠仈鐨勬ā鏉垮睘鎬�
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyProcessTempVO addSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyProcessTempDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeClassifyProcessTempDTO.getProcessVersion(),"娴佺▼妯℃澘鐨勭増鏈彿",codeClassifyProcessTempDTO.getCodeprocessuse(),"妯℃澘娴佺▼鐨勭敤閫�");
+ if (StringUtils.isBlank(codeClassifyProcessTempDTO.getCodeprocessuse())){
+ throw new VciBaseException("妯℃澘娴佺▼鐢ㄩ�斾笉鑳戒负绌�");
+ }
+ Long count = countProcessTemplate(codeClassifyProcessTempDTO);
+ if(count > 0){
+ throw new VciBaseException("宸插瓨鍦ㄧ浉鍚岀殑娴佺▼妯℃澘");
+ }
+ //灏咲TO杞崲涓篋O
+ CodeClassifyProcessTempDO codeClassifyProcessTempDO = new CodeClassifyProcessTempDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyProcessTempDTO,codeClassifyProcessTempDO);
+ codeClassifyProcessTempMapper.insert(codeClassifyProcessTempDO);
+ //鍥犱负涓氬姟绫诲瀷鏈韩娌℃湁鎺у埗鐗堟湰锛屾墍鏈夊己鍒剁粰鐗堟湰revisionValue璁剧疆鍊硷紝骞冲彴涔熶細鍙樻垚绌恒�傘�傘�傘��
+ //鐗堟湰鍙蜂笉鑳戒娇鐢ㄩ粯璁ょ殑灞炴��
+ return codeClassifyProcessTempDO2VO(codeClassifyProcessTempDO);
+ }
+
+ /**
+ * 鑾峰彇娴佺▼妯℃澘鏄惁宸茬粡瀛樺湪浜�
+ * @param codeClassifyProcessTempDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return 涓暟
+ */
+ private Long countProcessTemplate(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) {
+ String templateName = codeClassifyProcessTempDTO.getName();
+ if (StringUtils.isBlank(templateName)){
+ throw new VciBaseException("妯℃澘娴佺▼鍚嶇О涓嶈兘涓虹┖");
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeProcessUse",codeClassifyProcessTempDTO.getCodeprocessuse());
+ conditionMap.put("id",codeClassifyProcessTempDTO.getId());
+ conditionMap.put("classifyTemplateOid", codeClassifyProcessTempDTO.getClassifyTemplateOid());
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeClassifyProcessTempDO.class);
+ Long count = codeClassifyProcessTempMapper.countByWrapper(wrapper);
+ return count;
+ }
+
+ /**
+ * 淇敼鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyProcessTempVO editSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyProcessTempDTO,"鏁版嵁瀵硅薄",codeClassifyProcessTempDTO.getOid(),"鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉夸富閿�",codeClassifyProcessTempDTO.getProcessVersion(),"娴佺▼妯℃澘鐨勭増鏈彿",codeClassifyProcessTempDTO.getName(),"娴佺▼妯℃澘鐨勫悕绉�");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyProcessTempDO codeClassifyProcessTempDO = selectByOid(codeClassifyProcessTempDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyProcessTempDTO,codeClassifyProcessTempDO);
+ codeClassifyProcessTempMapper.updateByPrimaryKey(codeClassifyProcessTempDO);
+ return codeClassifyProcessTempDO2VO(codeClassifyProcessTempDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyProcessTempDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyProcessTempDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO, CodeClassifyProcessTempDO codeClassifyProcessTempDO) {
+ CodeClassifyProcessTempDO tempDO = new CodeClassifyProcessTempDO();
+ BeanUtil.convert(codeClassifyProcessTempDTO,tempDO);
+ boService.checkTs(tempDO);
+ if(!checkIsLinked(codeClassifyProcessTempDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param codeClassifyProcessTempDTO 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyProcessTemp(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyProcessTempDTO,"鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎暟鎹璞�",codeClassifyProcessTempDTO.getOid(),"鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉跨殑涓婚敭");
+ CodeClassifyProcessTempDO codeClassifyProcessTempDO = selectByOid(codeClassifyProcessTempDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyProcessTempDTO,codeClassifyProcessTempDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyProcessTempMapper.deleteByPrimaryKey(codeClassifyProcessTempDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param oid 涓婚敭
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyProcessTempVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyProcessTempDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyProcessTempDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyProcessTempDO codeClassifyProcessTempDO = codeClassifyProcessTempMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyProcessTempDO == null || StringUtils.isBlank(codeClassifyProcessTempDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyProcessTempDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyProcessTempVO> listCodeClassifyProcessTempByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyProcessTempDO> codeClassifyProcessTempDOList = listCodeClassifyProcessTempDOByOidCollections(oidCollections);
+ return codeClassifyProcessTempDO2VOs(codeClassifyProcessTempDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyProcessTempDO> listCodeClassifyProcessTempDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyProcessTempDO> codeClassifyProcessTempDOList = new ArrayList<CodeClassifyProcessTempDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyProcessTempDO> tempDOList = codeClassifyProcessTempMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyProcessTempDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyProcessTempDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉垮垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyProcessTempVO> refDataGridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeClassifyProcessTemp(conditionMap,pageHelper);
+ }
+
+ /**
+ * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+ *
+ * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鍐呭
+ */
+ @Override
+ public BatchCBO codeTemplateDeleteTrigger(String classifyTemplateOid) {
+ BatchCBO batchCBO = new BatchCBO();
+ if(StringUtils.isBlank(classifyTemplateOid)){
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("classifyTemplateOid",classifyTemplateOid);
+ List<CodeClassifyProcessTempDO> processTempDOS = codeClassifyProcessTempMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if(!CollectionUtils.isEmpty(processTempDOS)){
+ batchCBO.copyFromOther(codeClassifyProcessTempMapper.batchDeleteByOids(processTempDOS.stream().map(CodeClassifyProcessTempDO::getOid).collect(Collectors.toList())));
+ }
+ }
+ return batchCBO;
+ }
+
+ /**
+ * 鑾峰彇娴佺▼鐨勬ā鏉跨殑淇℃伅
+ *
+ * @param codeTemplateOid 妯℃澘鐨勪富閿�
+ * @param processUse 鐢ㄩ��
+ * @return 妯℃澘鐨勪俊鎭�
+ */
+ @Override
+ public List<CodeClassifyProcessTempVO> listProcessTemplate(String codeTemplateOid, String processUse) {
+ if(StringUtils.isBlank(codeTemplateOid) || StringUtils.isBlank(processUse)){
+ return new ArrayList<>();
+ }
+ Map<String,String> conditionMap =new HashMap<>();
+ conditionMap.put("classifyTemplateOid",codeTemplateOid);
+ conditionMap.put("codeprocessuse",processUse);
+ return codeClassifyProcessTempDO2VOs(codeClassifyProcessTempMapper.selectByCondition(conditionMap,null));
+ }
+
+ @Override
+ public CodeClassifyProcessTempVO getProcessTempVOByName(String codeTemplateOid,String processName) {
+ if (StringUtils.isBlank(processName)){
+ return new CodeClassifyProcessTempVO();
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("classifyTemplateOid",codeTemplateOid);
+ conditionMap.put("name",processName);
+ return codeClassifyProcessTempDO2VO(codeClassifyProcessTempMapper.selectByCondition(conditionMap,null).get(0));
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyServiceImpl.java
new file mode 100644
index 0000000..1945b58
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyServiceImpl.java
@@ -0,0 +1,1019 @@
+package org.springblade.code.service.impl;
+
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.mdm.bo.CodeClassifyFullInfoBO;
+import com.vci.mdm.dao.CodeClassifyDaoI;
+import com.vci.mdm.dao.CodeClassifyTemplateDaoI;
+import com.vci.mdm.dto.CodeClassifyDTO;
+import com.vci.mdm.model.CodeClassifyDO;
+import com.vci.mdm.model.CodeClassifyTemplateDO;
+import com.vci.mdm.pagemodel.CodeClassifyVO;
+import com.vci.mdm.pagemodel.CodeKeyAttrRepeatRuleVO;
+import com.vci.mdm.pagemodel.CodeRuleVO;
+import com.vci.mdm.po.CodeClassifyPO;
+import com.vci.mdm.service.*;
+import com.vci.starter.poi.bo.ReadExcelOption;
+import com.vci.starter.poi.bo.WriteExcelData;
+import com.vci.starter.poi.bo.WriteExcelOption;
+import com.vci.starter.poi.constant.ExcelLangCodeConstant;
+import com.vci.starter.poi.util.ExcelUtil;
+import com.vci.starter.revision.bo.TreeWrapperOptions;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.*;
+import com.vci.starter.web.wrapper.VciParentQueryOption;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.OsAttributeVO;
+import com.vci.web.pageModel.OsBtmTypeAttributeVO;
+import com.vci.web.pageModel.OsBtmTypeVO;
+import com.vci.web.service.OsAttributeServiceI;
+import com.vci.web.service.OsBtmServiceI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.*;
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 涓婚搴撳垎绫绘湇鍔�
+ * @author weidy
+ * @date 2022-01-20
+ */
+@Service
+public class CodeClassifyServiceImpl implements CodeClassifyServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyDaoI codeClassifyMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 瑙勫垯鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeRuleServiceI codeRuleService;
+
+ /**
+ * 鍏抽敭灞炴�х殑鏈嶅姟
+ */
+ @Autowired
+ private CodeKeyAttrRepeatRuleServiceI keyAttrRepeatRuleService;
+
+ /**
+ * 鏁版嵁闆嗘垚
+ */
+ @Autowired
+ private CodeDuckingServiceI codeDuckingServiceI;
+
+ /**
+ * 涓氬姟绫诲瀷鐨勬湇鍔�
+ */
+ @Autowired
+ private OsBtmServiceI btmService;
+
+ /**
+ * 灞炴�ф湇鍔�
+ */
+ @Autowired
+ private OsAttributeServiceI attributeService;
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateDaoI codeClassifyTemplateMapper;
+
+ /**
+ * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
+ */
+ public static final String PARENT_FIELD_NAME = "parentCodeClassifyOid";
+ /**
+ * 鏌ヨ涓婚搴撳垎绫� 鏍�
+ * @param treeQueryObject 鏍戞煡璇㈠璞�
+ * @return 涓婚搴撳垎绫� 鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢涓嶇鍚堣姹傜殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<Tree> treeCodeClassify(TreeQueryObject treeQueryObject) throws VciBaseException{
+ List<CodeClassifyDO> doList =selectCodeClassifyDOByTree(treeQueryObject);
+ List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
+ TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
+ treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+ List<Tree> tree= revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyVO s) ->{
+ //鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+ return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+ .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+ });
+ Iterator var6 = tree.listIterator();
+ while(var6.hasNext()){
+ Tree trees = (Tree) var6.next();
+ boolean checkHasChild=codeClassifyMapper.checkHasChild(trees.getOid());
+ if(checkHasChild){
+ trees.setLeaf(false);
+ }else{
+ trees.setLeaf(true);
+ }
+ }
+ return tree;
+ }
+
+ /**
+ * 涓婚搴撶殑鏍�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撴樉绀烘爲
+ */
+ @Override
+ public List<Tree> treeTopCodeClassify(TreeQueryObject treeQueryObject) {
+ if(treeQueryObject == null){
+ treeQueryObject = new TreeQueryObject();
+ }
+ if(treeQueryObject.getConditionMap() == null){
+ treeQueryObject.setConditionMap(new HashMap<>());
+ }
+ treeQueryObject.getConditionMap().put(PARENT_FIELD_NAME, QueryOptionConstant.ISNULL);
+ return treeCodeClassify(treeQueryObject);
+ }
+
+ /**
+ * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyDO> selectCodeClassifyDOByTree(TreeQueryObject treeQueryObject) {
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null,CodeClassifyDO.class);
+ VciParentQueryOption parentQueryOption = new VciParentQueryOption();
+ parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
+ queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
+ if(StringUtils.isBlank(treeQueryObject.getSort())) {
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("id");
+ queryWrapperForDO.setPageHelper(pageHelper);
+ }
+ return codeClassifyMapper.selectByWrapper(queryWrapperForDO);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyVO> codeClassifyDO2VOs(Collection<CodeClassifyDO> codeClassifyDOs) throws VciBaseException{
+ List<CodeClassifyVO> voList = new ArrayList<CodeClassifyVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyDOs)){
+ for(CodeClassifyDO s: codeClassifyDOs){
+ CodeClassifyVO vo = codeClassifyDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyVO codeClassifyDO2VO(CodeClassifyDO codeClassifyDO) throws VciBaseException{
+ CodeClassifyVO vo = new CodeClassifyVO();
+ if(codeClassifyDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyVO addSave(CodeClassifyDTO codeClassifyDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyDO codeClassifyDO = new CodeClassifyDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyDO);
+ if(StringUtils.isNotBlank(codeClassifyDO.getParentCodeClassifyOid()) && StringUtils.isNotBlank(codeClassifyDO.getBtmTypeId())){
+ throw new VciBaseException("鍙湁鍦ㄩ《灞傜殑涓婚搴撳垎绫绘墠鑳借缃笟鍔$被鍨�");
+ }
+ BatchCBO cbo_insert = codeClassifyMapper.insert(codeClassifyDO);
+
+// //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊
+// ClientBusinessObject[] clientBusinessObjects = cbo_insert.getCreateCboArray();
+// if(clientBusinessObjects.length!=0);
+// {
+// codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_ADD,FRAMEWORK_DATA_ENABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO.getOid(), DateUtils.addHours(new Date(),1));
+// }
+
+ return codeClassifyDO2VO(codeClassifyDO);
+ }
+
+ /**
+ * 淇敼涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public BaseResult editSave(CodeClassifyDTO codeClassifyDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyDTO,"鏁版嵁瀵硅薄",codeClassifyDTO.getOid(),"涓婚搴撳垎绫讳富閿�");
+
+ //妫�鏌s
+ CodeClassifyDO codeClassifyDOCopyFromDTO = new CodeClassifyDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyDOCopyFromDTO);
+ boolean tsBoolean = boService.checkTs(codeClassifyDOCopyFromDTO);
+ if(!tsBoolean){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+ return BaseResult.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+ }
+
+ //灏咲TO杞崲涓篋O
+ CodeClassifyDO codeClassifyDO = selectByOid(codeClassifyDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyDTO,codeClassifyDO);
+ if(StringUtils.isNotBlank(codeClassifyDO.getParentCodeClassifyOid()) && StringUtils.isNotBlank(codeClassifyDO.getBtmTypeId())){
+ throw new VciBaseException("鍙湁鍦ㄩ《灞傜殑涓婚搴撳垎绫绘墠鑳借缃笟鍔$被鍨�");
+ }
+ codeClassifyMapper.updateByPrimaryKey(codeClassifyDO);
+
+// //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆傚彧鏈夊惎鐢ㄧ姸鎬佺殑鍒嗙被鎵嶆帹閫�
+// if(FRAMEWORK_DATA_ENABLED.equals(codeClassifyDO.getLcStatus()));
+// {
+// codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_EDIT,FRAMEWORK_DATA_ENABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO.getOid(), codeClassifyDTO.getTs());
+// }
+
+ return BaseResult.success(codeClassifyDO2VO(codeClassifyDO));
+ }
+
+/**
+ * 妫�鏌� 涓婚搴撳垎绫绘槸鍚﹀垹闄�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+@Override
+public BaseResult checkIsCanDelete(CodeClassifyDTO codeClassifyDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyDTO,"鏁版嵁浼犺緭瀵硅薄",codeClassifyDTO.getOid(),"涓婚敭");
+ CodeClassifyDO codeClassifyDO = selectByOid(codeClassifyDTO.getOid());
+ return checkIsCanDeleteForDO(codeClassifyDTO,codeClassifyDO);
+}
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyDTO codeClassifyDTO, CodeClassifyDO codeClassifyDO) {
+ CodeClassifyDO tsDO = new CodeClassifyDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,tsDO);
+ boService.checkTs(tsDO);
+ //鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
+ if(checkChildIsLinked(codeClassifyDO.getOid())){
+ return BaseResult.fail(DATA_CASCADE_LINKED_NOT_DELETE,new String[]{""});
+ }
+ return BaseResult.success(checkHasChild(codeClassifyDO.getOid()));
+ }
+ /**
+ * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+ *
+ * @param oid 涓婚敭
+ * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+ * @throws VciBaseException 鍙傛暟涓虹┖鍜屾湁寮曠敤鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean checkChildIsLinked(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ Map<String,String> childOids = codeClassifyMapper.selectAllLevelChildOid(oid.trim());
+ if(!CollectionUtils.isEmpty(childOids)){
+ for(String childOid: childOids.keySet()){
+ if(!checkIsLinked(childOid)){
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+ *
+ * @param oid 涓婚敭
+ * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+ * @throws VciBaseException 鍙傛暟閿欒锛屾垨鑰呮暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean checkHasChild(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ return codeClassifyMapper.checkHasChild(oid.trim());
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎涓婚搴撳垎绫�
+ * @param codeClassifyDTO 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassify(CodeClassifyDTO codeClassifyDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyDTO,"涓婚搴撳垎绫绘暟鎹璞�",codeClassifyDTO.getOid(),"涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyDO codeClassifyDO = selectByOid(codeClassifyDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyDTO,codeClassifyDO);
+
+ //鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateDO.class);
+ queryWrapper.addQueryMap("codeClassifyOid",codeClassifyDTO.getOid());
+ List<CodeClassifyTemplateDO> codeClassifyTemplateDOListHaveTemplate = codeClassifyTemplateMapper.selectByWrapper(queryWrapper);
+ if(codeClassifyTemplateDOListHaveTemplate.size()>0){
+ return BaseResult.fail("鍒嗙被鍏宠仈妯℃澘锛岃鍏堝垹闄�!");
+ }
+
+ //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆�
+ //1銆佹煡璇㈣鍒犻櫎鐨勭埗绫绘暟鎹�
+ List<CodeClassifyDO> deletes = new ArrayList<CodeClassifyDO>();
+ deletes.add(codeClassifyDO);
+
+ if(baseResult.isSuccess()) {
+ //鎵句笅绾х殑锛岃繖涓槸鍙互鍒犻櫎鐨勬椂鍊�
+ Map<String,String> childrenOids = codeClassifyMapper.selectAllLevelChildOid(codeClassifyDO.getOid().trim());
+ if (!CollectionUtils.isEmpty(childrenOids)) {
+ Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids.keySet());
+ for(Collection<String> s : childrenCollections){
+
+ //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆�
+ //2銆佹煡璇㈣鍒犻櫎鐨勫瓙绫绘暟鎹�
+ List<CodeClassifyDO> codeClassifyDOList = codeClassifyMapper.selectByPrimaryKeyCollection(s);
+ deletes.addAll(codeClassifyDOList);
+
+ codeClassifyMapper.batchDeleteByOids(s);
+ }
+
+ }
+ }else{
+ return baseResult;
+ }
+
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyMapper.deleteByPrimaryKey(codeClassifyDO.getOid());
+
+ //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�
+ for (CodeClassifyDO codeClassifyDO1:deletes){
+ //codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_DELETE,FRAMEWORK_DATA_DISABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO1.getOid(), DateUtils.addHours(new Date(),1));//杩欓噷鏄綋鍓嶆椂闂�
+
+ //瀛樺偍瑕佸垹闄ょ殑鏁版嵁
+ codeDuckingServiceI.cacheDeleteData(codeClassifyDO1.getOid(), codeClassifyDO1);
+ }
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撳垎绫�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撳垎绫绘樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyDO codeClassifyDO = codeClassifyMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyDO == null || StringUtils.isBlank(codeClassifyDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撳垎绫绘樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyVO> listCodeClassifyByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyDO> codeClassifyDOList = listCodeClassifyDOByOidCollections(oidCollections);
+ return codeClassifyDO2VOs(codeClassifyDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyDO> listCodeClassifyDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyDO> codeClassifyDOList = new ArrayList<CodeClassifyDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyDO> tempDOList = codeClassifyMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鏍� 涓婚搴撳垎绫�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 涓婚搴撳垎绫绘樉绀烘爲
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<Tree> referTree(TreeQueryObject treeQueryObject) throws VciBaseException{
+ if(treeQueryObject == null){
+ treeQueryObject = new TreeQueryObject();
+ }
+ if(treeQueryObject.getConditionMap() == null){
+ treeQueryObject.setConditionMap(new HashMap<>());
+ }
+ if(treeQueryObject.getConditionMap().containsKey(LC_STATUS)) {
+ treeQueryObject.getConditionMap().remove(LC_STATUS);
+ }
+ if(treeQueryObject.getExtandParamsMap() ==null || !treeQueryObject.getExtandParamsMap().containsKey(REFER_SHOW_DISABLED_QUERY_KEY)) {
+ }
+ treeQueryObject.getConditionMap().put(LC_STATUS, FRAMEWORK_DATA_ENABLED);
+ return treeCodeClassify(treeQueryObject);
+ }
+
+ /**
+ * 鍚敤銆佸仠鐢�
+ * @param oid 涓婚敭
+ * @param lcStatus 鐘舵��
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult updateLcStatus(String oid, String lcStatus){
+
+ //鏌ヨ淇敼鍓峵s
+ CodeClassifyDO codeClassifyDO_old = selectByOid(oid);//涓昏鏄负浜嗘煡璇s
+
+ //鍚敤銆佸仠鐢�
+ int u = codeClassifyMapper.updateLcStatus(oid,lcStatus);
+
+// //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆�
+// if(u!=0) {
+// codeDuckingServiceI.insertCache1(lcStatus,lcStatus,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, oid, codeClassifyDO_old.getTs());
+// }
+ BaseResult baseResult = u==0?BaseResult.error("淇敼澶辫触锛�"):BaseResult.success("淇敼鎴愬姛");
+ return baseResult;
+ }
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyDO> selectByWrapper(VciQueryWrapperForDO queryWrapper) {
+ return codeClassifyMapper.selectByWrapper(queryWrapper);
+ }
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇鍒嗙被鐩稿叧鐨勬墍鏈変俊鎭�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被涓婄骇锛屼笅绾х殑淇℃伅
+ */
+ @Override
+ public CodeClassifyFullInfoBO getClassifyFullInfo(String codeClassifyOid) {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ CodeClassifyFullInfoBO fullInfo = new CodeClassifyFullInfoBO();
+ CodeClassifyDO classifyDO = selectByOid(codeClassifyOid);
+ //鏌ヨ涓婄骇
+ fullInfo.setCurrentClassifyVO(codeClassifyDO2VO(classifyDO));
+ fullInfo.setParentClassifyVOs(codeClassifyDO2VOs(codeClassifyMapper.selectAllLevelParentByOid(codeClassifyOid)));
+ if(!CollectionUtils.isEmpty(fullInfo.getParentClassifyVOs())){
+ fullInfo.setTopClassifyVO(fullInfo.getParentClassifyVOs().stream().filter(s->StringUtils.isBlank(s.getParentcodeclassifyoid())).findFirst().orElseGet(()->null));
+ }
+ return fullInfo;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鍒嗙被鐨勯《灞傚垎绫�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 椤跺眰鍒嗙被鐨勪俊鎭�
+ */
+ @Override
+ public CodeClassifyVO getTopClassifyVO(String codeClassifyOid) {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ List<CodeClassifyDO> classifyDOS = codeClassifyMapper.selectAllLevelParentByOid(codeClassifyOid);
+ if(!CollectionUtils.isEmpty(classifyDOS)){
+ CodeClassifyDO classifyDO = classifyDOS.stream().filter(s -> StringUtils.isBlank(s.getParentCodeClassifyOid())).findFirst().orElseGet(() -> null);
+ if(classifyDO!=null){
+ return codeClassifyDO2VO(classifyDO);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 缁熻瀛愯妭鐐圭殑涓暟
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 涓暟
+ */
+ @Override
+ public int countChildrenByClassifyOid(String codeClassifyOid) {
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("parentCodeClassifyOid",codeClassifyOid);
+ return codeClassifyMapper.countByCondition(conditionMap).intValue();
+ }
+
+ /**
+ * 鑾峰彇瀛愮骇鐨勪富棰樺簱鍒嗙被
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param allLevel 鏄惁鎵�鏈夌殑灞傜骇
+ * @param fieldInPath 鍦ㄨ矾寰勪腑鐨勫瓧娈�
+ * @param enable 鏄惁鍙樉绀哄惎鐢�
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ @Override
+ public List<CodeClassifyVO> listChildrenClassify(String codeClassifyOid, boolean allLevel, String fieldInPath, boolean enable) {
+ if(allLevel){
+ List<CodeClassifyDO> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath,enable);
+ if(!CollectionUtils.isEmpty(classifyDOS)){
+ classifyDOS = classifyDOS.stream().filter(s->FRAMEWORK_DATA_ENABLED.equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
+ }
+ return codeClassifyDO2VOs(classifyDOS);
+ }else{
+ //鍙煡璇竴鏉★紝閭ath灏辨病蹇呰鏌ヨ浜�
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("parentcodeclassifyoid",codeClassifyOid);
+ if (enable){
+ conditionMap.put(VciQueryWrapperForDO.LC_STATUS_FIELD,FRAMEWORK_DATA_ENABLED);
+ }
+ return codeClassifyDO2VOs(codeClassifyMapper.selectByCondition(conditionMap,new PageHelper(-1)));
+ }
+ }
+
+ /**
+ * 鍙嶅悜浠庡瓙绾ц幏鍙栫埗绾х殑涓婚搴撳垎绫�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ @Override
+ public List<CodeClassifyVO> listParentClassify(String codeClassifyOid){
+ List<CodeClassifyDO> classifyDOS = codeClassifyMapper.listParentClassify(codeClassifyOid);
+ return codeClassifyDO2VOs(classifyDOS);
+ }
+
+ /**
+ * 瀵煎嚭鍒嗙被
+ *
+ * @param oid 鍒嗙被涓婚敭
+ * @return excel鏂囦欢璺緞
+ */
+ @Override
+ public String exportClassify(String oid) {
+ VciBaseUtil.alertNotNull(oid,"鍒嗙被鐨勪富閿�");
+ CodeClassifyVO classifyVO = getObjectByOid(oid);
+ classifyVO.setDataLevel(0);
+ classifyVO.setPath(classifyVO.getId());
+ List<CodeClassifyVO> codeClassifyVOS = listChildrenClassify(oid, true, "id", false);
+ if(codeClassifyVOS ==null){
+ codeClassifyVOS = new ArrayList<>();
+ }
+ codeClassifyVOS.add(classifyVO);
+
+ //鏌ヨ涓�涓嬭鍒欑殑缂栧彿锛屽拰鍏抽敭灞炴�ч噸澶嶈鍒�
+ List<String> codeRuleOids = codeClassifyVOS.stream().filter(s -> StringUtils.isNotBlank(s.getCoderuleoid())).map(CodeClassifyVO::getCoderuleoid).collect(Collectors.toList());
+ Map<String, CodeRuleVO> ruleVOMap = new HashMap<>();
+ if(!CollectionUtils.isEmpty(codeRuleOids)){
+ VciBaseUtil.switchCollectionForOracleIn(codeRuleOids).stream().forEach(ruleOids->{
+ Collection<CodeRuleVO> ruleVOS = codeRuleService.listCodeRuleByOids(ruleOids);
+ ruleVOMap.putAll( Optional.ofNullable(ruleVOS).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getOid(),t->t)));
+ });
+ }
+ //鎵惧叧閿睘鎬ц鍒�
+ List<String> keyRuleOids = codeClassifyVOS.stream().filter(s -> StringUtils.isNotBlank(s.getCodekeyattrrepeatoid())).map(CodeClassifyVO::getCodekeyattrrepeatoid).collect(Collectors.toList());
+ Map<String, CodeKeyAttrRepeatRuleVO> keyRuleVOMap = new HashMap<>();
+ if(!CollectionUtils.isEmpty(keyRuleOids)){
+ VciBaseUtil.switchCollectionForOracleIn(keyRuleOids).stream().forEach(ruleOids->{
+ Collection<CodeKeyAttrRepeatRuleVO> ruleVOS = keyAttrRepeatRuleService.listCodeKeyAttrRepeatRuleByOids(ruleOids);
+ keyRuleVOMap.putAll( Optional.ofNullable(ruleVOS).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getOid(),t->t)));
+ });
+ }
+ //ok,鍐檈xcel
+ String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + "瀵煎嚭鍒嗙被.xls";
+ try {
+ new File(excelName).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
+ }
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ excelDataList.add(new WriteExcelData(0,0,"鍒嗙被缂栧彿"));
+ excelDataList.add(new WriteExcelData(0,1,"鍒嗙被鍚嶇О"));
+ excelDataList.add(new WriteExcelData(0,2,"涓氬姟绫诲瀷缂栧彿"));
+ excelDataList.add(new WriteExcelData(0,3,"涓氬姟绫诲瀷鍚嶇О"));
+ excelDataList.add(new WriteExcelData(0,4,"缂栫爜瑙勫垯缂栧彿"));
+ excelDataList.add(new WriteExcelData(0,5,"缂栫爜瑙勫垯鍚嶇О"));
+ excelDataList.add(new WriteExcelData(0,6,"鏌ラ噸瑙勫垯缂栧彿"));
+ excelDataList.add(new WriteExcelData(0,7,"鏌ラ噸瑙勫垯鍚嶇О"));
+ excelDataList.add(new WriteExcelData(0,8,"鍒嗙被璺緞"));
+ excelDataList.add(new WriteExcelData(0,9,"鐘舵��"));
+ excelDataList.add(new WriteExcelData(0,10,"鍒嗙被灞傜骇"));
+ excelDataList.add(new WriteExcelData(0,11,"鎻忚堪"));
+ for (int i = 0; i < codeClassifyVOS.size(); i++) {
+ CodeClassifyVO vo = codeClassifyVOS.get(i);
+ excelDataList.add(new WriteExcelData(i+1,0,vo.getId()));
+ excelDataList.add(new WriteExcelData(i+1,1,vo.getName()));
+ excelDataList.add(new WriteExcelData(i+1,2,vo.getBtmtypeid()));
+ excelDataList.add(new WriteExcelData(i+1,3,vo.getBtmtypename()));
+ excelDataList.add(new WriteExcelData(i+1,4,StringUtils.isNotBlank(vo.getCoderuleoid())?ruleVOMap.getOrDefault(vo.getCoderuleoid(),new CodeRuleVO()).getId():""));
+ excelDataList.add(new WriteExcelData(i+1,5,StringUtils.isNotBlank(vo.getCoderuleoid())?ruleVOMap.getOrDefault(vo.getCoderuleoid(),new CodeRuleVO()).getName():""));
+ excelDataList.add(new WriteExcelData(i+1,6,StringUtils.isNotBlank(vo.getCodekeyattrrepeatoid())?keyRuleVOMap.getOrDefault(vo.getCodekeyattrrepeatoid(),new CodeKeyAttrRepeatRuleVO()).getId():""));
+ excelDataList.add(new WriteExcelData(i+1,7,StringUtils.isNotBlank(vo.getCodekeyattrrepeatoid())?keyRuleVOMap.getOrDefault(vo.getCodekeyattrrepeatoid(),new CodeKeyAttrRepeatRuleVO()).getName():""));
+ excelDataList.add(new WriteExcelData(i+1,8,vo.getOid().equalsIgnoreCase(classifyVO.getOid())?vo.getPath():classifyVO.getPath() + vo.getPath()));
+ excelDataList.add(new WriteExcelData(i+1,9,FrameworkDataLCStatus.getTextByValue(vo.getLcStatus())));
+ excelDataList.add(new WriteExcelData(i+1,10,vo.getDataLevel()));
+ excelDataList.add(new WriteExcelData(i+1,11,vo.getDescription()));
+ }
+ WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
+ ExcelUtil.writeDataToFile(excelName, excelOption);
+ return excelName;
+ }
+
+ /**
+ * 鍒涘缓瀵煎叆妯℃澘
+ *
+ * @return excel鏂囦欢璺緞
+ */
+ @Override
+ public String createImportExcel() {
+ //ok,鍐檈xcel
+ String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + "鍒嗙被瀵煎叆妯℃澘.xls";
+ try {
+ new File(excelName).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
+ }
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ WriteExcelData excelData = new WriteExcelData(0, 0, "鍒嗙被缂栧彿");
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ excelDataList.add(excelData);
+ WriteExcelData excelData1 = new WriteExcelData(0, 1, "鍒嗙被鍚嶇О");
+ excelData1.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ excelDataList.add(excelData1);
+ excelDataList.add(new WriteExcelData(0,2,"涓氬姟绫诲瀷缂栧彿"));
+ excelDataList.add(new WriteExcelData(0,3,"缂栫爜瑙勫垯缂栧彿"));
+ excelDataList.add(new WriteExcelData(0,4,"鏌ラ噸瑙勫垯缂栧彿"));
+ WriteExcelData excelData2 = new WriteExcelData(0, 5, "鍒嗙被璺緞");
+ excelData2.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ excelDataList.add(excelData2);
+ excelDataList.add(new WriteExcelData(0,6,"鐘舵��"));
+ WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
+ ExcelUtil.writeDataToFile(excelName, excelOption);
+ return excelName;
+ }
+
+ /**
+ * 瀵煎叆鍒嗙被
+ *
+ * @param file1 鏂囦欢鐨勪俊鎭�
+ * @return 閿欒鏂囦欢鐨勫湴鍧�
+ */
+ @Override
+ public void importClassify(File file1) {
+ VciBaseUtil.alertNotNull(file1,"excel鏂囦欢");
+ if(!file1.exists()){
+ throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file1.getPath()});
+ }
+ ReadExcelOption excelOption = new ReadExcelOption();
+ List<CodeClassifyPO> poList = null;
+ try{
+ poList = ExcelUtil.readDataObjectFromExcel(file1,CodeClassifyPO.class,excelOption,(value,po,fieldName)->{
+ po.setLcStatus(FrameworkDataLCStatus.getValueByText(po.getLcStatusText()));
+ if(StringUtils.isBlank(po.getLcStatusText())){
+ po.setLcStatus(FrameworkDataLCStatus.ENABLED.getValue());
+ }
+ });
+ }catch (Exception e){
+ if(logger.isErrorEnabled()){
+ logger.error("璇诲彇excel鍐呭鐨勬椂鍊欏嚭鐜颁簡閿欒",e);
+ }
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e),new String[]{},e);
+ }
+ //鍘婚櫎鏁磋閮芥槸绌虹殑鎯呭喌
+
+ if(CollectionUtils.isEmpty(poList)){
+ throw new VciBaseException(ExcelLangCodeConstant.IMPORT_CONTENT_NULL,new String[]{});
+ }
+
+ poList = poList.stream().filter(s->!(StringUtils.isBlank(s.getId()) && StringUtils.isBlank(s.getName()) && StringUtils.isBlank(s.getPath()))).collect(Collectors.toList());
+
+ List<CodeClassifyDO> classifyDOList = new ArrayList<>();
+ //鐪嬬湅璺緞鏄惁鏈夐噸澶�
+ Map<String/**璺緞**/, Long/**涓暟**/> pathCountMap = poList.stream().filter(s->StringUtils.isNotBlank(s.getPath())).collect(Collectors.groupingBy(s -> s.getPath(), Collectors.counting()));
+ List<String> repeatPaths = Optional.ofNullable(pathCountMap).orElse(new HashMap<>()).entrySet().stream().filter(entry -> entry.getValue() > 1).map(entry -> entry.getKey()).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(repeatPaths)){
+ //鏈夐噸澶嶇殑鍐呭
+ List<String> rowIndexList = new ArrayList<>();
+ poList.stream().forEach(po->{
+ if(repeatPaths.contains(po.getPath())){
+ rowIndexList.add(po.getRowIndex());
+ }
+ });
+ throw new VciBaseException("璺緞鏈夐噸澶�,{0}",new String[]{rowIndexList.stream().collect(Collectors.joining(","))});
+ }
+
+ Map<String, CodeRuleVO> ruleVOMap = Optional.ofNullable(codeRuleService.listCodeRuleByIds(
+ poList.stream().filter(s->StringUtils.isNotBlank(s.getCodeRuleId())).map(CodeClassifyPO::getCodeRuleId).collect(Collectors.toList()))
+ ).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+
+ Map<String,CodeKeyAttrRepeatRuleVO> keyRuleVOMap =Optional.ofNullable(keyAttrRepeatRuleService.listCodeKeyAttrRepeatRuleByIds(
+ poList.stream().filter(s->StringUtils.isNotBlank(s.getKeyRepeatRuleId())).map(CodeClassifyPO::getKeyRepeatRuleId).collect(Collectors.toList()))
+ ).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+
+ Map<String, OsBtmTypeVO> btmVOMap = Optional.ofNullable(btmService.listBtmByIds(
+ poList.stream().filter(s -> StringUtils.isNotBlank(s.getBtmTypeId())).map(CodeClassifyPO::getBtmTypeId).collect(Collectors.toList()))
+ ).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+
+ Map<String/**璺緞**/,String/**涓婚敭**/> oidPathMap = new HashMap<>();
+
+ //鎴戜滑闇�瑕佹煡璇㈡墍鏈夊凡缁忓瓨鍦ㄧ殑鍒嗙被锛屼富瑕佹槸璺緞锛岀敤鏉ュ垽鏂垎绫荤殑鏁版嵁
+ List<CodeClassifyDO> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("", "id", false);
+ Map<String/**璺緞**/, CodeClassifyDO/**宸茬粡瀛樺湪鐨勬暟鎹�**/> pathDOMap = Optional.ofNullable(existClassifyDOs).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> {
+ String path = s.getPath();
+ if(StringUtils.isNotBlank(path) && path.startsWith("#")){
+ return path.substring(1);
+ }
+ return path;
+ }, t -> t));
+ poList.stream().forEach(po->{
+ CodeClassifyDO classifyDO = new CodeClassifyDO();
+ VciBaseUtil.alertNotNull(po.getId(),"鍒嗙被缂栧彿",po.getName(),"鍒嗙被鍚嶇О",po.getPath(),"鍒嗙被璺緞");
+ if(StringUtils.isNotBlank(po.getBtmTypeId()) && !btmVOMap.containsKey(po.getBtmTypeId().toLowerCase(Locale.ROOT))){
+ throw new VciBaseException("绗瑊0}琛岀殑涓氬姟绫诲瀷{1}鍦ㄧ郴缁熶腑涓嶅瓨鍦�",new String[]{String.valueOf(VciBaseUtil.getInt(po.getRowIndex())+1),po.getBtmTypeId()});
+ }
+ if(StringUtils.isNotBlank(po.getCodeRuleId()) && !ruleVOMap.containsKey(po.getCodeRuleId().toLowerCase(Locale.ROOT))){
+ throw new VciBaseException("绗瑊0}琛岀殑缂栫爜瑙勫垯{1}鍦ㄧ郴缁熶腑涓嶅瓨鍦�",new String[]{String.valueOf(po.getRowIndex()+1),po.getCodeRuleId()});
+ }
+ if(StringUtils.isNotBlank(po.getKeyRepeatRuleId()) && !keyRuleVOMap.containsKey(po.getKeyRepeatRuleId().toLowerCase(Locale.ROOT))){
+ throw new VciBaseException("绗瑊0}琛岀殑鍏抽敭灞炴�ф煡閲嶈鍒檣1}鍦ㄧ郴缁熶腑涓嶅瓨鍦�",new String[]{String.valueOf(po.getRowIndex()+1),po.getKeyRepeatRuleId()});
+ }
+ classifyDO.setOid(VciBaseUtil.getPk());
+ classifyDO.setId(po.getId());
+ classifyDO.setName(po.getName());
+ classifyDO.setDescription(po.getDescription());
+ oidPathMap.put(po.getPath(),classifyDO.getOid());
+ if(StringUtils.isNotBlank(po.getBtmTypeId())){
+ OsBtmTypeVO typeVO = btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
+ classifyDO.setBtmTypeId(typeVO.getId());
+ classifyDO.setBtmTypeName(typeVO.getName());
+ }
+ if(StringUtils.isNotBlank(po.getCodeRuleId())){
+ CodeRuleVO codeRuleVO = ruleVOMap.get(po.getCodeRuleId().toLowerCase(Locale.ROOT));
+ classifyDO.setCodeRuleOid(codeRuleVO.getOid());
+ }
+ if(StringUtils.isNotBlank(po.getKeyRepeatRuleId())){
+ CodeKeyAttrRepeatRuleVO repeatRuleVO = keyRuleVOMap.get(po.getKeyRepeatRuleId());
+ classifyDO.setCodeKeyAttrRepeatOid(repeatRuleVO.getOid());
+ }
+ classifyDO.setLcStatus(po.getLcStatus());
+ classifyDO.setPath(po.getPath());
+ classifyDOList.add(classifyDO);
+ });
+ //瑕佺湅瀛樺湪鐨勶紝淇敼璺緞瀵瑰簲鐨勪富閿�
+ Map<String/**璺緞**/,String/**涓婚敭**/> catchedOidPathMap = new HashMap<>();
+ if(!CollectionUtils.isEmpty(oidPathMap)){
+ oidPathMap.forEach((path,oid)->{
+ if(pathDOMap.containsKey(path)){
+ //璇存槑瀛樺湪
+ catchedOidPathMap.put(path,pathDOMap.get(path).getOid());
+ }else{
+ catchedOidPathMap.put(path,oid);
+ }
+ });
+ }
+ List<CodeClassifyDO> addClassifyDOList = new ArrayList<>();
+ List<CodeClassifyDO> editClassifyDOList = new ArrayList<>();
+ classifyDOList.stream().forEach(classifyDO->{
+
+ //瑕佺湅涓婄骇鏄笉鏄瓨鍦ㄥ摝
+ String parentPath = classifyDO.getPath();
+ if(parentPath.contains("#")) {
+ parentPath = parentPath.substring(0, parentPath.lastIndexOf("#"));
+ }
+ if((!catchedOidPathMap.containsKey(parentPath) && !pathDOMap.containsKey(parentPath) )&& !classifyDO.getPath().equalsIgnoreCase(classifyDO.getId())){
+ throw new VciBaseException("鍒嗙被缂栧彿[{0}],鍒嗙被鍚嶇О[{1}]锛岃矾寰勪负[{2}]鐨勪笂绾у垎绫诲湪绯荤粺涓紝鍦ㄦ湰娆″鍏ョ殑鏁版嵁鍜岀郴缁熶腑鍧囨病鏈夋壘鍒�",new String[]{classifyDO.getId(),classifyDO.getName(),classifyDO.getPath()});
+ }
+ if (!classifyDO.getPath().equalsIgnoreCase(classifyDO.getId())){
+ //涓嶆槸椤剁骇鐨勬椂鍊欙紝瑕佽缃笂绾х殑涓婚敭
+
+ classifyDO.setParentCodeClassifyOid(catchedOidPathMap.containsKey(parentPath)?catchedOidPathMap.get(parentPath):pathDOMap.get(parentPath).getOid());
+ }
+ if(classifyDO.getPath().equalsIgnoreCase(classifyDO.getId()) && StringUtils.isBlank(classifyDO.getBtmTypeId())){
+ throw new VciBaseException("鍒嗙被缂栧彿[{0}],鍒嗙被鍚嶇О[{1}]锛屾槸椤跺眰鍒嗙被锛岄渶瑕佽缃笟鍔$被鍨嬬紪鍙�",new String[]{classifyDO.getId(),classifyDO.getName()});
+ }
+ if(pathDOMap.containsKey(classifyDO.getPath())){
+ //瀛樺湪锛岄渶瑕佷慨鏀瑰璞�
+ classifyDO.setOid(catchedOidPathMap.get(classifyDO.getPath()));
+ CodeClassifyDO classifyDOInDB = pathDOMap.get(classifyDO.getPath());
+ classifyDOInDB.setId(classifyDO.getId());
+ classifyDOInDB.setName(classifyDO.getName());
+ classifyDOInDB.setDescription(classifyDO.getDescription());
+ classifyDOInDB.setBtmTypeId(classifyDO.getBtmTypeId());
+ classifyDOInDB.setBtmTypeName(classifyDO.getBtmTypeName());
+ classifyDOInDB.setCodeRuleOid(classifyDO.getCodeRuleOid());
+ classifyDOInDB.setCodeRuleOidName(classifyDO.getCodeRuleOidName());
+ classifyDOInDB.setParentCodeClassifyOid(classifyDO.getParentCodeClassifyOid());
+ classifyDOInDB.setCodeKeyAttrRepeatOid(classifyDO.getCodeKeyAttrRepeatOid());
+ classifyDOInDB.setCodeKeyAttrRepeatOidName(classifyDO.getCodeKeyAttrRepeatOidName());
+ if(classifyDOInDB.getOrderNum() == null){
+ classifyDOInDB.setOrderNum(0);
+ }
+ editClassifyDOList.add(classifyDOInDB);
+ }else{
+ //鏄柊鐨勶紝鐩存帴娣诲姞灏辫浜�
+ //鍒ゆ柇鍙锋�庝箞澶勭悊?
+ classifyDO.setOrderNum(0);
+ addClassifyDOList.add(classifyDO);
+ }
+ });
+ if(!CollectionUtils.isEmpty(editClassifyDOList)){
+ VciBaseUtil.switchCollectionForOracleIn(editClassifyDOList).stream().forEach(classifyDOs->{
+ codeClassifyMapper.batchUpdate(classifyDOs.stream().collect(Collectors.toList()));
+ });
+ }
+ if(!CollectionUtils.isEmpty(addClassifyDOList)){
+ revisionModelUtil.wrapperForBatchAdd(addClassifyDOList);
+ VciBaseUtil.switchCollectionForOracleIn(addClassifyDOList).stream().forEach(classifyDOs->{
+ codeClassifyMapper.batchInsert(classifyDOs.stream().collect(Collectors.toList()));
+ });
+ }
+
+ }
+
+ /**
+ * 鑾峰彇鍒嗙被鍏宠仈鐨勫睘鎬�
+ *
+ * @param baseQueryObject 鏌ヨ瀵硅薄锛屽繀椤绘湁codeClassifyOid锛屾敮鎸乮d鍜宯ame涓ょ鏌ヨ鏉′欢
+ * @return 灞炴�х殑淇℃伅锛屽寘鍚粯璁ょ殑灞炴��
+ */
+ @Override
+ public DataGrid<OsAttributeVO> listClassifyLinkAttr(BaseQueryObject baseQueryObject) {
+ if(baseQueryObject == null){
+ baseQueryObject = new BaseQueryObject();
+ }
+ if(baseQueryObject.getConditionMap() == null){
+ baseQueryObject.setConditionMap(new HashMap<>());
+ }
+ String classifyOid = baseQueryObject.getConditionMap().getOrDefault("codeClassifyOid","");
+ String id = baseQueryObject.getConditionMap().getOrDefault("id","");
+ String name = baseQueryObject.getConditionMap().getOrDefault("name","");
+ if(StringUtils.isBlank(classifyOid)){
+ return new DataGrid<>();
+ }
+ CodeClassifyVO topClassifyVO = getTopClassifyVO(classifyOid);
+ if(topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmtypeid())){
+ return new DataGrid<>();
+ }
+ List<OsBtmTypeAttributeVO> unDefaultAttributes = btmService.listAttributeByBtmId(topClassifyVO.getBtmtypeid());
+ List<OsAttributeVO> attributeVOS = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(unDefaultAttributes)){
+ unDefaultAttributes.stream().forEach(attr->{
+ OsAttributeVO attributeVO = new OsAttributeVO();
+ BeanUtil.convert(attr,attributeVO);
+ attributeVO.setAttributeDataType(attr.getAttrDataType());
+ attributeVO.setAttrLength(attr.getAttributeLength());
+ attributeVO.setBtmTypeId(attr.getReferBtmTypeId());
+ attributeVO.setBtmTypeName(attr.getReferBtmTypeName());
+ boolean add = true;
+ if(StringUtils.isNotBlank(id) && !attributeVO.getId().contains(id.replace("*",""))){
+ add = false;
+ }
+ if(StringUtils.isNotBlank(name) && !attributeVO.getId().contains(name.replace("*",""))){
+ add = false;
+ }
+ if(add){
+ attributeVOS.add(attributeVO);
+ }
+ });
+ }
+ if(!CollectionUtils.isEmpty(attributeService.getDefaultAttributeVOs())){
+ attributeService.getDefaultAttributeVOs().stream().forEach(attr->{
+ boolean add = true;
+ if(StringUtils.isNotBlank(id) && !attr.getId().contains(id.replace("*",""))){
+ add = false;
+ }
+ if(StringUtils.isNotBlank(name) && !attr.getId().contains(name.replace("*",""))){
+ add = false;
+ }
+ if(add){
+ attributeVOS.add(attr);
+ }
+ });
+ }
+ DataGrid<OsAttributeVO> dataGrid = new DataGrid<>();
+ dataGrid.setData(attributeVOS);
+ dataGrid.setTotal(attributeVOS.size());
+ return dataGrid;
+ }
+
+ /**
+ * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
+ *
+ * @param idPath 缂栧彿鐨勮矾寰勶紝涓�瀹氳浠庢渶椤跺眰鑺傜偣寮�濮嬶紝鏍煎紡涓簒xx/yyy/zz 杩欐牱
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ @Override
+ public CodeClassifyVO getObjectByIdPath(String idPath) {
+ CodeClassifyDO classifyDO = codeClassifyMapper.selectByFieldPath(idPath, VciQueryWrapperForDO.ID_FIELD);
+ return codeClassifyDO2VO(classifyDO);
+ }
+ /**
+ * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
+ *
+ * @param clsfNamePath 缂栧彿鐨勮矾寰勶紝涓�瀹氳浠庢渶椤跺眰鑺傜偣寮�濮嬶紝鏍煎紡涓簒xx/yyy/zz 杩欐牱
+ * @return 鍒嗙被鐨勬樉绀哄璞�
+ */
+ @Override
+ public CodeClassifyVO getObjectByClsfNamePath(String clsfNamePath){
+ CodeClassifyDO classifyDO = codeClassifyMapper.selectByFieldPath(clsfNamePath, "name");
+ return codeClassifyDO2VO(classifyDO);
+ }
+
+ /***
+ * 鏍规嵁涓婄骇鑺傜偣鑾峰彇涓嬬骇鑺傜偣浠e彿璺緞鍜屽悕绉拌矾寰�
+ * @param classifyId
+ * @param enable
+ * @return
+ */
+ @Override
+ public List<CodeClassifyVO> getIdPathToNamePathByParentId(String codeClassifyId,boolean enable){
+
+ List<CodeClassifyDO> classifyDOs= codeClassifyMapper.getIdPathToNamePathByParentId(codeClassifyId,enable);
+ return codeClassifyDO2VOs(classifyDOs);
+
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTempMapItemServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTempMapItemServiceImpl.java
new file mode 100644
index 0000000..33a6cc0
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTempMapItemServiceImpl.java
@@ -0,0 +1,295 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.dao.CodeClassifyTempMapItemDaoI;
+import com.vci.mdm.dto.CodeClassifyTempMapItemDTO;
+import com.vci.mdm.model.CodeClassifyTempMapItemDO;
+import com.vci.mdm.pagemodel.CodeClassifyTempMapItemVO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.service.CodeClassifyTempMapItemServiceI;
+import com.vci.mdm.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鏄犲皠瑙勫垯鐨勬槑缁嗘湇鍔�
+ * @author weidy
+ * @date 2022-03-10
+ */
+@Service
+public class CodeClassifyTempMapItemServiceImpl implements CodeClassifyTempMapItemServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTempMapItemDaoI codeClassifyTempMapItemMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 鍒嗙被妯℃澘灞炴�х殑鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateAttrServiceI attrService;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTempMapItemVO> gridCodeClassifyTempMapItem(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeClassifyTempMapItemDO> doList = codeClassifyTempMapItemMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeClassifyTempMapItemVO> dataGrid=new DataGrid<CodeClassifyTempMapItemVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ //濉厖鏄犲皠鏄庣粏涓垎绫绘ā鏉垮睘鎬х殑鍊�
+ List<String> attrOidList = doList.stream().map(CodeClassifyTempMapItemDO::getClassifyTemplateAttrOid).collect(Collectors.toList());
+ List<CodeClassifyTemplateAttrVO> attrVOS = (List<CodeClassifyTemplateAttrVO>) attrService.listCodeClassifyTemplateAttrByOids(attrOidList);
+ attrVOS.forEach(attr -> {
+ doList.stream().filter(item -> {
+ return item.getClassifyTemplateAttrOid().equals(attr.getOid());
+ }).forEach(item -> {
+ item.setClassifyAttrId(attr.getId());
+ item.setClassifyAttrName(attr.getName());
+ });
+ });
+ dataGrid.setData(codeClassifyTempMapItemDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTempMapItemMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTempMapItemDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTempMapItemVO> codeClassifyTempMapItemDO2VOs(Collection<CodeClassifyTempMapItemDO> codeClassifyTempMapItemDOs) throws VciBaseException{
+ List<CodeClassifyTempMapItemVO> voList = new ArrayList<CodeClassifyTempMapItemVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyTempMapItemDOs)){
+ for(CodeClassifyTempMapItemDO s: codeClassifyTempMapItemDOs){
+ CodeClassifyTempMapItemVO vo = codeClassifyTempMapItemDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTempMapItemDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTempMapItemVO codeClassifyTempMapItemDO2VO(CodeClassifyTempMapItemDO codeClassifyTempMapItemDO) throws VciBaseException{
+ CodeClassifyTempMapItemVO vo = new CodeClassifyTempMapItemVO();
+ if(codeClassifyTempMapItemDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTempMapItemDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTempMapItemVO addSave(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTempMapItemDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTempMapItemDO codeClassifyTempMapItemDO = new CodeClassifyTempMapItemDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTempMapItemDTO,codeClassifyTempMapItemDO);
+ codeClassifyTempMapItemMapper.insert(codeClassifyTempMapItemDO);
+ return codeClassifyTempMapItemDO2VO(codeClassifyTempMapItemDO);
+ }
+
+ /**
+ * 淇敼鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTempMapItemVO editSave(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTempMapItemDTO,"鏁版嵁瀵硅薄",codeClassifyTempMapItemDTO.getOid(),"鏄犲皠瑙勫垯鐨勬槑缁嗕富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTempMapItemDO codeClassifyTempMapItemDO = selectByOid(codeClassifyTempMapItemDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyTempMapItemDTO,codeClassifyTempMapItemDO);
+ codeClassifyTempMapItemMapper.updateByPrimaryKey(codeClassifyTempMapItemDO);
+ return codeClassifyTempMapItemDO2VO(codeClassifyTempMapItemDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyTempMapItemDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyTempMapItemDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO, CodeClassifyTempMapItemDO codeClassifyTempMapItemDO) {
+ CodeClassifyTempMapItemDO tsDO = new CodeClassifyTempMapItemDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTempMapItemDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(codeClassifyTempMapItemDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param codeClassifyTempMapItemDTO 鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyTempMapItem(CodeClassifyTempMapItemDTO codeClassifyTempMapItemDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTempMapItemDTO,"鏄犲皠瑙勫垯鐨勬槑缁嗘暟鎹璞�",codeClassifyTempMapItemDTO.getOid(),"鏄犲皠瑙勫垯鐨勬槑缁嗙殑涓婚敭");
+ CodeClassifyTempMapItemDO codeClassifyTempMapItemDO = selectByOid(codeClassifyTempMapItemDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyTempMapItemDTO,codeClassifyTempMapItemDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyTempMapItemMapper.deleteByPrimaryKey(codeClassifyTempMapItemDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param oid 涓婚敭
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTempMapItemVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyTempMapItemDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyTempMapItemDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTempMapItemDO codeClassifyTempMapItemDO = codeClassifyTempMapItemMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyTempMapItemDO == null || StringUtils.isBlank(codeClassifyTempMapItemDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyTempMapItemDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鏄犲皠瑙勫垯鐨勬槑缁�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyTempMapItemVO> listCodeClassifyTempMapItemByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyTempMapItemDO> codeClassifyTempMapItemDOList = listCodeClassifyTempMapItemDOByOidCollections(oidCollections);
+ return codeClassifyTempMapItemDO2VOs(codeClassifyTempMapItemDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyTempMapItemDO> listCodeClassifyTempMapItemDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyTempMapItemDO> codeClassifyTempMapItemDOList = new ArrayList<CodeClassifyTempMapItemDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyTempMapItemDO> tempDOList = codeClassifyTempMapItemMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyTempMapItemDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyTempMapItemDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鏄犲皠瑙勫垯鐨勬槑缁嗗垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鏄犲皠瑙勫垯鐨勬槑缁嗘樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTempMapItemVO> refDataGridCodeClassifyTempMapItem(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeClassifyTempMapItem(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
new file mode 100644
index 0000000..03b952c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -0,0 +1,726 @@
+package org.springblade.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodeClassifyTemplateAttrDaoI;
+import com.vci.mdm.dao.CodeClassifyTemplateDaoI;
+import com.vci.mdm.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.mdm.enumpack.CodeLevelTypeEnum;
+import com.vci.mdm.model.CodeClassifyTemplateAttrDO;
+import com.vci.mdm.model.CodeClassifyTemplateDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.mdm.service.CodeTemplatePhaseServiceI;
+import com.vci.mdm.utils.PatternUtil;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.OsBtmTypeAttributeVO;
+import com.vci.web.pageModel.UIFormReferVO;
+import com.vci.web.service.BdSelectInputCharServiceI;
+import com.vci.web.service.OsAttributeServiceI;
+import com.vci.web.service.OsBtmServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+/**
+ * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyTemplateAttrServiceImpl implements CodeClassifyTemplateAttrServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateAttrDaoI codeClassifyTemplateAttrMapper;
+
+ /**
+ * 妯℃澘鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateDaoI codeClassifyTemplateMapper;
+
+ /**
+ * 妯℃澘鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeTemplatePhaseServiceI codeTemplatePhaseServiceI;
+
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 鏌ヨ杩欎釜涓氬姟绫诲瀷鐨勬墍鏈夊睘鎬�
+ */
+ @Autowired
+ private OsBtmServiceI btmService;
+
+ /**
+ * 鍙�夊彲杈撴湇鍔�
+ */
+ @Autowired
+ private BdSelectInputCharServiceI charService;
+
+ /**
+ * 灞炴�х殑鏈嶅姟
+ */
+ @Autowired
+ private OsAttributeServiceI attributeService;
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<CodeClassifyTemplateAttrVO>();
+ //娌℃湁浼犻�掑弬鏁帮紝灏变笉鎵ц鏌ヨ閫昏緫
+ if(conditionMap.size()==0){
+ dataGrid.setData(new ArrayList<>());
+ dataGrid.setTotal(0);
+ return dataGrid;
+ }
+
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultAsc("ordernum");
+ List<CodeClassifyTemplateAttrDO> doList = codeClassifyTemplateAttrMapper.selectByCondition(conditionMap,pageHelper);
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeClassifyTemplateAttrDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateAttrMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOs) throws VciBaseException{
+ List<CodeClassifyTemplateAttrVO> voList = new ArrayList<CodeClassifyTemplateAttrVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOs)){
+ for(CodeClassifyTemplateAttrDO s: codeClassifyTemplateAttrDOs){
+ CodeClassifyTemplateAttrVO vo = codeClassifyTemplateAttrDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO) throws VciBaseException{
+ CodeClassifyTemplateAttrVO vo = new CodeClassifyTemplateAttrVO();
+ if(codeClassifyTemplateAttrDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(vo.getAttributedatatype()));
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateAttrVO addSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = new CodeClassifyTemplateAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+ codeClassifyTemplateAttrMapper.insert(codeClassifyTemplateAttrDO);
+ return codeClassifyTemplateAttrDO2VO(codeClassifyTemplateAttrDO);
+ }
+
+ /**
+ * 鎵归噺娣诲姞
+ * @param codeClassifyTemplateAttrDTOs 鏁版嵁浼犺緭瀵硅薄
+ * @return 淇濆瓨鍚庣殑鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎵ц鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrVO> batchAddSave(List<CodeClassifyTemplateAttrDTO> codeClassifyTemplateAttrDTOs) throws VciBaseException{
+ if(CollectionUtils.isEmpty(codeClassifyTemplateAttrDTOs)){
+ return new ArrayList<>();
+ }
+
+ //鍙栨墍鏈夊睘鎬х殑鑻辨枃鍚嶇О锛岀涓変釜楠岃瘉闇�瑕佺敤鍒�
+ Map<String,CodeClassifyTemplateAttrDTO> attrDTOMap =codeClassifyTemplateAttrDTOs.stream().collect(Collectors.toMap(s->s.getId().toLowerCase(Locale.ROOT), t->t));
+
+ //鎵惧睘鎬т腑鏂囧悕瀛楅噸澶�
+ Map<String, Long> nameCountMap = codeClassifyTemplateAttrDTOs.stream().collect(Collectors.groupingBy(s -> s.getName(), Collectors.counting()));
+ List<String> repeatNameList = nameCountMap.keySet().stream().filter(s -> nameCountMap.get(s) > 1).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(repeatNameList)){
+ throw new VciBaseException("妯℃澘灞炴�т腑鏂囧悕绉般�恵0}銆戦噸澶�",new String[]{ repeatNameList.stream().collect(Collectors.joining(","))});
+ }
+ //鎵惧睘鎬ц嫳鏂囧悕瀛楅噸澶�
+ Map<String, Long> idCountMap = codeClassifyTemplateAttrDTOs.stream().collect(Collectors.groupingBy(s -> s.getId().toLowerCase(Locale.ROOT), Collectors.counting()));
+ List<String> repeatIdList = idCountMap.keySet().stream().filter(s -> idCountMap.get(s) > 1).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(repeatIdList)){
+ throw new VciBaseException("妯℃澘灞炴�ц嫳鏂囧悕绉般�恵0}銆戦噸澶�",new String[]{ repeatIdList.stream().collect(Collectors.joining(","))});
+ }
+
+ //妯℃澘oid
+ String CLASSIFYTEMPLATEOID = null;
+ //杞崲
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOInsert = new ArrayList<CodeClassifyTemplateAttrDO>();
+ List<String> prefix = new ArrayList<>();
+ List<String> suffix = new ArrayList<>();
+ List<String> dateFormates = new ArrayList<>();
+ for (CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO:codeClassifyTemplateAttrDTOs){
+ VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = new CodeClassifyTemplateAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+ codeClassifyTemplateAttrDOInsert.add(codeClassifyTemplateAttrDO);
+
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getPrefixValue())){
+ prefix.add(codeClassifyTemplateAttrDO.getPrefixValue());
+ }
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getSuffixValue())){
+ suffix.add(codeClassifyTemplateAttrDO.getSuffixValue());
+ }
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getCodeDateFormat())){
+ dateFormates.add(codeClassifyTemplateAttrDO.getCodeDateFormat());
+ }
+ //鍒ゆ柇浼犺繃鏉ョ殑鏋氫妇娉ㄥ叆鏄惁鏄痡sonArr鏍煎紡
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getEnumString())&&!checkKVArr(codeClassifyTemplateAttrDO.getEnumString())){
+ throw new VciBaseException("{0}{1}灞炴�х殑鏋氫妇娉ㄥ叆鏁版嵁鏍煎紡閿欒!",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+ }
+ //鍒嗙被娉ㄥ叆
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getClassifyInvokeAttr())
+ && !CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(codeClassifyTemplateAttrDO.getClassifyInvokeLevel())
+ && VciBaseUtil.getInt(codeClassifyTemplateAttrDO.getClassifyInvokeLevel()) < 0){
+ throw new VciBaseException("{0}{1}灞炴�х殑鏄垎绫绘敞鍏ワ紝浣嗘槸娉ㄥ叆灞傜骇涓嶈兘灏忎簬0!",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+ }
+
+ //鍒ゆ柇浼犺繃鏉ョ殑鍙傜収閰嶇疆鏄惁鏄痡son鏍煎紡
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getReferConfig())&&!checkKVObj(codeClassifyTemplateAttrDO.getReferConfig())){
+ throw new VciBaseException("{0}{1}灞炴�х殑鍙傜収閰嶇疆鏁版嵁鏍煎紡閿欒!",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+ }
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getCodeDateFormat()) && !checkDateFormat(codeClassifyTemplateAttrDO.getCodeDateFormat())){
+ throw new VciBaseException("{0}{1}灞炴�х殑鏃堕棿鏍煎紡涓嶇鍚堣姹�",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+ }
+ //濡傛灉鏄粍鍚堣鍒欙紝閲岄潰浣跨敤鐨勫睘鎬т笉鑳界己澶憋紝涔熼兘寰楁樉绀�
+ String componentrule = codeClassifyTemplateAttrDTO.getComponentrule();
+ boolean isContainsDynamicParameter = PatternUtil.isContainsDynamicParameter(componentrule);
+ if(isContainsDynamicParameter){
+ List<String> userdAttrList = PatternUtil.getKeyListByContent(componentrule);//鍖呭惈鐨勬墍鏈�${xxx}涓殑xxx
+ if(!CollectionUtils.isEmpty(userdAttrList)){
+ String unExistAttr = userdAttrList.stream().filter(s -> !attrDTOMap.containsKey(s.toLowerCase(Locale.ROOT))).collect(Collectors.joining(","));
+ if(StringUtils.isNotBlank(unExistAttr)){
+ throw new VciBaseException("{0}灞炴�ф槸缁勫悎瑙勫垯锛屼絾鏄鍒欓噷鍖呭惈鐨勫睘鎬{1}]鍦ㄥ綋鍓嶆ā鏉夸腑涓嶅瓨鍦�!",new String[]{codeClassifyTemplateAttrDO.getName(), unExistAttr});
+ }
+ //瑕佺湅鐪嬭〃鍗曟槸鍚︽樉绀�
+ String unFormDisplayAttr = userdAttrList.stream().filter(s -> !VciBaseUtil.getBoolean(attrDTOMap.getOrDefault(s.toLowerCase(Locale.ROOT),
+ new CodeClassifyTemplateAttrDTO()).getFormdisplayflag())).collect(Collectors.joining(","));
+ if(StringUtils.isNotBlank(unFormDisplayAttr)){
+ throw new VciBaseException("{0}灞炴�ф槸缁勫悎瑙勫垯锛屼絾鏄鍒欓噷鍖呭惈鐨勫睘鎬{1}]鍦ㄥ綋鍓嶆ā鏉夸腑娌℃湁璁剧疆 琛ㄥ崟鏄剧ず ",new String[]{codeClassifyTemplateAttrDO.getName(),unFormDisplayAttr});
+ }
+ }
+ }
+
+ if(CLASSIFYTEMPLATEOID==null){
+ CLASSIFYTEMPLATEOID = codeClassifyTemplateAttrDTO.getClassifytemplateoid();
+ }
+
+ }
+
+ //鎵ц鏁版嵁淇濆瓨鎿嶄綔
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+
+ //鍏堥兘鍒犱簡
+ VciQueryWrapperForDO deleteAttrWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ deleteAttrWrapper.addQueryMap("CLASSIFYTEMPLATEOID",CLASSIFYTEMPLATEOID);
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDODelete = codeClassifyTemplateAttrMapper.selectByWrapper(deleteAttrWrapper);
+
+ //oids
+ List<String> oids = new ArrayList<String>();
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDODelete){
+ oids.add(codeClassifyTemplateAttrDO.getOid());
+ }
+ BatchCBO batchCBOTemplateDelete = new BatchCBO();
+ if(!CollectionUtils.isEmpty(oids)){
+ batchCBOTemplateDelete = codeClassifyTemplateAttrMapper.batchDeleteByOids(oids);
+ }
+
+ //鍐嶆柊澧�
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOInsert)){
+ BatchCBO batchCBOTemplateAdd = codeClassifyTemplateAttrMapper.batchInsert(codeClassifyTemplateAttrDOInsert);
+ batchCBOTemplateDelete.copyFromOther(batchCBOTemplateAdd);
+ }
+
+ //璋冪敤闃舵
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOInsert)){
+ BatchCBO batchCBO0 = codeTemplatePhaseServiceI.codeTemplateAttrModifyTrigger(codeClassifyTemplateAttrDOInsert);
+ batchCBOTemplateDelete.copyFromOther(batchCBO0);
+ }
+
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ //澶勭悊鍙緭鍙�夌殑瀛楃
+ if(!CollectionUtils.isEmpty(prefix)){
+ charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"prefix",prefix,sessionInfo);
+ }
+ if(!CollectionUtils.isEmpty(suffix)){
+ charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"suffix",suffix,sessionInfo);
+ }
+ if(!CollectionUtils.isEmpty(dateFormates)){
+ charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"dateFormates",dateFormates,sessionInfo);
+ }
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBOTemplateDelete);//涓�璧锋墽琛屼繚瀛�
+ return codeClassifyTemplateAttrDO2VOs(codeClassifyTemplateAttrDOInsert);
+ }
+
+ /**
+ * 淇敼涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public BaseResult editSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateAttrDTO.getOid(),"涓婚搴撳垎绫荤殑妯℃澘灞炴�т富閿�");
+
+ //鍒ゆ柇浼犺繃鏉ョ殑鏋氫妇娉ㄥ叆鏄惁鏄痡sonArr鏍煎紡
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDTO.getEnumString())&&!checkKVArr(codeClassifyTemplateAttrDTO.getEnumString())){
+ throw new VciBaseException("鏋氫妇娉ㄥ叆鏁版嵁鏍煎紡閿欒!");
+ }
+
+ //鍒ゆ柇浼犺繃鏉ョ殑鍙傜収閰嶇疆鏄惁鏄痡son鏍煎紡
+ if(StringUtils.isNotBlank(codeClassifyTemplateAttrDTO.getReferbtmid())&&!checkKVObj(codeClassifyTemplateAttrDTO.getReferbtmid())){
+ throw new VciBaseException("鏋氫妇娉ㄥ叆鏁版嵁鏍煎紡閿欒!");
+ }
+
+
+ //妫�鏌s
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDOCopyFromDTO = new CodeClassifyTemplateAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDOCopyFromDTO);
+ boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOCopyFromDTO);
+ if(!tsBoolean){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+ return BaseResult.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+ }
+
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = selectByOid(codeClassifyTemplateAttrDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+ codeClassifyTemplateAttrMapper.updateByPrimaryKey(codeClassifyTemplateAttrDO);
+ return BaseResult.success(codeClassifyTemplateAttrDO2VO(codeClassifyTemplateAttrDO));
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyTemplateAttrDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyTemplateAttrDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO, CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO) {
+ boService.checkTs(codeClassifyTemplateAttrDO);
+ if(!checkIsLinked(codeClassifyTemplateAttrDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyTemplateAttr(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞�",codeClassifyTemplateAttrDTO.getOid(),"涓婚搴撳垎绫荤殑妯℃澘灞炴�х殑涓婚敭");
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = selectByOid(codeClassifyTemplateAttrDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyTemplateAttrMapper.deleteByPrimaryKey(codeClassifyTemplateAttrDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param oid 涓婚敭
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateAttrVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyTemplateAttrDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyTemplateAttrDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = codeClassifyTemplateAttrMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyTemplateAttrDO == null || StringUtils.isBlank(codeClassifyTemplateAttrDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyTemplateAttrDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = listCodeClassifyTemplateAttrDOByOidCollections(oidCollections);
+ return codeClassifyTemplateAttrDO2VOs(codeClassifyTemplateAttrDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyTemplateAttrDO> listCodeClassifyTemplateAttrDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = new ArrayList<CodeClassifyTemplateAttrDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyTemplateAttrDO> tempDOList = codeClassifyTemplateAttrMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyTemplateAttrDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyTemplateAttrDOList;
+ }
+
+ /**
+ * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
+ }
+
+ /**
+ * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅鐨勬墍鏈夋湭閫夋嫨鐨勫睘鎬�
+ * @param baseQueryObject
+ * @return
+ */
+ @Override
+ public DataGrid<OsBtmTypeAttributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject){
+ if(baseQueryObject.getConditionMap() == null){
+ baseQueryObject.setConditionMap(new HashMap<>());
+ }
+ DataGrid<OsBtmTypeAttributeVO> dataGrid=new DataGrid<OsBtmTypeAttributeVO>();
+ //妯℃澘oid
+ String templateAttrOid = baseQueryObject.getConditionMap().get("oid");
+ String name = baseQueryObject.getConditionMap().getOrDefault("name","");
+ String id = baseQueryObject.getConditionMap().getOrDefault("id","");
+
+ //娌℃湁oid涓嶆墽琛岄�昏緫
+ if(StringUtils.isBlank(templateAttrOid)){
+ dataGrid.setData(new ArrayList<>());
+ dataGrid.setTotal(0);
+ return dataGrid;
+ }
+
+ //鏌ヨ妯℃澘瀵硅薄
+ CodeClassifyTemplateDO codeClassifyTemplateDO = codeClassifyTemplateMapper.selectByPrimaryKey(templateAttrOid);
+
+ //杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�
+ List<OsBtmTypeAttributeVO> boAttrs = this.btmService.listAttributeByBtmId(codeClassifyTemplateDO.getBtmTypeId());
+
+ //鎶婇粯璁ょ殑灞炴�т篃娣诲姞鍒癰oAttrs
+ if(boAttrs == null){
+ boAttrs = new ArrayList<>();
+ }
+ if(!CollectionUtils.isEmpty(attributeService.getDefaultAttributeVOs())){
+ List<OsBtmTypeAttributeVO> finalBoAttrs = boAttrs;
+ attributeService.getDefaultAttributeVOs().stream().forEach(attr-> {
+ OsBtmTypeAttributeVO attributeVO = new OsBtmTypeAttributeVO();
+ BeanUtil.convert(attr, attributeVO);
+ if (VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(attributeVO.getId())) {
+ attributeVO.setName("浼佷笟缂栫爜");
+ }
+ if ("name".equalsIgnoreCase(attributeVO.getId())) {
+ attributeVO.setName("闆嗗洟鐮�");
+ }
+ attributeVO.setAttrDataType(attr.getAttributeDataType());
+ attributeVO.setAttributeLength(attr.getAttrLength());
+ attributeVO.setReferBtmTypeId(attr.getBtmTypeId());
+ attributeVO.setReferBtmTypeName(attr.getBtmTypeName());
+ finalBoAttrs.add(attributeVO);
+ });
+ boAttrs = finalBoAttrs;
+ }
+
+ //杩欎釜妯℃澘涓嬪凡缁忔湁鐨勫睘鎬�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrMapper.selectByWrapper(queryWrapper);
+ List<String> btmOids = new ArrayList<String>();
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
+ btmOids.add(codeClassifyTemplateAttrDO.getId());
+ }
+
+ //杩囨护鎺夊凡缁忓瓨鍦ㄧ殑灞炴��
+ List<OsBtmTypeAttributeVO> boAttrss = new ArrayList<OsBtmTypeAttributeVO>();
+ for (OsBtmTypeAttributeVO osBtmTypeAttributeVO:boAttrs){
+ if(!btmOids.contains(osBtmTypeAttributeVO.getId())){
+ //鐪嬬湅鏄笉鏄湁妯$硦鏌ヨ
+ boolean inSearch = true;
+ if(StringUtils.isNotBlank(name) && !osBtmTypeAttributeVO.getName().contains(name.replace("*",""))){
+ inSearch = false;
+ }
+ if(StringUtils.isNotBlank(id) && !osBtmTypeAttributeVO.getId().contains(id.replace("*",""))){
+ inSearch = false;
+ }
+ if(inSearch) {
+ boAttrss.add(osBtmTypeAttributeVO);
+ }
+ }
+ }
+ dataGrid.setData(boAttrss);
+ dataGrid.setTotal(boAttrss.size());
+ return dataGrid;
+ }
+
+ /**
+ * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅宸查�夋嫨鐨勫睘鎬�
+ * @param baseQueryObject
+ * @return
+ */
+ @Override
+ public DataGrid<OsBtmTypeAttributeVO> codeClassifyTemplateAttrByBtmHave(BaseQueryObject baseQueryObject){
+ DataGrid<OsBtmTypeAttributeVO> dataGrid=new DataGrid<OsBtmTypeAttributeVO>();
+ //妯℃澘oid
+ String templateAttrOid = baseQueryObject.getConditionMap().get("oid");
+
+ //娌℃湁oid涓嶆墽琛岄�昏緫
+ if(StringUtils.isBlank(templateAttrOid)){
+ dataGrid.setData(new ArrayList<>());
+ dataGrid.setTotal(0);
+ return dataGrid;
+ }
+
+ //鏌ヨ妯℃澘瀵硅薄
+ CodeClassifyTemplateDO codeClassifyTemplateDO = codeClassifyTemplateMapper.selectByPrimaryKey(templateAttrOid);
+
+ //杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�
+ List<OsBtmTypeAttributeVO> boAttrs = this.btmService.listAttributeByBtmIdHasDefault(codeClassifyTemplateDO.getBtmTypeId());
+
+ //杩欎釜妯℃澘涓嬪凡缁忔湁鐨勫睘鎬�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrMapper.selectByWrapper(queryWrapper);
+ List<String> btmOids = new ArrayList<String>();
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
+ btmOids.add(codeClassifyTemplateAttrDO.getId());
+ }
+
+ //杩囨护鎺夐櫎浜嗚嚜韬殑鍒殑灞炴��
+ List<OsBtmTypeAttributeVO> boAttrss = new ArrayList<OsBtmTypeAttributeVO>();
+ for (OsBtmTypeAttributeVO osBtmTypeAttributeVO:boAttrs){
+ if(btmOids.contains(osBtmTypeAttributeVO.getId())){
+ boAttrss.add(osBtmTypeAttributeVO);
+ }
+ }
+ dataGrid.setData(boAttrss);
+ dataGrid.setTotal(boAttrss.size());
+ return dataGrid;
+ }
+ /**
+ * 鍚屾鍒板叾浠栨ā鏉�
+ * @param codeClassifyTemplateAttrDTO oid
+ * @return
+ */
+ @Override
+ public BaseResult copyto(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+
+ String templateAttrOid = codeClassifyTemplateAttrDTO.getOid();
+
+ //鏌ヨ鍑烘潵瑕佸鍒剁殑瀵硅薄
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO = selectByOid(templateAttrOid);
+ String id = codeClassifyTemplateAttrDO.getId();//鑻辨枃鍚嶇О
+ String classfyTemplateOid = codeClassifyTemplateAttrDO.getClassifyTemplateOid();
+
+ //鏌ヨ鍏朵粬id=id鐨勬ā鏉垮睘鎬�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ queryWrapper.addQueryMap("id",id);
+ //鎵�鏈塱d=id鐨勬ā鏉垮睘鎬�
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrMapper.selectByWrapper(queryWrapper);
+ //瑕佸垹闄ょ殑妯℃澘灞炴�х殑oids
+ List<String> deleteOids = new ArrayList<String>();
+ //瑕佷慨鏀圭殑妯℃澘灞炴�у璞�
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOListInsert = new ArrayList<CodeClassifyTemplateAttrDO>();
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDOi:codeClassifyTemplateAttrDOList){
+ String oid = codeClassifyTemplateAttrDOi.getOid();
+ String templateOldOid = codeClassifyTemplateAttrDOi.getClassifyTemplateOid();
+
+ CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDOInsert = new CodeClassifyTemplateAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,codeClassifyTemplateAttrDOInsert);
+ codeClassifyTemplateAttrDOInsert.setOid(oid);
+ codeClassifyTemplateAttrDOInsert.setClassifyTemplateOid(templateOldOid);
+ codeClassifyTemplateAttrDOListInsert.add(codeClassifyTemplateAttrDOInsert);
+
+ deleteOids.add(codeClassifyTemplateAttrDOi.getOid());
+ }
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+
+ //鍒犻櫎
+ BatchCBO batchCBOTemplateAttrDelete = codeClassifyTemplateAttrMapper.batchDeleteByOids(deleteOids);
+
+ //鍐嶆柊澧�
+ BatchCBO batchCBOTemplateAttrInsert = codeClassifyTemplateAttrMapper.batchInsert(codeClassifyTemplateAttrDOListInsert);
+ batchCBOTemplateAttrDelete.copyFromOther(batchCBOTemplateAttrInsert);
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBOTemplateAttrDelete);//涓�璧锋墽琛屼繚瀛�
+
+ return BaseResult.success();
+ }
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栨ā鏉跨殑灞炴��--鎵归噺
+ *
+ * @param templateOidCollection 妯℃澘鐨勪富閿�
+ * @return 灞炴�х殑淇℃伅
+ */
+ @Override
+ public List<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByTemplateOids(Collection<String> templateOidCollection) {
+ if(CollectionUtils.isEmpty(templateOidCollection)){
+ return new ArrayList<>();
+ }
+ List<CodeClassifyTemplateAttrDO> attrDOList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(templateOidCollection).stream().forEach(templateOids->{
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOids.toArray(new String[0])) + ")");
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("orderNum");
+ List<CodeClassifyTemplateAttrDO> attrDOS = codeClassifyTemplateAttrMapper.selectByCondition(conditionMap, pageHelper);
+ if(!CollectionUtils.isEmpty(attrDOS)){
+ attrDOList.addAll(attrDOS);
+ }
+ });
+ return codeClassifyTemplateAttrDO2VOs(attrDOList);
+ }
+
+ public boolean checkKVArr(String kvString){
+ boolean isKV = true;
+ try {
+ JSONObject.parseArray(kvString, KeyValue.class);
+ }catch (Exception e){
+ isKV=false;
+ }
+ return isKV;
+ }
+ public boolean checkKVObj(String kvString){
+ boolean isKV = true;
+ try {
+ JSONObject.parseObject(kvString, UIFormReferVO.class);
+ }catch (Exception e){
+ isKV=false;
+ }
+ return isKV;
+ }
+
+ /**
+ * 鏍¢獙鏃堕棿鏍煎紡
+ * @param dateFormat 鏃堕棿鏍煎紡
+ * @return true琛ㄧず鏍¢獙閫氳繃
+ */
+ public boolean checkDateFormat(String dateFormat){
+ try{
+ VciDateUtil.date2Str(new Date(),dateFormat);
+ return true;
+ }catch (Throwable e){
+ return false;
+ }
+ }
+
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java
new file mode 100644
index 0000000..baa6098
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java
@@ -0,0 +1,380 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.dao.CodeClassifyTemplateButtonDaoI;
+import com.vci.mdm.dto.CodeClassifyTemplateButtonDTO;
+import com.vci.mdm.model.CodeClassifyTemplateButtonDO;
+import com.vci.mdm.pagemodel.CodeButtonVO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateButtonVO;
+import com.vci.mdm.service.CodeButtonServiceI;
+import com.vci.mdm.service.CodeClassifyTemplateButtonServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+/**
+ * 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyTemplateButtonServiceImpl implements CodeClassifyTemplateButtonServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateButtonDaoI codeClassifyTemplateButtonMapper;
+
+ /**
+ * 鎸夐挳鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeButtonServiceI buttonService;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ final String[] classifyTemplateOid = {""};
+ if(conditionMap!=null){
+ conditionMap.forEach((key,value)->{
+ if("classifytemplateoid".equalsIgnoreCase(key)){
+ classifyTemplateOid[0] = value;
+ }
+ });
+ }
+ if(StringUtils.isBlank(classifyTemplateOid[0])){
+ return new DataGrid<>();
+ }
+
+ List<CodeClassifyTemplateButtonDO> doList = codeClassifyTemplateButtonMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeClassifyTemplateButtonVO> dataGrid=new DataGrid<CodeClassifyTemplateButtonVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeClassifyTemplateButtonDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateButtonMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateButtonDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOs) throws VciBaseException{
+ return codeClassifyTemplateButtonDO2VOs(codeClassifyTemplateButtonDOs,false);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateButtonDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasButtonVO 鏄惁鍖呭惈鎸夐挳鐨勪俊鎭�
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOs, boolean hasButtonVO) throws VciBaseException{
+ List<CodeClassifyTemplateButtonVO> voList = new ArrayList<CodeClassifyTemplateButtonVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOs)){
+ for(CodeClassifyTemplateButtonDO s: codeClassifyTemplateButtonDOs){
+ CodeClassifyTemplateButtonVO vo = codeClassifyTemplateButtonDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ if(hasButtonVO && !CollectionUtils.isEmpty(voList)){
+ //鑾峰彇鎸夐挳鐨勬樉绀哄璞�
+ List<CodeButtonVO> buttonVOList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClassifyTemplateButtonVO::getClassifybuttonoid).collect(Collectors.toList())).stream().forEach(buttonOids->{
+ buttonVOList.addAll(buttonService.listCodeButtonByOids(buttonOids));
+ });
+ Map<String, CodeButtonVO> buttonVOMap = Optional.ofNullable(buttonVOList).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ voList.stream().forEach(vo->{
+ vo.setButtonVO(buttonVOMap.getOrDefault(vo.getClassifybuttonoid(),null));
+ });
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateButtonDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateButtonVO codeClassifyTemplateButtonDO2VO(CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO) throws VciBaseException{
+ CodeClassifyTemplateButtonVO vo = new CodeClassifyTemplateButtonVO();
+ if(codeClassifyTemplateButtonDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateButtonDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateButtonVO addSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeClassifyTemplateButtonDTO.getClassifytemplateoid(),"妯℃澘鐨勪富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO = new CodeClassifyTemplateButtonDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
+ if(codeClassifyTemplateButtonDO.getOrderNum()== null){
+ //鏌ヨ鍏ㄩ儴
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("classifytemplateoid",codeClassifyTemplateButtonDTO.getClassifytemplateoid());
+ Long count = codeClassifyTemplateButtonMapper.countByCondition(conditionMap);
+ if(count == null){
+ count = 0L;
+ }
+ codeClassifyTemplateButtonDO.setOrderNum(Long.valueOf(count + 1L).intValue());
+ }
+ codeClassifyTemplateButtonMapper.insert(codeClassifyTemplateButtonDO);
+ return codeClassifyTemplateButtonDO2VO(codeClassifyTemplateButtonDO);
+ }
+
+ /**
+ * 淇敼涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateButtonVO editSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateButtonDTO.getOid(),"涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO = selectByOid(codeClassifyTemplateButtonDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
+ codeClassifyTemplateButtonMapper.updateByPrimaryKey(codeClassifyTemplateButtonDO);
+ return codeClassifyTemplateButtonDO2VO(codeClassifyTemplateButtonDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyTemplateButtonDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyTemplateButtonDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO, CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO) {
+ CodeClassifyTemplateButtonDO tsDO = new CodeClassifyTemplateButtonDO();
+ BeanUtil.convert(codeClassifyTemplateButtonDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(codeClassifyTemplateButtonDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param codeClassifyTemplateButtonDTO 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyTemplateButton(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽暟鎹璞�",codeClassifyTemplateButtonDTO.getOid(),"涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽殑涓婚敭");
+ CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO = selectByOid(codeClassifyTemplateButtonDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyTemplateButtonMapper.deleteByPrimaryKey(codeClassifyTemplateButtonDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateButtonVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyTemplateButtonDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyTemplateButtonDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO = codeClassifyTemplateButtonMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyTemplateButtonDO == null || StringUtils.isBlank(codeClassifyTemplateButtonDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyTemplateButtonDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyTemplateButtonVO> listCodeClassifyTemplateButtonByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = listCodeClassifyTemplateButtonDOByOidCollections(oidCollections);
+ return codeClassifyTemplateButtonDO2VOs(codeClassifyTemplateButtonDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyTemplateButtonDO> listCodeClassifyTemplateButtonDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = new ArrayList<CodeClassifyTemplateButtonDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyTemplateButtonDO> tempDOList = codeClassifyTemplateButtonMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyTemplateButtonDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyTemplateButtonDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓婚搴撻噷妯℃澘鍖呭惈鐨勬寜閽樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeClassifyTemplateButton(conditionMap,pageHelper);
+ }
+
+ /**
+ * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+ *
+ * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ @Override
+ public BatchCBO codeTemplateDeleteTrigger(String classifyTemplateOid) {
+ BatchCBO batchCBO = new BatchCBO();
+ if(StringUtils.isNotBlank(classifyTemplateOid)){
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("classifyTemplateOid",classifyTemplateOid);
+ List<CodeClassifyTemplateButtonDO> templateButtonDOS = codeClassifyTemplateButtonMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if(!CollectionUtils.isEmpty(templateButtonDOS)){
+ batchCBO.copyFromOther(codeClassifyTemplateButtonMapper.batchDeleteByOids(templateButtonDOS.stream().map(CodeClassifyTemplateButtonDO::getOid).collect(Collectors.toList())));
+ }
+ }
+ return batchCBO;
+ }
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇鎵╁睍鐨勬寜閽�
+ *
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return 鎸夐挳鐨勭浉鍏崇殑淇℃伅
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonVO> listButtonByTemplateOid(String templateOid) {
+ return listButtonByTemplateOid(templateOid,false);
+ }
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇鎵╁睍鐨勬寜閽�
+ *
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @param hasButtonVO 鏄惁鍖呭惈鎸夐挳鐨勬樉绀轰俊鎭�
+ * @return 鎸夐挳鐨勭浉鍏崇殑淇℃伅
+ */
+ @Override
+ public List<CodeClassifyTemplateButtonVO> listButtonByTemplateOid(String templateOid, boolean hasButtonVO) {
+ if(StringUtils.isBlank(templateOid)){
+ return new ArrayList<>();
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("classifyTemplateOid",templateOid);
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("orderNum");
+ List<CodeClassifyTemplateButtonDO> templateButtonDOS = codeClassifyTemplateButtonMapper.selectByCondition(conditionMap, pageHelper);
+ return codeClassifyTemplateButtonDO2VOs(templateButtonDOS,hasButtonVO);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateMapServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateMapServiceImpl.java
new file mode 100644
index 0000000..5d88566
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateMapServiceImpl.java
@@ -0,0 +1,275 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.dao.CodeClassifyTemplateMapDaoI;
+import com.vci.mdm.dto.CodeClassifyTemplateMapDTO;
+import com.vci.mdm.model.CodeClassifyTemplateMapDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateMapVO;
+import com.vci.mdm.service.CodeClassifyTemplateMapServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyTemplateMapServiceImpl implements CodeClassifyTemplateMapServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateMapDaoI codeClassifyTemplateMapMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateMapVO> gridCodeClassifyTemplateMap(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeClassifyTemplateMapDO> doList = codeClassifyTemplateMapMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeClassifyTemplateMapVO> dataGrid=new DataGrid<CodeClassifyTemplateMapVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeClassifyTemplateMapDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateMapMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateMapDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateMapVO> codeClassifyTemplateMapDO2VOs(Collection<CodeClassifyTemplateMapDO> codeClassifyTemplateMapDOs) throws VciBaseException{
+ List<CodeClassifyTemplateMapVO> voList = new ArrayList<CodeClassifyTemplateMapVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateMapDOs)){
+ for(CodeClassifyTemplateMapDO s: codeClassifyTemplateMapDOs){
+ CodeClassifyTemplateMapVO vo = codeClassifyTemplateMapDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateMapDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateMapVO codeClassifyTemplateMapDO2VO(CodeClassifyTemplateMapDO codeClassifyTemplateMapDO) throws VciBaseException{
+ CodeClassifyTemplateMapVO vo = new CodeClassifyTemplateMapVO();
+ if(codeClassifyTemplateMapDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateMapDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+// if(true){
+// vo.setLcStatusText({lcStatusFullClassName}.getTextByValue(vo.getLcStatus()));
+// }
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateMapVO addSave(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateMapDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateMapDO codeClassifyTemplateMapDO = new CodeClassifyTemplateMapDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateMapDTO,codeClassifyTemplateMapDO);
+ codeClassifyTemplateMapMapper.insert(codeClassifyTemplateMapDO);
+ return codeClassifyTemplateMapDO2VO(codeClassifyTemplateMapDO);
+ }
+
+ /**
+ * 淇敼涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateMapVO editSave(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateMapDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateMapDTO.getOid(),"涓婚搴撴ā鏉挎槧灏勮鍒欎富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateMapDO codeClassifyTemplateMapDO = selectByOid(codeClassifyTemplateMapDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateMapDTO,codeClassifyTemplateMapDO);
+ codeClassifyTemplateMapMapper.updateByPrimaryKey(codeClassifyTemplateMapDO);
+ return codeClassifyTemplateMapDO2VO(codeClassifyTemplateMapDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyTemplateMapDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyTemplateMapDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO, CodeClassifyTemplateMapDO codeClassifyTemplateMapDO) {
+ if(!checkIsLinked(codeClassifyTemplateMapDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param codeClassifyTemplateMapDTO 涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyTemplateMap(CodeClassifyTemplateMapDTO codeClassifyTemplateMapDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateMapDTO,"涓婚搴撴ā鏉挎槧灏勮鍒欐暟鎹璞�",codeClassifyTemplateMapDTO.getOid(),"涓婚搴撴ā鏉挎槧灏勮鍒欑殑涓婚敭");
+ CodeClassifyTemplateMapDO codeClassifyTemplateMapDO = selectByOid(codeClassifyTemplateMapDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyTemplateMapDTO,codeClassifyTemplateMapDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyTemplateMapMapper.deleteByPrimaryKey(codeClassifyTemplateMapDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param oid 涓婚敭
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateMapVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyTemplateMapDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyTemplateMapDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateMapDO codeClassifyTemplateMapDO = codeClassifyTemplateMapMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyTemplateMapDO == null || StringUtils.isBlank(codeClassifyTemplateMapDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyTemplateMapDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓婚搴撴ā鏉挎槧灏勮鍒�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyTemplateMapVO> listCodeClassifyTemplateMapByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyTemplateMapDO> codeClassifyTemplateMapDOList = listCodeClassifyTemplateMapDOByOidCollections(oidCollections);
+ return codeClassifyTemplateMapDO2VOs(codeClassifyTemplateMapDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyTemplateMapDO> listCodeClassifyTemplateMapDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyTemplateMapDO> codeClassifyTemplateMapDOList = new ArrayList<CodeClassifyTemplateMapDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyTemplateMapDO> tempDOList = codeClassifyTemplateMapMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyTemplateMapDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyTemplateMapDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収涓婚搴撴ā鏉挎槧灏勮鍒欏垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓婚搴撴ā鏉挎槧灏勮鍒欐樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateMapVO> refDataGridCodeClassifyTemplateMap(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeClassifyTemplateMap(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateServiceImpl.java
new file mode 100644
index 0000000..afe04f8
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateServiceImpl.java
@@ -0,0 +1,1084 @@
+package org.springblade.code.service.impl;
+
+import com.vci.corba.common.VCIError;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.mdm.dao.*;
+import com.vci.mdm.dto.CodeClassifyTemplateDTO;
+import com.vci.mdm.lifecycle.CodeClassifyTemplateLC;
+import com.vci.mdm.model.*;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateVO;
+import com.vci.mdm.service.*;
+import com.vci.starter.revision.bo.TreeWrapperOptions;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciParentQueryOption;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+import plm.bs.bom.clientobject.ClientBusinessObjectOperation;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.*;
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+/**
+ * 鍒嗙被妯℃澘瀵硅薄鏈嶅姟
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyTemplateServiceImpl implements CodeClassifyTemplateServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateDaoI codeClassifyTemplateMapper;
+
+ /**
+ * 妯℃澘娴佺▼鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyProcessTempDaoI codeClassifyProcessTempDaoI;
+
+ /**
+ * 妯℃澘娴佺▼鎿嶄綔灞�
+ */
+ @Resource
+ private CodeTemplatePhaseDaoI codeTemplatePhaseDaoI;
+
+ /**
+ * 妯℃澘娴佺▼鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateButtonDaoI codeClassifyTemplateButtonDaoI;
+
+ /**
+ * 妯℃澘娴佺▼鎿嶄綔灞�
+ */
+ @Resource
+ private CodePhaseAttrDaoI codePhaseAttrDaoI;
+
+ /**
+ * 鍒嗙被
+ */
+ @Resource
+ private CodeClassifyDaoI codeClassifyDaoI;
+
+ /**
+ * 妯℃澘闃舵
+ */
+ @Resource
+ private CodeTemplatePhaseServiceI codeTemplatePhaseServiceI;
+
+ /**
+ * 妯℃澘娴佺▼
+ */
+ @Resource
+ private CodeClassifyProcessTempServiceI codeClassifyProcessTempServiceI;
+
+ /**
+ * 妯℃澘鎸夐挳
+ */
+ @Resource
+ private CodeClassifyTemplateButtonServiceI codeClassifyTemplateButtonServiceI;
+
+
+ /**
+ * 妯℃澘灞炴��
+ */
+ @Resource
+ private CodeClassifyTemplateAttrDaoI codeClassifyTemplateAttrDaoI;
+
+ /**
+ * 妯℃澘灞炴�х殑鏈嶅姟
+ */
+ @Lazy
+ @Autowired(required = false)
+ private CodeClassifyTemplateAttrServiceI templateAttrService;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
+ */
+ private static final String PARENT_FIELD_NAME = "";
+ /**
+ * 鏌ヨ鍒嗙被妯℃澘瀵硅薄 鏍�
+ * @param treeQueryObject 鏍戞煡璇㈠璞�
+ * @return 鍒嗙被妯℃澘瀵硅薄 鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢涓嶇鍚堣姹傜殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject) throws VciBaseException{
+ List<CodeClassifyTemplateDO> doList =selectCodeClassifyTemplateDOByTree(treeQueryObject);
+ List<CodeClassifyTemplateVO> voList = codeClassifyTemplateDO2VOs(doList);
+ TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
+ treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+ return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyTemplateVO s) ->{
+ //鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+ return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+ .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+ });
+ }
+ /**
+ * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyTemplateDO> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject) {
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null,CodeClassifyTemplateDO.class);
+ VciParentQueryOption parentQueryOption = new VciParentQueryOption();
+ parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
+ queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
+ return codeClassifyTemplateMapper.selectByWrapper(queryWrapperForDO);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplateDO> codeClassifyTemplateDOs) throws VciBaseException{
+ return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOs,false);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasAttr 鏄惁鍖呭惈灞炴��
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplateDO> codeClassifyTemplateDOs,boolean hasAttr) throws VciBaseException{
+ List<CodeClassifyTemplateVO> voList = new ArrayList<CodeClassifyTemplateVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateDOs)){
+ for(CodeClassifyTemplateDO s: codeClassifyTemplateDOs){
+ CodeClassifyTemplateVO vo = codeClassifyTemplateDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ if(hasAttr){
+ //涓�涓垎绫婚噷闈㈡�讳笉鑳借秴杩�1000涓敓鏁堢殑鐗堟湰鍚э紒锛侊紒
+ VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClassifyTemplateVO::getOid).collect(Collectors.toList())).forEach(tempOids->{
+ List<CodeClassifyTemplateAttrVO> attrVOList = templateAttrService.listCodeClassifyTemplateAttrByTemplateOids(tempOids);
+ if(!CollectionUtils.isEmpty(attrVOList)){
+ Map<String, List<CodeClassifyTemplateAttrVO>> attrVOMap = attrVOList.stream().collect(Collectors.groupingBy(s -> s.getClassifytemplateoid()));
+ voList.stream().forEach(templateVO->{
+ if(attrVOMap.containsKey(templateVO.getOid())){
+ templateVO.setAttributes(attrVOMap.get(templateVO.getOid()));
+ }
+ });
+ }
+ });
+
+ }
+ return voList;
+ }
+
+
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyTemplateDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateVO codeClassifyTemplateDO2VO(CodeClassifyTemplateDO codeClassifyTemplateDO) throws VciBaseException{
+ CodeClassifyTemplateVO vo = new CodeClassifyTemplateVO();
+ if(codeClassifyTemplateDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(CodeClassifyTemplateLC.getTextByValue(vo.getLcStatus()));
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public BaseResult<CodeClassifyTemplateVO> addSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateDO codeClassifyTemplateDO = new CodeClassifyTemplateDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDO);
+
+ //鏌ヨ鍒嗙被浠ュ強涓婄骇鍒嗙被鐨勪笟鍔$被鍨媌tmtypeid銆乥tmtypename
+ List<CodeClassifyDO> codeClassifyDOList = codeClassifyDaoI.selectAllLevelParents(codeClassifyTemplateDTO.getCodeclassifyoid());
+
+ //鎵�鏈夊垎绫婚兘娌℃湁涓氬姟绫诲瀷锛岃繑鍥炴彁绀�
+ if(codeClassifyDOList.size()==0){
+ return BaseResult.fail("娣诲姞妯℃澘娣诲姞澶辫触,鍒嗙被鍜屼笂绾у垎绫婚兘娌℃湁鍏宠仈涓氬姟绫诲瀷锛�");
+ }
+
+ //璁剧疆btmtypeid鍜宯ame
+ CodeClassifyDO codeClassifyDO = codeClassifyDOList.get(0);
+ codeClassifyTemplateDO.setBtmTypeId(codeClassifyDO.getBtmTypeId());
+ codeClassifyTemplateDO.setBtmTypeName(codeClassifyDO.getBtmTypeName());
+ codeClassifyTemplateDO.setLcStatus(FRAMEWORK_RELEASE_EDITING);
+ codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
+ //榛樿娣诲姞妯℃澘灞炴��
+// List<CodeClassifyTemplateAttrDO> attrDOList = new ArrayList<>();
+
+// CodeClassifyTemplateAttrDO codeAttr = new CodeClassifyTemplateAttrDO();
+// codeAttr.setId("id");
+// codeAttr.setName("浼佷笟缂栫爜");
+// codeAttr.setAttributeDataType("VTString");
+// codeAttr.setAttrTableWidth(150);
+// codeAttr.setOrderNum(1);
+// codeAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+// codeAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+// codeAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+// attrDOList.add(codeAttr);
+//
+//
+// CodeClassifyTemplateAttrDO groupAttr = new CodeClassifyTemplateAttrDO();
+// groupAttr.setId("name");
+// groupAttr.setName("闆嗗洟鐮�");
+// groupAttr.setAttributeDataType("VTString");
+// groupAttr.setAttrTableWidth(150);
+// groupAttr.setOrderNum(2);
+// groupAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+// groupAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+// groupAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+// attrDOList.add(groupAttr);
+//
+// CodeClassifyTemplateAttrDO descAttr = new CodeClassifyTemplateAttrDO();
+// descAttr.setId("description");
+// descAttr.setName("鎻忚堪");
+// descAttr.setAttrTableWidth(150);
+// descAttr.setAttributeDataType("VTString");
+// descAttr.setOrderNum(3);
+// descAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+// descAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+// descAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+// attrDOList.add(descAttr);
+//
+// CodeClassifyTemplateAttrDO statusAttr = new CodeClassifyTemplateAttrDO();
+// statusAttr.setId("lcstatus");
+// statusAttr.setName("鐘舵��");
+// statusAttr.setAttrTableWidth(70);
+// statusAttr.setOrderNum(4);
+// statusAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+// statusAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+// statusAttr.setAttributeDataType("VTString");
+// statusAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+// attrDOList.add(statusAttr);
+//
+//
+// CodeClassifyTemplateAttrDO secAttr = new CodeClassifyTemplateAttrDO();
+// secAttr.setId("secretgrade");
+// secAttr.setName("瀵嗙骇");
+// secAttr.setAttrTableWidth(70);
+// secAttr.setAttributeDataType(VciFieldTypeEnum.VTInteger.name());
+// secAttr.setEnumId("Enumsecretgrade");
+// secAttr.setEnumName("瀵嗙骇");
+// secAttr.setOrderNum(4);
+// secAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+// secAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+// secAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+// attrDOList.add(secAttr);
+
+ return BaseResult.success(codeClassifyTemplateDO2VO(codeClassifyTemplateDO));
+ }
+
+ /**
+ * 淇敼鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public BaseResult editSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄涓婚敭");
+ //妫�鏌s
+ CodeClassifyTemplateDO codeClassifyTemplateDOCopyFromDTO = new CodeClassifyTemplateDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDOCopyFromDTO);
+ boolean tsBoolean = boService.checkTs(codeClassifyTemplateDOCopyFromDTO);
+ if(!tsBoolean){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+ return BaseResult.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+ }
+
+ //灏咲TO杞崲涓篋O
+ CodeClassifyTemplateDO codeClassifyTemplateDO = selectByOid(codeClassifyTemplateDTO.getOid());
+ String lcstatus = codeClassifyTemplateDO.getLcStatus();
+ String versionvalue = codeClassifyTemplateDO.getVersionValue();
+
+ //鍙湁缂栬緫涓墠鑳戒慨鏀�
+ if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+ return BaseResult.fail("鍙湁缂栬緫涓殑锛屾ā鏉挎墠鑳戒慨鏀癸紒");
+ }
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateDTO,codeClassifyTemplateDO);
+ //涓嶄慨鏀圭増鏈彿鍜岀姸鎬�
+ codeClassifyTemplateDO.setLcStatus(lcstatus);
+ codeClassifyTemplateDO.setVersionValue(versionvalue);
+ codeClassifyTemplateMapper.updateByPrimaryKey(codeClassifyTemplateDO);
+ return BaseResult.success(codeClassifyTemplateDO2VO(codeClassifyTemplateDO));
+ }
+
+ /**
+ * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult checkIsCanDelete(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"鏁版嵁浼犺緭瀵硅薄",codeClassifyTemplateDTO.getOid(),"涓婚敭");
+ CodeClassifyTemplateDO codeClassifyTemplateDO = selectByOid(codeClassifyTemplateDTO.getOid());
+ return checkIsCanDeleteForDO(codeClassifyTemplateDTO,codeClassifyTemplateDO);
+ }
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyTemplateDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyTemplateDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyTemplateDTO codeClassifyTemplateDTO, CodeClassifyTemplateDO codeClassifyTemplateDO) {
+ CodeClassifyTemplateDO codeClassifyTemplateDOCopyFromDTO = new CodeClassifyTemplateDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDOCopyFromDTO);
+ boService.checkTs(codeClassifyTemplateDOCopyFromDTO);
+ //鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
+ if(checkChildIsLinked(codeClassifyTemplateDO.getOid())){
+ return BaseResult.fail(DATA_CASCADE_LINKED_NOT_DELETE,new String[]{""});
+ }
+ return BaseResult.success(checkHasChild(codeClassifyTemplateDO.getOid()));
+ }
+ /**
+ * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+ *
+ * @param oid 涓婚敭
+ * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+ * @throws VciBaseException 鍙傛暟涓虹┖鍜屾湁寮曠敤鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean checkChildIsLinked(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ List<String> childOids = codeClassifyTemplateMapper.selectAllLevelChildOid(oid.trim());
+ if(!CollectionUtils.isEmpty(childOids)){
+ for(String childOid: childOids){
+ if(!checkIsLinked(childOid)){
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+ *
+ * @param oid 涓婚敭
+ * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+ * @throws VciBaseException 鍙傛暟閿欒锛屾垨鑰呮暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean checkHasChild(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ return codeClassifyTemplateMapper.countAllLevelChildOid(oid.trim()) > 0;
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+ * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyTemplate(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+ checkIsCanDelete(codeClassifyTemplateDTO);
+ VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄",codeClassifyTemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄鐨勪富閿�");
+
+ CodeClassifyTemplateDO codeClassifyTemplateDO = selectByOid(codeClassifyTemplateDTO.getOid());
+
+ //鍙湁缂栬緫涓墠鑳藉垹
+ if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+ return BaseResult.fail("鍙湁缂栬緫涓殑锛屾ā鏉挎墠鑳藉垹闄わ紒");
+ }
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyTemplateDTO,codeClassifyTemplateDO);
+
+ //妯℃澘oid
+ String templateOid = codeClassifyTemplateDTO.getOid();
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ BatchCBO batchCBO = new BatchCBO();
+
+ if(baseResult.isSuccess()) {
+ //鎵句笅绾х殑锛岃繖涓槸鍙互鍒犻櫎鐨勬椂鍊�
+ List<String> childrenOids = codeClassifyTemplateMapper.selectAllLevelChildOid(codeClassifyTemplateDO.getOid().trim());
+ if (!CollectionUtils.isEmpty(childrenOids)) {
+ Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids);
+ for (Collection<String> s : childrenCollections) {
+ BatchCBO batchCBOi = codeClassifyTemplateMapper.batchDeleteByOids(s);
+ batchCBO.copyFromOther(batchCBOi);
+ }
+ }
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO_delete = codeClassifyTemplateMapper.deleteByPrimaryKey(codeClassifyTemplateDO.getOid());
+ batchCBO.copyFromOther(batchCBO_delete);
+
+ //鍒犻櫎妯℃澘灞炴��
+ VciQueryWrapperForDO templateQueryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ templateQueryWrapper.addQueryMap("classifyTemplateOid",templateOid);
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(templateQueryWrapper);
+
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)) {
+ List<String> templateAttrOids = new ArrayList<String>();
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
+ templateAttrOids.add(codeClassifyTemplateAttrDO.getOid());
+ }
+ BatchCBO batchCBO_templateAttr_delete = codeClassifyTemplateAttrDaoI.batchDeleteByOids(templateAttrOids);
+ batchCBO.copyFromOther(batchCBO_templateAttr_delete);
+ }
+
+ //璋冪敤妯℃澘闃舵鏂规硶
+ BatchCBO batchCBO_phase = codeTemplatePhaseServiceI.codeTemplateDeleteTrigger(templateOid);
+ batchCBO.copyFromOther(batchCBO_phase);
+
+
+
+ //璋冪敤妯℃澘鎸夐挳鏂规硶
+ BatchCBO batchCBO_button = codeClassifyTemplateButtonServiceI.codeTemplateDeleteTrigger(templateOid);
+ batchCBO.copyFromOther(batchCBO_button);
+
+ //璋冪敤妯℃澘娴佺▼鏂规硶
+ BatchCBO batchCBO_process = codeClassifyProcessTempServiceI.codeTemplateDeleteTrigger(templateOid);
+ batchCBO.copyFromOther(batchCBO_process);
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBO);//涓�璧锋墽琛屼繚瀛�
+
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyTemplateDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄(鍖呭惈灞炴�э級
+ *
+ * @param oid 涓婚敭
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyTemplateVO getObjectHasAttrByOid(String oid) throws VciBaseException {
+ List<CodeClassifyTemplateDO> doList = new ArrayList<>();
+ doList.add(selectByOid(oid));
+ List<CodeClassifyTemplateVO> templateVOS = codeClassifyTemplateDO2VOs(doList, true);
+ return CollectionUtils.isEmpty(templateVOS)?null:templateVOS.get(0);
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyTemplateDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyTemplateDO codeClassifyTemplateDO = codeClassifyTemplateMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyTemplateDO == null || StringUtils.isBlank(codeClassifyTemplateDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyTemplateDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被妯℃澘瀵硅薄
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyTemplateVO> listCodeClassifyTemplateByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyTemplateDO> codeClassifyTemplateDOList = listCodeClassifyTemplateDOByOidCollections(oidCollections);
+ return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyTemplateDO> listCodeClassifyTemplateDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyTemplateDO> codeClassifyTemplateDOList = new ArrayList<CodeClassifyTemplateDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyTemplateDO> tempDOList = codeClassifyTemplateMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyTemplateDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyTemplateDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<Tree> referTree(TreeQueryObject treeQueryObject) throws VciBaseException{
+ if(treeQueryObject == null){
+ treeQueryObject = new TreeQueryObject();
+ }
+ if(treeQueryObject.getConditionMap() == null){
+ treeQueryObject.setConditionMap(new HashMap<>());
+ }
+ if(treeQueryObject.getConditionMap().containsKey(LC_STATUS)) {
+ treeQueryObject.getConditionMap().remove(LC_STATUS);
+ }
+ treeQueryObject.getConditionMap().put(LC_STATUS,CodeClassifyTemplateLC.RELEASED.getValue());
+ return treeCodeClassifyTemplate(treeQueryObject);
+ }
+
+ /**
+ * 鍒嗙被妯℃澘鍒楄〃
+ *
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ DataGrid<CodeClassifyTemplateVO> dataGrid=new DataGrid<CodeClassifyTemplateVO>();
+ //娌℃湁浼犲垎绫籭d锛屼笉鎵ц鏌ヨ閫昏緫锛岀洿鎺ヨ繑鍥�
+ if(conditionMap.size()==0){
+ dataGrid.setData(new ArrayList<>());
+ dataGrid.setTotal(0);
+ return dataGrid;
+ }
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("revisionSeq");
+ List<CodeClassifyTemplateDO> doList = codeClassifyTemplateMapper.selectByCondition(conditionMap,pageHelper);
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeClassifyTemplateDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鍚敤銆佸仠鐢�
+ * @param oid
+ * @param lcStatus
+ * @return
+ */
+ @Override
+ public BaseResult updateLcStatus( String oid, String lcStatus){
+
+ //鍋滅敤鐨勬椂鍊欙紝楠岃瘉妯℃澘鏄惁涓哄凡鍙戝竷
+ if(CodeClassifyTemplateLC.DISABLED.getValue().equals(lcStatus)){
+ CodeClassifyTemplateDO codeClassifyTemplateDO = codeClassifyTemplateMapper.selectByPrimaryKey(oid);
+ if(!CodeClassifyTemplateLC.RELEASED.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+ return BaseResult.fail("妯℃澘鏈惎鐢紝涓嶈兘鍋滅敤锛�");
+ }
+ }
+ //鍚敤銆佸仠鐢�
+ int u = codeClassifyTemplateMapper.updateLcStatus(oid,lcStatus);
+
+ return u==0?BaseResult.error("淇敼澶辫触锛�"):BaseResult.success("淇敼鎴愬姛");
+ }
+
+ /**
+ * 鍗囩増
+ * @param codeClassifyDTO
+ */
+ @Override
+ public BaseResult Upgrade(CodeClassifyTemplateDTO codeClassifyDTO){
+
+ //鏃х殑妯℃澘oid
+ String templateOldOid = codeClassifyDTO.getOid();
+ //鍙湁宸插彂甯冪殑鎵嶈兘鍗囩増
+ CodeClassifyTemplateDO codeClassifyTemplateDOOld = codeClassifyTemplateMapper.selectByPrimaryKey(templateOldOid);
+ if(!FRAMEWORK_RELEASE_RELEASED.equals(codeClassifyTemplateDOOld.getLcStatus())){
+ return BaseResult.fail("璇ユā鏉挎湭鍙戝竷锛屼笉鑳藉崌鐗堬紒");
+ }
+
+ ClientBusinessObjectOperation clientBusinessObjectOperation = new ClientBusinessObjectOperation();
+
+ //闇�瑕佹柊澧炵殑鍗囩骇妯℃澘
+ ClientBusinessObject clientBusinessObject_template = boService.selectCBOByOid(codeClassifyDTO.getOid(), "codeclstemplate");
+ ClientBusinessObject clientBusinessObject_template_insert = null;
+ try {
+ clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
+ }catch (VCIError e){
+ e.printStackTrace();
+ logger.error("===============>鍒嗙被妯℃澘-鍗囩増澶嶅埗鍑洪敊oid锛� "+templateOldOid+",mes"+e.error_message);
+ return BaseResult.error("鍗囩増鍑洪敊");
+ }
+
+
+ CodeClassifyTemplateDO codeClassifyTemplateDO = new CodeClassifyTemplateDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyTemplateDO);
+ WebUtil.copyValueToObjectFromCbos(clientBusinessObject_template_insert,codeClassifyTemplateDO);
+ //modify by weidy@2022-2-27
+ //鍗囩増鍚庝笉鑳戒娇鐢╥nsert鏂规硶锛屽洜涓洪偅涓案杩滄槸鏂板涓�鏉℃暟鎹紝
+ //涓婃柟鍏堜粠dto杞粰do锛岀劧鍚庢妸鍗囩増鐨勫垵濮嬪寲鐨勫睘鎬ф嫹璐濈粰do锛屾渶鍚庡啀浠巇o鎷疯礉鍒癱bo涓�
+ WebUtil.copyValueToCboFromObj(clientBusinessObject_template_insert,codeClassifyTemplateDO);
+ //鍗囩増杩囧悗鐨勬ā鏉縪id
+ String templateNewOid = codeClassifyTemplateDO.getOid();
+
+ //闇�瑕佸鍒剁殑妯℃澘灞炴��
+ //鏌ヨ鑰佹ā鏉夸笅杈圭殑鎵�鏈夊睘鎬э紝璧嬪�兼柊妯℃澘oid
+ VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO :codeClassifyTemplateAttrDOList){
+ String attrOid = VciBaseUtil.getPk();
+ codeClassifyTemplateAttrDO.setOid(attrOid);
+ codeClassifyTemplateAttrDO.setClassifyTemplateOid(templateNewOid);
+ }
+
+ //澶嶅埗妯℃澘娴佺▼
+ List<CodeClassifyProcessTempDO> codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
+
+ //澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
+ Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
+
+ List<CodeTemplatePhaseDO> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhaseDO>)phase_attrMap.get("phase");//妯℃澘闃舵
+ List<CodePhaseAttrDO> codePhaseAttrDOList = (ArrayList<CodePhaseAttrDO>)phase_attrMap.get("phaseAttr");//闃舵灞炴��
+
+ //澶嶅埗妯℃澘鎸夐挳
+ List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
+
+ //涓�璧蜂繚瀛樻暟鎹�
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ //淇濆瓨妯℃澘
+ BatchCBO batchCBOTemplate = new BatchCBO();
+ //batchCBO淇濆瓨鐨勬椂鍊欐病鏈夎兘澶熻嚜鍔╱pdate婧愭暟鎹殑isLastR
+ //batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
+ //浣跨敤saveRevisionBuisnessObject鍙互瑙e喅杩欎釜闂锛岃繖閲屽厛鏆傛椂鎵ц涓ゆ淇濆瓨
+ try {
+ clientBusinessObjectOperation.saveRevisionBuinessObject(clientBusinessObject_template_insert);
+ } catch (VCIError vciError) {
+ throw new VciBaseException("鍗囩増淇濆瓨鍑洪敊浜�",new String[0],vciError);
+ }
+ // end --modify by lihang @20220408
+ //codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
+ //淇濆瓨妯℃澘灞炴��
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)){
+ BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
+ }
+
+ //淇濆瓨妯℃澘娴佺▼
+ if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOList)) {
+ BatchCBO batchCBOTemplateProcessAttr = codeClassifyProcessTempDaoI.batchInsert(codeClassifyProcessTempDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplateProcessAttr);
+ }
+ //妯℃澘闃舵
+ if(!CollectionUtils.isEmpty(codeClassifyPhaseDOList)) {
+ BatchCBO batchCBOTemplatePhaseAttr = codeTemplatePhaseDaoI.batchInsert(codeClassifyPhaseDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttr);
+ }
+
+ //妯℃澘闃舵灞炴��
+ if(!CollectionUtils.isEmpty(codePhaseAttrDOList)) {
+ BatchCBO batchCBOTemplatePhaseAttrAttr = codePhaseAttrDaoI.batchInsert(codePhaseAttrDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttrAttr);
+ }
+
+ //妯℃澘鎸夐挳
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOList)) {
+ BatchCBO batchCBOTemplateButtonAttr = codeClassifyTemplateButtonDaoI.batchInsert(codeClassifyTemplateButtonDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplateButtonAttr);
+ }
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+
+ boService.persistenceBatch(batchCBOTemplate);//涓�璧锋墽琛屼繚瀛�
+
+ return BaseResult.success("鍗囩増鎴愬姛锛�");
+ }
+
+ @Override
+ public BaseResult copyTemplate(CodeClassifyTemplateDTO codeClassifyDTO){
+
+ //鏃х殑妯℃澘oid
+ String oldOid = codeClassifyDTO.getOid();
+ //鏂扮殑妯℃澘oid
+ String newOid = VciBaseUtil.getPk();
+ //鍒嗙被oid,澶嶅埗杩囨潵鐨勬柊鐨勫垎绫籵id
+ String codeClassifyOid = codeClassifyDTO.getCodeclassifyoid();
+
+ //澶嶅埗妯℃澘
+ CodeClassifyTemplateDO codeClassifyTemplateDO_old = codeClassifyTemplateMapper.selectByPrimaryKey(oldOid);//鏃фā鏉�
+
+ //楠岃瘉锛屼笟鍔$被鍨嬫槸涓嶆槸涓�鑷�
+ CodeClassifyDO codeClassifyDO_old = codeClassifyDaoI.selectBtmOrParentBtm(codeClassifyTemplateDO_old.getCodeClassifyOid());
+ if(codeClassifyDO_old==null){
+ return BaseResult.fail("澶嶅埗鐨勬ā鏉挎墍灞炲垎绫讳互鍙婁笂绾ф病鏈変笟鍔$被鍨嬶紝璇烽噸鏂伴�夋嫨!");
+ }
+
+ //鎵惧綋鍓嶅垎绫讳笅鐨勪笟鍔$被鍨�
+ CodeClassifyDO codeClassifyDO_new = codeClassifyDaoI.selectBtmOrParentBtm(codeClassifyOid);
+ if(codeClassifyDO_new==null){
+ return BaseResult.fail("褰撳墠鍒嗙被娌℃湁涓氬姟绫诲瀷锛岃閲嶆柊閫夋嫨!");
+ }
+
+ if(!codeClassifyDO_old.getBtmTypeId().equals(codeClassifyDO_new.getBtmTypeId())){
+ return BaseResult.fail("閫夋嫨鐨勫垎绫诲拰褰撳墠鍒嗙被涓氬姟绫诲瀷涓嶄竴鑷达紝璇烽噸鏂伴�夋嫨!");
+ }
+
+ codeClassifyTemplateDO_old.setId(codeClassifyDTO.getId());//鑻辨枃鍚嶇О
+ codeClassifyTemplateDO_old.setName(codeClassifyDTO.getName());//涓枃鍚嶇О
+ codeClassifyTemplateDO_old.setDescription(codeClassifyDTO.getDescription());//鎻忚堪
+ codeClassifyTemplateDO_old.setCodeClassifyOid(codeClassifyOid);//鍒嗙被oid
+ codeClassifyTemplateDO_old.setOid(newOid);
+ List<CodeClassifyTemplateDO> codeClassifyTemplateDOList = new ArrayList<CodeClassifyTemplateDO>();
+ codeClassifyTemplateDOList.add(codeClassifyTemplateDO_old);
+
+ //澶嶅埗妯℃澘灞炴��
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = copyTemplateAttr(oldOid,newOid);
+
+ //澶嶅埗妯℃澘娴佺▼
+ List<CodeClassifyProcessTempDO> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
+
+ //澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
+ Map phase_attrMap = copyTemplatePhase_attr(oldOid,newOid);
+
+ List<CodeTemplatePhaseDO> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhaseDO>)phase_attrMap.get("phase");//妯℃澘闃舵
+ List<CodePhaseAttrDO> codePhaseAttrDOList = (ArrayList<CodePhaseAttrDO>)phase_attrMap.get("phaseAttr");//闃舵灞炴��
+
+ //澶嶅埗妯℃澘鎸夐挳
+ List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = copyTemplateButton(oldOid,newOid);
+
+ //涓�璧蜂繚瀛樻暟鎹�
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ //淇濆瓨妯℃澘
+ BatchCBO batchCBOTemplate = codeClassifyTemplateMapper.batchInsert(codeClassifyTemplateDOList);
+ //淇濆瓨妯℃澘灞炴��
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)) {
+ BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
+ }
+
+ //淇濆瓨妯℃澘娴佺▼
+ if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOList)) {
+ BatchCBO batchCBOTemplateProcessAttr = codeClassifyProcessTempDaoI.batchInsert(codeClassifyProcessTempDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplateProcessAttr);
+ }
+
+ //妯℃澘闃舵
+ if(!CollectionUtils.isEmpty(codeClassifyPhaseDOList)) {
+ BatchCBO batchCBOTemplatePhaseAttr = codeTemplatePhaseDaoI.batchInsert(codeClassifyPhaseDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttr);
+ }
+
+ //妯℃澘闃舵灞炴��
+ if(!CollectionUtils.isEmpty(codePhaseAttrDOList)) {
+ BatchCBO batchCBOTemplatePhaseAttrAttr = codePhaseAttrDaoI.batchInsert(codePhaseAttrDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttrAttr);
+ }
+
+ //妯℃澘鎸夐挳
+ if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOList)) {
+ BatchCBO batchCBOTemplateButtonAttr = codeClassifyTemplateButtonDaoI.batchInsert(codeClassifyTemplateButtonDOList);
+ batchCBOTemplate.copyFromOther(batchCBOTemplateButtonAttr);
+ }
+
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+
+ boService.persistenceBatch(batchCBOTemplate);//涓�璧锋墽琛屼繚瀛�
+ return BaseResult.success("澶嶅埗鎴愬姛锛�");
+
+ }
+
+ /**
+ * 浣跨敤涓婚搴撶殑鍒嗙被涓婚敭锛岃幏鍙栫敓鏁堢殑妯℃澘
+ *
+ * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
+ * @param hasAttribute 鏄惁鍖呭惈灞炴��
+ * @return 妯℃澘鐨勪俊鎭�
+ */
+ @Override
+ public List<CodeClassifyTemplateVO> listReleaseTemplateByClassifyOid(String codeClassifyOid, boolean hasAttribute) {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"涓婚搴撳垎绫讳富閿�");
+ List<CodeClassifyTemplateDO> templateDOS = selectOnlyTemplateByClassifyOid(codeClassifyOid);
+ if(CollectionUtils.isEmpty(templateDOS)){
+ throw new VciBaseException("褰撳墠鍒嗙被锛屼互鍙婂叾涓婄骇鍒嗙被閮芥病鏈夎缃ā鏉�");
+ }
+ List<CodeClassifyTemplateVO> templateVOList = codeClassifyTemplateDO2VOs(templateDOS, true);
+ return sortTemplateByRevision(templateVOList);
+ }
+
+ /**
+ * 鐢ㄦā鏉跨殑鐗堟湰鏉ユ帓搴�
+ * @param templateVOList 妯℃澘鐨勬樉绀哄璞�
+ * @return 鎺掑簭鍚庣殑鍒楄〃
+ */
+ @Override
+ public List<CodeClassifyTemplateVO> sortTemplateByRevision(List<CodeClassifyTemplateVO> templateVOList){
+ if(!CollectionUtils.isEmpty(templateVOList) && templateVOList.size() >1){
+ //鑾峰彇鐗堟湰鍙锋渶澶х殑閭d釜
+ templateVOList = templateVOList.stream().sorted((o1,o2)->
+ Integer.valueOf(o1.getRevisionSeq()).compareTo(Integer.valueOf(o2.getRevisionValue()))
+ ).collect(Collectors.toList());
+ }
+ return templateVOList;
+ }
+
+ /**
+ * 鏍¢獙瀛愬垎绫绘槸鍚︾浉鍚岀殑妯℃澘
+ *
+ * @param codeClassifyOid 鐖跺垎绫荤殑涓婚敭
+ * @return true琛ㄧず鐩稿悓
+ */
+ @Override
+ public boolean checkChildHasSameTemplate(String codeClassifyOid) {
+ Map<String/**妯℃澘鐨勪富閿�**/,String/**鍒嗙被鐨勪富閿�**/> childHasTemplateMap =codeClassifyTemplateMapper.selectChildHasReleaseTemplate(codeClassifyOid);
+ if(!CollectionUtils.isEmpty(childHasTemplateMap) && childHasTemplateMap.values().stream().collect(Collectors.toSet()).size()>1){
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ *鏍规嵁鐖跺垎绫籭d鍘绘煡鎵惧彾瀛愯妭鐐圭殑妯℃澘锛屽鏋滄病鏌ュ埌鍒欒涓烘ā鏉垮湪涓婂眰寤虹珛锛屽垯鏍规嵁鍒嗙被鍘绘煡褰撳墠妯℃澘
+ * @param codeClassifyOid 鐖跺垎绫荤殑涓婚敭
+ * @return
+ */
+ @Override
+ public List<CodeClassifyTemplateVO> childTemplates(String codeClassifyOid){
+ List<CodeClassifyTemplateVO> codeClassifyTemplateVOList=new ArrayList<>();
+ Map<String/**妯℃澘鐨勪富閿�**/,String/**鍒嗙被鐨勪富閿�**/> childHasTemplateMap =codeClassifyTemplateMapper.selectChildHasReleaseTemplate(codeClassifyOid);
+ Set<String> templateOid = childHasTemplateMap.keySet();
+ List<CodeClassifyTemplateDO> classifyTemplateDOS=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(templateOid)) {
+ classifyTemplateDOS= this.listCodeClassifyTemplateDOByOidCollections(templateOid);
+ }else{
+ classifyTemplateDOS=selectOnlyTemplateByClassifyOid(codeClassifyOid);
+ }
+ List<CodeClassifyTemplateVO> templateVOList = codeClassifyTemplateDO2VOs(classifyTemplateDOS, true);
+ if(!CollectionUtils.isEmpty(templateVOList)){
+ codeClassifyTemplateVOList.addAll(templateVOList);
+ }
+ return codeClassifyTemplateVOList;
+ }
+ /**
+ * 浣跨敤鍒嗙被涓婚敭閫掑綊鏌ヨ
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 妯℃澘鐨勬暟鎹璞�
+ */
+ private List<CodeClassifyTemplateDO> selectOnlyTemplateByClassifyOid(String codeClassifyOid){
+ //1.鐩存帴鏌ヨ锛岀湅鐪嬭繖涓垎绫讳笅闈㈡湁娌℃湁鍙戝竷鐘舵�佺殑妯℃澘
+ //2.濡傛灉娌℃湁锛屽垯寰�涓婃壘鍒嗙被鐨勫唴瀹癸紝杩欎釜鍒嗙被灞傜骇涓嶄細澶锛屾墍浠ョ洿鎺ラ�掑綊鍗冲彲
+ //3.濡傛灉鍒嗙被涓嬮潰娣诲姞浜嗘ā鏉匡紝浣嗘槸娌℃湁鍙戝竷锛屽垯璇存槑妯℃澘鍙兘杩樺湪缂栬緫鐨勭姸鎬侊紝渚濈劧浣跨敤涓婄骇鍒嗙被
+
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeClassifyOid",codeClassifyOid);
+ conditionMap.put("lcstatus",CodeClassifyTemplateLC.RELEASED.getValue());
+ List<CodeClassifyTemplateDO> templateDOS = codeClassifyTemplateMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if(CollectionUtils.isEmpty(templateDOS)){
+ //閫掑綊鎵句笂绾х殑妯℃澘
+ CodeClassifyDO classifyDO = codeClassifyDaoI.selectByPrimaryKey(codeClassifyOid);
+ if(StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
+ //璇存槑宸茬粡鏄《浜嗭紝涔熸病鎵惧埌鐨勮瘽锛岄偅灏辫繑鍥炰簡
+ return null;
+ }
+ return selectOnlyTemplateByClassifyOid(classifyDO.getParentCodeClassifyOid());
+ }else{
+ return templateDOS;
+ }
+ }
+
+ /**
+ * 澶嶅埗妯℃澘锛屾ā鏉垮睘鎬�
+ * @param templateOldOid
+ * @param templateNewOid
+ * @param codeClassifyDTO 妯℃澘鍚嶇О锛屾ā鏉跨紪鍙凤紝鎻忚堪
+ * @return map tamplate:(List<CodeClassifyTemplateDO>) templateAttr:(List<CodeClassifyTemplateAttrDO>)
+ */
+ public Map copyTemplate_attr(String templateOldOid,String templateNewOid,String codeckassfyOid,CodeClassifyTemplateDTO codeClassifyDTO){
+ templateNewOid = templateNewOid==null?VciBaseUtil.getPk():VciBaseUtil.getPk();
+ VciQueryWrapperForDO codeClassifyTemplateQuery = new VciQueryWrapperForDO(CodeClassifyTemplateDO.class);
+ codeClassifyTemplateQuery.addQueryMap("oid",templateOldOid);
+ List<CodeClassifyTemplateDO> codeClassifyTemplateDOList = codeClassifyTemplateMapper.selectByWrapper(codeClassifyTemplateQuery);
+ for (CodeClassifyTemplateDO codeClassifyTemplateDO:codeClassifyTemplateDOList){
+ codeClassifyTemplateDO.setOid(templateNewOid);
+ codeClassifyTemplateDO.setCodeClassifyOid(codeckassfyOid);
+ codeClassifyTemplateDO.setId(codeClassifyDTO.getId());
+ codeClassifyTemplateDO.setName(codeClassifyDTO.getName());
+ codeClassifyTemplateDO.setDescription(codeClassifyDTO.getDescription());
+
+ }
+
+ //澶嶅埗妯℃澘灞炴��
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = copyTemplateAttr(templateOldOid,templateNewOid);
+ Map template_attrMap = new HashMap();
+ template_attrMap.put("tamplate",codeClassifyTemplateDOList);
+ template_attrMap.put("templateAttr",codeClassifyTemplateAttrDOList);
+ return template_attrMap;
+ }
+
+ /**
+ * 澶嶅埗妯℃澘灞炴��
+ */
+ public List<CodeClassifyTemplateAttrDO> copyTemplateAttr(String templateOldOid,String templateNewOid){
+ VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+ codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
+ List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
+ for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO :codeClassifyTemplateAttrDOList){
+ String attrOid = VciBaseUtil.getPk();
+ codeClassifyTemplateAttrDO.setOid(attrOid);
+ codeClassifyTemplateAttrDO.setClassifyTemplateOid(templateNewOid);
+ }
+ return codeClassifyTemplateAttrDOList;
+ }
+
+ /**
+ * 澶嶅埗妯℃澘娴佺▼
+ */
+ public List<CodeClassifyProcessTempDO> copyTemplateProcess(String templateOldOid,String templateNewOid){
+ VciQueryWrapperForDO processWrapper = new VciQueryWrapperForDO(CodeClassifyProcessTempDO.class);
+ processWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
+ List<CodeClassifyProcessTempDO> codeClassifyProcessTempDOList = codeClassifyProcessTempDaoI.selectByWrapper(processWrapper);//瑕佷繚瀛樼殑鏂扮殑妯℃澘娴佺▼
+ for (CodeClassifyProcessTempDO codeClassifyProcessTempDO:codeClassifyProcessTempDOList){
+ String newOid = VciBaseUtil.getPk();
+ codeClassifyProcessTempDO.setOid(newOid);
+ //codeClassifyProcessTempDO.setCodeClassifyOid(templateNewOid);
+ codeClassifyProcessTempDO.setClassifyTemplateOid(templateNewOid);
+ //modify by lihang - @20220406 璁剧疆妯℃澘涓婚敭浣嶇疆鍑洪敊锛屽鑷村崌鐗堢殑妯℃澘涓殑娴佺▼鏄┖鐨勩��
+ }
+ return codeClassifyProcessTempDOList;
+ }
+
+ /**
+ * 澶嶅埗妯℃澘闃舵锛屾ā鏉垮睘鎬�
+ * @param templateOldOid
+ * @param templateNewOid
+ * @return map phase:(List<CodeTemplatePhaseDO>) phaseAttr:(List<CodePhaseAttrDO>)
+ */
+ public Map copyTemplatePhase_attr(String templateOldOid,String templateNewOid){
+ //妯℃澘闃舵
+ VciQueryWrapperForDO phaseWrapper = new VciQueryWrapperForDO(CodeTemplatePhaseDO.class);
+ phaseWrapper.addQueryMap("codeClassifyTemplateOid",templateOldOid);
+ List<CodeTemplatePhaseDO> codeClassifyPhaseDOList = codeTemplatePhaseDaoI.selectByWrapper(phaseWrapper);//瑕佷繚瀛樼殑鏂扮殑妯℃澘娴佺▼
+ Map<String,String> phaseKeyMap = new HashMap<String,String>();//闇�瑕佸鍒剁殑妯℃澘闃舵灞炴��,key:value,妯℃澘闃舵鑰乷id:妯℃澘灞炴�ф柊oid
+ List<String> phaseOidList = new ArrayList<String>();
+ for (CodeTemplatePhaseDO codeTemplatePhaseDO:codeClassifyPhaseDOList){
+ String oldoid = codeTemplatePhaseDO.getOid();
+ String newOid = VciBaseUtil.getPk();
+ codeTemplatePhaseDO.setOid(newOid);
+ codeTemplatePhaseDO.setCodeClassifyTemplateOid(templateNewOid);
+ phaseKeyMap.put(oldoid,newOid);
+ phaseOidList.add(oldoid);
+ }
+
+ //妯℃澘闃舵鐨勫睘鎬�
+ List<CodePhaseAttrDO> codePhaseAttrDOList = new ArrayList<CodePhaseAttrDO>();
+ if(!CollectionUtils.isEmpty(phaseOidList)){//size()==0涓嬭竟鏂规硶浼氭姤閿�
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codephaseoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(phaseOidList.toArray(new String[0])) + ")");
+ codePhaseAttrDOList = codePhaseAttrDaoI.selectByCondition(conditionMap,new PageHelper(-1));
+ }
+ for (CodePhaseAttrDO codePhaseAttrDO:codePhaseAttrDOList){
+ String oldPhaseoid = codePhaseAttrDO.getCodePhaseOid();
+ String newOid = VciBaseUtil.getPk();
+ codePhaseAttrDO.setOid(newOid);
+ codePhaseAttrDO.setCodePhaseOid(phaseKeyMap.get(oldPhaseoid));
+ }
+ Map phaseMap = new HashMap();
+ phaseMap.put("phase",codeClassifyPhaseDOList);
+ phaseMap.put("phaseAttr",codePhaseAttrDOList);
+ return phaseMap;
+ }
+
+ /**
+ * 澶嶅埗妯℃澘鎸夐挳
+ */
+ public List<CodeClassifyTemplateButtonDO> copyTemplateButton(String templateOldOid,String templateNewOid){
+ VciQueryWrapperForDO buttonWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateButtonDO.class);
+ buttonWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
+ List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = codeClassifyTemplateButtonDaoI.selectByWrapper(buttonWrapper);
+ for (CodeClassifyTemplateButtonDO codeClassifyTemplateButtonDO:codeClassifyTemplateButtonDOList){
+ String newOid = VciBaseUtil.getPk();
+ codeClassifyTemplateButtonDO.setOid(newOid);
+ codeClassifyTemplateButtonDO.setClassifyTemplateOid(templateNewOid);
+ }
+ return codeClassifyTemplateButtonDOList;
+ }
+
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyValueServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyValueServiceImpl.java
new file mode 100644
index 0000000..17b2161
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -0,0 +1,479 @@
+package org.springblade.code.service.impl;
+
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.mdm.dao.CodeBasicSecDaoI;
+import com.vci.mdm.dao.CodeClassifyValueDaoI;
+import com.vci.mdm.dto.CodeClassifyValueDTO;
+import com.vci.mdm.model.CodeBasicSecDO;
+import com.vci.mdm.model.CodeClassifyValueDO;
+import com.vci.mdm.pagemodel.CodeClassifyValueVO;
+import com.vci.mdm.service.CodeClassifyValueServiceI;
+import com.vci.starter.revision.bo.TreeWrapperOptions;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.pagemodel.Tree;
+import com.vci.starter.web.pagemodel.TreeQueryObject;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciParentQueryOption;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.LC_STATUS;
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+/**
+ * 鍒嗙被鐮佹鐨勭爜鍊兼湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyValueServiceImpl implements CodeClassifyValueServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyValueDaoI codeClassifyValueMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 鐮佹鐨勪俊鎭�
+ */
+ @Autowired
+ private CodeBasicSecDaoI basicSecMapper;
+
+ /**
+ * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
+ */
+ private static final String PARENT_FIELD_NAME = "parentClassifyValueOid";
+ /**
+ * 鏌ヨ鍒嗙被鐮佹鐨勭爜鍊� 鏍�
+ * @param treeQueryObject 鏍戞煡璇㈠璞�
+ * @return 鍒嗙被鐮佹鐨勭爜鍊� 鏄剧ず鏍�
+ * @throws VciBaseException 鏌ヨ鏉′欢涓嶇鍚堣姹傜殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<Tree> treeCodeClassifyValue(TreeQueryObject treeQueryObject) throws VciBaseException{
+ // List<CodeClassifyValueDO> doList =selectCodeClassifyValueDOByTree(treeQueryObject);
+ List<CodeClassifyValueDO> doList =selectCodeClassifyValueDO4Tree(treeQueryObject);
+ List<CodeClassifyValueVO> voList = codeClassifyValueDO2VOs(doList);
+ TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
+ treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+ return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyValueVO s) ->{
+ //鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+ return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+ .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+ });
+ }
+ /**
+ * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+ *
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+ */
+ @Override
+ public List<CodeClassifyValueDO> selectCodeClassifyValueDOByTree(TreeQueryObject treeQueryObject) {
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(treeQueryObject.getConditionMap(),CodeClassifyValueDO.class);
+ PageHelper ph = new PageHelper();
+ ph.addDefaultAsc("ordernum");
+ queryWrapperForDO.setPageHelper(ph);
+ VciParentQueryOption parentQueryOption = new VciParentQueryOption();
+ parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
+ //queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
+ parentQueryOption.setHasSelf(true);
+ queryWrapperForDO.childQueryParent(parentQueryOption);
+ return codeClassifyValueMapper.selectByWrapper(queryWrapperForDO);
+ }
+
+ private List<CodeClassifyValueDO> selectCodeClassifyValueDO4Tree(TreeQueryObject treeQueryObject){
+ Map<String, String> conditionMap = treeQueryObject.getConditionMap();
+ String currentSecOid = conditionMap.get("codeclassifysecoid");
+ String sql = "select oid from PLATFORMBTM_CODEBASICSEC start with oid = '"+currentSecOid+"' connect by prior PARENTCLASSIFYSECOID = OID";
+ List<ClientBusinessObject> targetParentList = boService.queryBySql(sql, new HashMap<>());
+ Set<String> secOidList = targetParentList.stream().map(ClientBusinessObject::getOid).collect(Collectors.toSet());
+ conditionMap.clear();
+ StringBuilder oidStrBuilder = new StringBuilder();
+ secOidList.forEach(oid -> oidStrBuilder.append("'").append(oid).append("',"));
+ String oidStr = oidStrBuilder.toString().substring(0,oidStrBuilder.toString().length() -1);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(null,CodeClassifyValueDO.class);
+ PageHelper ph = new PageHelper();
+ ph.addDefaultAsc("ordernum");
+ ph.setLimit(-1);
+ wrapper.setPageHelper(ph);
+ wrapper.in("codeclassifysecoid",oidStr);
+ return codeClassifyValueMapper.selectByWrapper(wrapper);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyValueDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeClassifyValueVO> codeClassifyValueDO2VOs(Collection<CodeClassifyValueDO> codeClassifyValueDOs) throws VciBaseException{
+ List<CodeClassifyValueVO> voList = new ArrayList<CodeClassifyValueVO>();
+ if(!CollectionUtils.isEmpty(codeClassifyValueDOs)){
+ for(CodeClassifyValueDO s: codeClassifyValueDOs){
+ CodeClassifyValueVO vo = codeClassifyValueDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeClassifyValueDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyValueVO codeClassifyValueDO2VO(CodeClassifyValueDO codeClassifyValueDO) throws VciBaseException{
+ CodeClassifyValueVO vo = new CodeClassifyValueVO();
+ if(codeClassifyValueDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyValueDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyValueVO addSave(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyValueDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //娣诲姞瀵圭爜鍊煎瓙鐖剁骇鐨勫垽鏂�
+ if(StringUtils.isNotBlank(codeClassifyValueDTO.getParentclassifyvalueoid())){
+ String parentclassifyvalueoid = codeClassifyValueDTO.getParentclassifyvalueoid();
+ String codeclassifysecoid = codeClassifyValueDTO.getCodeclassifysecoid();
+ CodeClassifyValueDO parentDO = codeClassifyValueMapper.selectByPrimaryKey(parentclassifyvalueoid);
+ if (parentDO.getCodeClassifySecOid().equalsIgnoreCase(codeclassifysecoid)){
+ throw new VciBaseException("涓嶅厑璁稿湪鐖剁爜鍊间腑鐩存帴娣诲姞瀛愮爜鍊�");
+ }
+ }
+ //灏咲TO杞崲涓篋O
+ CodeClassifyValueDO codeClassifyValueDO = new CodeClassifyValueDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyValueDTO,codeClassifyValueDO);
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeclassifysecoid", codeClassifyValueDO.getCodeClassifySecOid());
+ conditionMap.put("parentclassifyvalueoid",codeClassifyValueDO.getParentClassifyValueOid());
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeClassifyValueDO.class);
+ List<CodeClassifyValueDO> existList = codeClassifyValueMapper.selectByWrapper(wrapper);
+ codeClassifyValueDO.setOrderNum(existList.size() + 1);
+ codeClassifyValueMapper.insert(codeClassifyValueDO);
+ return codeClassifyValueDO2VO(codeClassifyValueDO);
+ }
+
+ /**
+ * 淇敼鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyValueVO editSave(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyValueDTO,"鏁版嵁瀵硅薄",codeClassifyValueDTO.getOid(),"鍒嗙被鐮佹鐨勭爜鍊间富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeClassifyValueDO codeClassifyValueDO = selectByOid(codeClassifyValueDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeClassifyValueDTO,codeClassifyValueDO);
+ codeClassifyValueMapper.updateByPrimaryKey(codeClassifyValueDO);
+ return codeClassifyValueDO2VO(codeClassifyValueDO);
+ }
+
+/**
+ * 妫�鏌� 鍒嗙被鐮佹鐨勭爜鍊兼槸鍚﹀垹闄�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+ * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+@Override
+public BaseResult checkIsCanDelete(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyValueDTO,"鏁版嵁浼犺緭瀵硅薄",codeClassifyValueDTO.getOid(),"涓婚敭");
+ CodeClassifyValueDO codeClassifyValueDO = selectByOid(codeClassifyValueDTO.getOid());
+ return checkIsCanDeleteForDO(codeClassifyValueDTO,codeClassifyValueDO);
+}
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeClassifyValueDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeClassifyValueDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeClassifyValueDTO codeClassifyValueDTO, CodeClassifyValueDO codeClassifyValueDO) {
+ //boService.checkTs(codeClassifyValueDTO);
+ //鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
+ if(checkChildIsLinked(codeClassifyValueDO.getOid())){
+ return BaseResult.fail(DATA_CASCADE_LINKED_NOT_DELETE,new String[]{""});
+ }
+ return BaseResult.success(checkHasChild(codeClassifyValueDO.getOid()));
+ }
+ /**
+ * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+ *
+ * @param oid 涓婚敭
+ * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+ * @throws VciBaseException 鍙傛暟涓虹┖鍜屾湁寮曠敤鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean checkChildIsLinked(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ List<String> childOids = codeClassifyValueMapper.selectAllLevelChildOid(oid.trim());
+ if(!CollectionUtils.isEmpty(childOids)){
+ for(String childOid: childOids){
+ if(!checkIsLinked(childOid)){
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+ *
+ * @param oid 涓婚敭
+ * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+ * @throws VciBaseException 鍙傛暟閿欒锛屾垨鑰呮暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean checkHasChild(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ return codeClassifyValueMapper.countAllLevelChildOid(oid.trim()) > 0;
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鍒嗙被鐮佹鐨勭爜鍊�
+ * @param codeClassifyValueDTO 鍒嗙被鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeClassifyValue(CodeClassifyValueDTO codeClassifyValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeClassifyValueDTO,"鍒嗙被鐮佹鐨勭爜鍊兼暟鎹璞�",codeClassifyValueDTO.getOid(),"鍒嗙被鐮佹鐨勭爜鍊肩殑涓婚敭");
+ CodeClassifyValueDO codeClassifyValueDO = selectByOid(codeClassifyValueDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeClassifyValueDTO,codeClassifyValueDO);
+ if(baseResult.isSuccess()) {
+ //鎵句笅绾х殑锛岃繖涓槸鍙互鍒犻櫎鐨勬椂鍊�
+ List<String> childrenOids = codeClassifyValueMapper.selectAllLevelChildOid(codeClassifyValueDO.getOid().trim());
+ if (!CollectionUtils.isEmpty(childrenOids)) {
+ Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids);
+ for(Collection<String> s : childrenCollections){
+ codeClassifyValueMapper.batchDeleteByOids(s);
+ }
+ }
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeClassifyValueMapper.deleteByPrimaryKey(codeClassifyValueDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍒嗙被鐮佹鐨勭爜鍊�
+ * @param oid 涓婚敭
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeClassifyValueVO getObjectByOid(String oid) throws VciBaseException{
+ return codeClassifyValueDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeClassifyValueDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeClassifyValueDO codeClassifyValueDO = codeClassifyValueMapper.selectByPrimaryKey(oid.trim());
+ if(codeClassifyValueDO == null || StringUtils.isBlank(codeClassifyValueDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeClassifyValueDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍒嗙被鐮佹鐨勭爜鍊�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeClassifyValueVO> listCodeClassifyValueByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeClassifyValueDO> codeClassifyValueDOList = listCodeClassifyValueDOByOidCollections(oidCollections);
+ return codeClassifyValueDO2VOs(codeClassifyValueDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeClassifyValueDO> listCodeClassifyValueDOByOidCollections(Collection<String> oidCollections){
+ List<CodeClassifyValueDO> codeClassifyValueDOList = new ArrayList<CodeClassifyValueDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeClassifyValueDO> tempDOList = codeClassifyValueMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeClassifyValueDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeClassifyValueDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鏍� 鍒嗙被鐮佹鐨勭爜鍊�
+ * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+ * @return 鍒嗙被鐮佹鐨勭爜鍊兼樉绀烘爲
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<Tree> referTree(TreeQueryObject treeQueryObject) throws VciBaseException{
+ if(treeQueryObject == null){
+ treeQueryObject = new TreeQueryObject();
+ }
+ if(treeQueryObject.getConditionMap() == null){
+ treeQueryObject.setConditionMap(new HashMap<>());
+ }
+ if(treeQueryObject.getConditionMap().containsKey(LC_STATUS)) {
+ treeQueryObject.getConditionMap().remove(LC_STATUS);
+ }
+ return treeCodeClassifyValue(treeQueryObject);
+ }
+
+ /**
+ * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹�
+ *
+ * @param classifySecOid 鐮佹鐨勪富閿�
+ * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐮佸�肩殑鍐呭
+ */
+ @Override
+ public List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid) {
+ if(StringUtils.isBlank(classifySecOid)){
+ return new ArrayList<>();
+ }
+ CodeBasicSecDO secDO = basicSecMapper.selectByPrimaryKey(classifySecOid);
+ if(secDO == null || StringUtils.isBlank(secDO.getOid())){
+ throw new VciBaseException("鐮佹鐨勫唴瀹瑰湪绯荤粺涓笉瀛樺湪");
+ }
+ if(StringUtils.isNotBlank(secDO.getParentClassifySecOid()) && StringUtils.isBlank(parentClassifyValueOid)){
+ return new ArrayList<>();
+ //鍥犱负鏈変笂绾у垎绫荤殑鏃跺�欙紝蹇呴』鍏堥�夋嫨涓婄骇鍒嗙被鐨勫唴瀹�
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeClassifySecOid",classifySecOid);
+ if(StringUtils.isNotBlank(parentClassifyValueOid)){
+ conditionMap.put("parentClassifyValueOid",parentClassifyValueOid);
+ }
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("ordernum");
+ List<CodeClassifyValueDO> valueDOList = codeClassifyValueMapper.selectByCondition(conditionMap, pageHelper);
+ return codeClassifyValueDO2VOs(valueDOList);
+ }
+
+ /**
+ * 鏍规嵁鐮佹涓婚敭鍒犻櫎鍏跺瓨鍦ㄧ殑鐮佸�煎璞�
+ * @param codeclassifysecoid 鍒嗙被鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult batchDeleteBySecOid(String codeclassifysecoid) {
+ VciBaseUtil.alertNotNull(codeclassifysecoid,"鍒嗙被鐮佹鐨勪富閿�");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeClassifySecOid",codeclassifysecoid);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeClassifyValueDO.class);
+ List<CodeClassifyValueDO> valueDOList = codeClassifyValueMapper.selectByWrapper(wrapper);
+ codeClassifyValueMapper.batchDeleteByOids(valueDOList.stream().map(CodeClassifyValueDO::getOid).collect(Collectors.toList()));
+ return BaseResult.success();
+ }
+
+ /**
+ * 鎵归噺娣诲姞鍒嗙被鐮佹鐨勭爜鍊笺�備富瑕佹槸淇濆瓨鐮佸�肩殑搴忓彿
+ * @param dtoList 鍒嗙被鐮佹鐨勭爜鍊煎垪琛�
+ * @param codeclassifysecoid 鍒嗙被鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult batchSave4Order(List<CodeClassifyValueDTO> dtoList, String codeclassifysecoid) {
+ VciBaseUtil.alertNotNull(codeclassifysecoid,"鍒嗙被鐮佹涓婚敭");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeClassifySecOid",codeclassifysecoid);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeClassifyValueDO.class);
+ List<CodeClassifyValueDO> valueDOList = codeClassifyValueMapper.selectByWrapper(wrapper);
+ List<CodeClassifyValueDO> updateList = new ArrayList<>();
+ dtoList.forEach(dto -> {
+ if( StringUtils.isNotBlank( dto.getOid() )){
+ List<CodeClassifyValueDO> collect = valueDOList.stream().filter(value -> {
+ return dto.getOid().equals(value.getOid());
+ }).collect(Collectors.toList());
+ collect.forEach(ccv -> {
+ ccv.setOrderNum(dto.getOrdernum());
+ ccv.setId(dto.getId());
+ ccv.setName(dto.getName());
+ updateList.add(ccv);
+ });
+ }
+ });
+ codeClassifyValueMapper.batchUpdate(updateList);
+ return BaseResult.success();
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingServiceImpl.java
new file mode 100644
index 0000000..4154597
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingServiceImpl.java
@@ -0,0 +1,1103 @@
+package org.springblade.code.service.impl;
+
+
+import cn.hutool.json.XML;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.mdm.constant.MdmDuckingConstant;
+import com.vci.mdm.dao.*;
+import com.vci.mdm.dto.DockingPreApplyDataDTO;
+import com.vci.mdm.dto.DockingPreApplyDataInfoDTO;
+import com.vci.mdm.model.*;
+import com.vci.mdm.pagemodel.*;
+import com.vci.mdm.service.*;
+import com.vci.mdm.utils.*;
+import com.vci.starter.web.enumpck.UserSecretEnum;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.redis.RedisService;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.*;
+import static com.vci.mdm.constant.MdmDuckingConstant.*;
+import static com.vci.mdm.utils.DateUtils.DATE_TO_STRING_DETAIAL_PATTERN;
+
+
+/**
+ * 涓婚搴撻泦鎴愭湇鍔�
+ * @author wangyi
+ * @date 2022-03-20
+ */
+@Service
+public class CodeDuckingServiceImpl implements CodeDuckingServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 闆嗘垚鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
+ */
+ @Resource
+ private DockingTaskDaoI dockingTaskDaoI;
+
+ /**
+ * 闆嗘垚鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
+ */
+ @Resource
+ private DockingDataDaoI dockingDataDaoI;
+
+ /**
+ * 闆嗘垚鏃ュ織鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private DockingLogeDaoI dockingLogeDaoI;
+
+ /**
+ * 闆嗘垚鎺ュ彛head鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private SysIntHeaderDaoI sysIntHeaderDaoI;
+
+ /**
+ * 妯℃澘灞炴�ф暟鎹搷浣滃眰
+ */
+ @Resource
+ private CodeClassifyDaoI codeClassifyDaoI;
+
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 缂撳瓨鏈嶅姟
+ */
+ @Autowired
+ private RedisService redisService;
+
+ /**
+ * 鏁版嵁鏈嶅姟
+ */
+ @Autowired(required = false)
+ @Lazy
+ private MdmEngineServiceI mdmEngineServiceI;
+
+ /**
+ * 缂栫爜棰勭敵璇锋湇鍔�
+ */
+ @Autowired(required = false)
+ @Lazy
+ private DockingPreApplyDataServiceI dockingPreApplyDataServiceI;
+
+ /**
+ * 瑕佹帹閫佺郴缁熺殑鏈嶅姟
+ */
+ @Autowired
+ private SysIntInfoServiceI sysIntInfoServiceI;
+
+ /**
+ * 鍒嗙被鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceI codeClassifyServiceI;
+
+
+ @Value("${docking.tuhao:tuhao}")
+ public String tuhao;
+
+ @Value("${docking.tranTemp:D:\\PLT-2022\\web\\tranTemp}")
+ public String tranTemp;
+
+ @Value("${docking.preXmlTemp:D:\\PLT-2022\\web\\preXmlTemp}")
+ public String preXmlTemp;
+
+ /**
+ * 浜屻��1銆�2銆�3銆�4銆�
+ * 澶勭悊棰勭敵璇锋暟鎹�
+ * @param xmlDatas
+ * @return 鎺ユ敹鐨剎mlDate
+ */
+ @Override
+ public String applicateCode(String xmlDatas){
+
+ long start = System.currentTimeMillis();
+
+ Map<String,Object> datasMap = null;
+
+ //瑙f瀽xmlData
+ try {
+ datasMap = XmlUtil.readPreXmlData(xmlDatas);
+ }catch (Exception e){
+ logger.info("鎺ユ敹棰勭敵璇锋暟鎹紝瑙f瀽xmlData澶辫触锛寈mlDatas: "+xmlDatas+",e: "+e.getMessage());
+ e.printStackTrace();
+ //杩斿洖鎻愮ず
+ return XmlUtil.writePreBackXmlData(XML_CODE_FAIL,"瑙f瀽xmlData澶辫触,e: "+e.getMessage(),null);
+ }
+
+ List<XmlData> xmlDataList = Collections.synchronizedList(new ArrayList<XmlData>());
+ String systemid = datasMap.getOrDefault(XML_SYSTEMID,"").toString();
+ List<Map<String,Object>> dataMapList = (ArrayList<Map<String,Object>>)datasMap.get(XML_DATAS);
+
+ //璁板綍杩欐鏁版嵁淇℃伅,骞朵笖鎶妜mldata鍐欏叆鏂囦欢
+ String currentDate = DateUtils.getCurrentDate(DATE_TO_STRING_DETAIAL_PATTERN);
+ File preXmlFile = new File(preXmlTemp+File.separator+systemid+"-"+currentDate+".xml");
+
+ try {
+ FileUtils.write(preXmlFile, xmlDatas);
+ }catch (Exception e){
+ logger.error(currentDate+" 鎺ユ敹"+systemid+"绯荤粺棰勭敵璇锋暟鎹紝鍐欏叆鏂囦欢澶辫触锛乪:"+e.getMessage()+",xmlDatas: "+xmlDatas);
+ e.printStackTrace();
+ }
+
+ //澶勭悊姣忎竴鏉$敵璇风殑鏁版嵁
+ ExecutorService pool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()+1);
+
+ SessionInfo sessionInfo = WebUtil.getSessionInfo();
+ CountDownLatch countDownLatch = new CountDownLatch(dataMapList.size());
+ for (int i =0;i<dataMapList.size();i++){
+ Map<String,Object> dataMap = dataMapList.get(i);
+ pool.execute(()-> {
+ String unique = dataMap.getOrDefault(XML_UNIQUE,"").toString();
+ String type = dataMap.getOrDefault(XML_TYPE,"").toString();
+
+ //瑕佹彃鍏ョ殑data
+ DockingPreApplyDataDTO dockingPreApplyDataDO = new DockingPreApplyDataDTO();
+ //瑕佹彃鍏ョ殑datainfo
+ List<DockingPreApplyDataInfoDTO> dockingPreApplyDataInfoDOList = new ArrayList<DockingPreApplyDataInfoDTO>();
+ XmlData xmlData_ = new XmlData();
+
+ try {
+ WebUtil.setSessionInfo(sessionInfo);
+
+ String num = "";
+ String datacode = "";
+ String datamsg = "";
+ String datamsglog = "";
+
+ //state=400锛屽鐞嗘垚鍔燂紝娌℃湁鎵惧埌缂栫爜
+ datamsg = "鎺ユ敹棰勭敵璇锋暟鎹紝鏈煡璇㈠埌瀵瑰簲缂栫爜锛岃祴鐮佸悗鎺ㄩ�佺紪鐮佷俊鎭�";
+ datacode = XML_STATE_400;
+ XmlData xmlData = new XmlData();
+ xmlData.setState(XML_STATE_400);
+ xmlData.setMsg(datamsg);
+ xmlData.setUnique(unique);
+ xmlData.setNum(null);
+ logger.info(datamsg+"锛宒ata: "+dataMap.get(unique)+",num: ");
+ xmlData_ = xmlData;
+
+ //濡傛灉鏄疢PM闆嗘垚杩囨潵鐨勬暟鎹紝unique浣滀负鍥惧彿鏌ヨ
+ if(XML_SYSTEMID_MPM.equals(systemid)&& StringUtils.isNotEmpty(unique)) {
+
+ //1銆佸厛鏌ヨ杩欎釜unique鏍规嵁鍥惧彿鏌ヨ锛屾湁鏁版嵁灏卞氨杩斿洖
+ Map conditonMap = new HashMap();
+ conditonMap.put("tuhao",unique);
+// conditonMap.put("lcstatus",FRAMEWORK_RELEASE_RELEASED);
+ List<ClientBusinessObject> clientBusinessObjectList = boService.queryCBO(type,conditonMap);
+
+ if(clientBusinessObjectList.size()>0) {
+ num = clientBusinessObjectList.get(0).getId();
+ String lcstatus = clientBusinessObjectList.get(0).getLcStatus();
+ datamsg = "鎺ユ敹棰勭敵璇锋暟鎹紝鏈煡璇㈠埌瀵瑰簲缂栫爜锛岃祴鐮佸悗鎺ㄩ�佺紪鐮佷俊鎭�";
+ if(FRAMEWORK_RELEASE_RELEASED.equals(lcstatus)) {
+ datamsg = "鎺ユ敹棰勭敵璇锋暟鎹紝鏌ヨ缂栫爜鎴愬姛";
+ datamsglog = datamsg+"锛宒ata: " + dataMap.get(unique) + ",num: " + num;
+ datacode = XML_STATE_200;
+
+ }else if(FRAMEWORK_RELEASE_SUBMIT.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:宸叉彁浜わ紝data: " + dataMap.get(unique) + ",num: " + num;
+ datacode = XML_STATE_400;
+
+ }else if(FRAMEWORK_RELEASE_AUDITING.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:瀹℃牳涓紝data: " + dataMap.get(unique) + ",num: " + num;
+ datacode = XML_STATE_400;
+
+ }else if(FRAMEWORK_RELEASE_EDITING.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:缂栬緫涓紝data: " + dataMap.get(unique) + ",num: " + num;
+ datacode = XML_STATE_400;
+
+ }else if(FRAMEWORK_DATA_DISABLED.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:鍋滅敤锛宒ata: " + dataMap.get(unique) + ",num: " + num;
+ datacode = XML_STATE_400;
+ }
+ xmlData.setState(datacode);
+ xmlData.setMsg(datamsg);
+ xmlData.setUnique(unique);
+ xmlData.setNum(num);
+ logger.info(datamsglog);
+ xmlData_ = xmlData;
+ }
+ }
+ dockingPreApplyDataDO.setNum(num);
+ dockingPreApplyDataDO.setDatacode(datacode);
+ dockingPreApplyDataDO.setDatamsg(datamsg);
+
+ //2銆佹牴鎹畊nique鏌ヨDockingPreApplyDataDO锛屾湁鏁版嵁灏变慨鏀瑰埆鐨勬墍鏈夌殑usedflag=false,璁剧疆杩欎釜涓簍rue
+ //3銆佸啀鎻掑叆DockingPreApplyDataDO鍜孌ockingPreApplyDataInfoDO
+ //鍏跺疄锛�2銆佸拰3銆佽繖涓ゆ鍦╠ockingPreApplyDataServiceI.addSaveDataAndInfo锛堬級杩欎釜鏂规硶涓竴璧峰仛浜�
+
+ String dataoid = redisService.getUUIDEveryDay();
+// String dataoid = "1";
+ dockingPreApplyDataDO.setOid(dataoid);
+ dockingPreApplyDataDO.setPreapplyoid("1");
+ dockingPreApplyDataDO.setUniquecode(unique);
+ dockingPreApplyDataDO.setType(type);
+ dockingPreApplyDataDO.setSystemid(systemid);
+
+ Object attro = dataMap.get(XML_PROS);
+
+ //瑕佹彃鍏ョ殑datainfo
+ List<Map<String,String>> attrList = null;
+ if (attro == null) {
+ attrList = new ArrayList<Map<String,String>>();
+ }else {
+ attrList = (ArrayList<Map<String,String>>)attro;
+ }
+
+ String mpm_model = null;
+ String mpm_parttype = null;
+ String mpm_unit = null;
+ for (Map<String, String> attrMap : attrList) {
+ String datainfooid = redisService.getUUIDEveryDay();
+// datainfooid = "1";
+ String key = attrMap.getOrDefault(XML_KEY,"");
+ String mean = attrMap.getOrDefault(XML_MEAN,"");
+ String text = attrMap.getOrDefault(XML_TEXT,"");
+
+ DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDO = new DockingPreApplyDataInfoDTO();
+ dockingPreApplyDataInfoDO.setDataoid(dataoid);
+ dockingPreApplyDataInfoDO.setOid(datainfooid);
+ dockingPreApplyDataInfoDO.setKey(key);
+ dockingPreApplyDataInfoDO.setValue(text);
+ dockingPreApplyDataInfoDO.setMean(mean);
+ dockingPreApplyDataInfoDOList.add(dockingPreApplyDataInfoDO);
+
+ //鍙栦笁涓��
+ if(XML_MPM_MODEL.equals(key)){//鍙朚PM瑙勬牸
+ mpm_model = text;
+ dockingPreApplyDataDO.setModel(mpm_model);
+ }
+ if(XML_MPM_PARTTYPE.equals(key)){//鍙朚PM闆朵欢鍨嬪彿
+ mpm_parttype = text;
+ dockingPreApplyDataDO.setParttype(mpm_parttype);
+ }
+ if(XML_MPM_UNIT.equals(key)){//鍗曚綅
+ mpm_unit = text;
+ dockingPreApplyDataDO.setUnit(mpm_unit);
+ }
+ }
+
+ dockingPreApplyDataServiceI.addSaveDataAndInfo(dockingPreApplyDataDO, dockingPreApplyDataInfoDOList);
+
+ } catch (Exception e) {
+ String datamsg = "鎺ユ敹棰勭敵璇锋暟鎹け璐ワ紒锛宒ata: "+dataMap.get(unique)+",e: "+e.getMessage();
+ XmlData xmlData = new XmlData();
+ xmlData.setState(XML_STATE_500);
+ xmlData.setMsg(datamsg);
+ xmlData.setUnique(unique);
+ xmlData.setNum(null);
+ logger.error(datamsg+".dockingPreApplyDataDO锛� "+dockingPreApplyDataDO+",dockingPreApplyDataInfoDOList: "+dockingPreApplyDataInfoDOList);
+ xmlData_ = xmlData;
+
+ e.printStackTrace();
+ }finally {
+ xmlDataList.add(xmlData_);
+ countDownLatch.countDown();
+ }
+ });
+ }
+
+ //绛夊緟鎵�鏈夌嚎绋嬫墽琛屽畬鎴�
+ try {
+ countDownLatch.await();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ String backXmlData = XmlUtil.writePreBackXmlData(XML_CODE_SUCCESS,"鎺ユ敹棰勭敵璇锋暟鎹垚鍔燂紒",xmlDataList);
+
+
+ long end = System.currentTimeMillis();
+
+ //鎷兼帴杩斿洖鐨剎mlData
+ int dataMapSise = dataMapList.size();
+ int xmlDataSise = xmlDataList.size();
+ System.out.println("========================dataMapSise锛� "+dataMapSise+",xmlDataSise:"+xmlDataSise);
+
+ System.out.println("========================澶勭悊棰勭敵璇锋暟鎹竴鍏辫�楁椂 "+(end-start)/1000+"绉�");
+ return backXmlData;
+ }
+
+ /**
+ * 鍥涖��1銆�2銆�3
+ * 鏌ヨredis涓暟鎹紝瀵规瘮鍚庢彃鍏ockingtask
+ */
+ @Override
+ public void insertCache2(){
+
+ initSysadmin();
+
+ //sysintinfo鏌ヨ瑕佹帹閫佺殑涓婚搴撳拰鐩稿叧绯荤粺淇℃伅
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("usedflag","true");
+ List<SysIntInfoDO> sysIntInfoVOList = sysIntInfoServiceI.selectAll(conditionMap);
+
+ //distinct鍑轰富棰樺簱btmname,瀛樺偍key-value缁撴瀯鐨勫垎绫绘暟鎹紝杩欓噷鐨勫垎绫绘槸涓婚搴搑oot鑺傜偣
+ Set<String> btmtypeidSet = new HashSet<>();
+ Map<String ,List<SysIntInfoDO>> sysIntInfoDOMap = new HashMap<String ,List<SysIntInfoDO>>();//key=classifyoid,value=list<map>
+ for (SysIntInfoDO sysIntInfoVOi:sysIntInfoVOList){
+ btmtypeidSet.add(sysIntInfoVOi.getBtmTypeId());
+ List<SysIntInfoDO> SysIntInfoVOListi = sysIntInfoDOMap.get(sysIntInfoVOi.getClassifyoid());
+ if(SysIntInfoVOListi==null){
+ SysIntInfoVOListi = new ArrayList<SysIntInfoDO>();
+ }
+ SysIntInfoVOListi.add(sysIntInfoVOi);
+ sysIntInfoDOMap.put(sysIntInfoVOi.getClassifyoid(),SysIntInfoVOListi);
+ }
+
+ //鏌ヨdockingdata:oid,classifyoid,btmid,btmoid,sendtype,classifyid,classifyname
+// List<Map> dataList = getDockingDatas();
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingDataDO.class);
+ queryWrapperForDO.addQueryMap("sendflag","false");
+ List<DockingDataDO> dataList = dockingDataDaoI.selectByWrapper(queryWrapperForDO);
+
+ for (DockingDataDO mapi:dataList){
+
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+
+ String dataoid = mapi.getOid();//data瀵硅薄鐨刼id
+ String classifyoid = mapi.getClassifyoid();
+ String id = mapi.getId();
+ String uniquecode = mapi.getUniquecode();
+ String btmid = mapi.getBtmid();
+ String btmoid = mapi.getBtmoid();
+ String sendtype = mapi.getSendtype();
+ String classifyid = mapi.getClassifyid();
+ String classifyname = mapi.getClassifyname();
+
+ //璁剧疆uniquecode
+ if(StringUtils.isEmpty(uniquecode)){
+ uniquecode = getTuhao(btmoid);//鏌ヨ鍥惧彿
+ if(StringUtils.isNotEmpty(uniquecode)) {
+ updateDockingDatasUniqueCode(dataoid, uniquecode);
+ }
+ }
+ List<SysIntInfoDO> effectiveSysIntInfoVOs=new ArrayList<>();
+ String rootClassifyoid = "";
+ String pushType="1";
+ if(DOCKING_DEFAULT_CLASSIFY.equalsIgnoreCase(classifyoid)){//杩欎釜瀵瑰簲sysintinfo涓殑涓婚搴搃d锛屽鏋滄槸鍒嗙被鏁版嵁锛屽氨鏄疍OCKING_DEFAULT_CLASSIFY=CODECLASSIFY
+ rootClassifyoid = DOCKING_DEFAULT_CLASSIFY;
+ //鍒ゆ柇鏄惁灞炰簬鍒嗙被鏍�,濡傛灉鏄粍缁囥�佷汉鍛樸�侀檮褰曚箣绫荤殑涓嶇敓鎴愪换鍔�,骞朵笖鑷姩娓呴櫎杩欎釜data
+ boolean iswupin = codeClassifyDaoI.isWupin(btmoid);
+ if(!"TakeBack".equals(sendtype)&&!iswupin){
+ boolean u = delteDockingData(dataoid);
+ logger.error("闆嗘垚data鍒犻櫎闈炲垎绫籨ata澶辫触锛乨ataoid:"+dataoid);
+ continue;
+ }
+ pushType="2";
+ rootClassifyoid=btmoid;
+ }else {
+ /* CodeClassifyDO rootClassify = codeClassifyDaoI.getRootClassify(classifyoid);//root鍒嗙被
+ if(rootClassify==null){
+ continue;//璇存槑杩欎釜鍒嗙被琚垹鎺変簡锛屼笉鍋氬鐞�
+ }
+ rootClassifyoid = rootClassify.getOid();*/
+ rootClassifyoid=classifyoid;
+ }
+
+ List<CodeClassifyDO> parentLeveDO= codeClassifyDaoI.selectAllLevelParentByOid(rootClassifyoid);
+ if(CollectionUtils.isEmpty(parentLeveDO)){
+ continue;//璇存槑杩欎釜鍒嗙被琚垹鎺変簡锛屼笉鍋氬鐞�
+ }
+ Map<String, CodeClassifyDO> oidCodeclassifyDOMap = parentLeveDO.stream().filter(codeClassifyDO -> codeClassifyDO != null && StringUtils.isNotBlank(codeClassifyDO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ String finalPushType = pushType;
+ oidCodeclassifyDOMap.keySet().forEach(oid->{
+ if(sysIntInfoDOMap.containsKey(oid)){
+ List<SysIntInfoDO> sysIntInfoDOS= sysIntInfoDOMap.get(oid);
+ sysIntInfoDOS.stream().forEach(sysIntInfoDO -> {
+ String sysPushType= sysIntInfoDO.getPushType();
+ if(sysPushType.equalsIgnoreCase(finalPushType)){
+ effectiveSysIntInfoVOs.add(sysIntInfoDO);
+ }
+ });
+
+
+ }
+ });
+ if(CollectionUtils.isEmpty(effectiveSysIntInfoVOs)){
+ continue;
+ }
+ List<DockingTaskDO> dockingTaskDO_insert = new ArrayList<DockingTaskDO>();
+ for (SysIntInfoDO sysIntInfoVOi:effectiveSysIntInfoVOs){
+ // String sysinfoclassifyoid = sysIntInfoVOi.getClassifyoid();//intinfo鐨刢lassifyoid
+ // if(!rootClassifyoid.equals(sysinfoclassifyoid)){
+ // continue;
+ // }
+ DockingTaskDO dockingTaskDO = new DockingTaskDO();
+ String oid=redisService.getUUIDEveryDay();
+ // logger.error("===================================================oid: "+redisService.getUUIDEveryDay());
+ dockingTaskDO.setOid(oid);
+ dockingTaskDO.setSendflag(SEND_FLAG_FALSE);
+ dockingTaskDO.setId(id);//缂栫爜
+ dockingTaskDO.setUniquecode(uniquecode);
+ dockingTaskDO.setBtmoid(btmoid);//鏁版嵁oid
+ dockingTaskDO.setBtmid(btmid);//鏁版嵁涓氬姟绫诲瀷id
+ dockingTaskDO.setClassifyid(classifyid);//鏁版嵁鍦ㄥ垎绫籭d
+ dockingTaskDO.setClassifyoid(classifyoid);//鏁版嵁鎵�鍦ㄥ垎绫籵id
+ dockingTaskDO.setClassifyname(classifyname);//鏁版嵁鎵�鍦ㄥ垎绫诲悕绉�
+ dockingTaskDO.setSendtype(sendtype);//鏁版嵁鎺ㄩ�佺被鍨�
+ dockingTaskDO.setDataoid(dataoid);
+
+ //intinfo
+ dockingTaskDO.setSysinfooid(sysIntInfoVOi.getOid());//intinfo鐨刼id
+ dockingTaskDO.setSystemoid(sysIntInfoVOi.getSysbaseoid());//绯荤粺oid
+ dockingTaskDO.setSystemcode(sysIntInfoVOi.getSysbaseid());//绯荤粺缂栫爜
+ dockingTaskDO.setSystemname(sysIntInfoVOi.getSysbasename());//绯荤粺name
+
+ dockingTaskDO_insert.add(dockingTaskDO);
+ }
+
+ BatchCBO bi = null;
+ if(dockingTaskDO_insert.size()!=0) {
+ bi = dockingTaskDaoI.batchInsert(dockingTaskDO_insert);
+ batchCBO.copyFromOther(bi);
+ }
+
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+
+ //dockingTaskDaoI.updateByPrimaryKey鏂规硶鎶ラ敊浜嗭紝鎵�浠ユ墜鍐欎簡杩欎釜
+ boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
+ if(!u){
+ logger.error("闆嗘垚data鍒嗚В浠诲姟澶辫触锛乨ataoid:"+dataoid);
+ continue;
+ }
+
+ }
+ }
+
+ /**
+ * 鍥涖��3銆�
+ * 1銆�
+ */
+ @Override
+ public void sendData3(){
+
+ initSysadmin();
+
+ //鏌ヨ鍝簺浠诲姟杩樻病鏈夋墽琛屽畬鎴�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
+ queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
+ List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);
+
+ //姣忎釜task渚濇鎵ц鎺ㄩ��
+ for (DockingTaskDO dockingTaskDO:dockingTaskDOS){
+
+ //姣忎釜task涓�涓簨鍔★紝寮�鍚�
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+
+ String paramString = null;
+
+ //鏌ヨ绯荤粺鎺ュ彛淇℃伅,ip method,dataType
+ String systeminfooid = dockingTaskDO.getSysinfooid();//sysininfo 鐨刼id
+ String systemcode = dockingTaskDO.getSystemcode();
+ String systemname = dockingTaskDO.getSystemname();
+ String systemoid = dockingTaskDO.getSystemoid();
+ String dataid = dockingTaskDO.getId();//缂栫爜
+ String uniquecode = dockingTaskDO.getUniquecode();//uniquecode
+
+ //鏌ヨ鎺ㄩ�佹帴鍙e弬鏁�
+ SysIntInfoVO sysIntInfoVO = sysIntInfoServiceI.getObjectByOid(systeminfooid);
+ String url = sysIntInfoVO.getRequesturl();//url
+ String type = sysIntInfoVO.getInterfacetype().toLowerCase(Locale.ROOT);//get/post/webserver/corba
+ String paramType = sysIntInfoVO.getParamtype();//xml/json
+ String returnType = sysIntInfoVO.getReturntype();//xml/json
+ String interfaceFunction = sysIntInfoVO.getInterfaceFunction();//涓昏鏄痺ebservice鐨勬柟娉曞悕
+ String namespace = sysIntInfoVO.getNamespace();//namespace
+ String soapaction = sysIntInfoVO.getSoapaction();//soapaction
+ String targName = sysIntInfoVO.getTargName();//targName
+ String cxfaxis = sysIntInfoVO.getCxfaxis();//webservice鏄痗xf/axis
+
+ //鏌ヨparam
+ List<SysIntParamDO> sysIntParamDOList = sysIntInfoServiceI.getParamsBySystemInfoOid(systeminfooid);
+ //鏌ヨheader
+ List<SysIntHeaderDO> sysIntHeaderDOList = sysIntInfoServiceI.getHeadersBySystemInfoOid(systeminfooid);
+
+ //鏌ヨ瑕佹帹閫佺殑鏁版嵁
+ String btmoid = dockingTaskDO.getBtmoid();//鏁版嵁oid
+ String btmid = dockingTaskDO.getBtmid();//鏁版嵁btmid
+ String classifyoid = dockingTaskDO.getClassifyoid();
+ String classifyid = dockingTaskDO.getClassifyid();
+ String classifyname= dockingTaskDO.getClassifyname();
+ String sendtype = dockingTaskDO.getSendtype();
+
+ //缁勮鏁版嵁
+ XmlData xmlData = new XmlData();
+ xmlData.setSendtype(sendtype);
+
+ if(!DOCKING_DEFAULT_CLASSIFY.equals(btmid)) {
+ xmlData.setType(btmid);
+ }
+
+ String ret_xml = null;
+ String id = null;
+ String name = null;
+ String idpath = null;
+ String namepath = null;
+ //琛ㄧず鏄垎绫讳俊鎭暟鎹�
+ if(DOCKING_DEFAULT_CLASSIFY.equals(btmid)){
+ xmlData.setNamepath("");
+ xmlData.setIdpath("");
+ xmlData.setNum("");
+
+ CodeClassifyDO codeClassifyDO = null;
+ try {
+ codeClassifyDO = codeClassifyDaoI.selectByPrimaryKey(btmoid);
+ }catch (Exception e){
+
+ }
+
+ String classifyoid_parent = "";
+ int orderNum = 0;
+ if(codeClassifyDO==null){//鏌ヤ笉鍒版暟鎹紝璇存槑琚垹闄や簡锛屼粠DOCKING_CACHE2_DELETE鍙�
+ CodeClassifyDO codeClassifyDOJson = (CodeClassifyDO)redisService.getCacheObject(DOCKING_CACHE2_DELETE+btmoid);
+
+ if(codeClassifyDOJson==null){
+ BatchCBO insertLoge = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,"",url,"涓绘暟鎹郴缁熸湭鏌ヨ鍒板垹闄ょ殑鏁版嵁锛屾湭鎵ц鎺ㄩ�併��");
+ batchCBO.copyFromOther(insertLoge);
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ }
+ id = codeClassifyDOJson.getId();
+ name = codeClassifyDOJson.getName();
+ orderNum = codeClassifyDOJson.getOrderNum();
+ classifyoid_parent = codeClassifyDOJson.getParentCodeClassifyOid();
+ }else {
+ id = codeClassifyDO.getId();
+ name = codeClassifyDO.getName();
+ orderNum = codeClassifyDO.getOrderNum();
+ classifyoid_parent = codeClassifyDO.getParentCodeClassifyOid();
+ }
+
+ //鐖剁骇,idpath,namepath,鍒嗙被鏁版嵁瑙嗗浘涓病鏈夋煡璇㈠嚭璺緞锛岄渶瑕佹墜鍔ㄥ幓鏌ヨ
+ CodeClassifyDO codeClassifyDO_parent = null;
+ try {
+ codeClassifyDO_parent = codeClassifyDaoI.selectByPrimaryKey(classifyoid_parent);
+ xmlData.setParentId(codeClassifyDO_parent.getId());
+
+ //idpath,namepath
+
+ List<CodeClassifyDO> codeClassifyDOList = codeClassifyDaoI.listParentClassify(codeClassifyDO_parent.getOid());
+ for (int i=codeClassifyDOList.size()-1;i>=0;i--){
+ CodeClassifyDO codeClassifyDOi=codeClassifyDOList.get(i);
+ String idi = codeClassifyDOi.getId();
+ String namei = codeClassifyDOi.getName();
+ idpath = idpath==null?idi:idpath+"#"+idi;
+ namepath = namepath==null?namei:namepath+"#"+namei;
+ }
+ }catch (Exception e){
+
+ }
+
+ idpath = idpath==null?id:idpath+"#"+id;
+ namepath = namepath==null?name:namepath+"#"+name;
+
+ //鏌ヨ鍒嗙被璺緞
+ xmlData.setName(name);
+ xmlData.setNamepath(namepath);
+ xmlData.setIdpath(idpath);
+ xmlData.setId(id);
+ xmlData.setOrderNum(orderNum);
+
+ List<XmlData> xmlDataList = new ArrayList<XmlData>();
+ xmlDataList.add(xmlData);
+ ret_xml = XmlUtil.writeSendXmlData_classify(xmlDataList);//xml鏍煎紡鏁版嵁
+ }else {
+ Map<String, String> data = null;
+ try {
+ //琛ㄧず鏄富鏁版嵁
+ CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
+ BaseResult<Map<String, String>> baseResult = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid());
+
+ if (baseResult == null) {
+ JSONObject josni = redisService.getCacheObject(DOCKING_CACHE2_DELETE + btmoid);
+ data = (Map) josni;
+ } else {
+ data = baseResult.getObj();
+ }
+ }catch (Throwable e){
+ BatchCBO failCbo = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,"鏈煡璇㈠埌鐩稿簲鏁版嵁锛�");
+ batchCBO.copyFromOther(failCbo);
+ continue;
+ }
+
+ //澶勭悊璁¢噺鍗曚綅绛夎浆鎹�
+// data = tran(data);
+
+ //濡傛灉鏄泦鎴恊rp閮ㄩ棬鏁版嵁闆嗘垚锛宲arentcode=null寤虹珛涓�绾ч儴闂�,鏃犱汉鏈烘瘮杈冨彧鏈夐儴闂紝娌℃湁绉戝,鎵�浠ョ郴缁熺殑绉戝鍏跺疄灏辨槸浠栦滑鐨勯儴闂�
+ if("organization".equals(btmid.toLowerCase())){
+ String materialclassify = data.get("materialclassify");
+ if("绉戝".equals(materialclassify)){
+ data.put("parentcode","");
+ }
+ }
+ //鏁版嵁杞崲d
+ String tran_xml = null;
+ try {
+ //D:\MDM_important\PLT-2022\web\tranTemp\+绯荤粺鍚嶇О,浼氬幓鎵捐繖涓枃浠惰鍙栨暟鎹浆鎹俊鎭�
+ tran_xml = FileUtils.readFileToString(new File(tranTemp+File.separator+systemcode+".xml"),"utf-8");
+ }catch (IOException e){
+ e.printStackTrace();
+ }
+ if(StringUtils.isNotEmpty(tran_xml)){
+ //閫氳繃tran_xml瀵筪ata鏁版嵁杞崲
+ Map<String,Object> tran_map = null;
+ try {
+ tran_map = XmlUtil.readTranXml(tran_xml,btmid);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ if(tran_map!=null){//璇诲彇鍒拌繖涓猙tmid璁剧疆鐨勮浆鎹㈠叧绯讳簡鎵嶅仛澶勭悊
+ for (String key:tran_map.keySet()){//key=materialtype
+ Object data_pro_mapo = tran_map.get(key);//data_pro_map
+ if(data_pro_mapo!=null){//杩欎釜鍊艰缃浆鎹簡鎵嶅鐞�
+ Map<String,String> data_pro_map = (Map<String,String>)data_pro_mapo;
+ String mdm_value = data.get(key);
+ String system_value = data_pro_map.get(mdm_value);
+ if(StringUtils.isNotEmpty(mdm_value)){
+ data.put(key,system_value);
+ }
+ }
+ }
+ }
+ }
+
+ String unique = null;
+ List<Pro> pros = new ArrayList<Pro>();
+ String codeclassifyoid = null;
+ for (String key:data.keySet()){
+ Pro pro = new Pro();
+ pro.setKey(key);
+ pro.setMean("");
+ pro.setValue(data.getOrDefault(key,""));
+ pros.add(pro);
+ if(tuhao.equals(key)){
+ unique = data.getOrDefault(key,"");
+ }
+ if("oid".equals(key)){
+ codeclassifyoid = data.getOrDefault(key,"");
+ }
+ }
+ xmlData.setNum(data.getOrDefault("id",""));
+ xmlData.setPros(pros);
+ xmlData.setUnique(unique);
+
+ //鏌ヨ鍒嗙被璺緞,涓绘暟鎹湪瑙嗗浘涓凡缁忔煡璇㈠嚭浜嗚矾寰勶紝鍙笉杩囨槸,闂撮殧鐨�
+ namepath = classifyname.replaceAll(",","#");
+ idpath = classifyid.replaceAll(",","#");
+
+ xmlData.setNamepath(namepath);
+ xmlData.setIdpath(idpath);
+
+ List<XmlData> xmlDataList = new ArrayList<XmlData>();
+ xmlDataList.add(xmlData);
+ ret_xml = XmlUtil.writeSendXmlData(xmlDataList);//xml鏍煎紡鏁版嵁
+ }
+
+ //鍒囨崲xml/json
+ String sendString = null;
+ String backString = null;
+ if(paramType.equals(DATATYPE_JSON)){
+ sendString = XML.toJSONObject(ret_xml).toString();
+ }else {
+ sendString = ret_xml;
+ }
+ logger.info("绯荤粺锛�"+systemcode);
+ logger.info("鎺ュ彛鍦板潃:"+url);
+ logger.info("鎺ュ彛鍑芥暟:"+interfaceFunction);
+ logger.info("鎺ュ彛浼犻�掑弬鏁�:"+sendString);
+ //鎺ㄩ�佹暟鎹�
+ try {
+ if (type.equals(URLTYPE_GET)) {//GET璇锋眰
+ String sendurl = url + "?" + PARAM_XMLDATA + "=" + sendString;
+ //鎷兼帴param
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ sendurl = sendurl + "&" + sysIntParamDO.getParamkey() + "=" + sysIntParamDO.getParamvalue();
+ }
+ paramString=sendurl;
+ backString = HttpUtils.get(sendurl);
+ } else if (type.equals(URLTYPE_POST)) {//POST璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ params.add(sysIntParamDO.getParamkey(), sysIntParamDO.getParamvalue());
+ }
+ paramString=params.toString();
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (SysIntHeaderDO sysIntHeaderDO : sysIntHeaderDOList) {
+ headers.add(sysIntHeaderDO.getHeaderkey(), sysIntHeaderDO.getHeaderalue());
+ }
+ backString = HttpUtils.post(url, params, headers);
+ } else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ params.add(sysIntParamDO.getParamkey(), sysIntParamDO.getParamvalue());
+ }
+ paramString=sendString;
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (SysIntHeaderDO sysIntHeaderDO : sysIntHeaderDOList) {
+ headers.add(sysIntHeaderDO.getHeaderkey(), sysIntHeaderDO.getHeaderalue());
+ }
+ backString = WsErpClientUtil.sendMsg(url, namespace, soapaction,interfaceFunction,targName, paramString, 10000);
+ } else {//corba鎺ュ彛
+
+ }
+ paramString=sendString;
+ }catch (Exception e){
+ e.printStackTrace();
+ BatchCBO failCbo = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,"鎺ㄩ�佹暟鎹け璐ワ紒");
+ batchCBO.copyFromOther(failCbo);
+ }
+ logger.info("鎺ュ彛杩斿洖鍙傛暟:"+backString);
+ //瑙f瀽杩旇繕鍙傛暟
+ try {
+ BackXml backXml = null;
+ if(returnType.equals(DATATYPE_JSON)){
+ backXml = XmlUtil.readSendJsonData(backString);//鐩墠鍙鍙栦富鏁版嵁json杩斿洖淇℃伅
+ }else {
+ if(DOCKING_DEFAULT_CLASSIFY.equals(btmid)){
+ backXml = XmlUtil.readSendXmlData_classify(backString);//鍒嗙被xml杩斿洖淇℃伅
+ }else {
+ backXml = XmlUtil.readSendXmlData(backString);//涓绘暟鎹畑ml杩斿洖淇℃伅
+ }
+ }
+ List<XmlData> datas = backXml.getDatas();
+ boolean isSend = false;
+ for (XmlData xmlDatai:datas){
+ String xml_datacode = xmlDatai.getState();
+ String xml_datamsg = xmlDatai.getMsg();
+ if(XML_DATACODE_200.equals(xml_datacode)){
+ BatchCBO insertLoge = taskSuccess(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,xml_datamsg);
+ batchCBO.copyFromOther(insertLoge);
+ isSend = true;
+ }else if(XML_DATACODE_500.equals(xml_datacode)){
+ BatchCBO failCbo = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,xml_datamsg);
+ batchCBO.copyFromOther(failCbo);
+ }else if("true".equals(xml_datacode.toLowerCase())){
+ BatchCBO insertLoge = taskSuccess(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,xml_datamsg);
+ batchCBO.copyFromOther(insertLoge);
+ isSend = true;
+ }else if("false".equals(xml_datacode)){
+ BatchCBO failCbo = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,xml_datamsg);
+ batchCBO.copyFromOther(failCbo);
+ }else{
+ BatchCBO failCbo = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,"杩旇繕xml鏍煎紡涓嶆纭紝缂哄皯code!");
+ batchCBO.copyFromOther(failCbo);
+ }
+ }
+
+ //鍏ㄩ兘鎺ユ敹鎴愬姛鐨勬儏鍐典笅,淇敼dockingtask sendflag涓哄凡鍙戦��
+ if(isSend) {
+ dockingTaskDO.setSendflag(MdmDuckingConstant.SEND_FLAG_TRUE);
+ BatchCBO updateTask = dockingTaskDaoI.updateByPrimaryKey(dockingTaskDO);
+ batchCBO.copyFromOther(updateTask);
+ }
+
+ }catch (Exception e){
+ e.printStackTrace();
+ BatchCBO failCbo = taskFail(systemcode,systemname,systemoid,classifyoid,classifyid,classifyname,dataid,uniquecode,paramString,url,"瑙f瀽杩旇繕鏁版嵁澶辫触锛�");
+ batchCBO.copyFromOther(failCbo);
+ }
+
+ //姣忎竴涓猼ask涓�涓簨鐗�
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+
+ }
+ }
+
+ public static Map<String,String> tranMap = new HashMap<String,String>();
+ public Map<String,String> tran(Map<String,String> data){
+ if(tranMap.isEmpty()){
+// tranMap.put("jiliangdw","jiliangdwname");
+ }
+
+ for (String key:tranMap.keySet()){
+ String tran_key = tranMap.get(key);
+ String tran_key_value = data.get(tran_key);
+ if(StringUtils.isNotEmpty(tran_key_value)){
+ data.put(key,tran_key_value);
+ }
+ }
+ data.put("shifoupihaoguanli","0");
+ return data;
+ }
+
+ /**
+ * 瀹氭椂浠诲姟鎺ㄩ��
+ */
+ @Override
+ public void DockingScheduing(){
+ //data 2 task
+ insertCache2();
+
+ //鎺ㄩ�佹暟鎹�
+ sendData3();
+ }
+
+ /**
+ * 鏁版嵁鍒犻櫎鐨勬椂鍊欙紝缂撳瓨鍒皉edis
+ * @param oid
+ */
+ @Override
+ public void cacheDeleteData(String oid,Object obj){
+ logger.info("鍒犻櫎鏁版嵁鎻掑叆redis,key: "+DOCKING_CACHE2_DELETE+",oid: "+oid+",obj: "+obj);
+ redisService.setCacheObject(DOCKING_CACHE2_DELETE + oid, obj);
+ }
+
+ @Override
+ public DataGrid<DockingDataDO> gridData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ pageHelper.addDefaultAsc("sendflag");
+ List<DockingDataDO> doList = dockingDataDaoI.selectByCondition(conditionMap,pageHelper);
+
+ DataGrid<DockingDataDO> dataGrid=new DataGrid<DockingDataDO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(doList);
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingDataDaoI.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ @Override
+ public DataGrid<DockingTaskDO> gridTask(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ pageHelper.addDefaultAsc("sendflag");
+ List<DockingTaskDO> doList = dockingTaskDaoI.selectByCondition(conditionMap,pageHelper);
+
+ DataGrid<DockingTaskDO> dataGrid=new DataGrid<DockingTaskDO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(doList);
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingTaskDaoI.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ @Override
+ public DataGrid<DockingLogeDO> gridLoge(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<DockingLogeDO> doList = dockingLogeDaoI.selectByCondition(conditionMap,pageHelper);
+
+ DataGrid<DockingLogeDO> dataGrid=new DataGrid<DockingLogeDO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(doList);
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingLogeDaoI.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ @Override
+ public DataGrid<SysIntHeaderDO> gridHeader(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<SysIntHeaderDO> doList = sysIntHeaderDaoI.selectByCondition(conditionMap,pageHelper);
+
+ DataGrid<SysIntHeaderDO> dataGrid=new DataGrid<SysIntHeaderDO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(doList);
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntHeaderDaoI.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+ /**
+ * 鎺ㄩ�佹垚鍔�,鎻掑叆dockingtask锛屽悓鏃惰褰昹oge
+ * @param systemcode
+ * @param systemname
+ * @param systemoid
+ * @param paramString
+ * @param url
+ */
+ public BatchCBO taskSuccess(String systemcode,String systemname,String systemoid,String classifyoid,String classifyid,String classifyname,String id,String uniquecode,String paramString,String url,String msg){
+ String oid=redisService.getUUIDEveryDay();
+ DockingLogeDO dockingLogeDO = new DockingLogeDO();
+ dockingLogeDO.setOid(oid);
+ dockingLogeDO.setSystemcode(systemcode);
+ dockingLogeDO.setSystemname(systemname);
+ dockingLogeDO.setSystemoid(systemoid);
+ dockingLogeDO.setClassifyoid(classifyoid);
+ dockingLogeDO.setClassifyid(classifyid);
+ dockingLogeDO.setClassifyname(classifyname);
+ dockingLogeDO.setId(id);
+ dockingLogeDO.setUniquecode(uniquecode);
+ /** if(paramString.length()>100){
+ paramString = paramString.substring(0,100);
+ }***/
+ dockingLogeDO.setParamstring(paramString);
+ dockingLogeDO.setType(DATA_LOGE_OUT);
+
+// dockingLogeDO.setReturnstring(retString);
+ dockingLogeDO.setMsg(msg);
+ dockingLogeDO.setInterfacestatus(MdmDuckingConstant.INTERFACE_STATUS_TRUE);
+ BatchCBO insert = dockingLogeDaoI.insert(dockingLogeDO);
+ logger.info("闆嗘垚鎺ㄩ�佹暟鎹垚鍔�,systemcode:"+systemcode+",systemname:"+systemcode+",url:"+url+",param:"+paramString);
+ return insert;
+ }
+
+ /**
+ * 鎺ㄩ�佸け璐�,鎻掑叆dockingtask锛屽悓鏃惰褰昹oge
+ * @param systemcode
+ * @param systemname
+ * @param systemoid
+ * @param paramString
+ * @param url
+ */
+ public BatchCBO taskFail(String systemcode,String systemname,String systemoid,String classifyoid,String classifyid,String classifyname,String id,String uniquecode,String paramString,String url,String msg){
+ String oid=redisService.getUUIDEveryDay();
+ DockingLogeDO dockingLogeDO = new DockingLogeDO();
+ dockingLogeDO.setOid(oid);
+ dockingLogeDO.setSystemcode(systemcode);
+ dockingLogeDO.setSystemname(systemname);
+ dockingLogeDO.setSystemoid(systemoid);
+ dockingLogeDO.setClassifyoid(classifyoid);
+ dockingLogeDO.setClassifyid(classifyid);
+ dockingLogeDO.setClassifyname(classifyname);
+ dockingLogeDO.setId(id);
+ dockingLogeDO.setUniquecode(uniquecode);
+ /** if(StringUtils.isNotEmpty(paramString)&¶mString.length()>100){
+ paramString = paramString.substring(0,100);
+ }***/
+ dockingLogeDO.setParamstring(paramString);
+ dockingLogeDO.setType(DATA_LOGE_OUT);
+
+ dockingLogeDO.setMsg(msg);
+ dockingLogeDO.setInterfacestatus(MdmDuckingConstant.INTERFACE_STATUS_FALSE);
+ BatchCBO insert = dockingLogeDaoI.insert(dockingLogeDO);
+
+ logger.error("闆嗘垚鎺ㄩ�佹暟鎹け璐�,systemcode:"+systemcode+",systemname:"+systemcode+",url:"+url+",param:"+paramString+",e:"+msg);
+ return insert;
+ }
+ public void initSysadmin(){
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId("sysAdmin");
+ sessionInfo.setUserName("绯荤粺绠$悊鍛�");
+ sessionInfo.setIp(WebUtil.getLocalIp());
+ sessionInfo.setUserOid("193C026F-7DB8-27B4-F383-4E8BE083FB07");
+ sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue()+"");
+ WebUtil.setSessionInfo(sessionInfo);
+ }
+
+ /**
+ * dockingdata鏌ヨ闇�瑕佹帹閫佺殑鏁版嵁
+ * @return
+ */
+ public List<Map> getDockingDatas(){
+ String sql = "select oid,id,classifyoid,btmid,btmoid,sendtype,classifyid,classifyname from PLATFORMBTM_codedockingDATA where sendflag = 'false'";
+ List<Map> datas = boService.queryBySqlForMap(sql,null);
+ return datas;
+ }
+
+ /**
+ * dockingdata鍒犻櫎
+ * @return
+ */
+ public boolean delteDockingData(String oid){
+ boolean u = false;
+ String sql = "delete from PLATFORMBTM_codedockingDATA where oid = '"+oid+"'";
+ try {
+ u=platformClientUtil.getBOFactoryService().executeUpdateSql(sql);
+ }catch (Exception e){
+
+ }
+ return u;
+ }
+
+ /**
+ * 鏌ヨ鍥惧彿
+ * @return
+ */
+ public String getTuhao(String oid){
+ String tuhao = "";
+ String sql = "select tuhao from PLATFORMBTM_wupin where oid = '"+oid+"'";
+ List<Map> datas = boService.queryBySqlForMap(sql,null);
+ if(datas!=null&&datas.size()!=0){
+ tuhao = datas.get(0).getOrDefault("tuhao","").toString();
+ }
+ return tuhao;
+ }
+
+ @Autowired
+ private PlatformClientUtil platformClientUtil;
+ /**
+ * dockingdata鏍规嵁oid淇敼sendflag
+ * @param oid
+ * @param sendflag
+ * @return
+ */
+ public boolean updateDockingDatasSendFlag(String oid,String sendflag){
+ boolean u=false;
+ String sql = "update PLATFORMBTM_codedockingdata set sendFlag = '"+sendflag+"' where oid='"+oid+"'";
+ try {
+ u=platformClientUtil.getBOFactoryService().executeUpdateSql(sql);
+ }catch (Exception e){
+
+ }
+ return u;
+ }
+
+ public boolean updateDockingDatasUniqueCode(String oid,String uniquecode){
+ boolean u=false;
+ String sql = "update PLATFORMBTM_codedockingdata set uniquecode = '"+uniquecode+"' where oid='"+oid+"'";
+ try {
+ u=platformClientUtil.getBOFactoryService().executeUpdateSql(sql);
+ }catch (Exception e){
+
+ }
+ return u;
+ }
+
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingSyncServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingSyncServiceImpl.java
new file mode 100644
index 0000000..4c75416
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -0,0 +1,630 @@
+package org.springblade.code.service.impl;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.vci.mdm.constant.MdmDuckingConstant;
+import com.vci.mdm.dao.*;
+import com.vci.mdm.dto.datapush.classify.JsonRootDataDTO;
+import com.vci.mdm.dto.datapush.classify.NodeClassifyDTO;
+import com.vci.mdm.dto.datapush.classify.NodeDataDTO;
+import com.vci.mdm.dto.datapush.classify.NodeLibraryDTO;
+import com.vci.mdm.dto.datapush.data.NodeJosnDTO;
+import com.vci.mdm.dto.datapush.data.NodeObjectDTO;
+import com.vci.mdm.dto.datapush.data.NodeProDTO;
+import com.vci.mdm.dto.datapush.data.NodedataDTO;
+import com.vci.mdm.dto.datapush.result.ResultJsonDTO;
+import com.vci.mdm.dto.datapush.result.ResultNodeDataDTO;
+import com.vci.mdm.dto.datapush.result.ResultNodeObjectDTO;
+import com.vci.mdm.model.*;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateVO;
+import com.vci.mdm.pagemodel.SysIntInfoVO;
+import com.vci.mdm.service.*;
+import com.vci.mdm.utils.*;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.enumpck.UserSecretEnum;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.redis.RedisService;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.mdm.constant.MdmDuckingConstant.*;
+
+
+/**
+ * 涓婚搴撻泦鎴愭湇鍔�
+ * @author wangyi
+ * @date 2022-03-20
+ */
+@Service
+public class CodeDuckingSyncServiceImpl implements CodeDuckingSyncServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 闆嗘垚鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
+ */
+ @Resource
+ private DockingTaskDaoI dockingTaskDaoI;
+
+ /**
+ * 闆嗘垚鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
+ */
+ @Resource
+ private DockingDataDaoI dockingDataDaoI;
+
+ /**
+ * 闆嗘垚鏃ュ織鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private DockingLogeDaoI dockingLogeDaoI;
+
+ /**
+ * 妯℃澘灞炴�ф暟鎹搷浣滃眰
+ */
+ @Resource
+ private CodeClassifyDaoI codeClassifyDaoI;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 缂撳瓨鏈嶅姟
+ */
+ @Autowired
+ private RedisService redisService;
+
+ /**
+ * 鏁版嵁鏈嶅姟
+ */
+ @Autowired(required = false)
+ @Lazy
+ private MdmEngineServiceI mdmEngineServiceI;
+
+
+ /**
+ * 瑕佹帹閫佺郴缁熺殑鏈嶅姟
+ */
+ @Autowired
+ private SysIntInfoServiceI sysIntInfoServiceI;
+
+ @Value("${dataSyncPush.dataParamName:xmlData}")
+ public String DATA_PARAM_NAME;
+
+ /**
+ * 瀹氭椂浠诲姟鎺ㄩ��
+ */
+ @Override
+ public void DockingDataSyncScheduing(){
+ // insertCache2();
+ initPushDataTaks(1);
+ sendpushDataForService();
+ }
+
+ /**
+ * 鍒嗙被瀹氭椂浠诲姟鎺ㄩ��
+ */
+ @Override
+ public void DockingClassSyncScheduing(){
+ initPushDataTaks(2);//鍒嗙被鎺ㄩ��
+ sendpushClsfForService();
+ }
+
+ /**
+ * 鎵嬪姩鎺ㄩ�佷负瀹屾垚鐨勬暟鎹�
+ * @param oids
+ * @return
+ */
+ @Override
+ public BaseResult sendData(String oids) {
+ VciBaseUtil.alertNotNull(oids,"绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄",oids,"绯荤粺闆嗘垚鍩虹淇℃伅鐨勪富閿�");
+ List<String> dockingTaskOidList=new ArrayList<>();
+ dockingTaskOidList= VciBaseUtil.str2List(oids);
+ List<DockingTaskDO> newDockingTaskDOs= this.dockingTaskDaoI.selectByPrimaryKeyCollection(dockingTaskOidList);
+ Map<String,List<DockingTaskDO>> typeDockingTaskDOMap=new HashMap<>();
+ newDockingTaskDOs.stream().forEach(newDockingTaskDO->{
+ String btmId=newDockingTaskDO.getBtmid();
+ if(btmId.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
+ List<DockingTaskDO> dockingTaskDOList= typeDockingTaskDOMap.get(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ if(CollectionUtils.isEmpty(dockingTaskDOList)){
+ dockingTaskDOList=new ArrayList<>();
+ }
+ dockingTaskDOList.add(newDockingTaskDO);
+ typeDockingTaskDOMap.put(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT),dockingTaskDOList);
+ }else{
+ List<DockingTaskDO> dockingTaskDOList= typeDockingTaskDOMap.get("data");
+ if(CollectionUtils.isEmpty(dockingTaskDOList)){
+ dockingTaskDOList=new ArrayList<>();
+ }
+ dockingTaskDOList.add(newDockingTaskDO);
+ typeDockingTaskDOMap.put("data",dockingTaskDOList);
+ }
+ });
+ typeDockingTaskDOMap.keySet().forEach(type->{
+ List<DockingTaskDO> DockingTaskDO=typeDockingTaskDOMap.get(type);
+ if(!CollectionUtils.isEmpty(DockingTaskDO)){
+ if(type.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
+ this.sendpushClsfForService(DockingTaskDO);
+ }else{
+ this.sendpushDataForService(DockingTaskDO);
+ }
+ }
+ });
+ return BaseResult.successMsg("鎵嬪姩鎺ㄩ�佸畬鎴�,璇锋牳瀵规槸鍚︽帹閫佹垚鍔�");
+ }
+ /***
+ * 鏌ヨredis涓暟鎹紝瀵规瘮鍚庢彃鍏ockingtask
+ * @param type
+ */
+ private void initPushDataTaks(int type){
+ initSysadmin();
+ //sysintinfo鏌ヨ瑕佹帹閫佺殑涓婚搴撳拰鐩稿叧绯荤粺淇℃伅
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("usedflag","true");
+ conditionMap.put("pushType",type==2?"2":"1") ;//2鏄唬琛ㄥ垎绫绘帹閫侊紝1鏄唬琛ㄦ暟鎹帹閫�
+
+ List<SysIntInfoDO> sysIntInfoVOList = sysIntInfoServiceI.selectAll(conditionMap);
+ if(CollectionUtils.isEmpty(sysIntInfoVOList)){
+ String title=type==2?"鍒嗙被鎺ㄩ��":"鏁版嵁鎺ㄩ��";
+ logger.info("info->鎵�鏈夐泦鎴愮郴缁燂紝鏈煡璇㈠埌鐩稿叧鐨勩��"+title+"銆戠殑鎺ュ彛閰嶇疆淇℃伅锛岄厤缃�");
+ return;
+ }
+ Map<String ,List<SysIntInfoDO>> sysIntInfoDOMap = new HashMap<String ,List<SysIntInfoDO>>();//key=classifyoid,value=list<map>
+ for (SysIntInfoDO sysIntInfoVOi:sysIntInfoVOList){
+ List<SysIntInfoDO> SysIntInfoVOListi = sysIntInfoDOMap.get(sysIntInfoVOi.getClassifyoid());
+ if(SysIntInfoVOListi==null){
+ SysIntInfoVOListi = new ArrayList<SysIntInfoDO>();
+ }
+ SysIntInfoVOListi.add(sysIntInfoVOi);
+ sysIntInfoDOMap.put(sysIntInfoVOi.getClassifyoid(),SysIntInfoVOListi);
+ }
+ //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹�
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingDataDO.class);
+ queryWrapperForDO.addQueryMap("sendflag","false");
+ if(type==2){
+ queryWrapperForDO.addQueryMap("btmTypeId",DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ }else {
+ queryWrapperForDO.addQueryMap("btmTypeId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT)) + ")");
+ }
+ List<DockingDataDO> dataList = dockingDataDaoI.selectByWrapper(queryWrapperForDO);
+
+ for (DockingDataDO mapi:dataList){
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+ String dataoid = mapi.getOid();//data瀵硅薄鐨刼id
+ String classifyoid = mapi.getClassifyoid();
+ String id = mapi.getId();
+ String uniquecode = mapi.getUniquecode();
+ String btmid = mapi.getBtmid();
+ String btmoid = mapi.getBtmoid();
+ String sendtype = mapi.getSendtype();
+ String classifyid = mapi.getClassifyid();
+ String classifyname = mapi.getClassifyname();
+ String curentClassOid=null;
+ if(type==2){
+ curentClassOid=btmoid;
+ }else{
+ curentClassOid=classifyoid;
+ }
+ List<SysIntInfoDO> effectiveSysIntInfoVOs=new ArrayList<>();
+ //鏍规嵁褰撳墠鏁版嵁鐨刬d锛屾煡璇㈣幏鍙栧摢浜涚郴缁熼渶瑕佸仛闆嗘垚
+ List<CodeClassifyDO> parentLeveDO= codeClassifyDaoI.selectAllLevelParentByOid(curentClassOid);
+ if(CollectionUtils.isEmpty(parentLeveDO)){
+ continue;//璇存槑杩欎釜鍒嗙被琚垹鎺変簡锛屼笉鍋氬鐞�
+ }
+ Map<String, CodeClassifyDO> oidCodeclassifyDOMap = parentLeveDO.stream().filter(codeClassifyDO -> codeClassifyDO != null && StringUtils.isNotBlank(codeClassifyDO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+
+ oidCodeclassifyDOMap.keySet().forEach(oid->{
+ if(sysIntInfoDOMap.containsKey(oid)){
+ List<SysIntInfoDO> sysIntInfoDOS= sysIntInfoDOMap.get(oid);
+ effectiveSysIntInfoVOs.addAll(sysIntInfoDOS);
+ }
+ });
+ //濡傛灉鏍¢獙鐨勭郴缁熸帴鍙d俊鎭笉瀛樺湪锛屽垯鏁版嵁涓嶄笉寰�淇℃伅閲屾帹閫�
+ if(CollectionUtils.isEmpty(effectiveSysIntInfoVOs)){
+ continue;
+ }
+ List<DockingTaskDO> dockingTaskDO_insert = new ArrayList<DockingTaskDO>();
+ for (SysIntInfoDO sysIntInfoVOi:effectiveSysIntInfoVOs){
+ DockingTaskDO dockingTaskDO = new DockingTaskDO();
+ dockingTaskDO.setOid(redisService.getUUIDEveryDay());
+ dockingTaskDO.setSendflag(SEND_FLAG_FALSE);
+ dockingTaskDO.setId(id);//缂栫爜
+ dockingTaskDO.setUniquecode(uniquecode);
+ dockingTaskDO.setBtmoid(btmoid);//鏁版嵁oid
+ dockingTaskDO.setBtmid(btmid);//鏁版嵁涓氬姟绫诲瀷id
+ dockingTaskDO.setClassifyid(classifyid);//鏁版嵁鍦ㄥ垎绫籭d
+ dockingTaskDO.setClassifyoid(classifyoid);//鏁版嵁鎵�鍦ㄥ垎绫籵id
+ dockingTaskDO.setClassifyname(classifyname);//鏁版嵁鎵�鍦ㄥ垎绫诲悕绉�
+ dockingTaskDO.setSendtype(sendtype);//鏁版嵁鎺ㄩ�佺被鍨�
+ dockingTaskDO.setDataoid(dataoid);
+
+ //intinfo
+ dockingTaskDO.setSysinfooid(sysIntInfoVOi.getOid());//intinfo鐨刼id
+ dockingTaskDO.setSystemoid(sysIntInfoVOi.getSysbaseoid());//绯荤粺oid
+ dockingTaskDO.setSystemcode(sysIntInfoVOi.getSysbaseid());//绯荤粺缂栫爜
+ dockingTaskDO.setSystemname(sysIntInfoVOi.getSysbasename());//绯荤粺name
+ dockingTaskDO_insert.add(dockingTaskDO);
+ }
+
+ BatchCBO bi = null;
+ if(dockingTaskDO_insert.size()!=0) {
+ bi = dockingTaskDaoI.batchInsert(dockingTaskDO_insert);
+ batchCBO.copyFromOther(bi);
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ //dockingTaskDaoI.updateByPrimaryKey鏂规硶鎶ラ敊浜嗭紝鎵�浠ユ墜鍐欎簡杩欎釜
+ boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
+ if(!u){
+ logger.error("闆嗘垚data鍒嗚В浠诲姟澶辫触锛乨ataoid:"+dataoid);
+ continue;
+ }
+
+ }
+ }
+ private void sendpushDataForService (){
+ initSysadmin();
+ //鏌ヨ鍝簺浠诲姟杩樻病鏈夋墽琛屽畬鎴�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
+ queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
+ queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
+ List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);
+ sendpushDataForService(dockingTaskDOS);
+ }
+ /***
+ * 鍙戦�佺紪鐮佷富鏁版嵁
+ */
+ private void sendpushDataForService (List<DockingTaskDO> dockingTaskDOS){
+
+ //姣忎釜task渚濇鎵ц鎺ㄩ��
+ for (DockingTaskDO dockingTaskDO:dockingTaskDOS){
+ //姣忎釜task涓�涓簨鍔★紝寮�鍚�
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+ String paramString="";
+ String sendString="";
+ String backString="";
+ try {
+ //鏌ヨ绯荤粺鎺ュ彛淇℃伅,ip method,dataType
+ String systeminfooid = dockingTaskDO.getSysinfooid();//sysininfo 鐨刼id
+ String classifyoid = dockingTaskDO.getClassifyoid();
+ //鏌ヨ瑕佹帹閫佺殑鏁版嵁
+ String btmoid = dockingTaskDO.getBtmoid();//鏁版嵁btmid
+ //琛ㄧず鏄富鏁版嵁
+ CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
+ BaseResult<Map<String, String>> baseResult = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid());
+ List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes();
+ Map<String/**鑻辨枃鍚嶇О**/, String/**涓枃鍚嶇О**/> attrIdNameMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(), (o1, o2) -> o2));
+ Map<String, String> data = new HashMap<>();
+ if (baseResult == null) {
+ JSONObject josni = redisService.getCacheObject(DOCKING_CACHE2_DELETE + btmoid);
+ data = (Map) josni;
+ } else {
+ data = baseResult.getObj();
+ }
+ List<NodeProDTO> nodeProDTOS = new ArrayList<>();
+ Map<String, String> finalData = data;
+ attrIdNameMap.keySet().forEach(field -> {
+ String outName = attrIdNameMap.get(field);
+ if (finalData.containsKey(field)) {
+ String Value = finalData.get(field);
+ NodeProDTO nodeProDTO = new NodeProDTO();
+ nodeProDTO.setFiledName(field);
+ nodeProDTO.setOutname(outName);
+ nodeProDTO.setFiledValue(Value);
+ nodeProDTOS.add(nodeProDTO);
+ }
+ });
+
+ String[] classCodeLeves = dockingTaskDO.getClassifyid().split(",");
+ NodeJosnDTO nodeJosnDTO = new NodeJosnDTO();
+ NodedataDTO nodeDataDTO = new NodedataDTO();
+ NodeObjectDTO nodeObjectDTO = new NodeObjectDTO();
+ nodeObjectDTO.setCode(dockingTaskDO.getId());//璁剧疆缂栫爜
+ nodeObjectDTO.setClassCode(classCodeLeves[0]);
+ nodeObjectDTO.setStatus(data.get("lcstatus"));
+ nodeObjectDTO.setLibrary(classCodeLeves[classCodeLeves.length - 1]);
+ nodeObjectDTO.setPro(nodeProDTOS);
+ List<NodeObjectDTO> nodeObjectDTOS = new ArrayList<>();
+ nodeObjectDTOS.add(nodeObjectDTO);
+ nodeDataDTO.setObject(nodeObjectDTOS);
+ nodeJosnDTO.setData(nodeDataDTO);
+ //鏌ヨ鎺ㄩ�佹帴鍙e弬鏁�
+ SysIntInfoVO sysIntInfoVO = sysIntInfoServiceI.getObjectByOid(systeminfooid);
+ String paramType = sysIntInfoVO.getParamtype();//xml/json
+ if (paramType.equals(DATATYPE_JSON)) {
+ Object object = JSONObject.toJSON(nodeJosnDTO);
+ sendString = object.toString();
+ } else {
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(NodedataDTO.class);
+ xStream.autodetectAnnotations(true);
+ sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
+ }
+ //璋冪敤鎺ュ彛
+ callInterface(sendString,sysIntInfoVO, dockingTaskDO, batchCBO);
+ }catch (Throwable e){
+ e.printStackTrace();
+ }finally {
+ //姣忎竴涓猼ask涓�涓簨鐗�
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ }
+ }
+ }
+ public void sendpushClsfForService(){
+ initSysadmin();
+ //鏌ヨ鍝簺浠诲姟杩樻病鏈夋墽琛屽畬鎴�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
+ queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
+ queryWrapper.addQueryMap("btmId",DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT));
+ List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);
+ sendpushClsfForService(dockingTaskDOS);
+ }
+ /***
+ * 鍙戦�佸垎绫绘暟鎹�
+ */
+ private void sendpushClsfForService(List<DockingTaskDO> dockingTaskDOS){
+ //姣忎釜task渚濇鎵ц鎺ㄩ��
+ for (DockingTaskDO dockingTaskDO:dockingTaskDOS){
+ //姣忎釜task涓�涓簨鍔★紝寮�鍚�
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+ String paramString="";
+ String sendString="";
+ String backString="";
+ //鏌ヨ绯荤粺鎺ュ彛淇℃伅,ip method,dataType
+ String systeminfooid = dockingTaskDO.getSysinfooid();//sysininfo 鐨刼id
+ try {
+ //鏌ヨ瑕佹帹閫佺殑鏁版嵁
+ String btmoid = dockingTaskDO.getBtmoid();//鏁版嵁btmid
+ JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
+ CodeClassifyDO codeClassifyDO=codeClassifyDaoI.selectByPrimaryKey(btmoid);
+ List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
+ NodeClassifyDTO nodeClassifyDTO=new NodeClassifyDTO();
+ nodeClassifyDTO.setClassCode(codeClassifyDO.getId());//鍒嗙被浠e彿
+ nodeClassifyDTO.setDescription(codeClassifyDO.getDescription());//鍒嗙被鎻忚堪
+ nodeClassifyDTO.setFullPathName(codeClassifyDO.getPath());//鍏ㄨ矾寰�
+ nodeClassifyDTO.setLcStatus(codeClassifyDO.getLcStatus());//鐘舵��
+ // CodeClassifyDO parentClassDo=codeClassifyDaoI.selectByPrimaryKey(codeClassifyDO.getParentCodeClassifyOid());
+ nodeClassifyDTO.setPid(codeClassifyDO.getId());//鐖秈d鑺傜偣
+ nodeClassifyDTO.setId(codeClassifyDO.getOid());//鍒嗙被oid
+ nodeClassifyDTO.setName(codeClassifyDO.getName());//鍒嗙被鍚嶇О
+ nodeClassifyDTOList.add(nodeClassifyDTO);
+ NodeLibraryDTO nodeLibraryDTO=new NodeLibraryDTO();
+ nodeLibraryDTO.setClassify(nodeClassifyDTOList);
+ CodeClassifyDO rootClassify=codeClassifyDaoI.getRootClassify(btmoid);
+ nodeLibraryDTO.setId(rootClassify.getOid());
+ nodeLibraryDTO.setName(rootClassify.getName());
+ NodeDataDTO nodeDataDTO=new NodeDataDTO();
+ nodeDataDTO.setLibrary(nodeLibraryDTO);
+ jsonRootDataDTO.setData(nodeDataDTO);
+
+ //鏌ヨ鎺ㄩ�佹帴鍙e弬鏁�
+ SysIntInfoVO sysIntInfoVO = sysIntInfoServiceI.getObjectByOid(systeminfooid);
+ String paramType = sysIntInfoVO.getParamtype();//xml/json
+ if(paramType.equals(DATATYPE_JSON)){
+ Object object = JSONObject.toJSON(jsonRootDataDTO);
+ sendString = object.toString();
+ }else{
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(NodeDataDTO.class);
+ xStream.autodetectAnnotations(true);
+ sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
+ }
+ //璋冪敤鎺ュ彛
+ callInterface(sendString,sysIntInfoVO,dockingTaskDO,batchCBO);
+ }catch (Throwable e){
+ e.printStackTrace();
+ }finally {
+ //姣忎竴涓猼ask涓�涓簨鐗�
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ }
+ }
+ }
+
+ /***
+ * 璋冪敤鎺ュ彛
+ * @param sysIntInfoVO
+ * @throws Throwable
+ */
+ private void callInterface(String sendString , SysIntInfoVO sysIntInfoVO,DockingTaskDO dockingTaskDO,BatchCBO batchCBO) throws Throwable{
+ String paramString = "";
+
+ String backString = "";
+ String msg="";
+ String url = sysIntInfoVO.getRequesturl();//url
+ List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
+ try {
+
+ String type = sysIntInfoVO.getInterfacetype().toLowerCase(Locale.ROOT);//get/post/webserver/corba
+ String paramType = sysIntInfoVO.getParamtype();//xml/json
+ String returnType = sysIntInfoVO.getReturntype();//xml/json
+ String requestmethod= sysIntInfoVO.getRequestmethod();
+ String interfaceFunction = sysIntInfoVO.getInterfaceFunction();//涓昏鏄痺ebservice鐨勬柟娉曞悕
+ String namespace = sysIntInfoVO.getNamespace();//namespace
+ String soapaction = sysIntInfoVO.getSoapaction();//soapaction
+ String targName = sysIntInfoVO.getTargName();//targName
+ String cxfaxis = sysIntInfoVO.getCxfaxis();//webservice鏄痗xf/axis
+ //鏌ヨparam
+ List<SysIntParamDO> sysIntParamDOList = sysIntInfoServiceI.getParamsBySystemInfoOid(sysIntInfoVO.getOid());
+ //鏌ヨheader
+ List<SysIntHeaderDO> sysIntHeaderDOList = sysIntInfoServiceI.getHeadersBySystemInfoOid(sysIntInfoVO.getOid());
+ if(type.equals(URLTYPE_HTTP)) {
+ if (requestmethod.equals(URLTYPE_GET)) {//GET璇锋眰
+ String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
+ //鎷兼帴param
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ sendurl = sendurl + "&" + sysIntParamDO.getParamkey() + "=" + sysIntParamDO.getParamvalue();
+ }
+ paramString = sendurl;
+ backString = HttpUtils.get(sendurl);
+ } else if (requestmethod.equals(URLTYPE_POST)) {//POST璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ params.add(sysIntParamDO.getParamkey(), sysIntParamDO.getParamvalue());
+ }
+ params.add(DATA_PARAM_NAME,sendString);
+ paramString = params.toString();
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (SysIntHeaderDO sysIntHeaderDO : sysIntHeaderDOList) {
+ headers.add(sysIntHeaderDO.getHeaderkey(), sysIntHeaderDO.getHeaderalue());
+ }
+ backString = HttpUtils.post(url, params, headers);
+ }
+ if(backString.startsWith("\"")){
+ backString=backString.substring(backString.indexOf("\"")+1);
+ }
+ if(backString.endsWith("\"")){
+ backString=backString.substring(0,backString.lastIndexOf("\""));
+ }
+ if(backString.contains("\n")){
+ String res="\n";
+ backString= backString.replaceAll(res,"");
+ }
+ if(backString.contains("\\")){
+ String res="\\\\\"";
+ backString= backString.replaceAll(res,"\"").trim();
+ }
+ }else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ params.add(sysIntParamDO.getParamkey(), sysIntParamDO.getParamvalue());
+ }
+ paramString = sendString;
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (SysIntHeaderDO sysIntHeaderDO : sysIntHeaderDOList) {
+ headers.add(sysIntHeaderDO.getHeaderkey(), sysIntHeaderDO.getHeaderalue());
+ }
+ backString = WsErpClientUtil.sendMsg(url, namespace, soapaction, interfaceFunction, targName, sendString, 10000);
+
+ } else {//corba鎺ュ彛
+ //paramString=sendString;
+ // backString = jacorbClient.getBOFactoryService().sendCode(sendString);
+ }
+
+ ResultJsonDTO resultJsonDTO = new ResultJsonDTO();
+ if(returnType.equals(DATATYPE_JSON)){
+ resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
+ }else {
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(ResultNodeDataDTO.class);
+ xStream.autodetectAnnotations(true);
+ ResultNodeDataDTO resultNodeDataDTO = (ResultNodeDataDTO) xStream.fromXML(backString);
+ resultJsonDTO.setData(resultNodeDataDTO);
+ }
+ ResultNodeDataDTO resultNodeDataDTO=resultJsonDTO.getData();
+ resultNodeObjectDTOS=resultNodeDataDTO.getObject();
+
+ }catch (Throwable e){
+ msg="璋冪敤鎺ュ彛澶辫触:"+e;
+ e.printStackTrace();
+ // throw new Throwable("璋冪敤鎺ュ彛澶辫触:"+e);
+ ResultNodeObjectDTO resultNodeObjectDTO=new ResultNodeObjectDTO();
+ resultNodeObjectDTO.setErroid("1");
+ resultNodeObjectDTO.setMsg(msg);
+ resultNodeObjectDTO.setCode(sysIntInfoVO.getPushType().equalsIgnoreCase("2")?dockingTaskDO.getClassifyid():dockingTaskDO.getId());
+ resultNodeObjectDTO.setOid(dockingTaskDO.getBtmoid());
+ resultNodeObjectDTOS.add(resultNodeObjectDTO);
+ }finally {
+ boolean isSend = false;
+ for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
+ String erroid = resultNodeObjectDTO.getErroid();
+ msg = resultNodeObjectDTO.getMsg();
+ if("0".equals(erroid)){
+ isSend = true;
+ }else if("1".equals(erroid)){
+ isSend=false;
+ }else{
+ isSend=false;
+ }
+ DockingLogeDO dockingLogeDO = new DockingLogeDO();
+ String oid=redisService.getUUIDEveryDay();
+ dockingLogeDO.setOid(oid);
+ dockingLogeDO.setSystemcode(dockingTaskDO.getSystemcode());
+ dockingLogeDO.setSystemname(dockingTaskDO.getSystemname());
+ dockingLogeDO.setSystemoid(dockingTaskDO.getSystemoid());
+ dockingLogeDO.setClassifyoid(dockingTaskDO.getClassifyoid());
+ dockingLogeDO.setClassifyid(dockingTaskDO.getClassifyid());
+ dockingLogeDO.setClassifyname(dockingTaskDO.getClassifyname());
+ dockingLogeDO.setId(dockingTaskDO.getId());
+ dockingLogeDO.setUniquecode(dockingTaskDO.getUniquecode());
+ dockingLogeDO.setParamstring(paramString);
+ dockingLogeDO.setReturnstring(backString);
+ dockingLogeDO.setInterfacestatus(isSend?"true":"false");
+ dockingLogeDO.setType(DATA_LOGE_OUT);
+ dockingLogeDO.setMsg(msg);
+ logger.error("闆嗘垚鎺ㄩ�佹暟鎹�,systemcode:"+dockingTaskDO.getSystemcode()+",systemname:"+dockingTaskDO.getSystemname()+",url:"+url+",param:"+paramString+",e:"+msg);
+ BatchCBO dockingLogeDOBo = dockingLogeDaoI.insert(dockingLogeDO);
+ batchCBO.copyFromOther(dockingLogeDOBo);
+ }
+ //鍏ㄩ兘鎺ユ敹鎴愬姛鐨勬儏鍐典笅,淇敼dockingtask sendflag涓哄凡鍙戦��
+ if(isSend) {
+ dockingTaskDO.setSendflag(MdmDuckingConstant.SEND_FLAG_TRUE);
+ BatchCBO updateTask = dockingTaskDaoI.updateByPrimaryKey(dockingTaskDO);
+ batchCBO.copyFromOther(updateTask);
+ }
+ }
+ }
+ public void initSysadmin(){
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId("sysAdmin");
+ sessionInfo.setUserName("绯荤粺绠$悊鍛�");
+ sessionInfo.setIp(WebUtil.getLocalIp());
+ sessionInfo.setUserOid("193C026F-7DB8-27B4-F383-4E8BE083FB07");
+ sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue()+"");
+ WebUtil.setSessionInfo(sessionInfo);
+ }
+
+ @Autowired
+ private PlatformClientUtil platformClientUtil;
+ /**
+ * dockingdata鏍规嵁oid淇敼sendflag
+ * @param oid
+ * @param sendflag
+ * @return
+ */
+ public boolean updateDockingDatasSendFlag(String oid,String sendflag){
+ boolean u=false;
+ String sql = "update PLATFORMBTM_codedockingdata set sendFlag = '"+sendflag+"' where oid='"+oid+"'";
+ try {
+ u=platformClientUtil.getBOFactoryService().executeUpdateSql(sql);
+ }catch (Exception e){
+
+ }
+ return u;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeFixedValueServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeFixedValueServiceImpl.java
new file mode 100644
index 0000000..abe5d49
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeFixedValueServiceImpl.java
@@ -0,0 +1,375 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.dao.CodeFixedValueDaoI;
+import com.vci.mdm.dto.CodeFixedValueDTO;
+import com.vci.mdm.model.CodeFixedValueDO;
+import com.vci.mdm.pagemodel.CodeFixedValueVO;
+import com.vci.mdm.service.CodeFixedValueServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鍥哄畾鐮佹鐨勭爜鍊兼湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeFixedValueServiceImpl implements CodeFixedValueServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeFixedValueDaoI codeFixedValueMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍥哄畾鐮佹鐨勭爜鍊�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeFixedValueVO> gridCodeFixedValue(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultAsc("ordernum");
+ if(conditionMap == null){
+ conditionMap = new HashMap<>();
+ }
+ String secOid = conditionMap.getOrDefault("codefixedsecoid", "");
+ if(StringUtils.isBlank(secOid)){
+ return new DataGrid<>();
+ }
+ List<CodeFixedValueDO> doList = codeFixedValueMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeFixedValueVO> dataGrid=new DataGrid<CodeFixedValueVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeFixedValueDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeFixedValueMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeFixedValueDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeFixedValueVO> codeFixedValueDO2VOs(Collection<CodeFixedValueDO> codeFixedValueDOs) throws VciBaseException{
+ List<CodeFixedValueVO> voList = new ArrayList<CodeFixedValueVO>();
+ if(!CollectionUtils.isEmpty(codeFixedValueDOs)){
+ for(CodeFixedValueDO s: codeFixedValueDOs){
+ CodeFixedValueVO vo = codeFixedValueDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeFixedValueDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeFixedValueVO codeFixedValueDO2VO(CodeFixedValueDO codeFixedValueDO) throws VciBaseException{
+ CodeFixedValueVO vo = new CodeFixedValueVO();
+ if(codeFixedValueDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeFixedValueDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeFixedValueVO addSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeFixedValueDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeFixedValueDO codeFixedValueDO = new CodeFixedValueDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeFixedValueDTO,codeFixedValueDO);
+ codeFixedValueMapper.insert(codeFixedValueDO);
+ return codeFixedValueDO2VO(codeFixedValueDO);
+ }
+
+ /**
+ * 淇敼鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeFixedValueVO editSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeFixedValueDTO,"鏁版嵁瀵硅薄",codeFixedValueDTO.getOid(),"鍥哄畾鐮佹鐨勭爜鍊间富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeFixedValueDO codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeFixedValueDTO,codeFixedValueDO);
+ codeFixedValueMapper.updateByPrimaryKey(codeFixedValueDO);
+ return codeFixedValueDO2VO(codeFixedValueDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeFixedValueDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeFixedValueDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeFixedValueDTO codeFixedValueDTO, CodeFixedValueDO codeFixedValueDO) {
+ //boService.checkTs(codeFixedValueDTO);
+ if(!checkIsLinked(codeFixedValueDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鍥哄畾鐮佹鐨勭爜鍊�
+ * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeFixedValue(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeFixedValueDTO,"鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞�",codeFixedValueDTO.getOid(),"鍥哄畾鐮佹鐨勭爜鍊肩殑涓婚敭");
+ CodeFixedValueDO codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeFixedValueDTO,codeFixedValueDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeFixedValueMapper.deleteByPrimaryKey(codeFixedValueDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍥哄畾鐮佹鐨勭爜鍊�
+ * @param oid 涓婚敭
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeFixedValueVO getObjectByOid(String oid) throws VciBaseException{
+ return codeFixedValueDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeFixedValueDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeFixedValueDO codeFixedValueDO = codeFixedValueMapper.selectByPrimaryKey(oid.trim());
+ if(codeFixedValueDO == null || StringUtils.isBlank(codeFixedValueDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeFixedValueDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍥哄畾鐮佹鐨勭爜鍊�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeFixedValueVO> listCodeFixedValueByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeFixedValueDO> codeFixedValueDOList = listCodeFixedValueDOByOidCollections(oidCollections);
+ return codeFixedValueDO2VOs(codeFixedValueDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeFixedValueDO> listCodeFixedValueDOByOidCollections(Collection<String> oidCollections){
+ List<CodeFixedValueDO> codeFixedValueDOList = new ArrayList<CodeFixedValueDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeFixedValueDO> tempDOList = codeFixedValueMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeFixedValueDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeFixedValueDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鍥哄畾鐮佹鐨勭爜鍊煎垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeFixedValueVO> refDataGridCodeFixedValue(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeFixedValue(conditionMap,pageHelper);
+ }
+
+ /**
+ * 浣跨敤鐮佹鐨勪富閿幏鍙栧浐瀹氱爜鐨勭爜鍊�
+ *
+ * @param secOidCollection 鐮佹鐨勪富閿�
+ * @return 鐮佸�兼樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鐨勬椂鍊欏嚭鐜颁簡閿欒浼氭姏鍑哄紓甯�
+ */
+ @Override
+ public Map<String, List<CodeFixedValueVO>> listCodeFixedValueBySecOids(Collection<String> secOidCollection) throws VciBaseException {
+ if(CollectionUtils.isEmpty(secOidCollection)){
+ return new HashMap<>();
+ }
+ List<CodeFixedValueVO> voList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(secOidCollection).forEach(secOids->{
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codefixedsecoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(secOids.toArray(new String[0])) + ")");
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultAsc("ordernum");
+ List<CodeFixedValueDO> valueDOS = codeFixedValueMapper.selectByCondition(conditionMap, pageHelper);
+ voList.addAll(codeFixedValueDO2VOs(Optional.ofNullable(valueDOS).orElseGet(() -> new ArrayList<>())));
+ });
+ return voList.stream().collect(Collectors.groupingBy(CodeFixedValueVO::getCodefixedsecoid));
+ }
+
+ /**
+ * 鎵归噺娣诲姞鍥哄畾鐮佹鐨勭爜鍊硷紝濡傛灉淇濆瓨鐨勯泦鍚堜腑涓嶅瓨鍦ㄥ凡鍦ㄦ暟鎹簱涓殑鐮佸�煎垯鍒犻櫎銆備富瑕佹槸淇濆瓨鐮佸�肩殑搴忓彿
+ * @param dtoList 鍥哄畾鐮佹鐨勭爜鍊煎垪琛�
+ * @param codefixedsecoid 鍥哄畾鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult<CodeFixedValueVO> batchSave4Order(List<CodeFixedValueDTO> dtoList, String codefixedsecoid) {
+ VciBaseUtil.alertNotNull(codefixedsecoid,"鍥哄畾鐮佹涓婚敭");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codefixedsecoid",codefixedsecoid);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeFixedValueDO.class);
+ List<CodeFixedValueDO> doList = codeFixedValueMapper.selectByWrapper(wrapper);
+ List<CodeFixedValueDO> updateList = new ArrayList<>();
+ List<String> deleteOidList = new ArrayList<>();
+ dtoList.forEach(dto -> {
+ if (StringUtils.isNotBlank(dto.getOid())){
+ List<CodeFixedValueDO> valueDOList = doList.stream().filter(value -> {
+ return value.getOid().equals(dto.getOid());
+ }).collect(Collectors.toList());
+ valueDOList.forEach(valueDO -> {
+ valueDO.setId(dto.getId());
+ valueDO.setName(dto.getName());
+ valueDO.setOrderNum(dto.getOrdernum());
+ updateList.add(valueDO);
+ });
+ }else{
+ throw new VciBaseException("鍥哄畾鐮佹涓婚敭涓嶈兘涓虹┖");
+ }
+ });
+ if (doList.size() != dtoList.size()){
+ List<String> oidList = dtoList.stream().map(CodeFixedValueDTO::getOid).collect(Collectors.toList());
+ List<CodeFixedValueDO> deleteList = new ArrayList<>();
+ for (CodeFixedValueDO value : doList) {
+ if (!oidList.contains(value.getOid())){
+ deleteList.add(value);
+ }
+ }
+ deleteOidList = deleteList.stream().map(CodeFixedValueDO::getOid).collect(Collectors.toList());
+ }
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = codeFixedValueMapper.batchUpdate(updateList);
+ if (!CollectionUtils.isEmpty(deleteOidList)) {
+ BatchCBO batchDeleteByOids = codeFixedValueMapper.batchDeleteByOids(deleteOidList);
+ batchCBO.setDeleteCbos(batchDeleteByOids.getDeleteCbos());
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return BaseResult.success();
+ }
+
+ /**
+ * 鏍规嵁鐮佹涓婚敭鍒犻櫎鍏跺瓨鍦ㄧ殑鐮佸�煎璞�
+ * @param codefixedsecoid 鍥哄畾鐮佹鐨勪富閿�
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult<CodeFixedValueVO> batchDeleteBySecOid(String codefixedsecoid) {
+ VciBaseUtil.alertNotNull(codefixedsecoid,"鍥哄畾鐮佹涓婚敭");
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codefixedvalueoid",codefixedsecoid);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap,CodeFixedValueDO.class);
+ List<CodeFixedValueDO> doList = codeFixedValueMapper.selectByWrapper(wrapper);
+ codeFixedValueMapper.batchDeleteByOids(doList.stream().map(CodeFixedValueDO::getOid).collect(Collectors.toList()));
+ return BaseResult.success();
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java
new file mode 100644
index 0000000..0cad475
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java
@@ -0,0 +1,342 @@
+package org.springblade.code.service.impl;
+
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springblade.code.bo.CodeClassifyFullInfoBO;
+import org.springblade.code.dao.CodeKeyAttrRepeatRuleDaoI;
+import org.springblade.code.dto.CodeKeyAttrRepeatRuleDTO;
+import org.springblade.code.model.CodeKeyAttrRepeatRuleDO;
+import org.springblade.code.service.CodeKeyAttrRepeatRuleServiceI;
+import org.springblade.code.vo.pagemodel.CodeClassifyVO;
+import org.springblade.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏈嶅姟
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeKeyAttrRepeatRuleServiceImpl implements CodeKeyAttrRepeatRuleServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeKeyAttrRepeatRuleDaoI codeKeyAttrRepeatRuleMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeKeyAttrRepeatRuleVO> gridCodeKeyAttrRepeatRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeKeyAttrRepeatRuleDO> doList = codeKeyAttrRepeatRuleMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeKeyAttrRepeatRuleVO> dataGrid=new DataGrid<CodeKeyAttrRepeatRuleVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeKeyAttrRepeatRuleDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeKeyAttrRepeatRuleMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeKeyAttrRepeatRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeKeyAttrRepeatRuleVO> codeKeyAttrRepeatRuleDO2VOs(Collection<CodeKeyAttrRepeatRuleDO> codeKeyAttrRepeatRuleDOs) throws VciBaseException{
+ List<CodeKeyAttrRepeatRuleVO> voList = new ArrayList<CodeKeyAttrRepeatRuleVO>();
+ if(!CollectionUtils.isEmpty(codeKeyAttrRepeatRuleDOs)){
+ for(CodeKeyAttrRepeatRuleDO s: codeKeyAttrRepeatRuleDOs){
+ CodeKeyAttrRepeatRuleVO vo = codeKeyAttrRepeatRuleDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeKeyAttrRepeatRuleDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleDO2VO(CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO) throws VciBaseException{
+ CodeKeyAttrRepeatRuleVO vo = new CodeKeyAttrRepeatRuleVO();
+ if(codeKeyAttrRepeatRuleDO != null) {
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeKeyAttrRepeatRuleDO, vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeKeyAttrRepeatRuleVO addSave(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeKeyAttrRepeatRuleDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO = new CodeKeyAttrRepeatRuleDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeKeyAttrRepeatRuleDTO,codeKeyAttrRepeatRuleDO);
+ codeKeyAttrRepeatRuleMapper.insert(codeKeyAttrRepeatRuleDO);
+ return codeKeyAttrRepeatRuleDO2VO(codeKeyAttrRepeatRuleDO);
+ }
+
+ /**
+ * 淇敼鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeKeyAttrRepeatRuleVO editSave(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeKeyAttrRepeatRuleDTO,"鏁版嵁瀵硅薄",codeKeyAttrRepeatRuleDTO.getOid(),"鍏抽敭鏁版嵁鏌ラ噸瑙勫垯涓婚敭");
+ //灏咲TO杞崲涓篋O
+ CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO = selectByOid(codeKeyAttrRepeatRuleDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeKeyAttrRepeatRuleDTO,codeKeyAttrRepeatRuleDO);
+ codeKeyAttrRepeatRuleMapper.updateByPrimaryKey(codeKeyAttrRepeatRuleDO);
+ return codeKeyAttrRepeatRuleDO2VO(codeKeyAttrRepeatRuleDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeKeyAttrRepeatRuleDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeKeyAttrRepeatRuleDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO, CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO) {
+ CodeKeyAttrRepeatRuleDO repeatRuleDO = new CodeKeyAttrRepeatRuleDO();
+ BeanUtil.convert(codeKeyAttrRepeatRuleDTO,repeatRuleDO);
+ boService.checkTs(repeatRuleDO);
+ if(!checkIsLinked(codeKeyAttrRepeatRuleDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param codeKeyAttrRepeatRuleDTO 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeKeyAttrRepeatRule(CodeKeyAttrRepeatRuleDTO codeKeyAttrRepeatRuleDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeKeyAttrRepeatRuleDTO,"鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏁版嵁瀵硅薄",codeKeyAttrRepeatRuleDTO.getOid(),"鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鐨勪富閿�");
+ CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO = selectByOid(codeKeyAttrRepeatRuleDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeKeyAttrRepeatRuleDTO,codeKeyAttrRepeatRuleDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeKeyAttrRepeatRuleMapper.deleteByPrimaryKey(codeKeyAttrRepeatRuleDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param oid 涓婚敭
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeKeyAttrRepeatRuleVO getObjectByOid(String oid) throws VciBaseException{
+ return codeKeyAttrRepeatRuleDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeKeyAttrRepeatRuleDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeKeyAttrRepeatRuleDO codeKeyAttrRepeatRuleDO = codeKeyAttrRepeatRuleMapper.selectByPrimaryKey(oid.trim());
+ if(codeKeyAttrRepeatRuleDO == null || StringUtils.isBlank(codeKeyAttrRepeatRuleDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeKeyAttrRepeatRuleDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeKeyAttrRepeatRuleVO> listCodeKeyAttrRepeatRuleByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeKeyAttrRepeatRuleDO> codeKeyAttrRepeatRuleDOList = listCodeKeyAttrRepeatRuleDOByOidCollections(oidCollections);
+ return codeKeyAttrRepeatRuleDO2VOs(codeKeyAttrRepeatRuleDOList);
+ }
+
+ /**
+ * 缂栧彿鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+ *
+ * @param idCollections 缂栧彿闆嗗悎
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+ */
+ @Override
+ public Collection<CodeKeyAttrRepeatRuleVO> listCodeKeyAttrRepeatRuleByIds(List<String> idCollections) {
+ List<CodeKeyAttrRepeatRuleDO> codeKeyAttrRepeatRuleDOList = listCodeKeyAttrRepeatRuleDOByIdCollections(idCollections);
+ return codeKeyAttrRepeatRuleDO2VOs(codeKeyAttrRepeatRuleDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param idCollections 缂栧彿鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeKeyAttrRepeatRuleDO> listCodeKeyAttrRepeatRuleDOByIdCollections(Collection<String> idCollections){
+ List<CodeKeyAttrRepeatRuleDO> codeKeyAttrRepeatRuleDOList = new ArrayList<CodeKeyAttrRepeatRuleDO>();
+ if(!CollectionUtils.isEmpty(idCollections)){
+ Collection<Collection<String>> idCollectionsList = VciBaseUtil.switchCollectionForOracleIn(idCollections);
+ for(Collection<String> ids: idCollectionsList){
+ List<CodeKeyAttrRepeatRuleDO> tempDOList = codeKeyAttrRepeatRuleMapper.selectByIdCollection(ids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeKeyAttrRepeatRuleDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeKeyAttrRepeatRuleDOList;
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeKeyAttrRepeatRuleDO> listCodeKeyAttrRepeatRuleDOByOidCollections(Collection<String> oidCollections){
+ List<CodeKeyAttrRepeatRuleDO> codeKeyAttrRepeatRuleDOList = new ArrayList<CodeKeyAttrRepeatRuleDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeKeyAttrRepeatRuleDO> tempDOList = codeKeyAttrRepeatRuleMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeKeyAttrRepeatRuleDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeKeyAttrRepeatRuleDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeKeyAttrRepeatRuleVO> refDataGridCodeKeyAttrRepeatRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeKeyAttrRepeatRule(conditionMap,pageHelper);
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭潵鑾峰彇鍏抽敭灞炴�у垽鏂鍒欑殑鍐呭
+ *
+ * @param classifyFullInfo 涓婚搴撳垎绫荤殑鍏ㄩ儴淇℃伅
+ * @return 瑙勫垯鐨勬樉绀哄璞�
+ */
+ @Override
+ public CodeKeyAttrRepeatRuleVO getRuleByClassifyFullInfo(CodeClassifyFullInfoBO classifyFullInfo) {
+ VciBaseUtil.alertNotNull(classifyFullInfo,"涓婚搴撳垎绫荤殑淇℃伅");
+ String keyAttrRuleOid = classifyFullInfo.getCurrentClassifyVO().getCodekeyattrrepeatoid();
+ if(StringUtils.isBlank(keyAttrRuleOid)){
+ //鎴戜滑鏍规嵁涓婄骇鐨勫垎绫伙紝鎸夌収灞傜骇鍊掑簭鎺掑垪
+ if(!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())){
+ //鏈変笂绾у垎绫荤殑鎯呭喌涓嬫墠鍘绘煡璇�
+ List<CodeClassifyVO> sortedClassifyVO = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).collect(Collectors.toList());
+ for(int i = sortedClassifyVO.size() -1;i>=0;i--){
+ CodeClassifyVO record = sortedClassifyVO.get(i);
+ if(StringUtils.isNotBlank(record.getCodekeyattrrepeatoid())){
+ keyAttrRuleOid = record.getCodekeyattrrepeatoid();
+ break;
+ }
+ }
+ }
+ }
+ if(StringUtils.isNotBlank(keyAttrRuleOid)){
+ return getObjectByOid(keyAttrRuleOid);
+ }
+ //鍏抽敭灞炴�х殑瑙勫垯鍙互涓虹┖锛屼负绌虹殑鏃跺�欏氨浠h〃涓嶆帶鍒讹紝
+ return null;
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodePhaseAttrServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodePhaseAttrServiceImpl.java
new file mode 100644
index 0000000..acf38a5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodePhaseAttrServiceImpl.java
@@ -0,0 +1,299 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodePhaseAttrDaoI;
+import com.vci.mdm.dto.CodePhaseAttrDTO;
+import com.vci.mdm.model.CodePhaseAttrDO;
+import com.vci.mdm.pagemodel.CodePhaseAttrVO;
+import com.vci.mdm.service.CodePhaseAttrServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 闃舵鐨勫睘鎬ф湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodePhaseAttrServiceImpl implements CodePhaseAttrServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodePhaseAttrDaoI codePhaseAttrMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑闃舵鐨勫睘鎬�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodePhaseAttrVO> gridCodePhaseAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodePhaseAttrDO> doList = codePhaseAttrMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodePhaseAttrVO> dataGrid=new DataGrid<CodePhaseAttrVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codePhaseAttrDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codePhaseAttrMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codePhaseAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodePhaseAttrVO> codePhaseAttrDO2VOs(Collection<CodePhaseAttrDO> codePhaseAttrDOs) throws VciBaseException{
+ List<CodePhaseAttrVO> voList = new ArrayList<CodePhaseAttrVO>();
+ if(!CollectionUtils.isEmpty(codePhaseAttrDOs)){
+ for(CodePhaseAttrDO s: codePhaseAttrDOs){
+ CodePhaseAttrVO vo = codePhaseAttrDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codePhaseAttrDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodePhaseAttrVO codePhaseAttrDO2VO(CodePhaseAttrDO codePhaseAttrDO) throws VciBaseException{
+ CodePhaseAttrVO vo = new CodePhaseAttrVO();
+ if(codePhaseAttrDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codePhaseAttrDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodePhaseAttrVO addSave(CodePhaseAttrDTO codePhaseAttrDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codePhaseAttrDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodePhaseAttrDO codePhaseAttrDO = new CodePhaseAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codePhaseAttrDTO,codePhaseAttrDO);
+ codePhaseAttrMapper.insert(codePhaseAttrDO);
+ return codePhaseAttrDO2VO(codePhaseAttrDO);
+ }
+
+ /**
+ * 淇敼闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodePhaseAttrVO editSave(CodePhaseAttrDTO codePhaseAttrDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codePhaseAttrDTO,"鏁版嵁瀵硅薄",codePhaseAttrDTO.getOid(),"闃舵鐨勫睘鎬т富閿�");
+ //灏咲TO杞崲涓篋O
+ CodePhaseAttrDO codePhaseAttrDO = selectByOid(codePhaseAttrDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codePhaseAttrDTO,codePhaseAttrDO);
+ codePhaseAttrMapper.updateByPrimaryKey(codePhaseAttrDO);
+ return codePhaseAttrDO2VO(codePhaseAttrDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codePhaseAttrDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codePhaseAttrDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodePhaseAttrDTO codePhaseAttrDTO, CodePhaseAttrDO codePhaseAttrDO) {
+ CodePhaseAttrDO tsDO = new CodePhaseAttrDO();
+ BeanUtil.convert(codePhaseAttrDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(codePhaseAttrDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎闃舵鐨勫睘鎬�
+ * @param codePhaseAttrDTO 闃舵鐨勫睘鎬ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodePhaseAttr(CodePhaseAttrDTO codePhaseAttrDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codePhaseAttrDTO,"闃舵鐨勫睘鎬ф暟鎹璞�",codePhaseAttrDTO.getOid(),"闃舵鐨勫睘鎬х殑涓婚敭");
+ CodePhaseAttrDO codePhaseAttrDO = selectByOid(codePhaseAttrDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codePhaseAttrDTO,codePhaseAttrDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codePhaseAttrMapper.deleteByPrimaryKey(codePhaseAttrDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇闃舵鐨勫睘鎬�
+ * @param oid 涓婚敭
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodePhaseAttrVO getObjectByOid(String oid) throws VciBaseException{
+ return codePhaseAttrDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodePhaseAttrDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodePhaseAttrDO codePhaseAttrDO = codePhaseAttrMapper.selectByPrimaryKey(oid.trim());
+ if(codePhaseAttrDO == null || StringUtils.isBlank(codePhaseAttrDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codePhaseAttrDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇闃舵鐨勫睘鎬�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodePhaseAttrVO> listCodePhaseAttrByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodePhaseAttrDO> codePhaseAttrDOList = listCodePhaseAttrDOByOidCollections(oidCollections);
+ return codePhaseAttrDO2VOs(codePhaseAttrDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodePhaseAttrDO> listCodePhaseAttrDOByOidCollections(Collection<String> oidCollections){
+ List<CodePhaseAttrDO> codePhaseAttrDOList = new ArrayList<CodePhaseAttrDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodePhaseAttrDO> tempDOList = codePhaseAttrMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codePhaseAttrDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codePhaseAttrDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収闃舵鐨勫睘鎬у垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 闃舵鐨勫睘鎬ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodePhaseAttrVO> refDataGridCodePhaseAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodePhaseAttr(conditionMap,pageHelper);
+ }
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鍜岄樁娈电紪鍙疯幏鍙栧寘鍚殑灞炴��
+ *
+ * @param templateOid 妯℃澘鐨勭紪鍙�
+ * @param phaseId 闃舵鐨勭紪鍙�
+ * @return 灞炴�х殑鑻辨枃鍚嶇О
+ */
+ @Override
+ public List<String> listAttrByTemplateOidAndPhaseId(String templateOid, String phaseId) {
+ if(StringUtils.isBlank(templateOid)|| StringUtils.isBlank(phaseId)){
+ return new ArrayList<>();
+ }
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codephaseoid", QueryOptionConstant.IN + "(select oid from "+
+ VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_TEMPLATE_PHASE) +
+ " where codeClassifyTemplateOid ='" + templateOid + "' and lower(name) ='" + phaseId.trim().toLowerCase(Locale.ROOT) + "')");
+ PageHelper pageHelper = new PageHelper(-1);
+ List<CodePhaseAttrDO> attrDOS = codePhaseAttrMapper.selectByCondition(conditionMap, pageHelper);
+ return CollectionUtils.isEmpty(attrDOS)?new ArrayList<>():attrDOS.stream().map(CodePhaseAttrDO::getId).collect(Collectors.toList());
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeResembleRuleServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeResembleRuleServiceImpl.java
new file mode 100644
index 0000000..8e955ab
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeResembleRuleServiceImpl.java
@@ -0,0 +1,277 @@
+package org.springblade.code.service.impl;
+
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.mdm.dao.CodeResembleRuleDaoI;
+import com.vci.mdm.dto.CodeResembleRuleDTO;
+import com.vci.mdm.model.CodeResembleRuleDO;
+import com.vci.mdm.pagemodel.CodeResembleRuleVO;
+import com.vci.mdm.service.CodeResembleRuleServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏈嶅姟
+ * @author weidy
+ * @date 2022-04-10
+ */
+@Service
+public class CodeResembleRuleServiceImpl implements CodeResembleRuleServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeResembleRuleDaoI codeResembleRuleMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鐩镐技鏌ヨ瑙勫垯
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeResembleRuleVO> gridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeResembleRuleDO> doList = codeResembleRuleMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeResembleRuleVO> dataGrid=new DataGrid<CodeResembleRuleVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeResembleRuleDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeResembleRuleMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeResembleRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeResembleRuleVO> codeResembleRuleDO2VOs(Collection<CodeResembleRuleDO> codeResembleRuleDOs) throws VciBaseException{
+ List<CodeResembleRuleVO> voList = new ArrayList<CodeResembleRuleVO>();
+ if(!CollectionUtils.isEmpty(codeResembleRuleDOs)){
+ for(CodeResembleRuleDO s: codeResembleRuleDOs){
+ CodeResembleRuleVO vo = codeResembleRuleDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeResembleRuleDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeResembleRuleVO codeResembleRuleDO2VO(CodeResembleRuleDO codeResembleRuleDO) throws VciBaseException{
+ CodeResembleRuleVO vo = new CodeResembleRuleVO();
+ if(codeResembleRuleDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeResembleRuleVO addSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeResembleRuleDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeResembleRuleDO codeResembleRuleDO = new CodeResembleRuleDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDTO,codeResembleRuleDO);
+ codeResembleRuleMapper.insert(codeResembleRuleDO);
+ return codeResembleRuleDO2VO(codeResembleRuleDO);
+ }
+
+ /**
+ * 淇敼鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeResembleRuleVO editSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeResembleRuleDTO,"鏁版嵁瀵硅薄",codeResembleRuleDTO.getOid(),"鐩镐技鏌ヨ瑙勫垯涓婚敭");
+ //灏咲TO杞崲涓篋O
+ CodeResembleRuleDO codeResembleRuleDO = selectByOid(codeResembleRuleDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeResembleRuleDTO,codeResembleRuleDO);
+ codeResembleRuleMapper.updateByPrimaryKey(codeResembleRuleDO);
+ return codeResembleRuleDO2VO(codeResembleRuleDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeResembleRuleDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeResembleRuleDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeResembleRuleDTO codeResembleRuleDTO, CodeResembleRuleDO codeResembleRuleDO) {
+ CodeResembleRuleDO tsDO = new CodeResembleRuleDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(codeResembleRuleDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鐩镐技鏌ヨ瑙勫垯
+ * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeResembleRule(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeResembleRuleDTO,"鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄",codeResembleRuleDTO.getOid(),"鐩镐技鏌ヨ瑙勫垯鐨勪富閿�");
+ CodeResembleRuleDO codeResembleRuleDO = selectByOid(codeResembleRuleDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeResembleRuleDTO,codeResembleRuleDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeResembleRuleMapper.deleteByPrimaryKey(codeResembleRuleDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param oid 涓婚敭
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeResembleRuleVO getObjectByOid(String oid) throws VciBaseException{
+ return codeResembleRuleDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeResembleRuleDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeResembleRuleDO codeResembleRuleDO = codeResembleRuleMapper.selectByPrimaryKey(oid.trim());
+ if(codeResembleRuleDO == null || StringUtils.isBlank(codeResembleRuleDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeResembleRuleDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeResembleRuleVO> listCodeResembleRuleByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeResembleRuleDO> codeResembleRuleDOList = listCodeResembleRuleDOByOidCollections(oidCollections);
+ return codeResembleRuleDO2VOs(codeResembleRuleDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeResembleRuleDO> listCodeResembleRuleDOByOidCollections(Collection<String> oidCollections){
+ List<CodeResembleRuleDO> codeResembleRuleDOList = new ArrayList<CodeResembleRuleDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeResembleRuleDO> tempDOList = codeResembleRuleMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeResembleRuleDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeResembleRuleDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鐩镐技鏌ヨ瑙勫垯鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeResembleRuleVO> refDataGridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeResembleRule(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeRuleServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeRuleServiceImpl.java
new file mode 100644
index 0000000..4470af6
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeRuleServiceImpl.java
@@ -0,0 +1,679 @@
+package org.springblade.code.service.impl;
+
+import com.vci.corba.common.VCIError;
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodeBasicSecDaoI;
+import com.vci.mdm.dao.CodeRuleDaoI;
+import com.vci.mdm.dto.CodeBasicSecDTO;
+import com.vci.mdm.dto.CodeRuleDTO;
+import com.vci.mdm.lifecycle.CodeRuleLC;
+import com.vci.mdm.model.*;
+import com.vci.mdm.pagemodel.CodeBasicSecVO;
+import com.vci.mdm.pagemodel.CodeClassifyVO;
+import com.vci.mdm.pagemodel.CodeRuleVO;
+import com.vci.mdm.service.CodeBasicSecServiceI;
+import com.vci.mdm.service.CodeClassifyServiceI;
+import com.vci.mdm.service.CodeRuleServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.KeyValue;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+import plm.bs.bom.clientobject.ClientBusinessObjectOperation;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐湇鍔�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeRuleServiceImpl implements CodeRuleServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeRuleDaoI codeRuleMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 涓婚搴撳垎绫绘暟鎹搷浣滃眰
+ */
+ @Autowired
+ private CodeClassifyServiceI codeClassifyService;
+
+ /**
+ * 鐮佹鍩虹淇℃伅鏈嶅姟
+ */
+ @Autowired
+ private CodeBasicSecServiceI codeBasicSecService;
+
+ /**
+ * 鐮佹鍩虹淇℃伅鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeBasicSecDaoI codeBasicSecMapper;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeRuleVO> gridCodeRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeRuleDO> doList = codeRuleMapper.selectByCondition(conditionMap, pageHelper);
+ DataGrid<CodeRuleVO> dataGrid = new DataGrid<CodeRuleVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeRuleDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeRuleMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeRuleVO> codeRuleDO2VOs(Collection<CodeRuleDO> codeRuleDOs) throws VciBaseException {
+ return codeRuleDO2VOs(codeRuleDOs, false);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @param hasSec 鏄惁鍖呭惈鐮佹
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeRuleVO> codeRuleDO2VOs(Collection<CodeRuleDO> codeRuleDOs, boolean hasSec) throws VciBaseException {
+ List<CodeRuleVO> voList = new ArrayList<CodeRuleVO>();
+ if (!CollectionUtils.isEmpty(codeRuleDOs)) {
+ for (CodeRuleDO s : codeRuleDOs) {
+ CodeRuleVO vo = codeRuleDO2VO(s);
+ if (vo != null) {
+ voList.add(vo);
+ }
+ }
+ if (hasSec) {
+ List<CodeBasicSecVO> secVOList = codeBasicSecService.listCodeBasicSecByRuleOids(voList.stream().map(CodeRuleVO::getOid).collect(Collectors.toList()));
+ if (!CollectionUtils.isEmpty(secVOList)) {
+ Map<String, List<CodeBasicSecVO>> secVOMap = secVOList.stream().collect(Collectors.groupingBy(CodeBasicSecVO::getPkCodeRule));
+ voList.stream().forEach(vo -> {
+ vo.setSecVOList(secVOMap.getOrDefault(vo.getOid(), new ArrayList<>()));
+ });
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeRuleDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeRuleVO codeRuleDO2VO(CodeRuleDO codeRuleDO) throws VciBaseException {
+ CodeRuleVO vo = new CodeRuleVO();
+ if (codeRuleDO != null) {
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDO, vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(CodeRuleLC.getTextByValue(vo.getLcStatus()));
+
+ }
+ return vo;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ *
+ * @param codeRuleDO 瑙勫垯鐨勬暟鎹璞�
+ * @param hasSec 鏄惁鏌ヨ鐮佹
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ public CodeRuleVO codeRuleDO2VO(CodeRuleDO codeRuleDO, boolean hasSec) throws VciBaseException {
+ CodeRuleVO vo = new CodeRuleVO();
+ if (codeRuleDO != null) {
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDO, vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setLcStatusText(CodeRuleLC.getTextByValue(vo.getLcStatus()));
+ if (hasSec) {
+ //鏌ヨ鐮佹
+ vo.setSecVOList(codeBasicSecService.listCodeBasicSecByRuleOid(vo.getOid()));
+ }
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeRuleVO addSave(CodeRuleDTO codeRuleDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeRuleDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeRuleDO codeRuleDO = new CodeRuleDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDTO, codeRuleDO);
+ codeRuleMapper.insert(codeRuleDO);
+ return codeRuleDO2VO(codeRuleDO);
+ }
+
+ /**
+ * 淇敼涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeRuleVO editSave(CodeRuleDTO codeRuleDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeRuleDTO, "鏁版嵁瀵硅薄", codeRuleDTO.getOid(), "涓绘暟鎹紪鐮佽鍒欎富閿�");
+ if (!checkEditDelStatus(codeRuleDTO.getLcStatus())) {
+ throw new VciBaseException("缂栫爜瑙勫垯宸插彂甯冿紝涓嶅厑璁哥紪杈戞垨鍒犻櫎");
+ }
+ //灏咲TO杞崲涓篋O
+ CodeRuleDO codeRuleDO = selectByOid(codeRuleDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeRuleDTO, codeRuleDO);
+ codeRuleMapper.updateByPrimaryKey(codeRuleDO);
+ return codeRuleDO2VO(codeRuleDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ *
+ * @param codeRuleDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeRuleDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeRuleDTO codeRuleDTO, CodeRuleDO codeRuleDO) {
+ boService.checkTs(codeRuleDTO);
+ if (!checkIsLinked(codeRuleDO.getOid())) {
+ return BaseResult.success();
+ } else {
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE, new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ *
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException {
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeRule(CodeRuleDTO codeRuleDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeRuleDTO, "涓绘暟鎹紪鐮佽鍒欐暟鎹璞�", codeRuleDTO.getOid(), "涓绘暟鎹紪鐮佽鍒欑殑涓婚敭");
+ CodeRuleDO codeRuleDO = selectByOid(codeRuleDTO.getOid());
+ //BaseResult baseResult = checkIsCanDeleteForDO(codeRuleDTO,codeRuleDO);
+ // if(baseResult.isSuccess()) {
+ // }else{
+ // return baseResult;
+ // }
+ if (!checkEditDelStatus(codeRuleDO.getLcStatus())) {
+ return BaseResult.fail("缂栫爜瑙勫垯宸插彂甯冿紝涓嶅厑璁哥紪杈戞垨鍒犻櫎");
+ } else {
+ if (isAlreadyInUse(codeRuleDO.getOid())) {
+ return BaseResult.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄わ紒");
+ }
+ }
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("codeRuleOid", codeRuleDTO.getOid());
+ List<CodeAllCodeDO> codeDOList = boService.queryObject(CodeAllCodeDO.class, conditionMap);
+ if (!CollectionUtils.isEmpty(codeDOList)) {
+ return BaseResult.fail("缂栫爜瑙勫垯宸茬敓鎴愮紪鐮侊紝涓嶅厑璁稿垹闄�");
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = codeBasicSecService.batchDeleteSecByCodeRuleOid(codeRuleDO.getOid());
+ BatchCBO mainCBO = codeRuleMapper.deleteByPrimaryKey(codeRuleDO.getOid());
+ WebUtil.setPersistence(true);
+ Set<ClientBusinessObject> deleteSet = new HashSet<>();
+ deleteSet.addAll(batchCBO.getDeleteCbos());
+ deleteSet.addAll(mainCBO.getDeleteCbos());
+ batchCBO.setDeleteCbos(deleteSet);
+ boService.persistenceBatch(batchCBO);
+ return (batchCBO != null && batchCBO.getDeleteCbos() != null && batchCBO.getDeleteCbos().size() > 0) ? BaseResult.successMsg(DELETE_SUCCESS) : BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 鏍¢獙缂栫爜瑙勫垯鐨勭姸鎬佹槸鍚﹀彲浠ョ紪杈戞垨鍒犻櫎
+ *
+ * @param lcStatus 缂栫爜瑙勫垯
+ * @return true琛ㄧず鍙互缂栬緫鎴栧垹闄わ紝false琛ㄧず涓嶅彲浠�
+ */
+ @Override
+ public boolean checkEditDelStatus(String lcStatus) {
+ if (CodeRuleLC.RELEASED.getValue().equals(lcStatus) || CodeRuleLC.DISABLED.getValue().equals(lcStatus)) {
+ return false;
+ }
+ return true;
+ }
+
+
+ /**
+ * 涓婚敭鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param oid 涓婚敭
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeRuleVO getObjectByOid(String oid) throws VciBaseException {
+ return codeRuleDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ *
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeRuleDO selectByOid(String oid) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oid, "涓婚敭");
+ CodeRuleDO codeRuleDO = codeRuleMapper.selectByPrimaryKey(oid.trim());
+ if (codeRuleDO == null || StringUtils.isBlank(codeRuleDO.getOid())) {
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeRuleDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeRuleVO> listCodeRuleByOids(Collection<String> oidCollections) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oidCollections, "鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeRuleDO> codeRuleDOList = listCodeRuleDOByOidCollections(oidCollections);
+ return codeRuleDO2VOs(codeRuleDOList);
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇涓绘暟鎹紪鐮佽鍒�
+ *
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @param hasSec 鏄惁鍖呭惈鐮佹
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeRuleVO> listCodeRuleByOids(Collection<String> oidCollections, boolean hasSec) throws VciBaseException {
+ VciBaseUtil.alertNotNull(oidCollections, "鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeRuleDO> codeRuleDOList = listCodeRuleDOByOidCollections(oidCollections);
+ return codeRuleDO2VOs(codeRuleDOList, true);
+ }
+
+ /**
+ * 浣跨敤缂栧彿鐨勯泦鍚堣幏鍙栬鍒欑殑鍐呭
+ *
+ * @param idCollection 缂栧彿鐨勯泦鍚�
+ * @return 瑙勫垯鐨勫唴瀹�
+ */
+ @Override
+ public List<CodeRuleVO> listCodeRuleByIds(Collection<String> idCollection) {
+ return codeRuleDO2VOs(listCodeRuleDOByIdCollections(idCollection));
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ *
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeRuleDO> listCodeRuleDOByOidCollections(Collection<String> oidCollections) {
+ List<CodeRuleDO> codeRuleDOList = new ArrayList<CodeRuleDO>();
+ if (!CollectionUtils.isEmpty(oidCollections)) {
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for (Collection<String> oids : oidCollectionsList) {
+ List<CodeRuleDO> tempDOList = codeRuleMapper.selectByPrimaryKeyCollection(oids);
+ if (!CollectionUtils.isEmpty(tempDOList)) {
+ codeRuleDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeRuleDOList;
+ }
+
+ /**
+ * 浣跨敤缂栧彿闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ *
+ * @param idCollections 缂栧彿鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeRuleDO> listCodeRuleDOByIdCollections(Collection<String> idCollections) {
+ List<CodeRuleDO> codeRuleDOList = new ArrayList<CodeRuleDO>();
+ if (!CollectionUtils.isEmpty(idCollections)) {
+ Collection<Collection<String>> idCollectionsList = VciBaseUtil.switchCollectionForOracleIn(idCollections);
+ for (Collection<String> ids : idCollectionsList) {
+ List<CodeRuleDO> tempDOList = codeRuleMapper.selectByIdCollection(ids);
+ if (!CollectionUtils.isEmpty(tempDOList)) {
+ codeRuleDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeRuleDOList;
+ }
+
+
+ /**
+ * 鍙傜収涓绘暟鎹紪鐮佽鍒欏垪琛�
+ *
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeRuleVO> refDataGridCodeRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ if (conditionMap == null) {
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeRule(conditionMap, pageHelper);
+ }
+
+ /**
+ * 鏌ョ湅涓绘暟鎹紪鐮佽鍒欑殑浣跨敤鑼冨洿
+ *
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return 涓婚搴撳垎绫讳娇鐢ㄥ埌璇ョ紪鐮佽鍒欑殑鎵�鏈夐泦鍚�
+ */
+ @Override
+ public Collection<CodeClassifyVO> listUseRangeInCodeClassify(String oid) {
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("codeRuleOid", oid);
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, CodeClassifyDO.class);
+ List<CodeClassifyDO> dos = codeClassifyService.selectByWrapper(queryWrapper);
+ return codeClassifyService.codeClassifyDO2VOs(dos);
+ }
+
+ /**
+ * 妫�楠岀紪鐮佽鍒欐槸鍚﹀凡缁忚浣跨敤
+ *
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return true琛ㄧず宸茬粡浣跨敤锛宖alse琛ㄧず鏈浣跨敤
+ */
+ @Override
+ public boolean isAlreadyInUse(String oid) {
+ Collection<CodeClassifyVO> codeClassifyVOS = listUseRangeInCodeClassify(oid);
+ if (codeClassifyVOS.size() > 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * 鍋滅敤涓庡惎鐢ㄧ紪鐮佽鍒�
+ *
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @param update enable:鍚敤 disable:鍋滅敤 release:鍙戝竷
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult updateStatus(String oid, String update) {
+ int count = 0;
+ CodeRuleDO codeRuleDO = selectByOid(oid);
+ if ("enable".equalsIgnoreCase(update)) {
+ if (!CodeRuleLC.DISABLED.getValue().equals(codeRuleDO.getLcStatus())) {
+ return BaseResult.fail("闈炲仠鐢ㄧ姸鎬佺殑缂栫爜瑙勫垯鏃犻渶鐐瑰嚮鍚敤");
+ }
+ count = codeRuleMapper.updateLcStatus(oid, CodeRuleLC.RELEASED.getValue());
+ } else if ("disable".equalsIgnoreCase(update)) {
+ if (!CodeRuleLC.RELEASED.getValue().equals(codeRuleDO.getLcStatus())) {
+ return BaseResult.fail("闈炲彂甯冪姸鎬佺殑缂栫爜瑙勫垯鏃犳硶鍋滅敤");
+ }
+ count = codeRuleMapper.updateLcStatus(oid, CodeRuleLC.DISABLED.getValue());
+ } else if ("release".equalsIgnoreCase(update)) {
+ if (!CodeRuleLC.EDITING.getValue().equals(codeRuleDO.getLcStatus())) {
+ return BaseResult.fail("闈炵紪杈戠姸鎬佺殑缂栫爜瑙勫垯鏃犳硶鍙戝竷");
+ }
+ count = codeRuleMapper.updateLcStatus(oid, CodeRuleLC.RELEASED.getValue());
+ } else {
+ return BaseResult.fail("鏆備笉鏀寔鐨勬搷浣滅被鍨�");
+ }
+ if (count > 0) {
+ return BaseResult.success();
+ } else {
+ return BaseResult.fail("鏇存柊鐘舵�佸け璐�");
+ }
+ }
+
+ /**
+ * 鍏嬮殕缂栫爜瑙勫垯
+ *
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ */
+ public BaseResult cloneCodeRule_v1(CodeRuleDTO codeRuleDTO) {
+ VciBaseUtil.alertNotNull(codeRuleDTO.getOid(), "缂栫爜瑙勫垯涓婚敭");
+ ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("pkCodeRule", codeRuleDTO.getOid());
+ List<CodeBasicSecDO> basicSecDOS = boService.queryObject(CodeBasicSecDO.class, conditionMap);
+ List<String> secOidList = new ArrayList<>();
+ for (CodeBasicSecDO secDO : basicSecDOS) {
+ secOidList.add(secDO.getOid());
+ }
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ try {
+ ClientBusinessObject templateCbo = operation.readBusinessObjectById(codeRuleDTO.getOid(), MdmBtmTypeConstant.CODE_RULE);
+ ClientBusinessObject codeRuleCbo = operation.initBusinessObject(templateCbo.getBtmName());
+ String curOid = codeRuleCbo.getOid();
+ String curRevisionId = codeRuleCbo.getRevisionid();
+ String curNameOid = codeRuleCbo.getNameoid();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(templateCbo, codeRuleCbo);
+ codeRuleCbo.setOid(curOid);
+ codeRuleCbo.setRevisionid(curRevisionId);
+ codeRuleCbo.setNameoid(curNameOid);
+ codeRuleCbo.setId(templateCbo.getId() + "_copy");
+ codeRuleCbo.setName(templateCbo.getName() + "_copy");
+ if (!CollectionUtils.isEmpty(secOidList)) {
+ ClientBusinessObject[] secCboArr = operation.readBusinessObjectById(secOidList.toArray(new String[0]), MdmBtmTypeConstant.CODE_BASIC_SEC);
+ for (ClientBusinessObject cbo : secCboArr) {
+ ClientBusinessObject newSecCbo = operation.initBusinessObject(cbo.getBtmName());
+ String newSecCboOid = newSecCbo.getOid();
+ String newSecCboRevisionId = newSecCbo.getRevisionid();
+ String newSecCboNameOid = newSecCbo.getNameoid();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(cbo, newSecCbo);
+ newSecCbo.setOid(newSecCboOid);
+ newSecCbo.setRevisionid(newSecCboRevisionId);
+ newSecCbo.setNameoid(newSecCboNameOid);
+ newSecCbo.setId(newSecCbo.getId() + "_copy");
+ newSecCbo.setName(newSecCbo.getName() + "_copy");
+ newSecCbo.setAttributeValue("pkCodeRule", codeRuleCbo.getOid());
+ cboList.add(newSecCbo);
+ }
+ }
+ cboList.add(codeRuleCbo);
+ ClientBusinessObject[] saveList = operation.batchSaveCreateBuinessObject(cboList.toArray(new ClientBusinessObject[0]));
+ if (saveList.length == 0) {
+ return BaseResult.fail("鍏嬮殕鍑洪敊浜嗏�︹��");
+ }
+ } catch (VCIError vciError) {
+ vciError.printStackTrace();
+ }
+ return BaseResult.success();
+ }
+
+ /**
+ * 鍏嬮殕缂栫爜瑙勫垯
+ *
+ * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
+ */
+ @Override
+ public BaseResult cloneCodeRule(CodeRuleDTO codeRuleDTO) {
+ VciBaseUtil.alertNotNull(codeRuleDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ CodeRuleDO codeRuleDO = new CodeRuleDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDTO, codeRuleDO);
+ WebUtil.setPersistence(false);
+ BatchCBO batchInsertCBO = codeRuleMapper.insert(codeRuleDO);
+ List<CodeBasicSecDTO> secList = codeRuleDTO.getElements();
+ secList.forEach(codeBasicSecDTO -> {
+ codeBasicSecDTO.setPkCodeRule(codeRuleDO.getOid());
+ KeyValue attrKv = codeBasicSecService.checkAttrNullableBySecType(codeBasicSecDTO);
+ if (!"success".equals(attrKv.getKey())) {
+ throw new VciBaseException(attrKv.getValue() + "涓嶈兘涓虹┖");
+ }
+ CodeBasicSecDO codeBasicSecDO = new CodeBasicSecDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
+ codeBasicSecDO.setOid("");
+ codeBasicSecDO.setRevisionOid("");
+ codeBasicSecDO.setNameOid("");
+ BatchCBO cbo = codeBasicSecMapper.insert(codeBasicSecDO);
+ batchInsertCBO.addCreateCbo(cbo.getCreateCboArray()[0]);
+ });
+ boService.persistenceBatch(batchInsertCBO);
+ return BaseResult.success();
+ }
+
+ /**
+ * 浣跨敤涓婚敭鑾峰彇缂栫爜瑙勫垯鐨勫唴瀹�
+ *
+ * @param oid 涓婚敭
+ * @return 瑙勫垯鐨勬樉绀哄璞�
+ */
+ @Override
+ public CodeRuleVO getObjectHasSecByOid(String oid) {
+ CodeRuleDO ruleDO = selectByOid(oid);
+ return codeRuleDO2VO(ruleDO, true);
+ }
+
+ /**
+ * 缂栫爜瑙勫垯娓呯┖鎵�鏈夊凡鐢熸垚鐨勭紪鐮�
+ *
+ * @param oid 缂栫爜瑙勫垯涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult clearAllCode(String oid) {
+ WebUtil.alertNotNull(oid, "缂栫爜瑙勫垯涓婚敭");
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("codeRuleOid", oid);
+ List<CodeAllCodeDO> codeDOList = boService.queryObject(CodeAllCodeDO.class, conditionMap);
+ if (CollectionUtils.isEmpty(codeDOList)) {
+ return BaseResult.fail("褰撳墠缂栫爜瑙勫垯娌℃湁鐢熸垚缂栫爜,鏃犻渶娓呯┖");
+ }
+ //鏄惁闇�瑕佽繘琛宐tm涓嶇粺涓�鐨勫垽鏂�?
+ String btmType = codeDOList.get(0).getCreateCodeBtm();
+ /*boolean flag = codeDOList.stream().anyMatch(s -> !StringUtils.equalsIgnoreCase(btmType, s.getCreateCodeBtm()));
+ if (flag) {
+ return BaseResult.fail("褰撳墠缂栫爜瑙勫垯鐢熸垚缂栫爜鍦ㄤ笉鍚岀被鍨嬩笅浣跨敤杩�");
+ }*/
+ //澶氱绫诲瀷涓嬬殑鏌ヨ
+ Set<String> btmTypeSet = codeDOList.stream().filter(s -> {
+ return !StringUtils.equalsIgnoreCase(btmType, s.getCreateCodeBtm());
+ }).map(s -> s.getCreateCodeBtm()).collect(Collectors.toSet());
+ List<ClientBusinessObject> businessDataList = new ArrayList<>();
+ if (btmTypeSet.size() > 1) {
+ for (String btm : btmTypeSet) {
+ String sql = "select COUNT(w.OID) from PLATFORMBTM_" + btm + " w\n" +
+ "join PLATFORMBTM_" + MdmBtmTypeConstant.CODE_ALL_CODE + " c on w.OID = c.CREATECODEOID\n" +
+ "where c.CREATECODEBTM = '" + btm + "' and c.CODERULEOID = '" + oid + "'" +
+ "and w.ISLASTR = '1' and w.ISLASTV = '1'";
+ List<ClientBusinessObject> businessData = boService.queryByOnlySql(sql);
+ businessDataList.addAll(businessData);
+ }
+ }else {
+ String sql = "select COUNT(w.OID) from PLATFORMBTM_" + btmType + " w\n" +
+ "join PLATFORMBTM_" + MdmBtmTypeConstant.CODE_ALL_CODE + " c on w.OID = c.CREATECODEOID\n" +
+ "where c.CREATECODEBTM = '" + btmType + "' and c.CODERULEOID = '" + oid + "'" +
+ "and w.ISLASTR = '1' and w.ISLASTV = '1'";
+ List<ClientBusinessObject> businessData = boService.queryByOnlySql(sql);
+ businessDataList.addAll(businessData);
+ }
+ if (CollectionUtils.isEmpty(businessDataList) || StringUtils.isBlank(businessDataList.get(0).getAttributeValue("COUNT(w.OID)"))) {
+ //鏃犳晥鏌ヨ
+ return BaseResult.fail("鏌ヨ澶辫触");
+ } else if (!StringUtils.equalsIgnoreCase("0", businessDataList.get(0).getAttributeValue("COUNT(w.OID)"))) {
+ return BaseResult.fail("缂栫爜瑙勫垯鐢熸垚鐨勭紪鐮佸凡鍦ㄤ笟鍔℃暟鎹腑搴旂敤锛屼笉鍏佽娓呯┖");
+ }
+ //娌℃湁鏁版嵁锛屽彲浠ュ畨鍏ㄥ垹闄�
+ WebUtil.setPersistence(false);
+ //鍒犻櫎鐮佸�艰〃涓殑鏁版嵁锛屼絾涓嶅锛屽鏋滄湁娴佹按鐨勭爜娈碉紝闇�瑕侀噸鏂拌绠楁祦姘�
+ conditionMap.clear();
+ conditionMap.put("codeRuleOid", oid);
+ List<ClientBusinessObject> serialValueList = boService.queryCBO("codeserialvalue", conditionMap);
+ BatchCBO batchCBO = boService.batchDelete(codeDOList);
+ batchCBO.getDeleteCbos().addAll(serialValueList);
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return BaseResult.success();
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSerialAlgorithmServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSerialAlgorithmServiceImpl.java
new file mode 100644
index 0000000..2a54f8d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSerialAlgorithmServiceImpl.java
@@ -0,0 +1,61 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.annotation.MdmSerialAlgorithm;
+import com.vci.mdm.pagemodel.CodeSerialAlgorithmVO;
+import com.vci.mdm.service.CodeSerialAlgorithmServiceI;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.ApplicationContextProvider;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.aop.framework.Advised;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 娴佹按绠楁硶鐨勬湇鍔�
+ * @author weidy
+ * @date 2022-2-17
+ */
+@Service
+public class CodeSerialAlgorithmServiceImpl implements CodeSerialAlgorithmServiceI {
+ /**
+ * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+ *
+ * @return 娴佹按绠楁硶鐨勪俊鎭�
+ */
+ @Override
+ public DataGrid<CodeSerialAlgorithmVO> gridSerialAlgorithm() {
+ //浣跨敤涓婚敭鍘绘壂鎻�
+ String[] beanNames = ApplicationContextProvider.getApplicationContext().getBeanNamesForAnnotation(MdmSerialAlgorithm.class);
+ List<CodeSerialAlgorithmVO> voList = new ArrayList<>();
+ if(beanNames!=null && beanNames.length>0){
+ for(String beanName : beanNames){
+ Object bean = ApplicationContextProvider.getApplicationContext().getBean(beanName);
+ if(bean!=null){
+ CodeSerialAlgorithmVO algorithmVO = new CodeSerialAlgorithmVO();
+ Advised advised = (Advised)bean;
+ Class<?> targetClass = advised.getTargetSource().getTargetClass();
+ algorithmVO.setClassFullName(targetClass.getName());
+ MdmSerialAlgorithm serialAlgorithm = targetClass.getDeclaredAnnotation(MdmSerialAlgorithm.class);
+ if(serialAlgorithm==null){
+ serialAlgorithm = targetClass.getAnnotation(MdmSerialAlgorithm.class);
+ }
+ if(serialAlgorithm !=null) {
+ algorithmVO.setName(serialAlgorithm.text());
+ algorithmVO.setDescription(serialAlgorithm.description());
+ algorithmVO.setId(serialAlgorithm.value());
+ if(StringUtils.isBlank(algorithmVO.getId())){
+ algorithmVO.setId(beanName);
+ }
+ voList.add(algorithmVO);
+ }
+ }
+ }
+ }
+ DataGrid<CodeSerialAlgorithmVO> dataGrid = new DataGrid<>();
+ dataGrid.setData(voList);
+ dataGrid.setTotal(voList.size());
+ return dataGrid;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSynonymServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSynonymServiceImpl.java
new file mode 100644
index 0000000..c4ad91b
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSynonymServiceImpl.java
@@ -0,0 +1,275 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.dao.CodeSynonymDaoI;
+import com.vci.mdm.dto.CodeSynonymDTO;
+import com.vci.mdm.model.CodeSynonymDO;
+import com.vci.mdm.pagemodel.CodeSynonymVO;
+import com.vci.mdm.service.CodeSynonymServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 鍚屼箟璇嶉厤缃湇鍔�
+ * @author weidy
+ * @date 2022-02-17
+ */
+@Service
+public class CodeSynonymServiceImpl implements CodeSynonymServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeSynonymDaoI codeSynonymMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑鍚屼箟璇嶉厤缃�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeSynonymVO> gridCodeSynonym(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeSynonymDO> doList = codeSynonymMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeSynonymVO> dataGrid=new DataGrid<CodeSynonymVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeSynonymDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeSynonymMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeSynonymDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeSynonymVO> codeSynonymDO2VOs(Collection<CodeSynonymDO> codeSynonymDOs) throws VciBaseException{
+ List<CodeSynonymVO> voList = new ArrayList<CodeSynonymVO>();
+ if(!CollectionUtils.isEmpty(codeSynonymDOs)){
+ for(CodeSynonymDO s: codeSynonymDOs){
+ CodeSynonymVO vo = codeSynonymDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeSynonymDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeSynonymVO codeSynonymDO2VO(CodeSynonymDO codeSynonymDO) throws VciBaseException{
+ CodeSynonymVO vo = new CodeSynonymVO();
+ if(codeSynonymDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeSynonymDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeSynonymVO addSave(CodeSynonymDTO codeSynonymDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeSynonymDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ CodeSynonymDO codeSynonymDO = new CodeSynonymDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeSynonymDTO,codeSynonymDO);
+ codeSynonymMapper.insert(codeSynonymDO);
+ return codeSynonymDO2VO(codeSynonymDO);
+ }
+
+ /**
+ * 淇敼鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeSynonymVO editSave(CodeSynonymDTO codeSynonymDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeSynonymDTO,"鏁版嵁瀵硅薄",codeSynonymDTO.getOid(),"鍚屼箟璇嶉厤缃富閿�");
+ //灏咲TO杞崲涓篋O
+ CodeSynonymDO codeSynonymDO = selectByOid(codeSynonymDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeSynonymDTO,codeSynonymDO);
+ codeSynonymMapper.updateByPrimaryKey(codeSynonymDO);
+ return codeSynonymDO2VO(codeSynonymDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeSynonymDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeSynonymDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeSynonymDTO codeSynonymDTO, CodeSynonymDO codeSynonymDO) {
+ CodeSynonymDO tsDO = new CodeSynonymDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeSynonymDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(codeSynonymDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎鍚屼箟璇嶉厤缃�
+ * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeSynonym(CodeSynonymDTO codeSynonymDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeSynonymDTO,"鍚屼箟璇嶉厤缃暟鎹璞�",codeSynonymDTO.getOid(),"鍚屼箟璇嶉厤缃殑涓婚敭");
+ CodeSynonymDO codeSynonymDO = selectByOid(codeSynonymDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeSynonymDTO,codeSynonymDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = codeSynonymMapper.deleteByPrimaryKey(codeSynonymDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇鍚屼箟璇嶉厤缃�
+ * @param oid 涓婚敭
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeSynonymVO getObjectByOid(String oid) throws VciBaseException{
+ return codeSynonymDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeSynonymDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeSynonymDO codeSynonymDO = codeSynonymMapper.selectByPrimaryKey(oid.trim());
+ if(codeSynonymDO == null || StringUtils.isBlank(codeSynonymDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeSynonymDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇鍚屼箟璇嶉厤缃�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeSynonymVO> listCodeSynonymByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeSynonymDO> codeSynonymDOList = listCodeSynonymDOByOidCollections(oidCollections);
+ return codeSynonymDO2VOs(codeSynonymDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeSynonymDO> listCodeSynonymDOByOidCollections(Collection<String> oidCollections){
+ List<CodeSynonymDO> codeSynonymDOList = new ArrayList<CodeSynonymDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeSynonymDO> tempDOList = codeSynonymMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeSynonymDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeSynonymDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収鍚屼箟璇嶉厤缃垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鍚屼箟璇嶉厤缃樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeSynonymVO> refDataGridCodeSynonym(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeSynonym(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeTemplatePhaseServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeTemplatePhaseServiceImpl.java
new file mode 100644
index 0000000..047da6c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeTemplatePhaseServiceImpl.java
@@ -0,0 +1,506 @@
+package org.springblade.code.service.impl;
+
+import com.vci.mdm.constant.MdmBtmTypeConstant;
+import com.vci.mdm.dao.CodePhaseAttrDaoI;
+import com.vci.mdm.dao.CodeTemplatePhaseDaoI;
+import com.vci.mdm.dto.CodeTemplatePhaseDTO;
+import com.vci.mdm.model.CodeClassifyTemplateAttrDO;
+import com.vci.mdm.model.CodePhaseAttrDO;
+import com.vci.mdm.model.CodeTemplatePhaseDO;
+import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.mdm.pagemodel.CodeTemplatePhaseVO;
+import com.vci.mdm.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.mdm.service.CodePhaseAttrServiceI;
+import com.vci.mdm.service.CodeTemplatePhaseServiceI;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+/**
+ * 妯℃澘闃舵鏈嶅姟
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeTemplatePhaseServiceImpl implements CodeTemplatePhaseServiceI{
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeTemplatePhaseDaoI codeTemplatePhaseMapper;
+
+ /**
+ * 妯℃澘灞炴�х殑鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateAttrServiceI tempAttrService;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 闃舵鐨勫睘鎬�
+ */
+ @Autowired
+ private CodePhaseAttrServiceI phaseAttrService;
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodePhaseAttrDaoI codePhaseAttrMapper;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑妯℃澘闃舵
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeTemplatePhaseVO> gridCodeTemplatePhase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<CodeTemplatePhaseDO> doList = codeTemplatePhaseMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<CodeTemplatePhaseVO> dataGrid=new DataGrid<CodeTemplatePhaseVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(codeTemplatePhaseDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeTemplatePhaseMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeTemplatePhaseDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<CodeTemplatePhaseVO> codeTemplatePhaseDO2VOs(Collection<CodeTemplatePhaseDO> codeTemplatePhaseDOs) throws VciBaseException{
+ List<CodeTemplatePhaseVO> voList = new ArrayList<CodeTemplatePhaseVO>();
+ if(!CollectionUtils.isEmpty(codeTemplatePhaseDOs)){
+ for(CodeTemplatePhaseDO s: codeTemplatePhaseDOs){
+ CodeTemplatePhaseVO vo = codeTemplatePhaseDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param codeTemplatePhaseDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeTemplatePhaseVO codeTemplatePhaseDO2VO(CodeTemplatePhaseDO codeTemplatePhaseDO) throws VciBaseException{
+ CodeTemplatePhaseVO vo = new CodeTemplatePhaseVO();
+ if(codeTemplatePhaseDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeTemplatePhaseDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeTemplatePhaseVO addSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeTemplatePhaseDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeTemplatePhaseDTO.getAttributes(),"鍖呭惈鐨勫睘鎬�");
+ //灏咲TO杞崲涓篋O
+ CodeTemplatePhaseDO codeTemplatePhaseDO = new CodeTemplatePhaseDO();
+ codeTemplatePhaseDO.setOid(VciBaseUtil.getPk());
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeTemplatePhaseDTO,codeTemplatePhaseDO);
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = codeTemplatePhaseMapper.insert(codeTemplatePhaseDO);
+ List<CodePhaseAttrDO> attrDOList = new ArrayList<>();
+ codeTemplatePhaseDTO.getAttributes().stream().forEach(attrDTO->{
+ CodePhaseAttrDO attrDO = new CodePhaseAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(attrDTO,attrDO);
+ attrDO.setOid(VciBaseUtil.getPk());
+ attrDO.setCodePhaseOid(codeTemplatePhaseDO.getOid());
+ attrDOList.add(attrDO);
+ });
+ BatchCBO attrCBO = codePhaseAttrMapper.batchInsert(attrDOList);
+ batchCBO.copyFromOther(attrCBO);
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return codeTemplatePhaseDO2VO(codeTemplatePhaseDO);
+ }
+
+ /**
+ * 淇敼妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeTemplatePhaseVO editSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeTemplatePhaseDTO,"鏁版嵁瀵硅薄",codeTemplatePhaseDTO.getOid(),"妯℃澘闃舵涓婚敭",codeTemplatePhaseDTO.getAttributes(),"鍖呭惈鐨勫睘鎬�");
+ //灏咲TO杞崲涓篋O
+ CodeTemplatePhaseDO codeTemplatePhaseDO = selectByOid(codeTemplatePhaseDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(codeTemplatePhaseDTO,codeTemplatePhaseDO);
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = codeTemplatePhaseMapper.updateByPrimaryKey(codeTemplatePhaseDO);
+ //鎶婁互鍓嶇殑鍒犻櫎
+ List<CodePhaseAttrDO> phaseAttrDOS = listPhaseAttrDOByPhaseOid(codeTemplatePhaseDO.getOid());
+ if(!CollectionUtils.isEmpty(phaseAttrDOS)){
+ BatchCBO delCBO = codePhaseAttrMapper.batchDeleteByOids(phaseAttrDOS.stream().map(CodePhaseAttrDO::getOid).collect(Collectors.toList()));
+ batchCBO.copyFromOther(delCBO);
+ }
+ List<CodePhaseAttrDO> attrDOList = new ArrayList<>();
+ codeTemplatePhaseDTO.getAttributes().stream().forEach(attrDTO->{
+ CodePhaseAttrDO attrDO = new CodePhaseAttrDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(attrDTO,attrDO);
+ attrDO.setOid(VciBaseUtil.getPk());
+ attrDO.setCodePhaseOid(codeTemplatePhaseDO.getOid());
+ attrDOList.add(attrDO);
+ });
+ BatchCBO attrCBO = codePhaseAttrMapper.batchInsert(attrDOList);
+ batchCBO.copyFromOther(attrCBO);
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return codeTemplatePhaseDO2VO(codeTemplatePhaseDO);
+ }
+
+ /**
+ * 浣跨敤闃舵涓婚敭鑾峰彇鍖呭惈鐨勫睘鎬�
+ * @param codePhaseOid 闃舵鐨勪富閿�
+ * @return 鍖呭惈灞炴�х殑鏁版嵁瀵硅薄
+ */
+ private List<CodePhaseAttrDO> listPhaseAttrDOByPhaseOid(String codePhaseOid){
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codePhaseOid",codePhaseOid);
+ List<CodePhaseAttrDO> phaseAttrDOS = codePhaseAttrMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ return phaseAttrDOS;
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param codeTemplatePhaseDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param codeTemplatePhaseDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(CodeTemplatePhaseDTO codeTemplatePhaseDTO, CodeTemplatePhaseDO codeTemplatePhaseDO) {
+ CodeTemplatePhaseDO tsDO = new CodeTemplatePhaseDO();
+ BeanUtil.convert(codeTemplatePhaseDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(codeTemplatePhaseDO.getOid())) {
+ return BaseResult.success();
+ }else{
+ return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁琚紩鐢�
+ * @param oid 涓婚敭
+ * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ private boolean checkIsLinked(String oid) throws VciBaseException{
+ //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+ return false;
+ }
+
+ /**
+ * 鍒犻櫎妯℃澘闃舵
+ * @param codeTemplatePhaseDTO 妯℃澘闃舵鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteCodeTemplatePhase(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(codeTemplatePhaseDTO,"妯℃澘闃舵鏁版嵁瀵硅薄",codeTemplatePhaseDTO.getOid(),"妯℃澘闃舵鐨勪富閿�");
+ CodeTemplatePhaseDO codeTemplatePhaseDO = selectByOid(codeTemplatePhaseDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(codeTemplatePhaseDTO,codeTemplatePhaseDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = codeTemplatePhaseMapper.deleteByPrimaryKey(codeTemplatePhaseDO.getOid());
+ //闇�瑕佸垹闄ゅ睘鎬�
+ List<CodePhaseAttrDO> phaseAttrDOS = listPhaseAttrDOByPhaseOid(codeTemplatePhaseDO.getOid());
+ if(!CollectionUtils.isEmpty(phaseAttrDOS)) {
+ BatchCBO deleteCBO = codePhaseAttrMapper.batchDeleteByOids(phaseAttrDOS.stream().map(CodePhaseAttrDO::getOid).collect(Collectors.toList()));
+ batchCBO.copyFromOther(deleteCBO);
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 妯℃澘淇敼瑙﹀彂鍔熻兘
+ * @param attrDOList 灞炴�х殑鏁版嵁瀵硅薄
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ @Override
+ public BatchCBO codeTemplateAttrModifyTrigger(List<CodeClassifyTemplateAttrDO> attrDOList){
+ //灞炴�т慨鏀圭殑鏃跺�欙紝闇�瑕佸悓姝ヤ慨鏀瑰搴斿睘鎬х殑鍚嶇О
+ BatchCBO batchCBO = new BatchCBO();
+ List<CodePhaseAttrDO> phaseAttrDOS =listLinkAttrDOByTemplateAttrDOS(attrDOList);
+ if(!CollectionUtils.isEmpty(phaseAttrDOS)){
+ //璇存槑鏈夊睘鎬�,鎴戜滑鍘绘浛鎹竴涓�
+ Map<String, CodeClassifyTemplateAttrDO> attrDOMap = attrDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+ phaseAttrDOS.stream().forEach(phaseAttrDO->{
+ if(attrDOMap.containsKey(phaseAttrDO.getId())){
+ CodeClassifyTemplateAttrDO attrDO = attrDOMap.get(phaseAttrDO.getId());
+ phaseAttrDO.setId(attrDO.getId());
+ phaseAttrDO.setName(attrDO.getName());
+ phaseAttrDO.setAttributeGroup(attrDO.getAttributeGroup());
+ }
+ });
+ BatchCBO updateCBO = codePhaseAttrMapper.batchUpdate(phaseAttrDOS);
+ batchCBO.copyFromOther(updateCBO);
+ }
+ return batchCBO;
+ }
+
+ /**
+ * 浣跨敤妯℃澘鐨勫睘鎬ц幏鍙栭樁娈典腑鍖呭惈鐨勫睘鎬у唴瀹�
+ * @param attrDOList 灞炴�х殑鏁版嵁瀵硅薄
+ * @return 闃舵閲岀殑灞炴�ф暟鎹璞�
+ */
+ private List<CodePhaseAttrDO> listLinkAttrDOByTemplateAttrDOS(List<CodeClassifyTemplateAttrDO> attrDOList){
+ if(!CollectionUtils.isEmpty(attrDOList)) {
+ //鏌ヨ杩欎釜妯℃澘閲屽寘鍚殑鎵�鏈夐樁娈电殑杩欎簺灞炴��
+ //鍥犱负oracle閲岃〃鐨勫瓧娈典笉鑳借秴杩�1000涓紝鎵�浠ユ垜浠繖閲岄粯璁ゅ睘鎬т釜鏁版槸灏忎簬1000鐨勶紱
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("codePhaseOid", QueryOptionConstant.IN + "(select oid from " + getPhaseTable() + " where codeClassifyTemplateOid='" + attrDOList.get(0).getClassifyTemplateOid() + "')");
+ conditionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(attrDOList.stream().map(CodeClassifyTemplateAttrDO::getId).collect(Collectors.toList()).toArray(new String[0])) + ")");
+ return codePhaseAttrMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ }else{
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * 闃舵鐨勮〃鍚�
+ * @return 琛ㄥ悕
+ */
+ private String getPhaseTable(){
+ return VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_TEMPLATE_PHASE);
+ }
+
+ /**
+ * 闃舵灞炴�х殑琛ㄥ悕
+ * @return 琛ㄥ悕
+ */
+ private String getPhaseAttrTable(){
+ return VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_PHASE_ATTR);
+ }
+
+ /**
+ * 妯℃澘灞炴�у垹闄ょ殑鏃跺�欒Е鍙�
+ * @param attrDOList 灞炴�х殑鏁版嵁瀵硅薄
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ @Override
+ public BatchCBO codeTemplateAttrDeleteTrigger(List<CodeClassifyTemplateAttrDO> attrDOList){
+ BatchCBO batchCBO = new BatchCBO();
+ List<CodePhaseAttrDO> phaseAttrDOS =listLinkAttrDOByTemplateAttrDOS(attrDOList);
+ if(!CollectionUtils.isEmpty(phaseAttrDOS)){
+ //灞炴�ц鍒犻櫎鐨勬椂鍊欙紝闃舵閲岄潰涔熶竴鏍疯琚垹闄�
+ batchCBO.copyFromOther(codePhaseAttrMapper.batchDeleteByOids(phaseAttrDOS.stream().map(CodePhaseAttrDO::getOid).collect(Collectors.toList())));
+ }
+ return batchCBO;
+ }
+
+ /**
+ * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+ *
+ * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鏁版嵁
+ */
+ @Override
+ public BatchCBO codeTemplateDeleteTrigger(String classifyTemplateOid) {
+ BatchCBO batchCBO = new BatchCBO();
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("codeClassifyTemplateOid",classifyTemplateOid);
+ List<CodeTemplatePhaseDO> templatePhaseDOS = codeTemplatePhaseMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ conditionMap.clear();
+ if(!CollectionUtils.isEmpty(templatePhaseDOS)) {
+ batchCBO.copyFromOther(codeTemplatePhaseMapper.batchDeleteByOids(templatePhaseDOS.stream().map(CodeTemplatePhaseDO::getOid).collect(Collectors.toList())));
+ conditionMap.put("codePhaseOid", QueryOptionConstant.IN + "(select oid from " + getPhaseTable() + " where codeClassifyTemplateOid='" + classifyTemplateOid + "')");
+ List<CodePhaseAttrDO> phaseAttrDOS = codePhaseAttrMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if(!CollectionUtils.isEmpty(phaseAttrDOS)){
+ batchCBO.copyFromOther(codePhaseAttrMapper.batchDeleteByOids(phaseAttrDOS.stream().map(CodePhaseAttrDO::getOid).collect(Collectors.toList())));
+ }
+ }
+ return batchCBO;
+ }
+
+ /**
+ * 涓婚敭鑾峰彇妯℃澘闃舵
+ * @param oid 涓婚敭
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public CodeTemplatePhaseVO getObjectByOid(String oid) throws VciBaseException{
+ return codeTemplatePhaseDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private CodeTemplatePhaseDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ CodeTemplatePhaseDO codeTemplatePhaseDO = codeTemplatePhaseMapper.selectByPrimaryKey(oid.trim());
+ if(codeTemplatePhaseDO == null || StringUtils.isBlank(codeTemplatePhaseDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return codeTemplatePhaseDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇妯℃澘闃舵
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<CodeTemplatePhaseVO> listCodeTemplatePhaseByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<CodeTemplatePhaseDO> codeTemplatePhaseDOList = listCodeTemplatePhaseDOByOidCollections(oidCollections);
+ return codeTemplatePhaseDO2VOs(codeTemplatePhaseDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<CodeTemplatePhaseDO> listCodeTemplatePhaseDOByOidCollections(Collection<String> oidCollections){
+ List<CodeTemplatePhaseDO> codeTemplatePhaseDOList = new ArrayList<CodeTemplatePhaseDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<CodeTemplatePhaseDO> tempDOList = codeTemplatePhaseMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ codeTemplatePhaseDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return codeTemplatePhaseDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収妯℃澘闃舵鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 妯℃澘闃舵鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<CodeTemplatePhaseVO> refDataGridCodeTemplatePhase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridCodeTemplatePhase(conditionMap,pageHelper);
+ }
+
+ /**
+ * 闃舵涓嶅寘鍚殑灞炴��
+ *
+ * @param conditionMap 鏌ヨ瀵硅薄锛屽繀椤昏鏈夋ā鏉跨殑涓婚敭锛坈lassifyTemplateOid锛夛紝鍚﹀垯涓嶈兘纭畾灞炴��
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 灞炴�х殑淇℃伅
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateAttrVO> gridUnUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper) {
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ if(!conditionMap.containsKey("classifyTemplateOid")){
+ return new DataGrid<>("娌℃湁妯℃澘鐨勪富閿�");
+ }
+ //闇�瑕佸垽鏂樁娈电殑涓婚敭鏄惁瀛樺湪
+ String codePhaseOid = conditionMap.getOrDefault("codePhaseOid", null);
+ if(StringUtils.isNotBlank(codePhaseOid)){
+ //鎺掗櫎闃舵涓婁娇鐢ㄧ殑
+ conditionMap.remove("codePhaseOid");
+ conditionMap.put("id", QueryOptionConstant.NOTIN + "(select id from " + getPhaseAttrTable() + " where codePhaseOid ='" +codePhaseOid + "')");
+ }
+ return tempAttrService.gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
+ }
+
+ /**
+ * 闃舵鍖呭惈鐨勫睘鎬�
+ *
+ * @param conditionMap 鏌ヨ瀵硅薄锛屽繀椤昏闃舵鐨勪富閿�(codePhaseOid)
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 灞炴�х殑淇℃伅
+ */
+ @Override
+ public DataGrid<CodeClassifyTemplateAttrVO> gridUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper) {
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ String codePhaseOid = conditionMap.getOrDefault("codePhaseOid", null);
+ if(StringUtils.isBlank(codePhaseOid)){
+ return new DataGrid<>();
+ }
+ conditionMap.remove("codePhaseOid");
+ CodeTemplatePhaseDO phaseDO = selectByOid(codePhaseOid);
+ conditionMap.put("id",QueryOptionConstant.IN + "(select id from " + getPhaseAttrTable() + " where codePhaseOid ='" +codePhaseOid + "')");
+ conditionMap.put("classifyTemplateOid",phaseDO.getCodeClassifyTemplateOid());
+ return tempAttrService.gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/tt.xml b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/tt.xml
new file mode 100644
index 0000000..8543b16
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/tt.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data systemId="DMS">
+ <user userName="1" trueName="娴嬭瘯[1]" ip="172.16.0.30"/>
+ <classifys>
+ <classify classCode="ECOLib" library="ECOLib" fullclsfNamePath="">
+ <sections>
+ <section name="浜у搧浠e彿" value="CH4-0000"/>
+ <section name="鍥哄畾鐮佹" value="-"/>
+ <section name="鍥哄畾鐮佹" value="GG"/>
+ <section name="鏃ユ湡鐮佹" value="2023"/>
+ <section name="鍥哄畾鐮佹" value="-"/>
+ </sections>
+ <objects>
+ <object code="" id="474EDA77-E498-44B8-8D4A-21EAC0B5643C" status="Editing" operate="create" creator="1">
+ <prop key="name" text="鍚嶇О" value=""/>
+ </object>
+ </objects>
+ </classify>
+ </classifys>
+</data>
\ No newline at end of file
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/update.json b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/update.json
new file mode 100644
index 0000000..c771e52
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/update.json
@@ -0,0 +1,111 @@
+{
+ "data": {
+ "systemId": "RLM",
+ "user": {
+ "userName": "weidy",
+ "trueName": "榄忓ぇ鍕�",
+ "ip": "127.0.0.1"
+ },
+ "classifys": {
+ "classify": [
+ {
+ "classCode": "020104",
+ "library": "StdLib",
+ "fullclsfNamePath": "鐗╁搧##VCI##鏍囧噯浠�##VCI##铻烘爴",
+ "objects": {
+ "object": [
+ {
+ "code": "0201040002",
+ "id": "0023401",
+ "status": "Released",
+ "operate": "update",
+ "editor": "weidy",
+ "prop": [
+ {
+ "key": "partNo",
+ "text": "鐗屽彿",
+ "value": "HB1-221"
+ },
+ {
+ "key": "partName",
+ "text": "鍚嶇О",
+ "value": "鍗婂渾澶磋灪閽�1"
+ },
+ {
+ "key": "PartNumber",
+ "text": "",
+ "value": "HB1-221-M4*6"
+ },
+ {
+ "key": "鐗屽彿",
+ "text": "",
+ "value": "HB1-221"
+ },
+ {
+ "key": "瑙勬牸",
+ "text": "",
+ "value": "M41"
+ },
+ {
+ "key": "琛ㄩ潰澶勭悊",
+ "text": "",
+ "value": "鐢甸晙"
+ },
+ {
+ "key": "淇濋櫓瀛斿瀷寮�",
+ "text": "",
+ "value": "鏃�1"
+ }
+ ]
+ },
+ {
+ "code": "0201040003",
+ "id": "0023402",
+ "status": "Released",
+ "operate": "update",
+ "editor": "weidy",
+ "prop": [
+ {
+ "key": "partNo",
+ "text": "鐗屽彿",
+ "value": "HB1-221"
+ },
+ {
+ "key": "partName",
+ "text": "鍚嶇О",
+ "value": "鍗婂渾澶磋灪閽�2"
+ },
+ {
+ "key": "PartNumber",
+ "text": "",
+ "value": "HB1-221-M4*5"
+ },
+ {
+ "key": "鐗屽彿",
+ "text": "",
+ "value": "HB1-221"
+ },
+ {
+ "key": "瑙勬牸",
+ "text": "",
+ "value": "M43"
+ },
+ {
+ "key": "琛ㄩ潰澶勭悊",
+ "text": "",
+ "value": "鐢甸晙"
+ },
+ {
+ "key": "淇濋櫓瀛斿瀷寮�",
+ "text": "",
+ "value": "鏃�2"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/AttributeMapConfig.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/AttributeMapConfig.java
new file mode 100644
index 0000000..5e9b8df
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/AttributeMapConfig.java
@@ -0,0 +1,33 @@
+package org.springblade.code.utils;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+@ConfigurationProperties(prefix="attrconfig")
+@Component
+public class AttributeMapConfig {
+ private Map<String,String> system_attrmap;
+ /**
+ * WRJ涓绘暟鎹笌MPM鏋氫妇鍊兼槧灏勯厤缃�
+ */
+ private Map<String, List<EnumVO>> mpmEnumMap;
+ public Map<String, String> getSystem_attrmap() {
+ return system_attrmap;
+ }
+ public void setSystem_attrmap(Map<String, String> system_attrmap) {
+ this.system_attrmap = system_attrmap;
+ }
+
+ public void setMpmEnumMap(Map<String, List<EnumVO>> mpmEnumMap) {
+ this.mpmEnumMap = mpmEnumMap;
+ }
+
+ public Map<String, List<EnumVO>> getMpmEnumMap() {
+ return mpmEnumMap;
+ }
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/BackXml.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/BackXml.java
new file mode 100644
index 0000000..a9b0de6
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/BackXml.java
@@ -0,0 +1,42 @@
+package org.springblade.code.utils;
+
+import java.util.List;
+
+public class BackXml{
+ private List<XmlData> datas;
+ public String state;//鍏跺疄灏辨槸datacode锛屼篃鏄痗ode
+ public String msg;//鍏跺疄灏辨槸datamsg
+
+ public List<XmlData> getDatas() {
+ return datas;
+ }
+
+ public void setDatas(List<XmlData> datas) {
+ this.datas = datas;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ @Override
+ public String toString() {
+ return "BackXml{" +
+ "datas=" + datas +
+ ", state='" + state + '\'' +
+ ", msg='" + msg + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/DateUtils.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/DateUtils.java
new file mode 100644
index 0000000..fa59d49
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/DateUtils.java
@@ -0,0 +1,527 @@
+package org.springblade.code.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * yyyy-MM-dd HH:mm:ss
+ *
+ */
+public class DateUtils {
+
+ /** 骞�-鏈�-鏃� 鏃�:鍒�:绉� 鏄剧ず鏍煎紡 */
+ // 澶囨敞:濡傛灉浣跨敤澶у啓HH鏍囪瘑浣跨敤24灏忔椂鏄剧ず鏍煎紡,濡傛灉浣跨敤灏忓啓hh灏辫〃绀轰娇鐢�12灏忔椂鍒舵牸寮忋��
+ public static String DATE_TO_STRING_DETAIAL_PATTERN = "yyyy-MM-dd HH:mm:ss";
+
+ /** 骞�-鏈�-鏃� 鏄剧ず鏍煎紡 */
+ public static String DATE_TO_STRING_SHORT_PATTERN = "yyyy-MM-dd";
+
+ /**
+ * 鎶婃棩鏈熷瓧绗︿覆鏍煎紡鍖栨垚鏃ユ湡绫诲瀷锛岄粯璁yyy-MM-dd HH:mm:ss
+ * @param dateStr
+ * @return
+ */
+ public static Date convert2Date(String dateStr) {
+ return convert2Date(dateStr,DATE_TO_STRING_DETAIAL_PATTERN);
+ }
+
+ /**
+ * 鎶婃棩鏈熷瓧绗︿覆鏍煎紡鍖栨垚鏃ユ湡绫诲瀷
+ * @param dateStr
+ * @param format
+ * @return
+ */
+ public static Date convert2Date(String dateStr, String format) {
+ SimpleDateFormat simple = new SimpleDateFormat(format);
+ try {
+ simple.setLenient(false);
+ return simple.parse(dateStr);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+
+ /**
+ * 鎶婃棩鏈熺被鍨嬫牸寮忓寲鎴愬瓧绗︿覆
+ * @param date
+ * @param format
+ * @return
+ */
+ public static String convert2String(Date date, String format) {
+ SimpleDateFormat formater = new SimpleDateFormat(format);
+ try {
+ return formater.format(date);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * 杞瑂ql鐨則ime鏍煎紡
+ * @param date
+ * @return
+ */
+ public static java.sql.Timestamp convertSqlTime(Date date){
+ java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
+ return timestamp;
+ }
+
+ /**
+ * 杞瑂ql鐨勬棩鏈熸牸寮�
+ * @param date
+ * @return
+ */
+ public static java.sql.Date convertSqlDate(Date date){
+ java.sql.Date Datetamp = new java.sql.Date(date.getTime());
+ return Datetamp;
+ }
+
+
+ /**
+ * 鑾峰彇褰撳墠鏃ユ湡,榛樿yyyy-MM-dd HH:mm:ss
+ * @return
+ */
+ public static String getCurrentDate() {
+ return getCurrentDate(DATE_TO_STRING_DETAIAL_PATTERN);
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鏃ユ湡
+ * @param format
+ * @return
+ */
+ public static String getCurrentDate(String format) {
+ return new SimpleDateFormat(format).format(new Date());
+ }
+
+ /**
+ * 鑾峰彇鏃堕棿鎴�
+ * @return
+ */
+ public static long getTimestamp()
+ {
+ return System.currentTimeMillis();
+ }
+
+ /**
+ * 鏃堕棿瀛楃涓茶浆鏃堕棿鎴�
+ */
+ public static long stringToTimestamp(String str){
+ long time = 0;
+ try {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date date = simpleDateFormat.parse(str);
+ time = date.getTime();
+ }catch (Exception e){
+
+ }
+ return time;
+ }
+
+ /**
+ * 鑾峰彇鏈堜唤鐨勫ぉ鏁�
+ * @param year
+ * @param month
+ * @return
+ */
+ public static int getDaysOfMonth(int year, int month) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(year, month - 1, 1);
+ return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ }
+
+ /**
+ * 鑾峰彇鏃ユ湡鐨勫勾
+ * @param date
+ * @return
+ */
+ public static int getYear(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ return calendar.get(Calendar.YEAR);
+ }
+
+ /**
+ * 鑾峰彇鏃ユ湡鐨勬湀
+ * @param date
+ * @return
+ */
+ public static int getMonth(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ return calendar.get(Calendar.MONTH) + 1;
+ }
+
+ /**
+ * 鑾峰彇鏃ユ湡鐨勬棩
+ * @param date
+ * @return
+ */
+ public static int getDay(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ return calendar.get(Calendar.DATE);
+ }
+
+ /**
+ * 鑾峰彇鏃ユ湡鐨勬椂
+ * @param date
+ * @return
+ */
+ public static int getHour(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ return calendar.get(Calendar.HOUR);
+ }
+
+ /**
+ * 鑾峰彇鏃ユ湡鐨勫垎绉�
+ * @param date
+ * @return
+ */
+ public static int getMinute(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ return calendar.get(Calendar.MINUTE);
+ }
+
+ /**
+ * 鑾峰彇鏃ユ湡鐨勭
+ * @param date
+ * @return
+ */
+ public static int getSecond(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ return calendar.get(Calendar.SECOND);
+ }
+
+ /**
+ * 鑾峰彇鏄熸湡鍑�
+ * @param date
+ * @return
+ */
+ public static int getWeekDay(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+ return dayOfWeek-1;
+ }
+
+ /**
+ * 鑾峰彇鍝竴骞村叡鏈夊灏戝懆
+ * @param year
+ * @return
+ */
+ public static int getMaxWeekNumOfYear(int year) {
+ Calendar c = new GregorianCalendar();
+ c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
+ return getWeekNumOfYear(c.getTime());
+ }
+
+ /**
+ * 鍙栧緱鏌愬ぉ鏄竴骞翠腑鐨勫灏戝懆
+ * @param date
+ * @return
+ */
+ public static int getWeekNumOfYear(Date date) {
+ Calendar c = new GregorianCalendar();
+ c.setFirstDayOfWeek(Calendar.MONDAY);
+ c.setMinimalDaysInFirstWeek(7);
+ c.setTime(date);
+ return c.get(Calendar.WEEK_OF_YEAR);
+ }
+
+ /**
+ * 鍙栧緱鏌愬ぉ鎵�鍦ㄥ懆鐨勭涓�澶�
+ * @param date
+ * @return
+ */
+ public static Date getFirstDayOfWeek(Date date) {
+ Calendar c = new GregorianCalendar();
+ c.setFirstDayOfWeek(Calendar.MONDAY);
+ c.setTime(date);
+ c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
+ return c.getTime();
+ }
+
+ /**
+ * 鍙栧緱鏌愬ぉ鎵�鍦ㄥ懆鐨勬渶鍚庝竴澶�
+ * @param date
+ * @return
+ */
+ public static Date getLastDayOfWeek(Date date) {
+ Calendar c = new GregorianCalendar();
+ c.setFirstDayOfWeek(Calendar.MONDAY);
+ c.setTime(date);
+ c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
+ return c.getTime();
+ }
+
+ /**
+ * 鍙栧緱鏌愬勾鏌愬懆鐨勭涓�澶� 瀵逛簬浜ゅ弶:2008-12-29鍒�2009-01-04灞炰簬2008骞寸殑鏈�鍚庝竴鍛�,2009-01-05涓�2009骞寸涓�鍛ㄧ殑绗竴澶�
+ * @param year
+ * @param week
+ * @return
+ */
+ public static Date getFirstDayOfWeek(int year, int week) {
+ Calendar calFirst = Calendar.getInstance();
+ calFirst.set(year, 0, 7);
+ Date firstDate = getFirstDayOfWeek(calFirst.getTime());
+
+ Calendar firstDateCal = Calendar.getInstance();
+ firstDateCal.setTime(firstDate);
+
+ Calendar c = new GregorianCalendar();
+ c.set(Calendar.YEAR, year);
+ c.set(Calendar.MONTH, Calendar.JANUARY);
+ c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
+
+ Calendar cal = (GregorianCalendar) c.clone();
+ cal.add(Calendar.DATE, (week - 1) * 7);
+ firstDate = getFirstDayOfWeek(cal.getTime());
+
+ return firstDate;
+ }
+
+ /**
+ * 鍙栧緱鏌愬勾鏌愬懆鐨勬渶鍚庝竴澶� 瀵逛簬浜ゅ弶:2008-12-29鍒�2009-01-04灞炰簬2008骞寸殑鏈�鍚庝竴鍛�, 2009-01-04涓�
+ * 2008骞存渶鍚庝竴鍛ㄧ殑鏈�鍚庝竴澶�
+ * @param year
+ * @param week
+ * @return
+ */
+ public static Date getLastDayOfWeek(int year, int week) {
+ Calendar calLast = Calendar.getInstance();
+ calLast.set(year, 0, 7);
+ Date firstDate = getLastDayOfWeek(calLast.getTime());
+
+ Calendar firstDateCal = Calendar.getInstance();
+ firstDateCal.setTime(firstDate);
+
+ Calendar c = new GregorianCalendar();
+ c.set(Calendar.YEAR, year);
+ c.set(Calendar.MONTH, Calendar.JANUARY);
+ c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
+
+ Calendar cal = (GregorianCalendar) c.clone();
+ cal.add(Calendar.DATE, (week - 1) * 7);
+ Date lastDate = getLastDayOfWeek(cal.getTime());
+
+ return lastDate;
+ }
+
+
+ private static Date add(Date date, int calendarField, int amount) {
+ if (date == null) {
+ throw new IllegalArgumentException("The date must not be null");
+ } else {
+ Calendar c = Calendar.getInstance();
+ c.setTime(date);
+ c.add(calendarField, amount);
+ return c.getTime();
+ }
+ }
+
+ /*
+ * 1鍒欎唬琛ㄧ殑鏄骞翠唤鎿嶄綔锛� 2鏄鏈堜唤鎿嶄綔锛� 3鏄鏄熸湡鎿嶄綔锛� 5鏄鏃ユ湡鎿嶄綔锛� 11鏄灏忔椂鎿嶄綔锛� 12鏄鍒嗛挓鎿嶄綔锛� 13鏄绉掓搷浣滐紝
+ * 14鏄姣鎿嶄綔
+ */
+
+ /**
+ * 澧炲姞骞�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addYears(Date date, int amount) {
+ return add(date, 1, amount);
+ }
+
+ /**
+ * 澧炲姞鏈�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addMonths(Date date, int amount) {
+ return add(date, 2, amount);
+ }
+
+ /**
+ * 澧炲姞鍛�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addWeeks(Date date, int amount) {
+ return add(date, 3, amount);
+ }
+
+ /**
+ * 澧炲姞澶�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addDays(Date date, int amount) {
+ return add(date, 5, amount);
+ }
+
+ /**
+ * 澧炲姞鏃�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addHours(Date date, int amount) {
+ return add(date, 11, amount);
+ }
+
+ /**
+ * 澧炲姞鍒�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addMinutes(Date date, int amount) {
+ return add(date, 12, amount);
+ }
+
+ /**
+ * 澧炲姞绉�
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addSeconds(Date date, int amount) {
+ return add(date, 13, amount);
+ }
+
+ /**
+ * 澧炲姞姣
+ * @param date
+ * @param amount
+ * @return
+ */
+ public static Date addMilliseconds(Date date, int amount) {
+ return add(date, 14, amount);
+ }
+
+
+
+ /**
+ * time宸�
+ * @param before
+ * @param after
+ * @return
+ */
+ public static long diffTimes(Date before, Date after){
+ return after.getTime() - before.getTime();
+ }
+
+ /**
+ * 绉掑樊
+ * @param before
+ * @param after
+ * @return
+ */
+ public static long diffSecond(Date before, Date after){
+ return (after.getTime() - before.getTime())/1000;
+ }
+
+ /**
+ * 鍒嗙宸�
+ * @param before
+ * @param after
+ * @return
+ */
+ public static int diffMinute(Date before, Date after){
+ return (int)(after.getTime() - before.getTime())/1000/60;
+ }
+
+ /**
+ * 鏃跺樊
+ * @param before
+ * @param after
+ * @return
+ */
+ public static int diffHour(Date before, Date after){
+ return (int)(after.getTime() - before.getTime())/1000/60/60;
+ }
+
+ /**
+ * 澶╂暟宸�
+ * @param before
+ * @param after
+ * @return
+ */
+ public static int diffDay(Date before, Date after) {
+ return Integer.parseInt(String.valueOf(((after.getTime() - before.getTime()) / 86400000)));
+ }
+
+ /**
+ * 鏈堝樊
+ * @param before
+ * @param after
+ * @return
+ */
+ public static int diffMonth(Date before, Date after){
+ int monthAll=0;
+ int yearsX = diffYear(before,after);
+ Calendar c1 = Calendar.getInstance();
+ Calendar c2 = Calendar.getInstance();
+ c1.setTime(before);
+ c2.setTime(after);
+ int monthsX = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
+ monthAll=yearsX*12+monthsX;
+ int daysX =c2.get(Calendar.DATE) - c1.get(Calendar.DATE);
+ if(daysX>0){
+ monthAll=monthAll+1;
+ }
+ return monthAll;
+ }
+
+ /**
+ * 骞村樊
+ * @param before
+ * @param after
+ * @return
+ */
+ public static int diffYear(Date before, Date after) {
+ return getYear(after) - getYear(before);
+ }
+
+ /**
+ * 璁剧疆23:59:59
+ * @param date
+ * @return
+ */
+ public static Date setEndDay(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ return calendar.getTime();
+ }
+
+ /**
+ * 璁剧疆00:00:00
+ * @param date
+ * @return
+ */
+ public static Date setStartDay(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 00);
+ calendar.set(Calendar.MINUTE, 00);
+ calendar.set(Calendar.SECOND, 00);
+ return calendar.getTime();
+ }
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/EnumVO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/EnumVO.java
new file mode 100644
index 0000000..58ea4cc
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/EnumVO.java
@@ -0,0 +1,25 @@
+package org.springblade.code.utils;
+
+public class EnumVO{
+ /***
+ *
+ */
+ private String enumText;
+ private String enumValue;
+
+ public String getEnumText() {
+ return enumText;
+ }
+
+ public void setEnumText(String enumText) {
+ this.enumText = enumText;
+ }
+
+ public String getEnumValue() {
+ return enumValue;
+ }
+
+ public void setEnumValue(String enumValue) {
+ this.enumValue = enumValue;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/HttpUtils.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/HttpUtils.java
new file mode 100644
index 0000000..aeb2952
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/HttpUtils.java
@@ -0,0 +1,194 @@
+package org.springblade.code.utils;
+
+import org.springframework.http.*;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * http璇锋眰宸ュ叿绫�
+ *
+ * @since 2020-03-25
+ */
+public class HttpUtils {
+
+ //Content-Type鐨刱ey
+ public static String CONTENT_TYPE = "Content-Type";
+ //json鏁版嵁
+ public static String CONTENT_TYPE_JSON = MediaType.APPLICATION_JSON_VALUE;
+ public static String CONTENT_TYPE_JSON_UTF8 = MediaType.APPLICATION_JSON_UTF8_VALUE;
+
+ //琛ㄥ崟鏍煎紡,榛樿
+ public static String CONTENT_TYPE_TEXT = MediaType.APPLICATION_FORM_URLENCODED_VALUE;
+
+ /**
+ * get璇锋眰
+ *
+ * @param url
+ * @return
+ */
+ public static String get(String url) {
+ return get(url, null);
+ }
+
+ /**
+ * get璇锋眰
+ *
+ * @param url
+ * @param headers 璇锋眰澶�
+ * @return
+ */
+ public static String get(String url, MultiValueMap<String, String> headers) {
+ return request(url, null, headers, HttpMethod.GET);
+ }
+
+ /**
+ * post璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @return
+ */
+ public static String post(String url, MultiValueMap<String, String> params) {
+ return post(url, params, null);
+ }
+
+ /**
+ * post璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @param headers 璇锋眰澶�
+ * @return
+ */
+ public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
+ return request(url, params, headers, HttpMethod.POST);
+ }
+
+ /**
+ * put璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @return
+ */
+ public static String put(String url, MultiValueMap<String, String> params) {
+ return put(url, params, null);
+ }
+
+ /**
+ * put璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @param headers 璇锋眰澶�
+ * @return
+ */
+ public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
+ return request(url, params, headers, HttpMethod.PUT);
+ }
+
+ /**
+ * delete璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @return
+ */
+ public static String delete(String url, MultiValueMap<String, String> params) {
+ return delete(url, params, null);
+ }
+
+ /**
+ * delete璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @param headers 璇锋眰澶�
+ * @return
+ */
+ public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
+ return request(url, params, headers, HttpMethod.DELETE);
+ }
+
+ /**
+ * 琛ㄥ崟璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @param headers 璇锋眰澶�
+ * @param method 璇锋眰鏂瑰紡
+ * @return
+ */
+ public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {
+ if (params == null) {
+ params = new LinkedMultiValueMap<>();
+ }
+ return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);
+ }
+
+ /**
+ * http璇锋眰
+ *
+ * @param url
+ * @param params 璇锋眰鍙傛暟
+ * @param headers 璇锋眰澶�
+ * @param method 璇锋眰鏂瑰紡
+ * @param mediaType 鍙傛暟绫诲瀷
+ * @return
+ */
+ public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {
+ if (url == null || url.trim().isEmpty()) {
+ return null;
+ }
+ RestTemplate client = new RestTemplate();
+ // header
+ HttpHeaders httpHeaders = new HttpHeaders();
+ if (headers != null) {
+ httpHeaders.addAll(headers);
+ }
+ // 鎻愪氦鏂瑰紡锛氳〃鍗曘�乯son
+ httpHeaders.setContentType(mediaType);
+ HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);
+ ResponseEntity<String> response = client.exchange(url, method, httpEntity, String.class);
+ return response.getBody();
+ }
+
+ public static MultiValueMap<String, String> set_params_headers(String key,String value,MultiValueMap<String, String> map){
+ if(map==null){
+ map = new LinkedMultiValueMap<>();
+ }
+ map.add(key,value);
+ return map;
+ }
+ /**
+ * 鑾峰彇ip
+ * @param request
+ * @return
+ */
+ public static String getIpAddressFromRequest(HttpServletRequest request){
+ String ip = request.getHeader("X-Forwarded-For");
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("Proxy-Client-IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("HTTP_CLIENT_IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getRemoteAddr();
+ }
+ if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
+ //0:0:0:0:0:0:0:1鏄湰鏈哄湪璁块棶
+ ip = "127.0.0.1";
+ }
+ return ip;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Json2XmlUtil.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Json2XmlUtil.java
new file mode 100644
index 0000000..ce153c0
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Json2XmlUtil.java
@@ -0,0 +1,121 @@
+package org.springblade.code.utils;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import de.odysseus.staxon.json.JsonXMLConfig;
+import de.odysseus.staxon.json.JsonXMLConfigBuilder;
+import de.odysseus.staxon.json.JsonXMLOutputFactory;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLEventWriter;
+import javax.xml.stream.XMLInputFactory;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Json2XmlUtil {
+
+ /**
+ * @Description: xml convert to json
+ */
+ public static String XmlToJson(String xmlString){
+
+ StringReader input = new StringReader(xmlString);
+ StringWriter output = new StringWriter();
+ try {
+ JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(true).autoPrimitive(true).prettyPrint(true).build();
+ XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(input);
+ XMLEventWriter writer = new JsonXMLOutputFactory(config).createXMLEventWriter(output);
+ writer.add(reader);
+ reader.close();
+ writer.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ output.close();
+ input.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return output.toString();
+ }
+
+ public static String replaceBlank(String jsonString) {
+ if(StringUtils.isEmpty(jsonString)){
+ return jsonString;
+ }
+ Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+ Matcher m = p.matcher(jsonString);
+ String dest = m.replaceAll("");
+ return dest;
+ }
+
+ public static String jsontoxml(JSONObject jo, String gt) {
+ StringBuffer xmlStr = new StringBuffer();
+ Iterator<Map.Entry<String, Object>> iter = jo.entrySet().iterator();
+ while (iter.hasNext()) {
+ Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iter.next();
+ String key = entry.getKey().toString();
+ String val = entry.getValue().toString();
+ //鍊奸潪绌�
+ if (StringUtils.isNotEmpty(val)) {
+ //JSON瀵硅薄
+ if (val.substring(0, 1).equals("{")) {
+ xmlStr.append(gt);
+ xmlStr.append("<");
+ xmlStr.append(key);
+ xmlStr.append(">");
+ xmlStr.append(jsontoxml(JSONObject.parseObject(val), gt + ""));
+ xmlStr.append(gt);
+ xmlStr.append("</");
+ xmlStr.append(key);
+ xmlStr.append(">");
+ }
+ //JSON鏁扮粍
+ else if (val.substring(0, 1).equals("[")) {
+ JSONArray ja = JSONArray.parseArray(val);
+ for (int i = 0; i < ja.size(); i++) {
+ JSONObject jo2 = new JSONObject();
+ jo2.put(key, ja.getJSONObject(i));
+ xmlStr.append(jsontoxml(jo2, gt + ""));
+ }
+ }
+ //JSON鍊�
+ else {
+ xmlStr.append(gt);
+ xmlStr.append("<");
+ xmlStr.append(key);
+ xmlStr.append(">");
+ xmlStr.append(val);
+ xmlStr.append("</");
+ xmlStr.append(key);
+ xmlStr.append(">");
+ }
+ }
+ //鍊间负绌�
+ else{
+ xmlStr.append(gt);
+ xmlStr.append("<");
+ xmlStr.append(key);
+ xmlStr.append(">");
+ xmlStr.append("");
+ xmlStr.append("</");
+ xmlStr.append(key);
+ xmlStr.append(">");
+ }
+ }
+ return xmlStr.toString();
+ }
+
+ public static String jsonToXml(JSONObject jo0) {
+ String xml = jsontoxml(jo0, "");
+ return xml;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/PatternUtil.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/PatternUtil.java
new file mode 100644
index 0000000..72b4d7d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/PatternUtil.java
@@ -0,0 +1,49 @@
+package org.springblade.code.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class PatternUtil {
+
+ //*${xxx}*
+ public static Pattern dynamic = Pattern.compile(".*\\$\\{([a-z]+)\\}.*");
+ public static Pattern dynamicLimitCount = Pattern.compile("\\$\\{([a-z]+)\\}");
+ /**
+ * 鍒ゆ柇鍐呭涓槸鍚﹀寘鍚姩鎬佸弬鏁�(${key}褰㈠紡鐨�)
+ *
+ * @param content 瑕佸垽鏂殑鍐呭
+ * @return
+ */
+ public static boolean isContainsDynamicParameter(String content) {
+ if(StringUtils.isBlank(content)){
+ return false;
+ }
+ return dynamic.matcher(content).matches();
+ }
+
+ /**
+ * 鎸夌収鍔ㄦ�佸唴瀹圭殑鍙傛暟鍑虹幇椤哄簭,灏嗗弬鏁版斁鍒癓ist涓�
+ *
+ * @param content
+ * @return
+ */
+ public static List<String> getKeyListByContent(String content) {
+ if(StringUtils.isBlank(content)){
+ return new ArrayList<>();
+ }
+ Set<String> paramSet = new LinkedHashSet<>();
+ Matcher m = dynamicLimitCount.matcher(content);
+ while (m.find()) {
+ paramSet.add(m.group(1));
+ }
+ return new ArrayList<>(paramSet);
+ }
+
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Pro.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Pro.java
new file mode 100644
index 0000000..ccbc71f
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Pro.java
@@ -0,0 +1,40 @@
+package org.springblade.code.utils;
+
+public class Pro{
+ public String key;
+ public String mean;
+ public String value;
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getMean() {
+ return mean;
+ }
+
+ public void setMean(String mean) {
+ this.mean = mean;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return "Pro{" +
+ "key='" + key + '\'' +
+ ", mean='" + mean + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsAxis2ClientUtil.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsAxis2ClientUtil.java
new file mode 100644
index 0000000..e935e63
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsAxis2ClientUtil.java
@@ -0,0 +1,59 @@
+package org.springblade.code.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.commons.lang3.StringUtils;
+
+public class WsAxis2ClientUtil {
+
+ /**
+ * axis2璋冪敤瀹㈡埛绔�
+ *
+ * @param url 璇锋眰鏈嶅姟鍦板潃
+ * @param nameSpace 鍛藉悕绌洪棿
+ * @param method 鏂规硶鍚�
+ * @param tarName 鍙傛暟鍚嶇О
+ * @param xmlData 璇锋眰鎶ユ枃
+ * @param timeOutInMilliSeconds 瓒呮椂鏃堕棿
+ * @return String 绫诲瀷鐨勫搷搴旀姤鎭�
+ */
+ public static String sendMsg(String url, String nameSpace,String soapAction, String method, String tarName, String xmlData, long timeOutInMilliSeconds) throws Exception {
+ ServiceClient serviceClient = new ServiceClient();
+ Options option = new Options();
+ option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+ // 鍊间负targetNamespace+methodName
+ if(StringUtils.isEmpty(soapAction)){
+ soapAction = nameSpace+method;
+ }
+ option.setAction(soapAction);
+
+ EndpointReference epfs = new EndpointReference(url);
+ option.setTo(epfs);
+ serviceClient.setOptions(option);
+
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMNamespace namespaceOM = fac.createOMNamespace(nameSpace, "");
+ OMElement element = fac.createOMElement(method, namespaceOM);
+ OMElement theCityCode = fac.createOMElement(tarName, namespaceOM);
+ theCityCode.setText(xmlData);
+ element.addChild(theCityCode);
+// OMElement theUserID = fac.createOMElement("theUserID ", namespace);
+// theUserID.setText("");
+// element.addChild(theUserID);
+
+ OMElement resultOM = serviceClient.sendReceive(element);
+
+ String result = resultOM.getFirstElement().getText();
+ System.out.println(result);
+ return result;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsErpClientUtil.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsErpClientUtil.java
new file mode 100644
index 0000000..2c23c8a
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsErpClientUtil.java
@@ -0,0 +1,59 @@
+package org.springblade.code.utils;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.commons.lang3.StringUtils;
+
+public class WsErpClientUtil {
+
+ /**
+ * axis2璋冪敤瀹㈡埛绔�
+ *
+ * @param url 璇锋眰鏈嶅姟鍦板潃
+ * @param nameSpace 鍛藉悕绌洪棿
+ * @param method 鏂规硶鍚�
+ * @param tarName 鍙傛暟鍚嶇О
+ * @param xmlData 璇锋眰鎶ユ枃
+ * @param timeOutInMilliSeconds 瓒呮椂鏃堕棿
+ * @return String 绫诲瀷鐨勫搷搴旀姤鎭�
+ */
+ public static String sendMsg(String url, String nameSpace,String soapAction, String method, String tarName, String xmlData, long timeOutInMilliSeconds) throws Exception {
+ ServiceClient serviceClient = new ServiceClient();
+ Options option = new Options();
+ option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+ // 鍊间负targetNamespace+methodName
+ if(StringUtils.isEmpty(soapAction)){
+ soapAction = nameSpace+method;
+ }
+ option.setAction(soapAction);
+
+ EndpointReference epfs = new EndpointReference(url);
+ option.setTo(epfs);
+ serviceClient.setOptions(option);
+
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMNamespace namespaceOM = fac.createOMNamespace(nameSpace, "");
+ OMElement element = fac.createOMElement(method, namespaceOM);
+ OMElement theCityCode = fac.createOMElement(tarName, namespaceOM);
+ theCityCode.setText(xmlData);
+ element.addChild(theCityCode);
+// OMElement theUserID = fac.createOMElement("theUserID ", namespace);
+// theUserID.setText("");
+// element.addChild(theUserID);
+
+ OMElement resultOM = serviceClient.sendReceive(element);
+
+ String result = resultOM.getFirstElement().getText();
+ System.out.println(result);
+ return result;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlData.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlData.java
new file mode 100644
index 0000000..0db27e5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlData.java
@@ -0,0 +1,143 @@
+package org.springblade.code.utils;
+
+import java.util.List;
+
+public class XmlData{
+ public String unique;
+ public String type;//鍒嗙被缂栧彿
+ public String sendtype;//鎺ㄩ�佹暟鎹被鍨�
+ public String state;//鍏跺疄灏辨槸datacode锛屼篃鏄痗ode
+ public String msg;//鍏跺疄灏辨槸datamsg
+ public String num;
+ public String namepath;
+ public String name;
+ public String idpath;
+ public String id;
+ public Integer orderNum;
+ public String parentId;
+ public List<Pro> pros;
+
+
+ public String getUnique() {
+ return unique;
+ }
+
+ public void setUnique(String unique) {
+ this.unique = unique;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public String getNum() {
+ return num;
+ }
+
+ public void setNum(String num) {
+ this.num = num;
+ }
+
+ public String getNamepath() {
+ return namepath;
+ }
+
+ public void setNamepath(String namepath) {
+ this.namepath = namepath;
+ }
+
+ public String getIdpath() {
+ return idpath;
+ }
+
+ public void setIdpath(String idpath) {
+ this.idpath = idpath;
+ }
+
+ public List<Pro> getPros() {
+ return pros;
+ }
+
+ public String getSendtype() {
+ return sendtype;
+ }
+
+ public void setSendtype(String sendtype) {
+ this.sendtype = sendtype;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void setPros(List<Pro> pros) {
+ this.pros = pros;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public int getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(int orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public String getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(String parentId) {
+ this.parentId = parentId;
+ }
+
+ @Override
+ public String toString() {
+ return "XmlData{" +
+ "unique='" + unique + '\'' +
+ ", type='" + type + '\'' +
+ ", sendtype='" + sendtype + '\'' +
+ ", state='" + state + '\'' +
+ ", msg='" + msg + '\'' +
+ ", num='" + num + '\'' +
+ ", namepath='" + namepath + '\'' +
+ ", name='" + name + '\'' +
+ ", idpath='" + idpath + '\'' +
+ ", id='" + id + '\'' +
+ ", orderNum='" + orderNum + '\'' +
+ ", parentId='" + parentId + '\'' +
+ ", pros=" + pros +
+ '}';
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlUtil.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlUtil.java
new file mode 100644
index 0000000..e9e5da2
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlUtil.java
@@ -0,0 +1,769 @@
+package org.springblade.code.utils;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.XMLWriter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.mdm.constant.MdmDuckingConstant.*;
+
+public class XmlUtil {
+ /*
+ 绗竴鐗堟湰
+ */
+ public static Map<String,Object> readPreXml_bak(String xmlData) throws Exception{
+
+ Map<String,Object> datasMap = new HashMap<String,Object>();
+
+ Document document = DocumentHelper.parseText(xmlData);
+ Element datas_element = document.getRootElement();
+ Attribute datas_systemid_attr = datas_element.attribute(XML_SYSTEMID);
+ String systemid = datas_systemid_attr==null?"":datas_systemid_attr.getValue();//systemid
+
+ List<Element> data_elements = datas_element.elements(XML_DATA);
+ List<Map<String,Object>> dataMapList = new ArrayList<Map<String,Object>>();
+ for (Element data_element:data_elements){
+ Map<String,Object> dataMap = new HashMap<String,Object>();
+
+ Attribute data_unique_attr = data_element.attribute(XML_UNIQUE);
+ String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique
+
+ Attribute data_type_attr = data_element.attribute(XML_TYPE);
+ String type = data_type_attr==null?"":data_type_attr.getValue();//type
+
+ Element pro_elements = data_element.element(XML_PROS);
+ List<Element> attrs_elements = pro_elements.elements(XML_ATTR);
+
+ List<Map<String,String>> attrList = new ArrayList<Map<String,String>>();
+ for (Element attr_element:attrs_elements){
+ Map<String,String> attrMap = new HashMap<String,String>();
+
+ Attribute attr_key_attr = attr_element.attribute(XML_KEY);
+ String attr_key = attr_key_attr==null?"":attr_key_attr.getValue();//key
+
+ Attribute attr_mean_attr = attr_element.attribute(XML_MEAN);
+ String attr_mean = attr_mean_attr==null?"":attr_mean_attr.getValue();//mean
+
+ String attr_text = attr_element.getText();
+
+ attrMap.put(XML_KEY,attr_key);
+ attrMap.put(XML_MEAN,attr_mean);
+ attrMap.put(XML_TEXT,attr_text);
+ attrList.add(attrMap);
+ }
+ dataMap.put(XML_UNIQUE,unique);
+ dataMap.put(XML_TYPE,type);
+ dataMap.put(XML_ATTR,attrList);
+
+ dataMapList.add(dataMap);
+
+ datasMap.put(XML_SYSTEMID,systemid);
+ datasMap.put(XML_DATAS,dataMapList);
+ }
+ return datasMap;
+ }
+
+ public static String writePreBackXmlData_bak(String code,String msg,List<XmlData> xmlDataList){
+ String xmlString = null;
+ try {
+ Document document = DocumentHelper.createDocument();
+ document.setXMLEncoding("UTF-8");
+ Element root = document.addElement(XML_DATAS);
+ root.addAttribute(XML_CODE, code);
+ root.addAttribute(XML_MSG, msg);
+ if(xmlDataList!=null) {
+ for (XmlData xmlData : xmlDataList) {
+ if(xmlData==null){
+ continue;
+ }
+ Element data_element = root.addElement(XML_DATA);
+ data_element.addAttribute(XML_UNIQUE, xmlData.getUnique());
+ data_element.addAttribute(XML_STATE, xmlData.getState());
+ data_element.addAttribute(XML_MSG, xmlData.getMsg());
+ data_element.addAttribute(XML_NUM, xmlData.getNum());
+ }
+ }
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ XMLWriter writer = new XMLWriter(format);
+ writer.write(document);
+ xmlString=document.asXML();
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ return xmlString;
+ }
+
+ /*
+ 鏍规嵁閮ㄩ暱宸茬粡淇敼鐨勭涓�鐗�
+ <object>
+ <systemid>MPM</systemid>
+ <datas>
+ <data>
+ <unique>oa0001</unique>
+ <type>wupin</type>
+ <pros>
+ <pro>
+ <key>code01</key>
+ <mean>鎵�灞炵粨鏋�</mean>
+ <value>娓╁害璋冭妭鍣�1</value>
+ </pro>
+ <pro>
+ <key>code02</key>
+ <mean>涓昏鍔熻兘</mean>
+ <value>瀵肩數杩炴帴1</value>
+ </pro>
+ </pros>
+ </data>
+ <data>
+ <unique>oa0002</unique>
+ <type>wupin</type>
+ <pros>
+ <pro>
+ <key>code01</key>
+ <mean>鎵�灞炵粨鏋�</mean>
+ <value>娓╁害璋冭妭鍣�2</value>
+ </pro>
+ <pro>
+ <key>code02</key>
+ <mean>涓昏鍔熻兘</mean>
+ <value>瀵肩數杩炴帴2</value>
+ </pro>
+ </pros>
+ </data>
+ </datas>
+ </object>
+ */
+ public static Map<String,Object> readPreXml1(String xmlData) throws Exception{
+
+ Map<String,Object> datasMap = new HashMap<String,Object>();
+
+ Document document = DocumentHelper.parseText(xmlData);
+ Element object_element = document.getRootElement();
+ Element system_element = object_element.element(XML_SYSTEMID);
+ String systemid = system_element.getText();
+ Element datas_element = object_element.element(XML_DATAS);
+ List<Element> data_elements = datas_element.elements(XML_DATA);
+ List<Map<String,Object>> datasList = new ArrayList<Map<String,Object>>();
+ for (Element data_element:data_elements){
+ Map<String,Object> dataMap = new HashMap<String,Object>();
+
+ Attribute data_unique_attr = data_element.attribute(XML_UNIQUE);
+ String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique
+
+ Attribute data_type_attr = data_element.attribute(XML_TYPE);
+ String type = data_type_attr==null?"":data_type_attr.getValue();//type
+
+ Element pros_elements = data_element.element(XML_PROS);
+ List<Element> pro_elements = pros_elements.elements(XML_PRO);
+
+ List<Map<String,String>> proList = new ArrayList<Map<String,String>>();
+ for (Element pro_element:pro_elements){
+ Map<String,String> proMap = new HashMap<String,String>();
+
+ Element pro_key_element = pro_element.element(XML_KEY);
+ String pro_key = pro_key_element==null?"":pro_key_element.getText();//key
+
+ Element pro_mean_element = pro_element.element(XML_MEAN);
+ String pro_mean = pro_mean_element==null?"":pro_mean_element.getText();//mean
+
+ String pro_text = pro_element.getText();
+
+ proMap.put(XML_KEY,pro_key);
+ proMap.put(XML_MEAN,pro_mean);
+ proMap.put(XML_TEXT,pro_text);
+ proList.add(proMap);
+ }
+ dataMap.put(XML_UNIQUE,unique);
+ dataMap.put(XML_TYPE,type);
+ dataMap.put(XML_PROS,proList);
+
+ datasList.add(dataMap);
+
+ datasMap.put(XML_SYSTEMID,systemid);
+ datasMap.put(XML_DATAS,datasList);
+ }
+ return datasMap;
+ }
+
+ /*
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <msg>澶勭悊鎴愬姛</msg>
+ <code>200</code>
+ <datas>
+ <data>
+ <unique>oa0001</unique>
+ <datacode>200</datacode>
+ <datamsg>鏍规嵁鍥惧彿鏌ヨ缂栫爜鎴愬姛锛�</datamsg>
+ <num>OA-0002-01</num>
+ </data>
+ <data>
+ <unique>oa0002</unique>
+ <datacode>400</datacode>
+ <datamsg>鎺ユ敹鏁版嵁鎴愬姛锛�</datamsg>
+ <num/>
+ </data>
+ <data>
+ <unique>oa0003</unique>
+ <datacode>500</datacode>
+ <datamsg>鎺ユ敹鏁版嵁澶辫触锛屽弬鏁扮己灏憉nique锛�</datamsg>
+ <num/>
+ </data>
+ </datas>
+ </object>
+ */
+ public static String writePreBackXmlData1(String code,String msg,List<XmlData> xmlDataList){
+ String xmlString = null;
+ try {
+ Document document = DocumentHelper.createDocument();
+ document.setXMLEncoding("UTF-8");
+ Element object_element = document.addElement(XML_OBJECT);
+
+ Element code_element = object_element.addElement(XML_CODE);
+ code_element.setText(code);
+
+ Element msg_element = object_element.addElement(XML_MSG);
+ msg_element.setText(msg);
+
+ if(xmlDataList!=null) {
+ for (XmlData xmlData : xmlDataList) {
+ if(xmlData==null){
+ continue;
+ }
+ Element data_element = object_element.addElement(XML_DATA);
+
+ Element unique_element = data_element.addElement(XML_UNIQUE);
+ unique_element.setText(xmlData.getUnique());
+
+ Element datacode_element = data_element.addElement(XML_DATACODE);
+ datacode_element.setText(xmlData.getState());
+
+ Element datacmsg_element = data_element.addElement(XML_DATAMSG);
+ datacmsg_element.setText(xmlData.getMsg());
+
+ Element num_element = data_element.addElement(XML_NUM);
+ num_element.setText(xmlData.getNum());
+ }
+ }
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ XMLWriter writer = new XMLWriter(format);
+ writer.write(document);
+ xmlString=document.asXML();
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ return xmlString;
+ }
+
+ /*
+ 閮ㄩ暱浜茶嚜鍔ㄦ墜淇敼鐨勭増鏈�
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object systemid="MPM">
+ <datas>
+ <data unique="oa0001" type="wupin">
+ <props>
+ <prop key="code01" mean="鎵�灞炵粨鏋�" value="娓╁害璋冭妭鍣�1" />
+ <prop key="code02" mean="涓昏鍔熻兘" value="瀵肩數杩炴帴1" />
+ </props>
+ </data>
+ <data unique="oa0002" type="wupin">
+ <props>
+ <prop key="code01" mean="鎵�灞炵粨鏋�" value="娓╁害璋冭妭鍣�2" />
+ <prop key="code02" mean="涓昏鍔熻兘" value="瀵肩數杩炴帴2" />
+ </props>
+ </data>
+ </datas>
+ </object>
+ */
+ public static Map<String,Object> readPreXmlData(String xmlData) throws Exception{
+
+ Map<String,Object> datasMap = new HashMap<String,Object>();
+
+ Document document = DocumentHelper.parseText(xmlData);
+ Element object_element = document.getRootElement();
+
+ Attribute systemid_attr = object_element.attribute(XML_SYSTEMID);
+ String systemid = systemid_attr.getValue();
+
+ Element datas_element = object_element.element(XML_DATAS);
+ List<Element> data_elements = datas_element.elements(XML_DATA);
+ List<Map<String,Object>> datasList = new ArrayList<Map<String,Object>>();
+ for (Element data_element:data_elements){
+ Map<String,Object> dataMap = new HashMap<String,Object>();
+
+ Attribute data_unique_attr = data_element.attribute(XML_UNIQUE);
+ String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique
+
+ Attribute data_type_attr = data_element.attribute(XML_TYPE);
+ String type = data_type_attr==null?"":data_type_attr.getValue();//type
+
+ Element pros_elements = data_element.element(XML_PROS);
+ List<Element> pro_elements = pros_elements.elements(XML_PRO);
+
+ List<Map<String,String>> proList = new ArrayList<Map<String,String>>();
+ for (Element pro_element:pro_elements){
+ Map<String,String> proMap = new HashMap<String,String>();
+
+ Attribute pro_key_attr = pro_element.attribute(XML_KEY);
+ String pro_key = pro_key_attr==null?"":pro_key_attr.getValue();//key
+
+ pro_key = pro_key.toLowerCase();//鍏ㄩ兘杞崲涓哄皬鍐�
+
+ Attribute pro_mean_attr = pro_element.attribute(XML_MEAN);
+ String pro_mean = pro_mean_attr==null?"":pro_mean_attr.getValue();//mean
+
+ Attribute pro_value_attr = pro_element.attribute(XML_VALUE);
+ String pro_value = pro_value_attr==null?"":pro_value_attr.getValue();//mean
+
+ proMap.put(XML_KEY,pro_key);
+ proMap.put(XML_MEAN,pro_mean);
+ proMap.put(XML_TEXT,pro_value);
+ proList.add(proMap);
+ }
+ dataMap.put(XML_UNIQUE,unique);
+ dataMap.put(XML_TYPE,type);
+ dataMap.put(XML_PROS,proList);
+
+ datasList.add(dataMap);
+
+ datasMap.put(XML_SYSTEMID,systemid);
+ datasMap.put(XML_DATAS,datasList);
+ }
+ return datasMap;
+ }
+
+ /*
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <msg>澶勭悊鎴愬姛</msg>
+ <code>200</code>
+ <datas>
+ <data unique="oa0001" state="200" num="OA-0002-01">
+ <msg>鏍规嵁鍥惧彿鏌ヨ缂栫爜鎴愬姛锛�</msg>
+ </data>
+ <data unique="oa0002" state="400" num="">
+ <msg>鎺ユ敹鏁版嵁鎴愬姛锛�</msg>
+ </data>
+ </datas>
+ </object>
+ */
+ public static String writePreBackXmlData(String code,String msg,List<XmlData> xmlDataList){
+ String xmlString = null;
+ try {
+ Document document = DocumentHelper.createDocument();
+ document.setXMLEncoding("UTF-8");
+ Element object_element = document.addElement(XML_OBJECT);
+
+ Element code_element = object_element.addElement(XML_CODE);
+ code_element.setText(code);
+
+ Element msg_element = object_element.addElement(XML_MSG);
+ msg_element.setText(msg);
+
+ Element datas_element = object_element.addElement(XML_DATAS);
+
+ if(xmlDataList!=null) {
+ for (XmlData xmlData : xmlDataList) {
+ if(xmlData==null){
+ continue;
+ }
+ Element data_element = datas_element.addElement(XML_DATA);
+
+ data_element.addAttribute(XML_UNIQUE,xmlData.getUnique());
+ data_element.addAttribute(XML_STATE,xmlData.getState());
+ data_element.addAttribute(XML_NUM,xmlData.getNum());
+
+ Element datamsg_element = data_element.addElement(XML_MSG);
+ datamsg_element.setText(xmlData.getMsg());
+ }
+ }
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ XMLWriter writer = new XMLWriter(format);
+ writer.write(document);
+ xmlString=document.asXML();
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ return xmlString;
+ }
+
+ /*
+ 涓绘暟鎹帹閫佺殑xmlData鏍煎紡
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <datas>
+ <data unique="oa0002" type="wupin" state="3" num="01020000003">
+ <namepath>鐗╁搧#鎴愬搧鍙婇檮浠�</namepath>
+ <idpath>wuping#cpjfj</idpath>
+ <props>
+ <prop key="code01" mean="鎵�灞炵粨鏋�" value="娓╁害璋冭妭鍣�2" />
+ <prop key="code02" mean="涓昏鍔熻兘" value="瀵肩嚎杩炴帴2" />
+ </props>
+ </data>
+ </datas>
+ </object>
+ */
+ public static String writeSendXmlData(List<XmlData> xmlDataList) {
+ String xmlString = null;
+ try {
+ Document document = DocumentHelper.createDocument();
+ document.setXMLEncoding("UTF-8");
+ Element object_element = document.addElement(XML_OBJECT);
+
+ Element datas_element = object_element.addElement(XML_DATAS);
+
+ if (xmlDataList != null) {
+ for (XmlData xmlData : xmlDataList) {
+ if (xmlData == null) {
+ continue;
+ }
+ Element data_element = datas_element.addElement(XML_DATA);
+ data_element.addAttribute(XML_UNIQUE, xmlData.getUnique());
+ data_element.addAttribute(XML_TYPE, xmlData.getType());
+ data_element.addAttribute(XML_STATE, xmlData.getSendtype());
+
+ Element pros_element = data_element.addElement(XML_PROS);
+ List<Pro> pros = xmlData.getPros();
+ String lcstatue = null;
+ String id = null;
+ for (Pro pro : pros) {
+ if("lcstatus".equals(pro.getKey())){
+ lcstatue = pro.getValue();
+ }
+ if("id".equals(pro.getKey())){
+ id = pro.getValue();
+ }
+ Element pro_element = pros_element.addElement(XML_PRO);
+ pro_element.addAttribute(XML_KEY, pro.getKey());
+ pro_element.addAttribute(XML_VALUE, pro.getValue());
+ pro_element.addAttribute(XML_MEAN, pro.getKey());
+ }
+ if(StringUtils.isNotEmpty(lcstatue)){
+ data_element.addAttribute(XML_STATE, lcstatue);
+ }
+ if(StringUtils.isNotEmpty(id)){
+ data_element.addAttribute(XML_NUM, id);
+ }
+
+ Element pro_namepath_element = data_element.addElement(XML_NAMEPATH);
+ pro_namepath_element.setText(xmlData.getNamepath());
+
+ Element pro_idpath_element = data_element.addElement(XML_IDPATH);
+ pro_idpath_element.setText(xmlData.getIdpath());
+ }
+ }
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ XMLWriter writer = new XMLWriter(format);
+ writer.write(document);
+ xmlString = document.asXML();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return xmlString;
+ }
+
+ /*
+ 鍒嗙被鏁版嵁鎺ㄩ�佺殑xmlData鏍煎紡
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <datas>
+ <data>
+ <id>shoutao</id>
+ <idpath>wuping#shoutao</idpath>
+ <name>鎵嬪</name>
+ <namepath>鐗╁搧#鎵嬪</namepath>
+ <orderNum>2</orderNum>
+ <parentId>wuping</parentId>
+ </data>
+ </datas>
+ </object>
+ */
+ public static String writeSendXmlData_classify(List<XmlData> xmlDataList) {
+ String xmlString = null;
+ try {
+ Document document = DocumentHelper.createDocument();
+ document.setXMLEncoding("UTF-8");
+ Element object_element = document.addElement(XML_OBJECT);
+
+ Element datas_element = object_element.addElement(XML_DATAS);
+
+ if (xmlDataList != null) {
+ for (XmlData xmlData : xmlDataList) {
+ if (xmlData == null) {
+ continue;
+ }
+ Element data_element = datas_element.addElement(XML_DATA);
+
+ Element pro_name_element = data_element.addElement(XML_NAME);
+ pro_name_element.setText(xmlData.getName());
+
+ Element pro_namepath_element = data_element.addElement(XML_NAMEPATH);
+ pro_namepath_element.setText(xmlData.getNamepath());
+
+ Element pro_id_element = data_element.addElement(XML_ID);
+ pro_id_element.setText(xmlData.getId());
+
+ Element pro_idpath_element = data_element.addElement(XML_IDPATH);
+ pro_idpath_element.setText(xmlData.getIdpath());
+
+ Element pro_ordernum_element = data_element.addElement(XML_ORDERNUM);
+ pro_ordernum_element.setText(xmlData.getOrderNum()+"");
+
+ Element pro_parentid_element = data_element.addElement(XML_PARENTID);
+ pro_parentid_element.setText(xmlData.getParentId()==null?"":xmlData.getParentId());
+
+ Element pro_state_element = data_element.addElement(XML_STATE);
+ pro_state_element.setText(xmlData.getSendtype());
+ }
+ }
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ XMLWriter writer = new XMLWriter(format);
+ writer.write(document);
+ xmlString = document.asXML();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return xmlString;
+ }
+
+ /*
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <msg>澶勭悊鎴愬姛</msg>
+ <code>200</code>
+ <datas>
+ <data unique="oa0001" state="200" num="01020000001">
+ <msg>鎺ユ敹鏁版嵁鎴愬姛锛�</msg>
+ </data>
+ </datas>
+ </object>
+ */
+ public static BackXml readSendXmlData(String xmlData) throws Exception{
+
+ BackXml backXml = new BackXml();
+ Document document = DocumentHelper.parseText(xmlData);
+ Element object_element = document.getRootElement();
+
+ Element code_element = object_element.element(XML_CODE);
+ String code = code_element.getText();
+
+ Element msg_element = object_element.element(XML_MSG);
+ String msg = msg_element.getText();
+
+ Element datas_element = object_element.element(XML_DATAS);
+
+ List<Element> data_elements = datas_element.elements(XML_DATA);
+ List<XmlData> datasList = new ArrayList<XmlData>();
+ for (Element data_element:data_elements){
+ XmlData xmlData_return = new XmlData();
+
+ Attribute data_unique_attr = data_element.attribute(XML_UNIQUE);
+ String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique
+
+ Attribute data_state_attr = data_element.attribute(XML_STATE);
+ String state = data_state_attr==null?"":data_state_attr.getValue();//state
+
+ Attribute data_num_attr = data_element.attribute(XML_NUM);
+ String num = data_num_attr==null?"":data_num_attr.getValue();//num
+
+ Element data_msg_elements = data_element.element(XML_MSG);
+ String datamsg = data_msg_elements==null?"":data_msg_elements.getText();//msg
+
+ xmlData_return.setUnique(unique);
+ xmlData_return.setState(state);
+ xmlData_return.setNum(num);
+ xmlData_return.setMsg(datamsg);
+ datasList.add(xmlData_return);
+ }
+ backXml.setState(code);
+ backXml.setMsg(msg);
+ backXml.setDatas(datasList);
+ return backXml;
+ }
+
+ /*
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <msg>鎺ㄩ�佹垚鍔�</msg>
+ <code>200</code>
+ <datas>
+ <data>
+ <idpath>wuping#shoutao</idpath>
+ <state>true</state>
+ </data>
+ <data>
+ <idpath>wuping#fanghufu</idpath>
+ <state>false</state>
+ </data>
+ </datas>
+ </object>
+ */
+ public static BackXml readSendXmlData_classify(String xmlData) throws Exception{
+
+ BackXml backXml = new BackXml();
+ Document document = DocumentHelper.parseText(xmlData);
+ Element object_element = document.getRootElement();
+
+ Element code_element = object_element.element(XML_CODE);
+ String code = code_element.getText();
+
+ Element msg_element = object_element.element(XML_MSG);
+ String msg = msg_element.getText();
+
+ Element datas_element = object_element.element(XML_DATAS);
+
+ List<Element> data_elements = datas_element.elements(XML_DATA);
+ List<XmlData> datasList = new ArrayList<XmlData>();
+ for (Element data_element:data_elements){
+ XmlData xmlData_return = new XmlData();
+
+ Element data_idpath_elements = data_element.element(XML_IDPATH);
+ String idpath = data_idpath_elements.getText();
+
+ Element data_state_elements = data_element.element(XML_STATE);
+ String state = data_state_elements.getText();
+
+ Element xml_msg_elements = data_element.element(XML_MSG);
+ String xml_msg = xml_msg_elements.getText();
+
+ xmlData_return.setIdpath(idpath);
+ xmlData_return.setMsg(xml_msg);
+ xmlData_return.setState(state);
+
+ datasList.add(xmlData_return);
+ }
+ backXml.setState(code);
+ backXml.setMsg(msg);
+ backXml.setDatas(datasList);
+ return backXml;
+ }
+
+ /*
+ <?xml version="1.0" encoding="UTF-8"?>
+ <object>
+ <msg>澶勭悊鎴愬姛</msg>
+ <code>200</code>
+ <datas>
+ <data unique="oa0001" state="200" num="01020000001">
+ <msg>鎺ユ敹鏁版嵁鎴愬姛锛�</msg>
+ </data>
+ </datas>
+ </object>
+ */
+ public static BackXml readSendJsonData(String jsonData) throws Exception{
+
+ BackXml backXml = new BackXml();
+ JSONObject json_root = JSONObject.parseObject(jsonData);
+ String code = json_root.getString(XML_CODE);
+ String msg = json_root.getString(XML_MSG);
+ Object datas_obj = json_root.get(XML_DATAS);
+
+ List<XmlData> datasList = new ArrayList<XmlData>();
+ if(datas_obj!=null){
+ JSONArray datas_arr = (JSONArray)datas_obj;
+ for (Object data_obj:datas_arr){
+ XmlData xmlData_return = new XmlData();
+
+ JSONObject data_json = (JSONObject)data_obj;
+ String unique = data_json.getString(XML_UNIQUE);
+ String state = data_json.getString(XML_STATE);
+ String num = data_json.getString(XML_NUM);
+ String datamsg = data_json.getString(XML_MSG);
+
+ xmlData_return.setUnique(unique);
+ xmlData_return.setState(state);
+ xmlData_return.setNum(num);
+ xmlData_return.setMsg(datamsg);
+ datasList.add(xmlData_return);
+ }
+ }
+
+ backXml.setState(code);
+ backXml.setMsg(msg);
+ backXml.setDatas(datasList);
+ return backXml;
+ }
+
+ //璇诲彇鏁版嵁杞崲xml鏁版嵁涓簃ap
+ /*
+<?xml version="1.0" encoding="UTF-8"?>
+<object>
+<datas>
+<data type="wupin">
+<props>
+<prop key="materialtype">
+<prop_tran mdmkey="1001" mdmvalue="鏉愭枡" systemkey="" tranvalue=""/>
+<prop_tran mdmkey="1002" mdmvalue="鎴愬搧" systemkey="" tranvalue=""/>
+<prop_tran mdmkey="1003" mdmvalue="鏈虹墿鏂�" systemkey="" tranvalue=""/>
+<prop_tran mdmkey="1004" mdmvalue="缁间繚" systemkey="" tranvalue=""/>
+<prop_tran mdmkey="1005" mdmvalue="璧勪骇" systemkey="" tranvalue=""/>
+</prop>
+</props>
+</data>
+</datas>
+</object>
+ */
+ public static Map<String,Object> readTranXml(String tran_xml,String btmid) throws Exception{
+ Map<String,Object> retMap = new HashMap<String,Object>();
+ if(StringUtils.isEmpty(btmid)){
+ return retMap;
+ }
+ Document document = DocumentHelper.parseText(tran_xml);
+ Element object_element = document.getRootElement();
+
+ Element datas_element = object_element.element(XML_DATAS);
+
+ List<Element> data_elements = datas_element.elements(XML_DATA);
+ for (Element data_element:data_elements){
+
+ Attribute data_type_attr = data_element.attribute(XML_TYPE);
+ String data_type = data_type_attr==null?"":data_type_attr.getValue();
+ if(!btmid.equals(data_type)){
+ continue;
+ }
+
+ Element data_pros_elements = data_element.element(XML_PROS);
+ List<Element> data_pro_elements = data_pros_elements.elements(XML_PRO);
+ for (Element data_pro_element:data_pro_elements) {
+ Map<String,String> data_pro_map = new HashMap<String,String>();
+ Attribute xml_type_attr = data_pro_element.attribute(XML_KEY);//materialtype
+ String xml_type = xml_type_attr==null?"":xml_type_attr.getValue();
+
+ List<Element>prop_tran_elements = data_pro_element.elements(XML_PRO_TRAN);//prop_tran
+ for (Element prop_tran_element:prop_tran_elements) {
+ Attribute mdm_key_attr = prop_tran_element.attribute(XML_MDMKEY);
+ String mdm_key = mdm_key_attr==null?"":mdm_key_attr.getValue();
+
+ Attribute mdm_value_attr = prop_tran_element.attribute(XML_MDMVALUE);
+ String mdm_value = mdm_value_attr==null?"":mdm_value_attr.getValue();
+
+ Attribute system_key_attr = prop_tran_element.attribute(XML_SYSTEMKEY);
+ String system_key = system_key_attr==null?"":system_key_attr.getValue();
+
+ Attribute system_value_attr = prop_tran_element.attribute(XML_SYSTEMVALUE);
+ String system_value = system_value_attr==null?"":system_value_attr.getValue();
+
+// data_pro_map.put(XML_MDMKEY,mdm_key);
+// data_pro_map.put(XML_MDMVALUE,mdm_value);
+// data_pro_map.put(XML_SYSTEMKEY,system_key);
+// data_pro_map.put(XML_SYSTEMVALUE,system_value);
+ data_pro_map.put(mdm_key,system_key);
+ data_pro_map.put(mdm_value,system_value);
+ }
+ retMap.put(xml_type,data_pro_map);
+ }
+
+ }
+ return retMap;
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/gennerAttrMapUtil.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/gennerAttrMapUtil.java
new file mode 100644
index 0000000..e3672cd
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/gennerAttrMapUtil.java
@@ -0,0 +1,45 @@
+package org.springblade.code.utils;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.vci.mdm.model.universalInter.attrmap.LibraryDO;
+import com.vci.starter.web.util.LocalFileUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Map;
+
+public class gennerAttrMapUtil {
+ @Autowired
+ private AttributeMapConfig attributeMapConfig;
+ private static String fileName="";
+ private static gennerAttrMapUtil newInstance=null;
+ public static gennerAttrMapUtil getNewInstance() {
+ if(newInstance==null){
+ newInstance=new gennerAttrMapUtil();
+ }
+ return newInstance;
+ }
+
+ /****
+ * 鑾峰彇
+ * @param systemId
+ */
+ public LibraryDO gennerAttrMapBySystem(String systemId,Map<String, String> system_attrmap) throws Throwable{
+ if(StringUtils.isBlank(systemId)){
+ throw new Throwable("绯荤粺鏍囪瘑涓虹┖");
+ }
+ LibraryDO rootDataVO=new LibraryDO();
+ if(system_attrmap.containsKey(systemId)){
+ String path=system_attrmap.get(systemId);
+ String attributeMapData= LocalFileUtil.readContentForFile(path);
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(LibraryDO.class);
+ xStream.autodetectAnnotations(true);
+ rootDataVO = (LibraryDO) xStream.fromXML(attributeMapData);
+
+ }
+ return rootDataVO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/resources/application-dev.yml b/Source/BladeX/blade-service/blade-code/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..bbcd82d
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/resources/application-dev.yml
@@ -0,0 +1,94 @@
+#鏈嶅姟鍣ㄧ鍙�
+server:
+ port: 36013
+###tomcat鐩稿叧鐨勯厤缃�
+ servlet:
+ context-path: /web
+ tomcat:
+ uri-encoding: UTF-8
+#鏁版嵁婧愰厤缃�
+spring:
+ datasource:
+ url: ${blade.datasource.dev.url}
+ username: ${blade.datasource.dev.username}
+ password: ${blade.datasource.dev.password}
+
+#####搴旂敤鍩烘湰閰嶇疆
+app:
+ name: web
+ group: 鍖椾含瀹忓崥杩滆揪绉戞妧鏈夐檺鍏徃
+ description: 骞冲彴B/S瀹㈡埛绔�
+ private-token-key: vciweb20210212
+
+###log4j2鐨勯厤缃紝闇�瑕佸摢涓寘涓嬬殑鏂囦欢寮�鍚煇涓瓑绾э紝灏辩洿鎺xxxx: yy杩欐牱鏂瑰紡
+logging:
+ config: "classpath:log4j2-spring-dev.xml"
+ level:
+ com.vci: debug
+ root: info
+ show-log: false
+###鏈」鐩殑閰嶇疆锛屾敞鎰弒pring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
+session:
+ session-info-storage-type: "database"
+ database-platform: oracle
+ clear-session-on-start: false
+ ###鏄惁寮�鍚敤鎴峰湪绾挎鏌�
+ checkSessionTimeout: false
+ ###瀹㈡埛绔垽鏂秴鏃惰疆璇㈡椂闂达紝鍗曚綅涓虹
+ sessionInterval: 10
+ ###瀹㈡埛绔渶澶у瓨鍦ㄦ椂闂达紝鍗曚綅涓哄垎閽�
+ sessionIdlTime: 30
+ ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
+ sessionRemind: 3
+user-table-compatibility: "platform1"
+#鍙�2021鐗堟湰鐨勯儴鍒嗘帴鍙g殑褰卞搷锛屼笅闈㈢殑鍐呭闇�瑕侀厤缃紝
+vciPlatform:
+ objectServiceUrl: ""
+
+ cache:
+ type: ehcache
+ servlet:
+ multipart:
+ enabled: true
+ ###鍗曚釜鏂囦欢澶у皬锛�50M
+ max-file-size: 52428800
+ ###鎬讳笂浼犵殑鏂囦欢澶у皬锛�50M
+ max-request-size: 52428800
+ mvc:
+ view:
+ suffix: .html
+##web閰嶇疆
+vciweb:
+ debug: true
+file-preview:
+ enabled: true
+ preview-service-url: "http://dev.yunkeruida.top:28090/vciFilePreview/ajaxPreview.html"
+ preview-system-key: plt2020
+docking:
+ #鏄惁寮�鍚富鏁版嵁/鍒嗙被鏁版嵁鎺ㄩ�佸悓姝�
+ insertCache2: false
+ cron: 0 0/1 * * * ?
+ #棰勭敵璇锋暟鎹紝閰嶇疆妯℃澘鏂囦欢瀛樻斁鐨勬枃浠跺す
+ templateDir: D:\desktop
+ tranTemp: D:\mes
+ #鍥惧彿鐨刱ey
+ tuhao: tuhao
+
+dataSyncPush:
+ isStart: false
+ cronTime: "0 0/1 * * * ?"
+ dataParamName: dataString
+ dataTranTemp: D:\desktop
+clsfSyncPush:
+ isStart: false
+ cronTime: "0 0/1 * * * ?"
+ dataParamName: dataString
+ dataTranTemp: D:\desktop
+
+attrconfig:
+ #绯荤粺闆嗘垚
+ system_attrmap: {RLM: D:\RLM.xml,PDM: D:\pdm.xml,DMS: D:\DMS.xml}
+ #MPM鏋氫妇鍊煎睘鎬ф槧灏�
+ mpmEnumMap: {partType: [{enumValue: 1,enumText: 浜у搧},{enumValue: 2,enumText: 浜у搧},{'enumValue': 3,enumText: 鏍囧噯浠秨,{'enumValue': 7,enumText: 鏉愭枡}]}
+
+
diff --git a/Source/BladeX/blade-service/blade-code/src/main/resources/application-prod.yml b/Source/BladeX/blade-service/blade-code/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..b79ea32
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/resources/application-prod.yml
@@ -0,0 +1,74 @@
+#####搴旂敤鍩烘湰閰嶇疆
+app:
+ name: web
+ group: 鍖椾含瀹忓崥杩滆揪绉戞妧鏈夐檺鍏徃
+ description: 骞冲彴B/S瀹㈡埛绔�
+ private-token-key: vciweb20210212
+###tomcat鐩稿叧鐨勯厤缃�
+server:
+ port: 12000
+ servlet:
+ context-path: /web
+###log4j2鐨勯厤缃紝闇�瑕佸摢涓寘涓嬬殑鏂囦欢寮�鍚煇涓瓑绾э紝灏辩洿鎺xxxx: yy杩欐牱鏂瑰紡
+logging:
+ config: "classpath:log4j2-spring-prod.xml"
+ level:
+ com.vci: debug
+ root: info
+###鏈」鐩殑閰嶇疆锛屾敞鎰弒pring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
+session:
+ session-info-storage-type: "database"
+ database-platform: oracle
+ clear-session-on-start: false
+ ###鏄惁寮�鍚敤鎴峰湪绾挎鏌�
+ checkSessionTimeout: false
+ ###瀹㈡埛绔垽鏂秴鏃惰疆璇㈡椂闂达紝鍗曚綅涓虹
+ sessionInterval: 10
+ ###瀹㈡埛绔渶澶у瓨鍦ㄦ椂闂达紝鍗曚綅涓哄垎閽�
+ sessionIdlTime: 30
+ ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
+ sessionRemind: 3
+###鍏煎鎬э紝蹇呴』璁剧疆涓鸿繖涓�
+user-table-compatibility: "platform1"
+#缂撳瓨閰嶇疆
+###corba鐨勯厤缃�
+jacorb:
+ client:
+ enabled: true
+ url: "corbaloc::localhost:30000/NameService"
+ instanceIdentity: "platform-sf"
+#鍙�2021鐗堟湰鐨勯儴鍒嗘帴鍙g殑褰卞搷锛屼笅闈㈢殑鍐呭闇�瑕侀厤缃紝
+vciPlatform:
+ objectServiceUrl: "2"
+#缂撳瓨
+spring:
+ # redis閰嶇疆
+ redis: ###### redis 閰嶇疆
+ enabled: true #true锛屽惎鐢╮edi锛宖alse涓嶅惎鐢紝榛樿false,閰嶇疆鏂囦欢娌℃湁杩欎簺榛樿涓嶅惎鐢╮edis
+ host: vciserver # ip鍦板潃
+ database: 0 # redis鏁版嵁搴� 0-15
+ port: 6379 # 绔彛鍙�
+ password: vcitest # 鏃犲瘑鐮佷笉濉�
+ timeout: 30000s # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
+ lettuce:
+ shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms
+ pool: # lettuce 杩炴帴姹�
+ max-active: 8 # 杩炴帴姹犳渶澶ц繛鎺ユ暟 榛樿 8锛�-1 锛氳〃绀烘病鏈夐檺鍒讹級
+ max-wait: 60000ms # 杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂� 榛樿-1ms 锛�-1 :琛ㄧず娌℃湁闄愬埗锛� 杩欓噷璁剧疆1鍒嗛挓
+ max-idle: 8 # 鏈�澶х┖闂茶繛鎺� 榛樿 8
+ min-idle: 0 # 鏈�灏忕┖闂茶繛鎺� 榛樿 0
+ cache:
+ type: redis
+ config:
+ location:
+##web閰嶇疆
+vciweb:
+ debug: true
+
+dataSyncPush:
+ isStart: true
+ cronTime: "0 0/1 * * * ?"
+
+attrconfig:
+ #绯荤粺闆嗘垚
+ system_attrmap: {RLM: D:\RLM.xml,PDM: D:\pdm.xml}
\ No newline at end of file
diff --git a/Source/BladeX/blade-service/blade-code/src/main/resources/application.yml b/Source/BladeX/blade-service/blade-code/src/main/resources/application.yml
new file mode 100644
index 0000000..2b40fa6
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-code/src/main/resources/application.yml
@@ -0,0 +1,7 @@
+spring:
+ profiles:
+ active: dev
+ include: web
+ messages:
+ encoding: UTF-8
+ basename: i18n/messages
\ No newline at end of file
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java
index 542855a..cd3708b 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java
@@ -192,16 +192,5 @@
return R.data(list);
}
- /**
- * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
- */
- @PostMapping("/check")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
- public R checkOrInsert(@Valid @RequestBody Dict dict) {
- CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
- return dictService.checkOrInsert(dict);
- }
-
}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java
index 4030e5a..28d3a33 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java
@@ -19,7 +19,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.api.R;
import org.springblade.system.entity.Dict;
import org.springblade.system.vo.DictVO;
@@ -107,11 +106,4 @@
*/
List<DictVO> childList(Map<String, Object> dict, Long parentId);
- /**
- * 鏂板鎴栦慨鏀�
- *
- * @param dict
- * @return
- */
- R checkOrInsert(Dict dict);
}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java
index 965e7df..087520b 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java
@@ -25,7 +25,6 @@
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.Func;
@@ -122,23 +121,5 @@
Dict parentDict = DictCache.getById(parentId);
List<Dict> list = this.list(Condition.getQueryWrapper(dict, Dict.class).lambda().ne(Dict::getId, parentId).eq(Dict::getCode, parentDict.getCode()).orderByAsc(Dict::getSort));
return DictWrapper.build().listNodeVO(list);
- }
-
- @Override
- public R checkOrInsert(Dict dict) {
- LambdaQueryWrapper<Dict> lqw = Wrappers.<Dict>query().lambda().eq(Dict::getCode, dict.getCode()).eq(Dict::getDictKey, dict.getDictKey());
- Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(Dict::getId, dict.getId()));
- if (cnt > 0L) {
- R.fail("瀛楀吀宸茬粡瀛樺湪锛�");
- }
- if (Func.isEmpty(dict.getParentId())) {
- dict.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
- if(saveOrUpdate(dict) == true){
- return R.success("鎿嶄綔鎴愬姛!");
- }
- return R.fail("鎿嶄綔澶辫触锛�");
}
}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
index c6c8bde..8d989ce 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
@@ -233,6 +233,7 @@
user.setRealName(role.getRoleName());
user.setAccount(role.getRoleAlias());
user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID);
+ user.setPwdUpdateTime(new Date());
// 鑾峰彇鍙傛暟閰嶇疆鐨勫瘑鐮�
String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD);
user.setPassword(password);
diff --git a/Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml b/Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml
index 29c1f3e..fde6cb1 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml
+++ b/Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml
@@ -8,3 +8,4 @@
url: ${blade.datasource.dev.url}
username: ${blade.datasource.dev.username}
password: ${blade.datasource.dev.password}
+
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
index a385c0b..9ae8a71 100644
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
+++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
@@ -336,8 +336,9 @@
@PostMapping("/check-renexpr")
@ApiOperationSupport(order = 19)
@ApiOperation(value = "鏌ヨ鐢ㄦ埛瀵嗙爜绛栫暐鏄惁闇�瑕佹彁閱�", notes = "浼犲叆id")
- public R<Long> checkRenAndExpr(@RequestParam Long userId) {
- Long res = userService.checkRenAndExpr(userId);
+ public R<Long> checkRenAndExpr(BladeUser user) {
+ System.out.println("==============================="+user.getUserId());
+ Long res = userService.checkRenAndExpr(user.getUserId());
return R.data(res);
}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
index f10a077..96f2490 100644
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
+++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
@@ -21,7 +21,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
@@ -50,6 +50,7 @@
import org.springblade.system.user.service.IUserService;
import org.springblade.system.user.vo.UserVO;
import org.springblade.system.user.wrapper.UserWrapper;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
@@ -64,7 +65,7 @@
* @author Chill
*/
@Service
-@AllArgsConstructor
+@RequiredArgsConstructor
public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService {
private static final String GUEST_NAME = "guest";
@@ -72,6 +73,10 @@
private final IUserOauthService userOauthService;
private final ISysClient sysClient;
private final BladeTenantProperties tenantProperties;
+ //鎷垮埌閰嶇疆鐨勮秴绠d
+ @Value("${user-info.id}")
+ private String adminUserId;
+
@Override
@Transactional(rollbackFor = Exception.class)
@@ -328,10 +333,11 @@
if(!result){
throw new ServiceException(resException);
}
- //淇敼瀵嗙爜鍚屾椂锛屾敼鍙樼敤鎴蜂俊鎭腑鐨勫瘑鐮佷慨鏀圭姸鎬佸瓧娈�
+ //淇敼瀵嗙爜鍚屾椂锛屾敼鍙樼敤鎴蜂俊鎭腑鐨勫瘑鐮佷慨鏀圭姸鎬佸瓧娈�,瀵嗙爜淇敼鏃堕棿
return this.update(Wrappers.<User>update().lambda()
.set(User::getPassword, DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes())))
.set(User::getStrategyUpdateStatus,CommonConstant.TOP_PARENT_ID)
+ .set(User::getPwdUpdateTime,new Date())
.eq(User::getId, userId));
}
@@ -471,6 +477,10 @@
@Override
public Long checkRenAndExpr(Long userId) {
+ //瓒呯骇绠$悊鍛樼洿鎺ヨ繑鍥炰笉闇�瑕佹彁閱掑瘑鐮佷慨鏀�
+ if(adminUserId.equals(userId)){
+ return 0L;
+ }
//鑾峰彇鍒板瘑鐮佷慨鏀规椂闂�
Date pwdUpdateTime = this.getOne(Wrappers.<User>query().eq("ID", userId)).getPwdUpdateTime();
Long pwdupdateday = 0L;
@@ -478,13 +488,9 @@
pwdupdateday = dateToDay(pwdUpdateTime);
}
Strategy strategy = sysClient.getByUserId(userId).getData();
- System.out.println("褰撳墠鏃堕棿=================="+dateToDay(new Date()));
- System.out.println("瀵嗙爜淇敼鏃堕棿======================"+pwdupdateday);
- System.out.println("鎻愰啋鏃堕棿======================"+strategy.getReminderTime());
- System.out.println("杩囨湡鏃堕棿======================="+strategy.getExpirationTime());
//鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮�
long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(pwdUpdateTime);
- //蹇呴』鍘讳慨鏀瑰瘑鐮�
+ //鎻愰啋鐢ㄦ埛蹇呴』淇敼瀵嗙爜
if(reminder<=0){
return -1L;
}
@@ -497,6 +503,11 @@
return 0L;
}
+ /**
+ * 鏃堕棿鏍煎紡杞ぉ
+ * @param date
+ * @return
+ */
private Long dateToDay(Date date){
long time = date.getTime();
return time/(1000 * 60 * 60 * 24);
diff --git a/Source/BladeX/blade-service/pom.xml b/Source/BladeX/blade-service/pom.xml
index cf8ecd8..ae9fcd7 100644
--- a/Source/BladeX/blade-service/pom.xml
+++ b/Source/BladeX/blade-service/pom.xml
@@ -21,6 +21,7 @@
<module>blade-desk</module>
<module>blade-system</module>
<module>blade-user</module>
+ <module>blade-code</module>
</modules>
<dependencies>
--
Gitblit v1.9.3